Debian Bug report logs - #551118
dpkg-dev: PKG_CONFIG_LIBDIR override makes it difficult to compile build-architecture binaries when necessary

version graph

Package: dpkg-dev; Maintainer for dpkg-dev is Dpkg Developers <debian-dpkg@lists.debian.org>; Source for dpkg-dev is src:dpkg.

Reported by: Colin Watson <cjwatson@ubuntu.com>

Date: Thu, 15 Oct 2009 20:27:09 UTC

Severity: normal

Found in version dpkg/1.15.4

Fixed in version dpkg/1.15.6

Done: Guillem Jover <guillem@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, codehelp@debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#551118; Package dpkg-dev. (Thu, 15 Oct 2009 20:27:12 GMT) Full text and rfc822 format available.

Acknowledgement sent to Colin Watson <cjwatson@ubuntu.com>:
New Bug report received and forwarded. Copy sent to codehelp@debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>. (Thu, 15 Oct 2009 20:27:12 GMT) Full text and rfc822 format available.

Message #5 received at submit@bugs.debian.org (full text, mbox):

From: Colin Watson <cjwatson@ubuntu.com>
To: submit@bugs.debian.org
Subject: dpkg-dev: PKG_CONFIG_LIBDIR override makes it difficult to compile build-architecture binaries when necessary
Date: Thu, 15 Oct 2009 21:23:04 +0100
Package: dpkg-dev
Version: 1.15.4
Severity: normal
User: ubuntu-devel@lists.ubuntu.com
Usertags: origin-ubuntu karmic

The PKG_CONFIG_LIBDIR override introduced for cross-compilation purposes
due to #439979 (so courtesy-copying Neil as the reporter of that bug,
although ISTR he's trying to reduce his involvement with Emdebian at the
moment) has a somewhat awkward consequence. I'm not sure I have a good
solution for this right now, but would like to have a bug open for
discussion.

It's true that setting PKG_CONFIG_LIBDIR when cross-compiling makes it a
lot easier to build the majority of packages that use pkg-config in
simple ways. You ask pkg-config for libraries, it automatically looks
them up for the host architecture, and your job's done.

However, consider the case where you need to build a binary for use
during the build that needs to link against external build-architecture
libraries that should be discovered using pkg-config. An example of this
is dbus-glib, which builds a binary (dbus-binding-tool) both for use
during its build and to ship in one of its .debs. This binary uses the
dbus-1 and gobject-2.0 pkg-config modules, linking against the
corresponding libraries. In the cross-compilation case, we clearly need
to build this binary twice - but now we need to persuade pkg-config to
give us build libraries!

I've approached this in a hacky fashion in my experiments by using
things like this in configure.ac:

  DBUS_CFLAGS_FOR_BUILD=`unset PKG_CONFIG_LIBDIR; pkg-config --cflags dbus-1`

The problem with this is that it's horribly Debian-specific, and it
would really be easier for everyone if this kind of change (which I am
able to implement in Autoconf/Automake without resorting to
packaging-level changes, although it's not all that pretty) could go
upstream. The standard upstream approach to this kind of thing is
documented in /usr/share/doc/pkg-config/README:

  Users can define the PKG_CONFIG environment variable to point at the
  right one, or if they cross-compile and have a correctly named pkg-config
  (eg. arm-linux-pkg-config) in their PATH that will be used in preference.

So, really what it seems that we ought to do is require $host-pkg-config
on all cross-building systems just like we require $host-gcc etc. and
then *not* set PKG_CONFIG_LIBDIR; maybe as a fallback we could set
PKG_CONFIG_LIBDIR in the event that $host-pkg-config is not on the path.
With that done, it would be possible to use $host-pkg-config and
pkg-config depending on whether cross or native builds are needed, the
way it was clearly intended to work upstream.

I'm not sure how to get there from here, though. Perhaps get
cross-targeted pkg-config packages onto buildd.emdebian.org and allow a
while for people to install them?

A further wrinkle is that $host-pkg-config will indeed be automatically
used for anyone who's using the PKG_CHECK_MODULES Autoconf macro (which
I suspect is the majority, but certainly won't be everyone), but not for
anyone who's just calling pkg-config directly. Should we just say that
if they're doing that then they need to compare build and host
architectures directly, the way they're probably already doing for gcc
and friends? Would this be a serious regression for Emdebian that would
need to be tackled in advance?

Thanks,

-- 
Colin Watson                                       [cjwatson@ubuntu.com]




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#551118; Package dpkg-dev. (Fri, 16 Oct 2009 09:06:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Neil Williams <codehelp@debian.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Fri, 16 Oct 2009 09:06:07 GMT) Full text and rfc822 format available.

Message #10 received at 551118@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: Colin Watson <cjwatson@ubuntu.com>, 551118@bugs.debian.org
Cc: Debian Embedded <debian-embedded@lists.debian.org>
Subject: Re: Bug#551118: dpkg-dev: PKG_CONFIG_LIBDIR override makes it difficult to compile build-architecture binaries when necessary
Date: Fri, 16 Oct 2009 10:05:31 +0100
[Message part 1 (text/plain, inline)]
On Thu, 15 Oct 2009 21:23:04 +0100
Colin Watson <cjwatson@ubuntu.com> wrote:

> Package: dpkg-dev
> Version: 1.15.4
> Severity: normal
> User: ubuntu-devel@lists.ubuntu.com
> Usertags: origin-ubuntu karmic
> 
> The PKG_CONFIG_LIBDIR override introduced for cross-compilation
> purposes due to #439979 (so courtesy-copying Neil as the reporter of
> that bug, although ISTR he's trying to reduce his involvement with
> Emdebian at the moment) has a somewhat awkward consequence. I'm not
> sure I have a good solution for this right now, but would like to
> have a bug open for discussion.

