1 |
On Thu, 2014-03-13 at 09:55 +0100, Michał Górny wrote: |
2 |
> Dnia 2014-03-12, o godz. 15:46:01 |
3 |
> hasufell <hasufell@g.o> napisał(a): |
4 |
> |
5 |
> > -----BEGIN PGP SIGNED MESSAGE----- |
6 |
> > Hash: SHA512 |
7 |
> > |
8 |
> > We have a problem where the crossdev pkg-config wrapper scripts |
9 |
> > interfere with multilib. |
10 |
> > |
11 |
> > crossdev for example sets in their pkg-config wrappers: |
12 |
> > |
13 |
> > PKG_CONFIG_LIBDIR="${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig" |
14 |
> > |
15 |
> > Now, SYSROOT is chosen from multiple conditions. When emerging a |
16 |
> > package, that happens to be "/" and thus results in: |
17 |
> > "//usr/lib/pkgconfig://usr/share/pkgconfig" |
18 |
> > |
19 |
> > Build systems like autotools will pick the crossdev provided |
20 |
> > "i686-pc-linux-gnu-pkg-config" for the 32bit ABI which will in turn |
21 |
> > override the eclass-exported PKG_CONFIG_LIBDIR and now effectively |
22 |
> > find the pkg-config files in /usr/lib64/... |
23 |
> > |
24 |
> > This is not a problem most of the time if the package just wants to |
25 |
> > get the libs to link against. |
26 |
> > |
27 |
> > However, every package that tries to access variables that are |
28 |
> > different between /usr/lib32/pkgconfig/foo.pc and |
29 |
> > /usr/lib64/pkgconfig/foo.pc like "libdir" will fail or produce |
30 |
> > unexpected results. |
31 |
> > |
32 |
> > That already happens for |
33 |
> > x11-libs/libva-vdpau-driver |
34 |
> > x11-libs/libva (https://bugs.gentoo.org/show_bug.cgi?id=500338) |
35 |
> > |
36 |
> > and there are probably more. |
37 |
> |
38 |
> Another possible workaround is to make pkgconfig true-multilib. Then it |
39 |
> would own i686-pc-linux-gnu-pkgconfig, and that executable would work |
40 |
> correctly. More than that, we could work on killing the PKG_CONFIG_PATH |
41 |
> hack. |
42 |
|
43 |
That won't work with current versions of crossdev because they blindly |
44 |
create/delete their pkg-config wrappers without checking if they are |
45 |
overwriting or removing something that belongs to another package. |