[Buildd-tools-devel] Bug#475777: Bug#475777: sbuild: Add support for appending a tag to version numbers

Timothy G Abbott tabbott at MIT.EDU
Mon Apr 21 04:10:36 UTC 2008


On Sun, 20 Apr 2008, Roger Leigh wrote:

[snip]
> I'm not sure why dpkg-genchanges fails here: I can run it with the
> same version outside the chroot and it works fine.  It may be a bug in
> dpkg-buildpackage, but I'm not really sure about that.
>
> Due to this problem, I haven't applied the patch as yet.  Once this
> bug can be fixed, I'll be happy to apply the patch.  If you have any
> idea what might be causing this, that would expedite merging this
> change.

I spent a while tracking this down today.  What actually happens is:

When you run sbuild, first dadadodo_1.04-3.dsc gets copied into the build 
area.  Then, dadadodo_1.04-3rleigh+b2.dsc (or whatever) gets generated.

Later, dpkg-genchanges runs, and strips off the +b2 from the version 
number to find the source version number (see 
/usr/share/perl5/Dpkg/Substvars.pm, search for source:version for the code 
that does this; search for source:version in /usr/bin/dpkg-genchanges for 
the code that calls from Dpkg::Substvars and also strips it a second 
time), and looks there for the .dsc file.  With just --binNMU specified, 
it finds the original dadadodo_1.04-3.dsc, and you get the following 
changes file.

$ /usr/bin/sbuild --make-binNMU=Test. --binNMU=2 --arch=i386 -d lenny -s -A dadadodo_1.04-3.dsc
[...]
dadadodo_1.04-3+b2_i386.changes:
Format: 1.7
Date: Sun, 20 Apr 2008 22:24:01 -0400
Source: dadadodo (1.04-3)
Binary: dadadodo
Architecture: source i386
Version: 1.04-3+b2
[...]
  5f4acf29927ff186d49406f5594e7032 529 text optional dadadodo_1.04-3.dsc
  d3ff69c4e71c328586b1c6ca2130a4b3 22791 text optional dadadodo_1.04.orig.tar.gz
  32adc2580ee7c16d717a7c297ef86fda 6007 text optional dadadodo_1.04-3.diff.gz
  383bc8be167bb7b1d022794d779c9cff 23864 text optional dadadodo_1.04-3+b2_i386.deb

Now, if you run sbuild with just --append-to-version, nothing is stripped 
from the version number and it finds the newly generated 
dadadodo_1.04-3rleigh.dsc file, with the changes shown below:

$ /usr/bin/sbuild --append-to-version=rleigh --arch=i386 -d lenny -s -A dadadodo_1.04-3.dsc
[...]
dadadodo_1.04-3rleigh_i386.changes:
Format: 1.7
Date: Sun, 20 Apr 2008 22:29:26 -0400
Source: dadadodo
Binary: dadadodo
Architecture: source i386
Version: 1.04-3rleigh
[...]
  94e6dbba39eaa591705e58f872740640 304 text optional dadadodo_1.04-3rleigh.dsc
  d3ff69c4e71c328586b1c6ca2130a4b3 22791 text optional dadadodo_1.04.orig.tar.gz
  09fa6c14102f3157bd20fab2a10f7778 6098 text optional dadadodo_1.04-3rleigh.diff.gz
  2935769a3a71c36670d6cb541c71d081 23832 text optional dadadodo_1.04-3rleigh_i386.deb

However, if you run with both --binNMU and --append-to-version, sbuild is 
looking for dadadodo_1.04-3rleigh.dsc while in fact there exist instead 
dadadodo_1.04-3.dsc and dadadodo_1.04-3rleigh+b2.dsc, and finds neither.

So, everything would work here if one didn't ask for a source upload. 
The easy "fix" would be to make "-s" and --append-to-version mutually 
exclusive.

Ideally, the current mechanisms for getting the dadadodo_1.04-3.dsc file 
would be modified to also support --append-to-version, but because they're 
so remote from sbuild and are just removing everything from +b onwards, I 
can't think of a reasonable way to do that.  So, I'd go with some version 
of the easy fix.

> By the way, the patch is diffed against the latest version in our GIT
> repository.  You can get a copy with
>
>  % git clone git://git.debian.org/git/buildd-tools/sbuild.git sbuild
>
> While diffs against earlier versions were fine in this case, it does
> make things easier if patches are based against the master head.

Noted.  Is there a good way to find the VC repositories for Debian 
packages?

> There is also a problem here in that sbuild does not clean up the
> build directory and generated files in the chroot when
> dpkg-buildpackage fails at this point.  I'm thinking of adding a
> temporary directory inside /build/$user for each build so that the
> entire directory can be purged on failure.

Ahh, indeed, I only use sbuild with the LVM chroots, and thus wouldn't 
notice this sort of issue.  However, in debugging this I did discover that 
even just --binNMU leaves behind dadadodo_1.04-3+b2.dsc and 
dadadodo_1.04-3+b2.diff.gz.

 	-Tim Abbott








More information about the Buildd-tools-devel mailing list