Building and working with the debian packages
Debian is one of the main supported operating systems in Aegir. For other systems, see Operating System Support. See also the following instructions:
The following is aimed at developers wishing to maintain their own Debian packages or work within the packaging framework.
1. Building a package for a new release
Assuming we have just released 2.0-alpha2, those instructions will merge that code into the upstream
branch (which is used to create the Debian diff) and then merged again in the debian
branch (where the Debian code lives). We then use git-buildpackage
to build the package and tag it, then push those changes back in the repository.
git fetch
git checkout debian
git rebase origin/6.x-2.x
dch -v 2.0~alpha2 -D unstable new upstream release
git-buildpackage --git-tag -kanarcat@koumbit.org
dput aegir ../build-area/aegir-provision_2.0~alpha2_i386.changes
git push
git push --tags
Note: notice how the version number is slightly different in Debian - we use the "magic" ~ separator to indicate that 2.0~alpha2
is actually lower than 2.0
...
The packages are uploaded to the "testing" repository. The idea is that this final package is tested and when confirmed as ready, it is migrated to the stable repository, using the command:
sudo -i -u reprepro reprepro pull stable
2. Building a branch package
Sometimes you want to have a test package for a given branch without going through a full release. Here how it's done.
git checkout debian
git merge 6.x-1.x
git describe
dch -v 1.0~rc3+28-1
git-buildpackage --git-tag -kanarcat@koumbit.org
This is also available in the Debian package as:
./debian/rules jenkins-build-auto
3. Installing packages manually
dpkg -i aegir-provision_1.0~rc3+g6632e6e-1_all.deb
We also make sure our custom makefile fetches the right one from provision:
-includes[aegir] = "http://drupalcode.org/project/provision.git/blob_plain/6.x-1.0-rc3:/aegir.make"
+includes[aegir] = "http://drupalcode.org/project/provision.git/blob_plain/6.x-1.x:/aegir.make"
4. Developing on Debian
To develop third party extensions to Aegir on Debian, it is recommended to install the Debian packages. If you are working on Aegir core, this could be a bit trickier since the files are not where you expect them to be and are not deployed as git repositories however.
You can, however, copy in place a .git directory using the following:
git clone --branch=6.x-1.0-rc7 http://git.drupal.org/project/provision
cp -Rp provision/.git /usr/share/drush/commands/provision/.git
cd /usr/share/drush/commands/provision
git stash
This will bring back a bunch of files that are removed from the Debian package, so it will yield warnings on uninstall of the Debian package but it should otherwise work.
You can do something similar with the frontend.
5. Package versioning
The stable repository should contain the latest release. The testing repository will also contain the latest release (unless we're in the process of building a release) but could have fixes to the Debian package that are being tested. The unstable repository is automatically built from the stable branch and may be broken.
To see what changes are done to the Debian package, see the debian/changelog which is maintained on the debian branch. To see which version of the package is currently available in the repository, you will unfortunately need to parse the Packages file for unstable, testing or stable.
6. How the archive was built
The following documentation was used: https://wiki.koumbit.net/RepreproConfiguration