[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#484977: adonthell: FTBFS when converted to new source format 3.0 (quilt): patches file created by .diff.gz



Package: adonthell
Version: 0.3.4.cvs.20050813-4
Severity: minor
Usertags: 3.0-quilt-by-default

To prepare a possible switch to the new source package format "3.0
(quilt)" [1], I converted all source packages and tried to rebuild them.
Unfortunately, adonthell failed, you can try yourself with those
commands (and dpkg-dev >= 1.14.19 [2]) :

$ apt-get source adonthell
$ sed -i -e '/^Source:/ aFormat: 3.0 (quilt)' adonthell-0.3.4.cvs.20050813/debian/control
$ dpkg-source -b adonthell-0.3.4.cvs.20050813
$ dpkg-source -x adonthell_0.3.4.cvs.20050813-4.dsc
$ cd adonthell-0.3.4.cvs.20050813 && debuild -us -uc

In this process, if the .diff.gz contains changes to upstream files,
dpkg-source will have created a corresponding patch in
debian/patches/debian-changes-0.3.4.cvs.20050813-4 and will have registered that
patch in a quilt series (debian/patches/series, it is created if needed).
All the patches listed in the "series" file are applied directly during
the extraction (dpkg-source -x). quilt itself is used if available (and
will thus lead to the creation of the .pc directory), otherwise
dpkg-source applies the patches by itself. For more information about the
new source package format see the manual page dpkg-source(1).

In the case of adonthell, it already uses quilt but the patch
02_use_libsdl-ttf.diff modifies a file (src/py_adonthell_wrap.cc)
that doesn't exist in the original tarball. That file is created by the
Debian .diff.gz.

You should thus simply create the full file within the patch 
02_use_libsdl-ttf.diff instead of having the change split in two
places. The conversion of the package fails when dpkg-source
tries to apply the quilt series on top of the plain upstream
directory (precisely when it tries to convert the local changes
to a new patch at the _end_ of the quilt series).

As a side note, you must also pay attention to the following points in
your quilt usage to guarantee compatibility with the new source package
format:
- all your patches must be applicable with the "-p1" option of patch
  (and you shouldn't use options in the series file to override this)
- the patches must be in debian/patches/ together with the "series" file
  (you can use QUILT_PATCHES=debian/patches if needed)
- you should not override QUILT_PC to change the location of quilt's
  internal directory (".pc" by default)
- the patches should not reference absolute filenames (in +++/--- lines)
- your clean target must work even if the patches are already applied
- your build target must work with patches applied even if the clean
  target is supposed to unapply them (because dpkg-source -b might
  have applied them back)

Cheers,

[1] http://lists.debian.org/debian-devel-announce/2008/04/msg00004.html
[2] the upcoming dpkg-dev 1.14.20 is more tolerant with patches, you can
grab it here if you want to try with that version:
http://people.debian.org/~hertzog/packages/dpkg-dev_1.14.20_all.deb
-- 
Raphael Hertzog




Reply to: