Summary

This pages summarizes information concerning the switch to the new source package formats "3.0 (quilt)" and "3.0 (native)". This switch is planned to happen in the squeeze development cycle.

Advantages of new formats

Implementation

FAQ

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 dpkg-source(1) 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:

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.

How to use multiple upstream tarball in 3.0 (quilt) format?

Simply put a file  <source>_<version>.orig-<component>.tar.{gz,bz2,lzma}  near the traditional  .orig  tarball. The content of that tarball should also be already unpacked in the  component  subdir of the unpacked source package. The next  dpkg-source -b  will pick it up automatically.

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

Pick the reasons that matter to you:

Will my packages be backportable to etch?

With 3.0 (quilt), backporting to etch is possible if you don't use multiple upstream tarballs.

If this is the case, you can trivially backport by doing the following:

The changes coming from the quilt patches will be in the .diff.gz but it will work.

I get lintian errors and warnings with new source formats

The following warnings are incorrect for the new source formats, and are fixed in the latest Lintian:

You should always test your packages using the latest Lintian version from Sid (or ignore the warnings until you can upgrade).

What shall I do with the debian/patches/.dpkg-source-applied file?

This file serves as a hint that the patches have been applied at extraction time. It will not be included in the generated debian.tar.gz. Thus it should also not be included in any VCS... tools importing source package in VCS should probably learn to use --skip-patches when importing 3.0 (quilt) source packages (they can also use --skip-debianization to extract only the upstream part of the source package).

I converted my package but it fails to unpack on all buildds

You certainly have quilt patches that only applies with fuzz (i.e. they only apply if patch ignores context lines). quilt applies those without failing but dpkg-source doesn't. Since quilt isn't installed on buildd, they are using the internal dpkg-source implementation and fail. You can reproduce the failure with dpkg-source --without-quilt -x <dsc-file>. The solution is to refresh the patches, for example with those commands :

quilt pop -a
while quilt push; do quilt refresh -p ab; done

Why aren't -p0 patch supported in 3.0 (quilt) format?

See sub-thread starting here.

How many packages have already been converted?

http://upsilon.cc/~zack/stuff/dpkg-v3/

Validation of all tools with new source formats

For all applications, please be sure to test the 3 important cases:

It's also interesting to test with various compressions methods (gz, bz2, lzma).

Some sample source packages are available here. You can add it to /etc/apt/sources.list with deb-src http://people.debian.org/~hertzog/packages/ debsrc3.0/. They have the following characteristics:

Current test results:

Please try using new source packages with all your usual tools (in particular if you maintain them) and file bugs if you encounter problems and usertag them appropriately (user hertzog@debian.org / tag 3.0-quilt-by-default). Also update the list above with any relevant information (including pointers to bugs).


CategorySpec