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:
1) change the format inside debian/source/format from native to quilt
2) switch debian/ubuntu specific patches to quilt format
3) bremove anything related to quilt from debian/rules
4) 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