
ReadMe for PBA - Package Builder and Archiver
=============================================


* Introduction

The Package Builder and Archiver is a Clazzes.org project to create 
and maintain a building and repository system for debian based software
development for long-term projects.

While there are public building systems for creating .deb and .rpm
packages like Ubuntu's LaunchPad or OpenSuSE, they have two 
disadvantages making them impractiable to use for long-term industry
projects:

- They make it difficult to maintain more than one generation of groups
  of packages tightly coupled to eatch other.
  With lot's of discipline it's possible, but not easy.

- Everything going through these services is public by definition.

The PBA solves these issues:

- The concept of Categories and Generations at package level as well as
  repository level allow to hold package groups together without making 
  it difficult to maintain branches.
  Old branches can be built for new distros and vice versa, without 
  getting in each other's way.

- Repositories, one per Distrbution-Category-Generation,
  manage themselfes and can be easily be run in public 
  or non-public http[s] spaces.

Additionally, pba-devtools provide some tools to ease development in 
debian environments in general and for pba usage in particular.


* Terminology and Abbreviations

PBA:
Package Builder and Archiver

Category:
The name for a category (group, family) of packages belonging to each
other. Examples: mingw, fancylibs.

Generation:
A major version number for a consistent generation of packages of a 
category, possibly with further distinctions according to upgrades of
underlying technologies like cross compilers.


* Configuration

Please read the *.template files in the /etc/pba/ directory structure.

Conf files and conf directories in ~/.pba/ are respected too and 
overrule conflicting settings from /etc/pba/


* Usage and automation

Please call pba-archiver and pba-builder without parameters to get an 
overview of what they are able to do.


* Loop snippets

To refresh all archives managed by a pba-archiver ...
  for DCG in $(pba-archiver -L -q)
  do 
    pba-archiver -R $DCG
  done
... or as one-liner ...
  for DCG in $(pba-archiver -L -q) ; do pba-archiver -R $DCG ; done

To do something for all pbuilder tarballs, i.e. update with -U ...
  for D in lucid lenny hardy squeeze
  do
    for A in i386 amd64
    do 
      pba-builder -U $D -a $A 
    done
  done
... or as one-liner ...
  for D in lucid lenny hardy squeeze ; do for A in i386 amd64 ; do pba-builder -U $D -a $A ; done ; done


* GPG Keys

On builders, the public GPG keys of archive, builders and developers need to go into several places.
On archives, the public GPG keys of builders need to go in those places.

For PBA:
As trusted key in GPG Homedir, usually configured to /etc/pba/.gnupg

For apt-get on builders:
Archive & builder key into apt's trust key.
Up to Debian Jessie they need to go trough |apt-key add -
Starting with Debian Stretch it's sufficient to copy them to /etc/apt/trusted.gpg.d/

For rpm, rpmsign:
Import all with 
  rpm --import foobar.asc
or
  rpmkeys --import foobar.asc