Day-to-day cross-building for Emdebian has stalled, not just because of
my reduced involvement but also because the cross-building system
has critical problems and the solution means migrating to a fully
operational multiarch - after Squeeze. The system used for Emdebian
Crush 1.0 (based on Lenny) had severe limitations (principally in
correct handling of build-dependencies) and can take us no further.

http://lists.debian.org/debian-embedded/2009/08/msg00005.html

How will multiarch affect pkg-config? I'm not sure that the detail has
been decided yet, so CC:'ing debian-embedded for info.

FTR there are other cases that are similar - pango and gtk both build
tools that are expected to be run during the build and these tools were
simply not built (or at least not executed) in the cross-builds, using
Emdebian-specific patches where necessary, causing a loss of
functionality. I haven't been able to solve that problem (but there
were workarounds for Crush 1.0 that relied on copying the data files
from other systems instead of generating new ones. Not ideal.)

> It's true that setting PKG_CONFIG_LIBDIR when cross-compiling makes
> it a lot easier to build the majority of packages that use pkg-config
> in simple ways. You ask pkg-config for libraries, it automatically
> looks them up for the host architecture, and your job's done.

PKG_CONFIG_LIBDIR was not the complete solution but it did/does do a
good job for most packages that use pkg-config. There were still
workarounds needed for some packages (using path mangling with gccross)
and dbus was one of these packages. Emdebian used a field in the
debian/xcontrol file (X-Build-Cross-Libtool=yes) that changed the PATH
so that the cross-build always used the right compiler. In effect, this
prevented dbus from building or executing the binding-tool using the
build compiler and only allowed the host compiler to be "seen".

http://www.emdebian.org/emdebian/intro.html#gccross

