Table of Contents
Debian Packages
APT Repositories
Ubuntu PPA
Ubuntu PPAs are located here: https://launchpad.net/~isc
Currently we have PPAs for BIND ESV (f.e. BIND 9.11), BIND Stable (f.e. BIND 9.12, then BIND 9.14) and BIND Dev (BIND 9.13, 9.15, ...).
Access
To gain access to the Launchpad team, create account and then ask one of the existing members to add you (@ondrej, @vicky).
Packaging
The packaging is using Git Build Package, for extensive info, please see: https://wiki.debian.org/DanielKahnGillmor/preferred_packaging and the gbp documentation.
Git Repository
The sources for Debian packages are hosted at the official Debian repository located at https://salsa.debian.org/dns-team/bind9.git (for BIND 9.10, 9.11 and 9.12) and https://salsa.debian.org/dns-team/bind.git (for BIND 9.13+).
Access
To gain access to the Git repository, first create account here: https://signup.salsa.debian.org/ and then ask one of the existing maintainers to give you access to the repository (or the whole dns-team).
Updating the packages
The update if fairly simple if you know gbp, but for a quick TL;DR, do:
- Enter the directory with gbp repository:
$ cd bind9
- Import the new tarball using uscan
$ gbp import-orig --uscan
gbp:info: Launching uscan...
uscan: Newest version of bind on remote site is 9.13.6, local version is 9.13.5
uscan: => Newer package available from
https://ftp.isc.org/isc/bind9/9.13.6/bind-9.13.6.tar.gz
gpgv: Signature made Fri 08 Feb 2019 05:39:31 AM UTC
gpgv: using RSA key BE0E9748B718253A28BB89FFF1B11BF05CF02E57
gpgv: Good signature from "Internet Systems Consortium, Inc. (Signing key, 2017-2018) <codesign@isc.org>"
gpgv: Signature made Fri 08 Feb 2019 05:39:32 AM UTC
gpgv: using RSA key 156890685EA0DF6A1371EF2017CC5DB1F0088407
gpgv: Can't check signature: No public key
uscan warn: OpenPGP signature did not verify.
gbp:info: Using uscan downloaded tarball ../bind-9.13.6.tar.gz
What is the upstream version? [9.13.6] # <<< Hit ENTER here
gbp:info: Importing '../bind-9.13.6.tar.gz' to branch 'upstream' (filtering out ['.gitignore'])...
gbp:info: Source package is bind
gbp:info: Upstream version is 9.13.6
gbp:info: Replacing upstream source on 'master'
gbp:info: Successfully imported version 9.13.6 of ../bind-9.13.6.tar.gz
- Rebase the patches for new release
$ gbp pq rebase
gbp:info: No pq branch found, importing patches
gbp:info: Trying to apply patches at '6e3038736612a13aedc58bd6f94745209771b7b8'
gbp:warning: Patch skip-rtld-deepbind-for-dyndb.diff failed to apply, retrying with whitespace fixup
gbp:error: Failed to apply '/home/ondrej/Projects/pkg-dns/bind/debian/patches/skip-rtld-deepbind-for-dyndb.diff': Error running git apply: error: patch failed: lib/dns/dyndb.c:133
error: lib/dns/dyndb.c: patch does not apply
gbp:error: Couldn't apply patches
- If it fails, do it manually using quilt (<<< This is the only step really requiring manual intervention >>>)
$ while quilt push; do quilt refresh; done
Applying patch debian/patches/07_multiarch.diff
patching file isc-config.sh.in
Now at patch debian/patches/07_multiarch.diff
Refreshed patch debian/patches/07_multiarch.diff
Applying patch debian/patches/25_library_paths.diff
patching file lib/dns/Makefile.in
patching file lib/irs/Makefile.in
patching file lib/isc/Makefile.in
Hunk #1 succeeded at 107 (offset -2 lines).
Hunk #2 succeeded at 133 (offset -2 lines).
patching file lib/isccc/Makefile.in
Hunk #2 succeeded at 64 (offset -2 lines).
Hunk #3 succeeded at 82 (offset -2 lines).
patching file lib/isccfg/Makefile.in
Now at patch debian/patches/25_library_paths.diff
Refreshed patch debian/patches/25_library_paths.diff
Applying patch debian/patches/33_resource_missing_include.diff
patching file lib/isc/unix/resource.c
Now at patch debian/patches/33_resource_missing_include.diff
Refreshed patch debian/patches/33_resource_missing_include.diff
Applying patch debian/patches/75_ctxstart_no_sighandling.diff
patching file lib/isc/unix/app.c
Hunk #1 succeeded at 149 (offset -3 lines).
Now at patch debian/patches/75_ctxstart_no_sighandling.diff
Refreshed patch debian/patches/75_ctxstart_no_sighandling.diff
Applying patch debian/patches/80_reproducible_build.diff
patching file lib/dns/gen.c
Now at patch debian/patches/80_reproducible_build.diff
Refreshed patch debian/patches/80_reproducible_build.diff
Applying patch debian/patches/Add_--install-layout=deb_to_setup.py_call.patch
patching file bin/python/Makefile.in
Now at patch debian/patches/Add_--install-layout=deb_to_setup.py_call.patch
Refreshed patch debian/patches/Add_--install-layout=deb_to_setup.py_call.patch
Applying patch debian/patches/skip-rtld-deepbind-for-dyndb.diff
patching file lib/dns/dyndb.c
Hunk #1 FAILED at 133.
1 out of 1 hunk FAILED -- rejects in file lib/dns/dyndb.c
Patch debian/patches/skip-rtld-deepbind-for-dyndb.diff does not apply (enforce with -f)
- Now enforce the patch and fix it or drop it if no longer needed
$ quilt push -f
Applying patch debian/patches/skip-rtld-deepbind-for-dyndb.diff
patching file lib/dns/dyndb.c
Hunk #1 FAILED at 133.
1 out of 1 hunk FAILED -- saving rejects to file lib/dns/dyndb.c.rej
Applied patch debian/patches/skip-rtld-deepbind-for-dyndb.diff (forced; needs refresh)
$ emacs lib/dns/dyndb.c.rej lib/dns/dyndb.c
$ quilt refresh
Refreshed patch debian/patches/skip-rtld-deepbind-for-dyndb.diff
- Rinse and repeat until done:
$ while quilt push; do quilt refresh; done
File series fully applied, ends at patch debian/patches/skip-rtld-deepbind-for-dyndb.diff
- Add the fixed patches to the repository and rebase then using
gbp pq
:
$ git commit -a -F - debian/patches << EOF
Rebase patches for BIND 9.13.6
Gbp-Dch: ignore
EOF
[master b78ec65c3] Rebase patches for BIND 9.13.6
Date: Mon Feb 18 08:48:46 2019 +0000
7 files changed, 30 insertions(+), 52 deletions(-)
$ gbp pq rebase
gbp:info: No pq branch found, importing patches
gbp:info: Trying to apply patches at 'b2d43c35ead0462861d3c994d1c30b146e6594a8'
gbp:info: 7 patches listed in 'debian/patches/series' imported on 'patch-queue/master'
gbp:info: Switching to 'patch-queue/master'
Current branch patch-queue/master is up to date.
$ gbp pq export
gbp:info: On 'patch-queue/master', switching to 'master'
gbp:info: Generating patches from git (master..patch-queue/master)
$ git commit --amend -a -F - debian/patches << EOF
Rebase patches for BIND 9.13.6
Gbp-Dch: ignore
EOF
[master caeea7f26] Rebase patches for BIND 9.13.6
Date: Mon Feb 18 08:48:46 2019 +0000
3 files changed, 11 insertions(+), 11 deletions(-)
- Update and commit the changelog (this will start editor):
$ gbp dch -R -a -c
gbp:info: Changelog last touched at '5a7c095dc9d5463323dbb19108e38c86cb33c16d'
gbp:info: Changelog committed for version 1:9.13.6-1
- Optionally, use a snapshot changelog (and use
gbp dch -R -a -c
when finished):
$ gbp dch -S -a -c
gbp:info: Changelog last touched at '5a7c095dc9d5463323dbb19108e38c86cb33c16d'
gbp:info: Changelog 1:9.13.6-1~1.gbpcaeea7 (snapshot #1) prepared up to caeea7f
gbp:info: Changelog committed for version 1:9.13.6-1~1.gbpcaeea7
- Build the package using debuild in the local system:
$ gbp buildpackage --git-export-dir=/tmp/build --git-builder=debuild
- When you confirmed the package builds, you can actually push the works to the repository and trigger the rebuilds for Ubuntu PPA and Debian DPA (https://bind.debian.net/bind/)