1 |
On Wed, 2014-03-12 at 15:46 +0000, hasufell wrote: |
2 |
> We have a problem where the crossdev pkg-config wrapper scripts |
3 |
> interfere with multilib. |
4 |
> |
5 |
> crossdev for example sets in their pkg-config wrappers: |
6 |
> |
7 |
> PKG_CONFIG_LIBDIR="${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig" |
8 |
> |
9 |
> Now, SYSROOT is chosen from multiple conditions. When emerging a |
10 |
> package, that happens to be "/" and thus results in: |
11 |
> "//usr/lib/pkgconfig://usr/share/pkgconfig" |
12 |
> |
13 |
> Build systems like autotools will pick the crossdev provided |
14 |
> "i686-pc-linux-gnu-pkg-config" for the 32bit ABI which will in turn |
15 |
> override the eclass-exported PKG_CONFIG_LIBDIR and now effectively |
16 |
> find the pkg-config files in /usr/lib64/... |
17 |
> |
18 |
> This is not a problem most of the time if the package just wants to |
19 |
> get the libs to link against. |
20 |
> |
21 |
> However, every package that tries to access variables that are |
22 |
> different between /usr/lib32/pkgconfig/foo.pc and |
23 |
> /usr/lib64/pkgconfig/foo.pc like "libdir" will fail or produce |
24 |
> unexpected results. |
25 |
> |
26 |
> That already happens for |
27 |
> x11-libs/libva-vdpau-driver |
28 |
> x11-libs/libva (https://bugs.gentoo.org/show_bug.cgi?id=500338) |
29 |
> |
30 |
> and there are probably more. |
31 |
> |
32 |
> A simple workaround is: |
33 |
> PKG_CONFIG="pkg-config" emerge foo |
34 |
> |
35 |
> But I think that is not appropriate to set in the eclass. How can we |
36 |
> solve this? Don't bikeshed. |
37 |
|
38 |
Two possibilities: |
39 |
1. Don't allow crossdev to handle targets which are natively handled by |
40 |
multilib profiles. For example, is there any legitimate reason for |
41 |
wanting crossdev's i686 wrappers when on a multilib amd64 profile? |
42 |
2. Have crossdev install its wrappers in a prefix, for example |
43 |
in /usr/libexec/crossdev, which gets added to PATH by cross-emerge. |