[Bug 1842947] Re: dpkg 1.19.0.5ubuntu2.2 build did not recreate 'configure' file, losing changes in 'configure.ac'
Dan Streetman
dan.streetman at canonical.com
Thu Sep 5 17:49:32 UTC 2019
After discussion with cjwatson in #ubuntu-devel, it looks like this is
just a dpkg-specific packaging/build-rules issue; by default, packages
will use dh_autoreconf, which will call autoreconf -f to force
(re)creation of the configure file. The dpkg package has its own
debian/rules call to autoreconf, however, and it doesn't pass -f.
This has been fixed (maybe unintentionally) upstream by commit
c72f539b979a0c8647d2a6c62ee45565cd243b3d which moves the call to
autoreconf into an 'autogen' file, but also more importantly changes the
call from 'autoreconf -v -i' to 'autoreconf -f -i'.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to dpkg in Ubuntu.
https://bugs.launchpad.net/bugs/1842947
Title:
dpkg 1.19.0.5ubuntu2.2 build did not recreate 'configure' file, losing
changes in 'configure.ac'
Status in dpkg package in Ubuntu:
New
Bug description:
[impact]
dpkg at version 1.19.0.5ubuntu2 had support for zstd added:
https://launchpad.net/ubuntu/+source/dpkg/1.19.0.5ubuntu2
part of that change was to update the 'configure.ac' file with zstd support, e.g.:
http://launchpadlibrarian.net/366237303/dpkg_1.19.0.5ubuntu1_1.19.0.5ubuntu2.diff.gz
note that the 'configure' file was not updated - which *should* be ok,
as it should be recreated from the 'configure.ac' file during build.
For the build of that version and the next (1.19.0.5ubuntu2.1), the
'configure' file was correctly recreated during build.
However at version 1.19.0.5ubuntu2.2, the 'configure' file was not
recreated during build. Thus, dpkg was not built linked against
libzstd.
[test case]
on bionic system:
$ sudo apt install ubuntu-dev-tools
$ pull-lp-source dpkg 1.19.0.5ubuntu2.2
$ cd dpkg-1.19.0.5ubuntu2.2/
$ sudo apt build-dep .
$ dpkg-buildpackage
and verify if dpkg-deb is linked against libzstd:
$ ldd build-tree/dpkg-deb/dpkg-deb | grep zstd
or extract it from the deb itself and check:
$ dpkg-deb -x ../dpkg_1.19.0.5ubuntu2.2_amd64.deb ../deb-files
$ ldd ../deb-files/usr/bin/dpkg-deb | grep zstd
simply touching the 'configure.ac' file (to bring its timestamp newer than the 'configure' file) causes the build to work correctly:
$ mkdir no-touch
$ cd no-touch
$ dpkg-source -x ~/dpkg_1.19.0.5ubuntu2.2.dsc
$ cd dpkg-1.19.0.5ubuntu2.2/
$ dpkg-buildpackage
$ ldd build-tree/dpkg-deb/dpkg-deb | grep zstd
$
$ mkdir touch
$ cd touch
$ dpkg-source -x ~/dpkg_1.19.0.5ubuntu2.2.dsc
$ cd dpkg-1.19.0.5ubuntu2.2/
$ touch configure.ac
$ dpkg-buildpackage
$ ldd build-tree/dpkg-deb/dpkg-deb | grep zstd
libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f8c1d8af000)
[regression potential]
TBD
[other info]
this might not be an issue specifically with dpkg itself, it could be
an issue with debhelper and other tooling that is responsible for
calling autoconf or autoreconf during build. Or possibly a problem
with the dpkg debian/rules or other related build config.
Or, simply including the 'configure' file in the package source might
be considered a bug, since it's an intermediate build file that really
shouldn't be included. However, it's included in many source
packages, including in debian, and removing it from all of them seems
unlikely and/or unwieldy. Additionally, for "normal" packages that
use quilt (i.e., aren't native), any changes to the 'configure.ac'
file would be done with a patch, meaning the pre-build process would
always make the 'configure.ac' file newer than the 'configure' file.
Maybe for native packages, autoconf/autoreconf should always be called
with -f, or maybe the 'configure' file should be removed from native
packages.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1842947/+subscriptions
More information about the foundations-bugs
mailing list