Re: [RFC] meson needs a pkg-config wrapper script


Eero Aaltonen
 

You can use `${pcfiledir}/../..` within a pkg-config file to reference the install path.
Unfortunately the last time I tried it when cross-compiling, the PKG_CONFIG_SYSROOT_DIR was ended up in the path as a duplicate.

-Eero

On Wed, 2021-12-01 at 09:36 +0100, Alexander Kanavin via lists.openembedded.org wrote:
No, it's not that. Even if you pass PKG_CONFIG_SYSROOT_DIR to pkg-config directly, it will apply that only to --cflags and similar, but not to generic --variable. Try this:

alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/aaaa pkg-config libdrm --cflags
-I/aaaa/usr/include/libdrm
alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/aaaa pkg-config libdrm --variable=includedir
/usr/include

So a wrapper will not solve the 'includedir prefix' problem, and neither the wrapper, nor pkg-config or meson can possibly know which variable is a path, and which isn't - the only place where that is known is the component that obtains the variable. And so that's where it has to be prefixed.

Alex

On Tue, 30 Nov 2021 at 23:38, Joel Winarske <joel.winarske@...> wrote:
Based on my testing, if PKG_CONFIG_SYSROOT_DIR is set or not makes zero difference on the outcome.  I suspect this is related to how pkg-config is launched by meson.

Looking at the meson source tree, in all ci/test cross compile scenarios they reference a pkg-config wrapper.  No cross compile scenario I see referencing the 'pkgconfig' key uses a bare pkg-config.

    cross/armclang-linux.txt:#pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
    cross/linux-mingw-w64-32bit.txt:pkgconfig = '/usr/bin/i686-w64-mingw32-pkg-config'
    cross/linux-mingw-w64-64bit.txt:pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'
    cross/ubuntu-armhf.txt:pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
    test cases/unit/33 cross file overrides always args/ubuntu-armhf-overrides.txt:pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
    test cases/unit/36 exe_wrapper behaviour/broken-cross.txt:pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'

I think adding a wrapper makes sense.


On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin <alex.kanavin@...> wrote:
On Tue, 30 Nov 2021 at 21:00, Joel Winarske <joel.winarske@...> wrote:
Yes, if the sys_root key value in meson.cross is present PKG_CONFIG_SYSROOT_DIR gets set.  Honister patch I confirmed with:
https://github.com/jwinarske/manifests/blob/honister/rpi64/0001-Add-sys_root-to-properties-section.patch

The issue is that meson doesn't pass PKG_CONFIG_SYSROOT_DIR to the shell environment that runs pkg-config, as with the pkg-config sandbox test it does work.


Both meson source code and its documentation indicate otherwise - if you set sys_root property, it will get passed to pkg-config via environment as PKG_CONFIG_SYSROOT_DIR:

Alex



Join {openembedded-core@lists.openembedded.org to automatically receive all group messages.