On Wednesday 25 of December 2013 06:02:12 Michele Calgaro wrote:
What exactly is required to switch to quilt format? Is this a simple change to the dpkg-buildpackage call or something more complex?
Tim, I don't have the experience of Slavek (so I may be missing something), but switching to quilt will require:
- change the format inside debian/source/format from native to quilt
- switch debian/ubuntu specific patches to quilt format
- bremove anything related to quilt from debian/rules
- modify the building scripts to create a "<source package>_<upstream
version>.orig.tar.gz" file from the package source before building 5) modify the building scripts to build using format 3.0(quilt), which requires the .orig.tar.gz file to be in the parent directory of the debian folder
I have just updated dpkg on my Debian/Jessie, so in the next few days I will have to work on this, because I have already experience build failures, as Slavek initially mentioned. If I find some other changes that are required, I will update the post.
Here are a couple of useful links as well: https://wiki.debian.org/Projects/DebSrc3.0#Advantages_of_new_formats https://wiki.debian.org/DebianMentorsFaq#What_is_the_ifference_between_a_na tive_Debian_package_and_a_non-native_package.3F - section 2.4
Cheers Michele
In calling dpkg-buildpackage is basically the only difference - in parent folder must exists tarball with the sources (except debian folder) named "package_release.orig.tar.xz", for example: tdelibs-trinity_14.0.0-r974.orig.tar.xz.
As is evident from the name - orig.tar.xz is one common to all distributions. However, the condition is that it cannot be created again for each distribution => must be the binary same == created only once. At the same time, if package is updated only due to the change in tde-packaging, but not a change in the source code, orig.tar.xz must remain binary same as previous. For this reason I use script create_tarball that source tarball creates only if it does not exist.
As I mentioned earlier - my script to prepare the source deb packages I already have prepared for these steps. Legenda: DEB_DIR is folder with deb packages for particular module, TARBALL_DIR is folder with tarballs created by create_tarball script, NAME is package name (including -trinity, readed from changelog file), REL is "base" release number - for above example "4:14.0.0-r974"), SRC is source tarball.
Ad 1) From my script: if [ -f $DEB_DIR/source/debian/source/format ]; then grep -q "(native)" $DEB_DIR/source/debian/source/format ] && sed -i "s|(native)|(quilt)|" $DEB_DIR/source/debian/source/format else mkdir -p $DEB_DIR/source/debian/source echo "3.0 (quilt)" >$DEB_DIR/source/debian/source/format fi
Ad 2) Already done.
Ad 3) From my script: grep -q "^include.*/usr/share/cdbs/1/rules/patchsys-quilt.mk" $DEB_DIR/source/debian/rules && sed -i "s|^(include.*/usr/share/cdbs/1/rules/patchsys-quilt.mk)|#\1|" $DEB_DIR/source/debian/rules
Ad 4) In my script I use create-tarball from 'scripts' and this tarball I use as orig.tar.xz. From my script: ln -s $TARBALL_DIR/$SRC.tar.xz $DEB_DIR/${NAME}_${REL#*:}.orig.tar.xz
Ad 5) If the package specify format "3.0 (quilt)" it is not necessary to modify the call dpkg-buildpackage. In my script I use one condition - if orig.tar.xz is new tarball, for the first distribution is added option "-sa", in other cases "-sd". This ensures that the orig.tar.xz uploads only once.
As I realized yesterday, the problem is meta packages that do not contain source code independently of the distribution, but the files are in tde-packaging. My current script's leaves this package as "native". Now I working to change it. Then I will be able to send my script as an example.
Slavek