i.e. this is a known bug that I haven't been able to solve without a
truly horrible hack (much worse than Colin's suggestion) and I fully
agree that it is a corner case of the more general solution.
Nevertheless, dbus seemed to work at runtime in Emdebian Crush 1.0 -
whether that was by design or just because the limited package
selection in Emdebian Crush 1.0 simply didn't ask dbus to do much, I
wouldn't like to say.

Sadly, with the current state of cross-building for Emdebian, it is
hard to test fixes until multiarch is at least partially in place.

> However, consider the case where you need to build a binary for use
> during the build that needs to link against external
> build-architecture libraries that should be discovered using
> pkg-config. An example of this is dbus-glib, which builds a binary
> (dbus-binding-tool) both for use during its build and to ship in one
> of its .debs. This binary uses the dbus-1 and gobject-2.0 pkg-config
> modules, linking against the corresponding libraries. In the
> cross-compilation case, we clearly need to build this binary twice -
> but now we need to persuade pkg-config to give us build libraries!
>
> I've approached this in a hacky fashion in my experiments by using
> things like this in configure.ac:
> 
>   DBUS_CFLAGS_FOR_BUILD=`unset PKG_CONFIG_LIBDIR; pkg-config --cflags
> dbus-1`
> 
> The problem with this is that it's horribly Debian-specific

However, the use of PKG_CONFIG_LIBDIR is also Debian-specific
(specifically cross-building in Debian specific). Other teams
cross-building dbus are likely to be using qemu or other staging
methods where at least some of the build is actually achieved on the
embedded device or something approaching compatibility with the
device. I'm not sure that fixing this upstream would actually make any
difference to those who cross-build the upstream dbus using non-Debian
methods or staging methods involving things like qemu or
builds-on-the-device.

The only team trying to cross-build Debian packages using dpkg-dev and
not using emulators or requiring access to the device until after the
installation tarball has been created, is Emdebian. This is principally
because Emdebian seeks to create a binary distribution (i.e.
Debian-like) where the packages and the installation image can be
prepared independently. (Using staging tends to require that you build
all your packages yourself and then build one specific installation
from that one build, making all build errors fatal for the installation
testing and fatally undermining reproducibility testing of the final
packages. Debugging embedded stuff is hard enough without every user
having different builds of all packages.)

>, and it
> would really be easier for everyone if this kind of change (which I am
> able to implement in Autoconf/Automake without resorting to
> packaging-level changes, although it's not all that pretty) could go
> upstream. 

A Debian-specific fix would seem appropriate to me. There are a lot of
corner cases right now; dbus, pango and gtk are ostensibly similar
cases, gcc and perl are much harder ones to solve (but gcc is a
higher priority because not every cross-built system needs a GUI or
dbus but everything needs libgcc1, sadly, whilst Crush 1.0 did without
perl entirely - reasonably well too).

Other corner cases may well crop up during the adoption of multiarch.
Once there is a working implementation, we can see about spreading
multiarch to various upstreams as a complete task instead of the
historical patchwork of incremental hacks.

> The standard upstream approach to this kind of thing is
> documented in /usr/share/doc/pkg-config/README:
> 
>   Users can define the PKG_CONFIG environment variable to point at the
>   right one, or if they cross-compile and have a correctly named
> pkg-config (eg. arm-linux-pkg-config) in their PATH that will be used
> in preference.
> 
> So, really what it seems that we ought to do is require
> $host-pkg-config on all cross-building systems just like we require
> $host-gcc etc. and then *not* set PKG_CONFIG_LIBDIR; maybe as a
> fallback we could set PKG_CONFIG_LIBDIR in the event that
> $host-pkg-config is not on the path. With that done, it would be
> possible to use $host-pkg-config and pkg-config depending on whether
> cross or native builds are needed, the way it was clearly intended to
> work upstream.

I can't remember now quite why this didn't originally work (it may
simply have been that Emdebian didn't try this level of change) but
with all the changes needed for the adoption of multiarch, I think it
is time to ditch all workarounds (like dpkg-cross mangling of .pc files
and PKG_CONFIG_LIBDIR in dpkg and gccross in emdebian-tools) and
attempt to implement a new, generalised, solution. True, this may
result in a new set of corner cases and a new set of workarounds,
but I think it's a net gain.

It should be possible to
implement /usr/bin/arm-linux-gnueabi-pkg-config as a shell script
provided by a package that is made into a dependency of the
cross-building environment (ala binutils-multiarch). Indeed, the new
package could simply divert /usr/bin/pkg-config and use
dpkg-architecture values to detect which environment to set in the
wrapper with $host-pkg-config being a symlink - possibly even generated
in the postinst or at runtime so that new triplets can be supported
cleanly.

The binary pkg-config-multiarch package could be built from the
dpkg-cross source package to make it easier to keep it in step with
supported triplets or it could be part of dpkg-dev from the start.
(dpkg-cross will still need to be merged into dpkg-dev eventually, the
question is how much of it is to be thrown away first. Most of it,
hopefully.)

> I'm not sure how to get there from here, though. Perhaps get
> cross-targeted pkg-config packages onto buildd.emdebian.org and allow
> a while for people to install them?

I think this needs to be tied in with the other changes being worked on
for the .pc files themselves in order to achieve multiarch support. 

It is achievable - it would also provide a possible home for changes to
pkg-config that could make it unnecessary to modify the .pc files in
the first place.

It's not just autotools either, CMake needs similar changes:

The  main changes involve setting PKG_CONFIG_LIBDIR within CMake an
setting the include directories to locate the cross libraries installed
by dpkg-cross e.g.

 #Make pkg-config look in the right place
 SET(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_FIND_ROOT_PATH}/lib/pkgconfig/)
 ELSE (CMAKE_CROSSCOMPILING)

dpkg-cross (1)

Those changes could also be made in the multiarch pkg-config wrapper.

A little test and unpacking:

# diff -u usr/lib/pkgconfig/dbus-glib-1.pc usr/arm-linux-gnueabi/lib/pkgconfig/dbus-glib-1.pc 
--- usr/lib/pkgconfig/dbus-glib-1.pc	2009-09-29 23:39:48.000000000 +0000
+++ usr/arm-linux-gnueabi/lib/pkgconfig/dbus-glib-1.pc	2009-10-16 08:17:10.000000000 +0000
@@ -1,4 +1,4 @@
-prefix=/usr
+prefix=/usr/arm-linux-gnueabi
 exec_prefix=${prefix}
 libdir=${exec_prefix}/lib
 includedir=${prefix}/include

Multiarch support already requires that this behaviour is modified. It
may be useful to implement /usr/bin/arm-linux-gnueabi-pkg-config as a
wrapper for /usr/bin/pkg-config that ensures that prefixes and libdir
settings are correctly set *only* within that wrapper.

The wrapper could have support for particular options / environment
variables that support overriding the detection of the build and host
arguments.

> A further wrinkle is that $host-pkg-config will indeed be
> automatically used for anyone who's using the PKG_CHECK_MODULES
> Autoconf macro (which I suspect is the majority, but certainly won't
> be everyone), but not for anyone who's just calling pkg-config
> directly. 

A wrapper that knows about dpkg-architecture should be able to handle
that.

> Should we just say that if they're doing that then they
> need to compare build and host architectures directly, the way
> they're probably already doing for gcc and friends? Would this be a
> serious regression for Emdebian that would need to be tackled in
> advance?

Emdebian Crush (the cross-built distribution) is already in a serious
regression but this provides an opportunity for major changes whilst
everything is "up for grabs".

Fixing this will not cause any regression in Emdebian that is not
already present - the implementation of multiarch is the ideal time
to do "TheRightThing".

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.linux.codehelp.co.uk/
http://e-mail.is-not-s.ms/

[Message part 2 (application/pgp-signature, inline)]

Added tag(s) pending. Request was from Guillem Jover <guillem@debian.org> to control@bugs.debian.org. (Thu, 25 Feb 2010 08:42:14 GMT) Full text and rfc822 format available.

Message sent on to Colin Watson <cjwatson@ubuntu.com>:
Bug#551118. (Thu, 25 Feb 2010 08:42:20 GMT) Full text and rfc822 format available.

Message #15 received at 551118-submitter@bugs.debian.org (full text, mbox):

From: Guillem Jover <guillem@debian.org>
To: 551118-submitter@bugs.debian.org
Subject: Bug#551118 marked as pending
Date: Thu, 25 Feb 2010 08:40:37 +0000
tag 551118 pending
thanks

Hello,

Bug #551118 reported by you has been fixed in the Git repository. You can
see the changelog below, and you can check the diff of the fix at:

    http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=fc39dea

---
commit fc39dea9ec2ed9528f39eb288e94932913f70bf8
Author: Guillem Jover <guillem@debian.org>
Date:   Thu Feb 25 05:58:01 2010 +0100

    dpkg-buildpackage: Do not set PKG_CONFIG_LIBDIR when cross-building
    
    The proper solution to this is to let the build system choose the
    appropriate pkg-config binary for the build or host system in the
    same way pkg.m4 is handling it now.
    
    Closes: #551118

diff --git a/debian/changelog b/debian/changelog
index 56129c5..3da5ca1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -120,6 +120,10 @@ dpkg (1.15.6) UNRELEASED; urgency=low
     Thanks to Jonathan Nieder for the initial patch.
   * Use xz command to handle lzma compressed files in dpkg and dpkg-dev.
     This removes the lzma package from both dpkg and dpkg-dev dependencies.
+  * Do not set PKG_CONFIG_LIBDIR in dpkg-buildpackage when cross-building.
+    The proper solution to this is to let the build system choose the
+    appropriate pkg-config binary for the build or host system in the same
+    way pkg.m4 is handling it now. Closes: #551118
 
   [ Modestas Vainius ]
   * Implement symbol patterns (Closes: #563752). From now on, it is possible to




Reply sent to Guillem Jover <guillem@debian.org>:
You have taken responsibility. (Mon, 15 Mar 2010 11:07:19 GMT) Full text and rfc822 format available.

Notification sent to Colin Watson <cjwatson@ubuntu.com>:
Bug acknowledged by developer. (Mon, 15 Mar 2010 11:07:19 GMT) Full text and rfc822 format available.

Message #20 received at 551118-close@bugs.debian.org (full text, mbox):

From: Guillem Jover <guillem@debian.org>
To: 551118-close@bugs.debian.org
Subject: Bug#551118: fixed in dpkg 1.15.6
Date: Mon, 15 Mar 2010 11:03:10 +0000
Source: dpkg
Source-Version: 1.15.6

We believe that the bug you reported is fixed in the latest version of
dpkg, which is due to be installed in the Debian FTP archive:

dpkg-dev_1.15.6_all.deb
  to main/d/dpkg/dpkg-dev_1.15.6_all.deb
dpkg_1.15.6.dsc
  to main/d/dpkg/dpkg_1.15.6.dsc
dpkg_1.15.6.tar.bz2
  to main/d/dpkg/dpkg_1.15.6.tar.bz2
dpkg_1.15.6_amd64.deb
  to main/d/dpkg/dpkg_1.15.6_amd64.deb
dselect_1.15.6_amd64.deb
  to main/d/dpkg/dselect_1.15.6_amd64.deb
libdpkg-dev_1.15.6_amd64.deb
  to main/d/dpkg/libdpkg-dev_1.15.6_amd64.deb
libdpkg-perl_1.15.6_all.deb
  to main/d/dpkg/libdpkg-perl_1.15.6_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 551118@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Guillem Jover <guillem@debian.org> (supplier of updated dpkg package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Fri, 12 Mar 2010 00:15:31 +0100
Source: dpkg
Binary: libdpkg-dev dpkg dpkg-dev libdpkg-perl dselect
Architecture: source amd64 all
Version: 1.15.6
Distribution: experimental
Urgency: low
Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
Changed-By: Guillem Jover <guillem@debian.org>
Description: 
 dpkg       - Debian package management system
 dpkg-dev   - Debian package development tools
 dselect    - Debian package management front-end
 libdpkg-dev - Debian package management static library
 libdpkg-perl - Dpkg perl modules
Closes: 38334 60329 312206 363323 383869 403211 408525 430958 465256 498438 541464 542160 549167 551118 554488 557133 557459 557560 557619 558794 559269 560010 560071 563752 565712 566230 566406 566837 567531 568228 569618 570008 571798 572030 572836 572861
Changes: 
 dpkg (1.15.6) experimental; urgency=low
 .
   [ Raphaël Hertzog ]
   * debian/control: Add the accent on my first name.
   * Perl API cleanup:
     - rename Dpkg::Deps dump() methods into output([$fh]), overload string
       representation ("$dep") to provide the result of $dep->output()
     - prefix public functions in Dpkg::Deps with deps_ and export them
       by default
     - rename Dpkg::Source::Compressor in Dpkg::Compression::Process
     - rename Dpkg::Source::CompressedFile in Dpkg::Compression::FileHandle
       and completely redesign its API
     - update Dpkg::Compression's API to use compression_* functions
       instead of granting direct access to variables, integrate
       there management of default compression
     - introduce Dpkg::Interface::Storable and update many modules
       to make use of it
     - update Dpkg::BuildOptions to provide an object-oriented interface
     - update Dpkg::Checksums to provide an object-oriented interface
   * Drop debian-maintainers from Suggests since it's obsolete, the
     corresponding keyring is in debian-keyring.
   * Merge support of symbol patterns in dpkg-gensymbols. Thanks to
     Modestas Vainius for his work (see further for more details).
   * Accept filename with spaces and colon in the output of objdump.
     Required so that dpkg-shlibdeps support such files properly.
     Thanks to Raphaël Geissert for the patch. Closes: #565712
   * When unpacking a "3.0 (quilt)" source package, tell quilt where
     patches are (to be) stored. Requires quilt >= 0.48-5 to work.
     Closes: #557619
   * Fix update-alternatives to not try to reinstall an unknown alternative
     when the link group is broken, instead switch to the best choice in
     automatic mode. Closes: #566406
   * Don't return duplicate bug numbers in Launchpad-Bugs-Fixed:.
     Thanks to Brian Murray <brian@ubuntu.com> for the report
     and the patch. Closes: #569618
   * Add $VERSION numbers to all perl modules. Closes: #465256
     1.00 and higher means that the API should be stable
   * While parsing diff's output, accept any sentence that contains the word
     differ (as specified by POSIX) to identify that binary files could not be
     compared. Closes: #570008
   * dpkg-gencontrol does no longer accept arch-specific dependencies in
     arch: all packages. Closes: #560071
   * dpkg-gencontrol no longer warns if a substitution variable provided by -V
     is not used (the warning is meant to catch unused substitutions coming
     from the file, those are package specific with debhelper). Closes: #557133
   * dpkg-gencontrol now indicates which package is concerned by the substvars
     warning that it displays. Closes: #566837
   * dpkg-buildpackage now supports options --source-option=<opt> and
     --changes-option=<opt> to forward arbitrary options to dpkg-source and
     dpkg-genchanges respectively. Closes: #566230
   * The -T option of dpkg-{source,gencontrol,genchanges} can now be used
     multiple times to read substitution variables from multiple files.
     Closes: #363323
   * dpkg-source now supports an option --create-empty-orig in formats
     "2.0" and "3.0 (quilt)" to auto-create the main original tarball when
     there are supplementary tarballs. This makes it easier to bundle
     multiple software together. Closes: #554488
   * dpkg-source supports long option names --diff-ignore and --tar-ignore for
     -i and -I. A new option --extend-diff-ignore is introduced. Those options
     can thus now be used in debian/source/options.
   * Generate manual pages for perl modules.
   * Introduce the libdpkg-perl package and clarify its status in README.api.
   * Update Standards-Version to 3.8.4 (no changes needed).
   * Drop unused lintian override for arch-dep-package-has-big-usr-share on
     dselect.
   * The rewritten Dpkg::Checksums deals properly with filenames with
     spaces. Closes: #572030
   * dpkg-source does no longer fallback to other source formats if the
     requested one is not usable. Closes: #557459
   * Modify dpkg-source to error out when it would apply patches containing
     insecure paths (with "/../") and also error out when it would apply a
     patch through a symlink. Those checks are required as patch will happily
     modify files outside of the target directory and unpacking a source package
     should not be able to have any side-effect outside of the target
     directory. Fixes CVE-2010-0396.
   * Also error out when the quilt series contains a path with "/../" as this
     can cause patch to create files outside of the source package due
     to the -B .pc/$path option that it gets.
 .
   [ Guillem Jover ]
   * Handle argument parsing in dpkg-checkbuilddeps and dpkg-scanpackages
     in a way consistent with the rest of the tools.
   * Recognize --help in addition to -h in dpkg-checkbuilddeps.
   * Add a --version option to dpkg-checkbuilddeps.
   * Improve and mark more messages in writedb() to make translators lifes
     easier. Closes: #408525
   * Improve update-alternatives --display output to use two leading spaces
     for current link and slave information. Use single quotes for both “best”
     and the alternative it's pointing to. Closes: #549167
   * Refer to “half configured” instead of “failed config” in «dpkg-query -l»
     header and dselect package status printing for consistency.
   * Make “dpkg-statoverride --quiet” actually do something, and quiesce
     most of the inoquous warning messages. Closes: #403211
   * Make “dpkg-statoverride --update --add” fail if it cannot update the
     mode and owner of the file. This would fail later on when dpkg itself
     applies the overrides, so better to signal this earlier.
   * Add sparc64 to cputable. Thanks to Aurelien Jarno <aurel32@debian.org>.
     Closes: #560010
   * Do not allow diverting a file to itself, which makes the file to get
     removed. Closes: #312206
   * Make the check for duplicate fields in a stanza in libdpkg actually work,
     which now makes it fatal, as was intended originally. This should not
     cause problems for anything using dpkg-dev to build packages as those
     are already fatal on that case.
   * Add new deb-split(5) man page.
   * Fix misspellings of “explicitly” all over the place.
   * Normalize ar member names when reading (removing trailing spaces and
     slash), this allows deb-split packages be created with GNU ar.
   * Validate compression level on dpkg-deb argument parsing.
   * Fix error handling, clean up and refactor compression code.
     Thanks to Jonathan Nieder for several of the patches.
   * Do not print unambiguous epoch on dpkg file overwrite error.
   * Rename Dpkg::IPC::fork_and_exec() to Dpkg::IPC::spawn().
   * Change dpkg-dev to Depend on perl instead of perl5 and perl-modules.
   * Fix small memory leaks related to scandir() in dpkg-deb and libdpkg.
   * Fix dpkg-query and dpkg-trigger to actually print a version on --version.
   * Always spawn a new shell on conffile prompt, instead of supporting
     self backgrounding, remove DPKG_NO_TSTP environment variable support.
     Closes: #38334
   * Set DPKG_SHELL_REASON, DPKG_CONFFILE_OLD and DPKG_CONFFILE_NEW environment
     variables when spawning a shell for conffile examination. Closes: #60329
     Thanks to Daniel Martin <Daniel.Martin@jhu.edu> for the idea.
   * Add support for disabling update-alternatives at configure time using
     --withouth-update-alternatives.
   * Add support for disabling install-info at configure time using
     --withouth-install-info.
   * Update debian/copyright.
   * Use Debian instead of ‘Debian GNU/Linux’ when referring to the
     distribution.
   * On dpkg --no-act with --install, --unpack or --record-avail, and
     dpkg-deb --info or --field use mkdtemp() to create a temporary directory
     instead of insecure tempnam() or tmpnam() functions.
   * Remove --license and --licence options from tools.
   * Securely remove newly installed files when rolling-back a failed unpack.
   * Change default lzma compression level from 9 to 6.
     Thanks to Jonathan Nieder for the initial patch.
   * Add support for xz compressed data.tar member of binary packages. Add
     xz-utils to dpkg's Pre-Depends. Closes: #542160
     Thanks to Jonathan Nieder for the initial patch.
   * Use xz command to handle lzma compressed files in dpkg and dpkg-dev.
     This removes the lzma package from both dpkg and dpkg-dev dependencies.
   * Do not set PKG_CONFIG_LIBDIR in dpkg-buildpackage when cross-building.
     The proper solution to this is to let the build system choose the
     appropriate pkg-config binary for the build or host system in the same
     way pkg.m4 is handling it now. Closes: #551118
   * Dynamically link against all external libraries. This includes libbz2
     and zlib for dpkg-deb and and libselinux for dpkg on GNU/Linux.
   * Mark the libdpkg.a API as volatile and require any possible users to set
     LIBDPKG_VOLATILE_API to acknowledge that fact.
   * Add a new libdpkg-dev package with the headers and the static library,
     although its API should be considered volatile.
   * Reorganize the doc contents that goes into each package:
     - README.multicd only in dselect.
     - README.api only in development packages, dpkg-dev and libdpkg-dev.
     - triggers.txt only in dpkg-dev.
   * Move source.lintian-overrides to debian/source/lintian-overrides.
   * Switch SE Linux support to explicitly set path context. This fixes the
     mislabeling of files under <admindir> on conffile extraction or on unpack
     errors, due to improper default context restoration. Closes: #498438
   * Use FIEMAP when available (on Linux based systems) to sort the .list
     files loading order. With a cold cache it improves up to a 70%.
     Thanks to Morten Hustveit <morten@debian.org>.
   * When FIEMAP is not available use posix_fadvise() to start preloading the
     .list files before loading them. With a cold cache it improves up to 40%.
     Thanks to Stefan Fritsch <sf@sfritsch.de>. Closes: #557560
   * Call fsync(2) after writting files on disk, to get the atomicity
     guarantees when doing rename(2). Based on a patch by
     Jean-Baptiste Lallement <jeanbaptiste.lallement@gmail.com>.
     Closes: #430958
   * Call fsync(2) on database directories after creating, renaming or
     unlinking files, to guarantee the new file entry is correctly listed
     in the directory. Base on a patch by
     Jean-Baptiste Lallement <jeanbaptiste.lallement@gmail.com>.
   * Document in the man page the effects of setting TMPDIR for dpkg and
     dpkg-deb, HOME for dselect and dpkg and PAGER for dpkg. Closes: #572836
   * Document the exit codes for dpkg-query. Closes: #571798
   * Document “dpkg-query -l” abbreviated state information in the man page.
     Based on a patch by Marc-Jano Knopp <pub_br_debian.org@marc-jano.de>.
     Closes: #383869
   * Honour LINGUAS environment variable when installing translated man pages.
   * Allow disabling at configure time Unicode ncurses support for dselect.
     Based on a patch by Yuri Vasilevski <yvasilev@gentoo.org>.
 .
   [ Modestas Vainius ]
   * Implement symbol patterns (Closes: #563752). From now on, it is possible to
     match multiple symbols with a single entry in the symbol file template.
     While the concept is not new (wildcards also match multiple symbols),
     patterns cover much more ground and are a lot more flexible. Together with
     the framework, 3 basic pattern types are supported:
     - c++ - matching C++ symbols by their demangled name (as emitted by
       c++filt);
     - symver - matching by symbol version. It replaces the wildcards feature
       which is still supported for backwards compatibility but is reimplemented
       on top of the new framework;
     - regex - matching symbol names with perl regular expression.
     Basic patterns may be combined where it makes sense.
   * As a positive side effect of the new symbol patterns implementation,
     patterns are now treated like normal symbols whenever possible, e.g. a
     pattern is MISSING if it does not match anything. As a result,
     dpkg-gensymbols is now able to detect NEW/MISSING symbols when patterns are
     present in the symbol file (Closes: #541464). Please note, however, that
     there is no way to detect symbol changes in the pattern match sets.
   * Add source version to the dpkg-gensymbols diff label, reformat it according
     to the rules of dpkg-name.
   * Add -a<arch> option to dpkg-gensymbols.
   * Add -q option to dpkg-gensymbols. -c0 will never fail but still generate a
     diff. Use -c0 -q to keep dpkg-gensymbols completely quiet as before
     (Closes: #568228).
 .
   [ Jonathan Nieder ]
   * Fix a file handle leak in “dpkg-deb --info”. Thanks to Raphael Geissert
     for the report and patch.
 .
   [ Helge Kreutzmann ]
   * Add dpkg-gensymbols.1 to the translatable man page set.
 .
   [ Updated dpkg translations ]
   * Catalan (Guillem Jover).
   * French (Christian PERRIER).
   * German (Sven Joachim).
   * Italian 'Milo Casagrande). Closes: #567531
   * Simplified Chinese (Aron Xua). Closes: #558794
   * Slovak (Ivan Masár). Closes: #559269
   * Swedish (Peter Krefting).
 .
   [ Updated dselect translations ]
   * Catalan (Guillem Jover).
   * German (Sven Joachim).
   * Spanish (Javier Fernández-Sanguino). Closes: #572861
   * Swedish (Peter Krefting).
 .
   [ Updated man page translations ]
   * French (Christian Perrier): correcting inconsistencies for the translation
     of "original" here and there. Thanks to Julien Valroff for pointing this.
   * German (Helge Kreutzmann).
   * Swedish (Peter Krefting).
 .
   [ Updated scripts translations ]
   * Catalan (Guillem Jover).
   * French (Christian PERRIER).
   * German (Helge Kreutzmann).
   * Swedish (Peter Krefting).
Checksums-Sha1: 
 abb709759fd109efb9f644bd48590caf1a2a6b2b 1213 dpkg_1.15.6.dsc
 8eeac057c2f86768c941fb49d8148bff46b3390a 4845122 dpkg_1.15.6.tar.bz2
 7a6cc95b1e84e471203ef1586c3cea42e04902e6 359058 libdpkg-dev_1.15.6_amd64.deb
 379de54f120c129aec0d093ea11a608464b14286 2047990 dpkg_1.15.6_amd64.deb
 b7011693da0d3a4b31fba7dce74e5822ebf792d4 815156 dselect_1.15.6_amd64.deb
 516a94fdb2cf196eabee58ff9b182a8dea9281c8 636454 dpkg-dev_1.15.6_all.deb
 49882bd2c628e3fb98b850ebe073d8da64e53032 561102 libdpkg-perl_1.15.6_all.deb
Checksums-Sha256: 
 9e4d5c7fe0fa25c943468f8f056370f275061b67b010eff498682149eda62ebb 1213 dpkg_1.15.6.dsc
 0c942d4b556aea1517761ae937518d2de19692b494987653eca9c3316e3d2304 4845122 dpkg_1.15.6.tar.bz2
 ed3f5059ea5698f335cd5379352e3cd5741bbfc8dc963cbd815ec3465bfc3811 359058 libdpkg-dev_1.15.6_amd64.deb
 55958b6bd781bdf7f39db24699cb619430fd51e580345fbd9fe878b892f54a93 2047990 dpkg_1.15.6_amd64.deb
 7dcfde4c0da126d26d9f5210c3ec728e1c45219ff56187e14ce7923a015af15d 815156 dselect_1.15.6_amd64.deb
 4959c42d5a4406332813fa29e1718eaa689f7d7906fdebae5631e9754a828b04 636454 dpkg-dev_1.15.6_all.deb
 5e4fc9fe95935e6bf358ec76413e02e89ec93cf4cdf9ae636ecf23960e57c437 561102 libdpkg-perl_1.15.6_all.deb
Files: 
 ee502aafef4f0acebf2fee2ae3be95fb 1213 admin required dpkg_1.15.6.dsc
 6642d6725b5c1ba293fd30e7ae661be2 4845122 admin required dpkg_1.15.6.tar.bz2
 b1f38bfe7ea5e9102a7d84e70d9d1c91 359058 libdevel optional libdpkg-dev_1.15.6_amd64.deb
 cad0deec4cc82b8d8385580613c35c29 2047990 admin required dpkg_1.15.6_amd64.deb
 be5fabecbc1fac9207d86259b8657e00 815156 admin optional dselect_1.15.6_amd64.deb
 4143a0e559a4223dc298f46797a26895 636454 utils optional dpkg-dev_1.15.6_all.deb
 b26ea0b2526061f6b7954e9afe9de5bf 561102 perl optional libdpkg-perl_1.15.6_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkuZoNsACgkQuW9ciZ2SjJsOjwCglNOqYyPa/ijiDaH9oHv6AhKW
dl0AoK1+DiRE2w6ihOHZCbLp9xeEhPzk
=RgXv
-----END PGP SIGNATURE-----





Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Thu, 20 May 2010 07:33:19 GMT) Full text and rfc822 format available.

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed Apr 16 23:46:26 2014; Machine Name: buxtehude.debian.org

Debian Bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.