Common to all of the types of packages we might develop.
HCoop is standardized on all amd64 packages, aside from architecture independent packages.
1. Setting Up Environment For Clean Builds
Packages must be signed to be accepted, in ~/.devscripts make sure your signing key is set:
DEBSIGN_KEYID=YOUR_KEYID_HERE
TODO: pbuilder
Set up pbuilder for each distribution and architecture. We build with backports and the hcoop repository available. Example:
DIST=stretch-backports ARCH=amd64 git-pbuilder create DIST=stretch-backports ARCH=amd64 git-pbuilder login --save-after-login # add hcoop repos to sources.list and save system
2. Building a package
Years ago HCoop standardized on Git for VersionControl; as such we're using git-buildpackage to maintain our packages.
First, make sure you are on the "master" branch by running:
git branch -l
If you see an asterisk by "master", you're on the right branch.
If we want to build the package with some uncommitted changes, as a sanity check, then do:
gbp buildpackage --git-pbuilder --git-ignore-new --git-dist=$dist-backports --git-arch=amd64
When it comes time to test the changes, build the package using:
gbp buildpackage --git-pbuilder --git-dist=$dist-backports --git-arch=amd64 --git-export-dir=$tmpdir
The packages will be built and placed in the temporary directory you specify. You have to use a directory not in afs, because pbuilder runs using sudo and will not have your tokens. To indicate that we are done making changes to this particular version of the Debian package, tag it with:
gbp dch --release gbp buildpackage --git-tag --git-pbuilder --git-dist=$dist-backports --git-arch=amd64 --git-export-dir=/tmp/pbuild
This makes the package version show up when you do git tag -l, for easy diffing and viewing.
3. New Packages
After creating the git-buildpackage repository, push it to the public HCoop debian packages git area:
gbp create-remote-repo --remote-url-pattern=/afs/hcoop.net/user/h/hc/hcoop/.hcoop-git/debian/'%(pkg)s'.git
We may revisit only having one area for Debian packages at a later time.