Hi Tollef,

Thanks for looking into this.

On Mon, Jan 04, 2016 at 10:13:22PM +0100, Tollef Fog Heen wrote:
> Right, this is the same as doko reported in #807946.  Do you have any
> concerns about his patch there or can I use that instead of your much
> more comprehensive one?

I confirm that doko filed a duplicate. His patch will practically solve
the issue in most cases, but is technically wrong. pkg-config's
architecture is not necessarily the same as DEB_BUILD_ARCH (but it will
be in many cases). Nothing prevents you from installing pkg-config:i386
on an amd64 system and then x86_64-linux-gnu-pkg-config will be broken.

You also notice that the complexity of my patch stems precisely from
doing this correctly. Rather than assuming that pkg-config's
architecture is the same as DEB_BUILD_ARCH, the architecture is written
into the script. This in turn makes it architecture dependent and
mandates a move to /usr/lib causing compatibility code in the dpkg-hook.

So if you dislike this approach, we can try to go Simon McVittie's
route: Simply don't point the symlink for pkg-config's architecture at
the cross wrapper, but at pkg-config directly. There are two ways to
implement this. One is to write pkg-config's architecture into the
dpkg-hook (essentially moving the complexity). The other is to ship it
as a file in the package (knowing that the dpkg-hook won't touch
symlinks that don't point to the cross wrapper). I believe the latter to
be fragile, because
 1) Other packages (crossbuild-essential-*) mess with this symlink as
    pkg-config failed to do so for a long time. Think: file conflicts.
 2) preinst needs to remove any cross wrapper symlinks for pkg-config's
    architecture adding the complexity there.
 3) There is a chance that the dpkg hook is run in between preinst and
    unpack.

So given all of this, I believe that my patch has the least complexity
for doing the right thing.

Helmut

Reply via email to