Dpatch Packages for Debian
For arch, every commit needs to be gpg-signed. There is no verification done on the keys, so you can create a new key that doesn't need any connection to the web of trust.
should contain a command that the stuff to sign gets piped to.
gpg --clearsign --secret-keyring ~/.gnupg/dpatch-arch_sec.gpg --keyring ~/.gnupg/dpatch-arch_pub.gpg
does this, with a custom keyring.
- Making a new release is composed of the following steps:
- create a so-called config file (this is arch terminology)
- do a fresh checkout
- do a make tla-release
- extract the result
- launch dpkg-buildpackage
This process is now automated by the script do-release in the dpatch-configs tree:
./do-release -c -d [/path/to/dpatch-tree] -- [debuild options]
- This script is to be run from a dpatch--configs--2.0 checkout
- the dpatch tree it uses must be an arch checkout, ready to release, with all local changes committed.
- By default do-release looks for dpatch sources in dpatch-mainline.
- It then creates a new arch config for it,
- and builds the package using debuild.
- After this, one should commit the new config the script created (a simple file addition) by committing the changes to the current directory, being a checkout of the dpatch--configs--2.0 tree.
- Optionally, the script can cache the arch revision it built the package from (recommended, use the --cacherev or -c option to do-release).
- The package version is extracted from debian/changelog in the dpatch source tree.
- If the build fails, its remains can be removed by killing the appropriate file from configs/releases/dpatch-$VERSION.
Set your identity
tla my-id "Realname <email@example.com>"
Hook Script: Place
in ~/.arch-params/hook will send e-mail to firstname.lastname@example.org on commit, with the log and the diff.
tla register-archive http://email@example.com/
tla register-archive -f sftp://firstname.lastname@example.org
tla get email@example.com/dpatch--mainline--2.0 dpatch tla get firstname.lastname@example.org/dpatch--configs--2.0 dpatch-configs cd dpatch-configs tla buildcfg dpatch-mainline
$EDITOR $(tla make-log)
If you want to check out a specific dpatch release, do this:
$ tla get email@example.com/dpatch--configs--2.0 $ tla buildcfg releases/dpatch-VERSION # eg, dpatch-2.0.0
- tla add filename adds a file to the repository. This can also be done automatically by putting an arch-tag: line into the file itself.
- tla update updates your checked-out tree
- tla inventory -s can be used to see which files tla recognized.
- tla changes shows which files have been changed locally since the last checkout/update
- tla file-diff gives the diff for a given file.
- How is a complete diff against the last checkout/update done?
The arch repository is pull-mirrored by http://sourcecontrol.net/.
http://www.lnx-bbc.org/arch.html is some nice introduction to Arch.
http://regexps.srparish.net/www/tutorial/html/arch.html is an Arch tutorial.
http://wiki.gnuarch.org/ is the Arch wiki.
http://wiki.gnuarch.org/Centralized_20Development has some hints about how to do centralized development
Q: When invoking tla changes, I get the following:
$ tla changes * looking for firstname.lastname@example.org/dpatch--mainline--2.0--patch-111 to compare with PANIC: invoke_tar_extract: execve for hook script returned to caller tla: error running hook `make-pristine' (2) $
What am I doing wrong?
A: ~/.arch-params/hook is missing the starting #! line
Q: After trying to commit without having GPG set up, further commit attempts fail:
arch_commit: unable to acquire revision lock (internal error in archive-pfs.c(pfs_lock_revision)) tree: /home/mh/dpatch/dpatch revision: email@example.com/dpatch--mainline--2.0--patch-112
A: Break the lock using
tla lock-revisions -b firstname.lastname@example.org/dpatch--mainline--2.0--patch-112
In some circumstances, you need to break the lock on the preceding revision as well.