1 |
On Sat, 2 Jan 2021 20:09:04 -0500 |
2 |
Mike Gilbert <floppym@g.o> wrote: |
3 |
|
4 |
> When cross-compiling, users will typically have |
5 |
> PKG_CONFIG_SYSROOT=${SYSROOT} defined via pkg-config wrapper. |
6 |
> |
7 |
> When PKG_CONFIG_SYSROOT is set, all paths included in pkg-config |
8 |
> output get prefixed with this value. |
9 |
> |
10 |
> Signed-off-by: Mike Gilbert <floppym@g.o> |
11 |
> --- |
12 |
> |
13 |
> This patch has already been pushed, but I figured I would send it for |
14 |
> review in case someone else can think of a failure case, or has a better |
15 |
> solution. |
16 |
> |
17 |
> eclass/systemd.eclass | 1 + |
18 |
> 1 file changed, 1 insertion(+) |
19 |
> |
20 |
> diff --git a/eclass/systemd.eclass b/eclass/systemd.eclass |
21 |
> index 81065a0af79a..f6d1fa2d92d6 100644 |
22 |
> --- a/eclass/systemd.eclass |
23 |
> +++ b/eclass/systemd.eclass |
24 |
> @@ -50,6 +50,7 @@ _systemd_get_dir() { |
25 |
> |
26 |
> if $(tc-getPKG_CONFIG) --exists systemd; then |
27 |
> d=$($(tc-getPKG_CONFIG) --variable="${variable}" systemd) || die |
28 |
> + d=${d#${SYSROOT}} |
29 |
> d=${d#${EPREFIX}} |
30 |
> else |
31 |
> d=${fallback} |
32 |
|
33 |
I was going to say this is not the best approach as it would be better |
34 |
to tell pkg-config to not add the SYSROOT in the first place. I now |
35 |
realise we have shot ourselves in the foot with cross-pkg-config as it |
36 |
uses SYSROOT to set both PKG_CONFIG_SYSROOT_DIR to control the output |
37 |
and PKG_CONFIG_LIBDIR to find the .pc files in the first place. I have |
38 |
had prefix-related fixes for cross-pkg-config lined up for over a year |
39 |
but unfortunately they do not address this. Trying to accommodate this |
40 |
use case would probably just make it more confusing though so maybe |
41 |
your approach is best after all. |
42 |
|
43 |
The EPREFIX line is (sometimes) wrong in EAPI 7 though and the same goes |
44 |
for udev.eclass. It took a while to get this agreed and corrected in |
45 |
PMS but if SYSROOT points to / then the effective prefix is BROOT, not |
46 |
EPREFIX; they may not be the same. If you just strip ESYSROOT then |
47 |
it will always do the right thing but you'll need this fall back for |
48 |
older EAPIs. I'm not sure why you didn't do it in one line? I forget if |
49 |
EPREFIX is normalised to be / rather thank blank. |
50 |
|
51 |
d=${d#${SYSROOT%/}/${EPREFIX#/}} |
52 |
|
53 |
-- |
54 |
James Le Cuirot (chewi) |
55 |
Gentoo Linux Developer |