wiki:NewBuildSystem

Version 5 (modified by vasilvv, 7 years ago) (diff)

add coarse notes from bootstrapping utopic

Committing

Non-Native Packages

Non-native packages have a master branch containing the "upstream" component, and a debian branch which contains the upstream component and the debian packaging.

If you are changing the "upstream" code:

  • Check out the master branch, and apply your changes.
  • Ensure you updated the version of the software. This is either in configure.ac, setup.py, or a VERSION file.
  • Review your commits, and rebase if necessary.
  • Tag the commit with the version number, and an annotated tag saying something like "Releasing 1.2.3"
    • git tag -a 1.2.3 a4b5c6d7
  • Push your master branch, and the tag to origin.
    • Once you do this, the version is finalized. If you find a bug, you'll need to bump the version number and repeat this process.
  • Check out the debian branch, and merge master into it. You are now ready to update the packaging.

Updating the packaging

  • Make your packaging changes (if any)
  • Add a changelog entry for the new version, remebering to reset the Debathena component to -0debathena1 if there's a new "upstream" version.
  • Push debian to origin.

Native Packages

Native packages only have a master branch.

  • Make any changes, and update the changelog.
  • Push master to origin.

Native packages are not tagged, as the tagging happens at build time.

Building

Note: <package> below means the directory in the repo

Non-native packages have an additional step, prior to building

  • athena-upstream-tarball -p <package>

Building packages

  • dasource -u <directory-name>
    • builds source package
  • dapublish [all | package ...]
    • publish source package to repo, sign and tag
  • dabuild all
    • builds any package for which there are source but no binary

Adding a new package

Victor should fill in this part, explaining what is necessary when adding a new package (e.g. debathena-shiny-new-thing). Steps include: adding it to the superrepo, making the build tools aware of it (so that uptsream-tarball and dasource don't fail), etc.

Bootstrapping A New Release

  1. Make sure you have enough space to create the build chroot using lvs and pvs.
  2. Alter /root/sources.list.d appropriately
  3. Create build chroot using /root/make-chroot

3bis. Make sure resulting chroot actually has universe enabled. 3verybis. Make sure resulting chroot has debathena APT key in it.

  1. Update the buildsystem configuration with tags. Do not forget to add ~0.1
  2. Update /mit/debathena/apt/conf

5bis. Do not forget to run git commit there

  1. Run dareprepro export.
  2. Fix debathena-machtype
  3. Run dapopulate with appropriate flags. An example would be: dapopulate --handle-broken=include --allow-out-of-date --use-development utopic trusty (populate utopic with sources from trusty).
  4. Open a tmux, and in it, run dabuild on the staging repo. You will probably need to specify -B with the name of preceeding repo, for example: DEBATHENA_SETUP_HOOK=/afs/sipb.mit.edu/project/debathena/bin/chroot-sources.staging dabuild utopic-staging -B trusty.