New source package formats now available

Skip to first unread message

Raphael Hertzog

Nov 21, 2009, 11:00:01 AM11/21/09

since a few weeks the Debian archive accepts source package using the new
formats "3.0 (quilt)" and "3.0 (native)". The last step for us (dpkg
maintainers) in this project is to change dpkg-source to use those new
formats by default. However, before we do this we want to ensure that
no packages (in sid) will be broken due to this switch and there are
quite a few packages left to fix:;tag=3.0-quilt-by-default
You're more than welcome to help us achieve this release goal [2].

The initial uptake is quite good, more than 120 source packages
have been converted already:
Raw numbers:

We have collected some question/answers from early adopters in
the dedicated wiki page, the most important information is pasted
below. We hope you will find it helpful to convert your own packages.

=== Why should I convert my package to 3.0 (quilt) format? ===

Pick the reasons that matter to you:
* by keeping patches separate and properly documented (with DEP-3[1]):
* the Debian changes are more likely to be reviewed (for example thanks to
* any upstream contributor is more likely to find and merge the patches (if
you haven't forwarded it properly)
* other distributions can reuse our patches
* even if you don't have any upstream patch right now, next time that
someone must NMU your package, they can cleanly add a patch (with a
proper DEP-3 header) without having to modify the build system
* same applies for derivative distributions that have to modify your
packages... you're more likely to be able to find something valuable to
merge if their changes are kept as separate patches instead of merged
within the .diff.gz
* debian/rules can be simplified by getting rid of the
patching/unpatching code (or the uuencoding/uudecoding code if you ship
a supplementary binary file like an icon)
* the upstream tarball is bzip2-compressed and you don't want to have to
convert it
* the upstream tarball contains a debian directory and you don't want to
repackage it just to remove that directory
* the upstream author releases the software in multiple tarballs
* you don't have to add -i -I every time that you manually build the
package from the VCS repository (the VCS-specific files are ignored by
* in the long run it's best to standardize on a single patch system (new
contributors need to learn a single system, more people can help you,
etc.) and quilt appears to be that patch system.

=== How to convert a source package? ===

You need to put "3.0 (quilt)" or "3.0 (native)" in debian/source/format to
indicate the desired format to dpkg-source (see the dpkg-source(1) manual
page for more information).

Native packages should not need any other change.

When you switch to "3.0 (quilt)", there are other changes that you might
want to do:
* If your .diff.gz modifies upstream files, you should really put those
changes in separate quilt patches first, otherwise all those changes
will be merged in a single quilt patch named
debian/patches/debian-changes-<version>. Consider documenting those
patches by following DEP-3[1].
* If you use another patch system (like dpatch or dbs), consider
switching to quilt (you can then simplify your debian/rules, see next
* You can remove everything related to quilt in debian/rules
(patch/unpatch logic, cleanup of quilt stamp file and its .pc

=== Does a 3.0 (quilt) source package need to build-depend on quilt? ===

If you drop the quilt usage in debian/rules (patch/unpatch logic), then no.

=== Is the README.source file needed with 3.0 (quilt) source packages? ===

No. Since dpkg-source -x applies the patch, you don't have to explain how
the patch system works. If lintian gives you the
patch-system-but-no-source-readme warning, upgrade to the latest version
in sid.

=== Other questions ? ===

Read the full FAQ in the wiki and the dpkg-source(1) manual page. If you
still have questions, please ask on

Thank you for your attention.

Raphaël Hertzog

Reply all
Reply to author
0 new messages