|
| 1 | += Debian Packaging for OS/161 `binutils` |
| 2 | + |
| 3 | +This repository contains scripts for building and packaging a binary version |
| 4 | +of the |
| 5 | +// |
| 6 | +https://www.gnu.org/software/binutils/[GNU `binutils`] |
| 7 | +// |
| 8 | +compatible with |
| 9 | +// |
| 10 | +http://os161.eecs.harvard.edu/[`OS/161`] |
| 11 | +// |
| 12 | +that can be uploaded and distributed through the |
| 13 | +// |
| 14 | +https://launchpad.net/~ops-class/+archive/ubuntu/os161-toolchain[`ops-class.org` |
| 15 | +Launchpad PPA]. |
| 16 | + |
| 17 | +== Getting Started |
| 18 | + |
| 19 | +The http://packaging.ubuntu.com/html/index.html[Ubuntu Packaging Guide] is a |
| 20 | +decent starting point for setting up your environment. |
| 21 | +// |
| 22 | +Although note that we are going to use the Git Package Builder (`gbp`) rather |
| 23 | +than the Bazaar-based tools. |
| 24 | + |
| 25 | +== Workflow |
| 26 | + |
| 27 | +Repackage the `binutils` only when their sources have changed. |
| 28 | +// |
| 29 | +Unpack the tarball into this repository, build and test it, and commit your |
| 30 | +changes. |
| 31 | +// |
| 32 | +You will also need to know the current version number and have your Launchpad |
| 33 | +PPA signing key and password ready. |
| 34 | + |
| 35 | +=== Updating the Debian Changelog |
| 36 | + |
| 37 | +The next step is to update `debian/changelog`. |
| 38 | +// |
| 39 | +The `dch` tool is the easiest way to do this, although it can also be edited |
| 40 | +by hand. |
| 41 | +// |
| 42 | +Note that any time you publish to the PPA you *must bump the version number* |
| 43 | +or change the distribution string. |
| 44 | +// |
| 45 | +However, you do not need to bump the version number while testing local |
| 46 | +builds. |
| 47 | + |
| 48 | +Here is the versioning convention that we have established for the `binutils`: |
| 49 | +`2.24~os161~2.1~xenial0`, the first package for Xenial based on the OS/161 |
| 50 | +binutils version `2.24+os161`. |
| 51 | +// |
| 52 | +Bump the post-Xenial version number as needed to account for library changes, |
| 53 | +multiple distributions, build debugging, or any other reason. |
| 54 | + |
| 55 | +=== Commiting Everything |
| 56 | + |
| 57 | +The `gbp` tools will not run if the working directory is not clean. |
| 58 | +// |
| 59 | +Commit everything to `master` before continuing. |
| 60 | + |
| 61 | +=== Test Build |
| 62 | + |
| 63 | +[source,bash] |
| 64 | +---- |
| 65 | +make -f Makefile.packaging test |
| 66 | +---- |
| 67 | + |
| 68 | +The above command will create a test package and use `pbuilder` to test a |
| 69 | +clean build, but it does not sign packages. |
| 70 | +// |
| 71 | +You will need to install `pbuilder` and create an appropriate testing |
| 72 | +environment, currently for Xenial: `pbuilder-dist xenial create`. |
| 73 | +// |
| 74 | +Use it to iron out any build issues. |
| 75 | +// |
| 76 | +You also need to silence any lintian warnings that may be generated. |
| 77 | + |
| 78 | +=== Sign Build |
| 79 | + |
| 80 | +[source,bash] |
| 81 | +---- |
| 82 | +make -f Makefile.packaging sign |
| 83 | +---- |
| 84 | + |
| 85 | +The above command will create and sign a build package for upload to the PPA. |
| 86 | +// |
| 87 | +You will need to have a signing key installed and have the password ready. |
| 88 | + |
| 89 | +=== Upload Build |
| 90 | + |
| 91 | +At this point you should be ready to use `dput` to push this to your PPA. |
0 commit comments