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

2021-12-01 Thread Joel Winarske
Actually the recipe pkgconfig_git.bb points to the freedesktop pkg-config
repo, which is used by default.

On Wed, Dec 1, 2021 at 3:27 PM Joel Winarske via lists.openembedded.org
 wrote:

> Forgot the reply all, not intentional :)
>
> Looks like the build is using the pkgconfig flavor:
> meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
>
> Perhaps I just need a PREFERRED_PROVIDER_pkgconfig ?= "pkg-config" and
> pkg-config recipe, then perhaps it will just work.
>
> On Wed, Dec 1, 2021 at 2:39 PM Alexander Kanavin 
> wrote:
>
>> Please keep the conversation on the list.
>>
>> Those are two different, independently developed projects:
>> https://gitlab.freedesktop.org/pkg-config/pkg-config
>> https://github.com/pkgconf/pkgconf
>> and they are not fully compatible as you have just shown.
>>
>> I'm not sure how pkgconf is able to decide that includedir is a path
>> (short of hardcoding that inside the source somewhere), but such logic
>> needs to be carefully investigated before we make use of it, e.g. by
>> switching to pkgconf in oe-core.
>>
>> Alex
>>
>> On Wed, 1 Dec 2021 at 23:31, Joel Winarske 
>> wrote:
>>
>>> pkg-config --version ?
>>>
>>> Using 0.29.2 I get the same output as you:
>>> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET
>>> /home/linuxbrew/.linuxbrew/bin/pkg-config --define-variable=prefix=/opt
>>> --variable=includedir glesv2
>>> /usr/include
>>>
>>> Using 1.7.3 it works:
>>>
>>> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
>>> PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET /usr/bin/pkg-config
>>> --variable=includedir glesv2
>>>
>>> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr/include
>>>
>>> $ /usr/bin/pkg-config --version
>>> 1.7.3
>>>
>>> $ /home/linuxbrew/.linuxbrew/bin/pkg-config --version
>>> 0.29.2
>>>
>>> On Wed, Dec 1, 2021 at 12:36 AM Alexander Kanavin <
>>> alex.kana...@gmail.com> 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=/ pkg-config libdrm
 --cflags
 -I//usr/include/libdrm
 alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/ 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 
 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.
>
> 5.2 Tool Calling Conventions -
> https://autotools.io/pkgconfig/cross-compiling.html
>
> On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin <
> alex.kana...@gmail.com> wrote:
>
>> On Tue, 30 Nov 2021 at 21:00, 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:
>>

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

2021-12-01 Thread Joel Winarske
Forgot the reply all, not intentional :)

Looks like the build is using the pkgconfig flavor:
meta/recipes-devtools/pkgconfig/pkgconfig_git.bb

Perhaps I just need a PREFERRED_PROVIDER_pkgconfig ?= "pkg-config" and
pkg-config recipe, then perhaps it will just work.

On Wed, Dec 1, 2021 at 2:39 PM Alexander Kanavin 
wrote:

> Please keep the conversation on the list.
>
> Those are two different, independently developed projects:
> https://gitlab.freedesktop.org/pkg-config/pkg-config
> https://github.com/pkgconf/pkgconf
> and they are not fully compatible as you have just shown.
>
> I'm not sure how pkgconf is able to decide that includedir is a path
> (short of hardcoding that inside the source somewhere), but such logic
> needs to be carefully investigated before we make use of it, e.g. by
> switching to pkgconf in oe-core.
>
> Alex
>
> On Wed, 1 Dec 2021 at 23:31, Joel Winarske 
> wrote:
>
>> pkg-config --version ?
>>
>> Using 0.29.2 I get the same output as you:
>> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET
>> /home/linuxbrew/.linuxbrew/bin/pkg-config --define-variable=prefix=/opt
>> --variable=includedir glesv2
>> /usr/include
>>
>> Using 1.7.3 it works:
>>
>> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
>> PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET /usr/bin/pkg-config
>> --variable=includedir glesv2
>>
>> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr/include
>>
>> $ /usr/bin/pkg-config --version
>> 1.7.3
>>
>> $ /home/linuxbrew/.linuxbrew/bin/pkg-config --version
>> 0.29.2
>>
>> On Wed, Dec 1, 2021 at 12:36 AM Alexander Kanavin 
>> 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=/ pkg-config libdrm
>>> --cflags
>>> -I//usr/include/libdrm
>>> alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/ 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 
>>> 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.

 5.2 Tool Calling Conventions -
 https://autotools.io/pkgconfig/cross-compiling.html

 On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin <
 alex.kana...@gmail.com> wrote:

> On Tue, 30 Nov 2021 at 21:00, 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:
>
> https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121
>
> Alex
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159068): 
https://lists.openembedded.org/g/openembedded-core/message/159068
Mute This Topic: 

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

2021-12-01 Thread Alexander Kanavin
Please keep the conversation on the list.

Those are two different, independently developed projects:
https://gitlab.freedesktop.org/pkg-config/pkg-config
https://github.com/pkgconf/pkgconf
and they are not fully compatible as you have just shown.

I'm not sure how pkgconf is able to decide that includedir is a path (short
of hardcoding that inside the source somewhere), but such logic needs to be
carefully investigated before we make use of it, e.g. by switching to
pkgconf in oe-core.

Alex

On Wed, 1 Dec 2021 at 23:31, Joel Winarske  wrote:

> pkg-config --version ?
>
> Using 0.29.2 I get the same output as you:
> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET
> /home/linuxbrew/.linuxbrew/bin/pkg-config --define-variable=prefix=/opt
> --variable=includedir glesv2
> /usr/include
>
> Using 1.7.3 it works:
>
> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
> PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET /usr/bin/pkg-config
> --variable=includedir glesv2
>
> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr/include
>
> $ /usr/bin/pkg-config --version
> 1.7.3
>
> $ /home/linuxbrew/.linuxbrew/bin/pkg-config --version
> 0.29.2
>
> On Wed, Dec 1, 2021 at 12:36 AM Alexander Kanavin 
> 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=/ pkg-config libdrm
>> --cflags
>> -I//usr/include/libdrm
>> alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/ 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 
>> 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.
>>>
>>> 5.2 Tool Calling Conventions -
>>> https://autotools.io/pkgconfig/cross-compiling.html
>>>
>>> On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin <
>>> alex.kana...@gmail.com> wrote:
>>>
 On Tue, 30 Nov 2021 at 21:00, 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:

 https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121

 Alex



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159064): 
https://lists.openembedded.org/g/openembedded-core/message/159064
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-12-01 Thread 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=/ pkg-config libdrm
> --cflags
> -I//usr/include/libdrm
> alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/ 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 
> 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.
> > 
> > 5.2 Tool Calling Conventions - 
> > https://autotools.io/pkgconfig/cross-compiling.html
> > On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin <
> > alex.kana...@gmail.com> wrote:
> > > On Tue, 30 Nov 2021 at 21:00, Joel Winarske <
> > > joel.winar...@gmail.com> 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:
> > > https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121
> > > Alex
> > > 
> > > 
> 
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159020): 
https://lists.openembedded.org/g/openembedded-core/message/159020
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-12-01 Thread Alexander Kanavin
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=/ pkg-config libdrm
--cflags
-I//usr/include/libdrm
alex@alex-lx-laptop:~$ PKG_CONFIG_SYSROOT_DIR=/ 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  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.
>
> 5.2 Tool Calling Conventions -
> https://autotools.io/pkgconfig/cross-compiling.html
>
> On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin 
> wrote:
>
>> On Tue, 30 Nov 2021 at 21:00, 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:
>>
>> https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121
>>
>> Alex
>>
>>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159019): 
https://lists.openembedded.org/g/openembedded-core/message/159019
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Joel Winarske
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.

5.2 Tool Calling Conventions -
https://autotools.io/pkgconfig/cross-compiling.html

On Tue, Nov 30, 2021 at 12:13 PM Alexander Kanavin 
wrote:

> On Tue, 30 Nov 2021 at 21:00, 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:
>
> https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121
>
> Alex
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#159001): 
https://lists.openembedded.org/g/openembedded-core/message/159001
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Ross Burton
On Tue, 30 Nov 2021 at 17:20, Joel Winarske  wrote:
> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all package 
> config variable queries.  So if you want to determine the absolute path of a 
> variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your query.  
> Currently this is not possible with Yocto+Meson.

I should just point out that this is barely possible in a portable
manner: pkgconfig and pkgconf have differing behaviour here, and they
both consider their behaviour correct.

So, good luck with getting absolute paths of variables when sysroots
are involved.

Ross

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158995): 
https://lists.openembedded.org/g/openembedded-core/message/158995
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Alexander Kanavin
On Tue, 30 Nov 2021 at 21:00, 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:
https://github.com/mesonbuild/meson/blob/master/mesonbuild/dependencies/pkgconfig.py#L121

Alex

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158993): 
https://lists.openembedded.org/g/openembedded-core/message/158993
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Joel Winarske
Also all of the above requires this change:
https://github.com/KhronosGroup/Vulkan-Loader/pull/756


On Tue, Nov 30, 2021 at 12:00 PM 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.
>
>
> On Tue, Nov 30, 2021 at 11:40 AM Alexander Kanavin 
> wrote:
>
>> I am seeing in mesonbuild/dependencies/pkgconfig.py
>>
>> sysroot = environment.properties[for_machine].get_sys_root()
>> if sysroot:
>> env['PKG_CONFIG_SYSROOT_DIR'] = sysroo
>>
>> So we probably need to ensure this 'sys_root' is correctly set, and then
>> things will simply work?
>>
>> Alex
>>
>> On Tue, 30 Nov 2021 at 20:15, Joel Winarske 
>> wrote:
>>
>>> https://github.com/vkmark/vkmark/blob/master/src/meson.build#L9
>>>
>>> On Tue, Nov 30, 2021 at 10:53 AM Alexander Kanavin <
>>> alex.kana...@gmail.com> wrote:
>>>
 I do not quite understand the use case. What is being done with the
 full path to the header?

 Alex

 On Tue, 30 Nov 2021 at 19:26, Joel Winarske 
 wrote:

> This pattern works to get the absolute path of the header:
>
> Yocto
>
> EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"
>
> Meson
>
> vulkan_dep = dependency('vulkan')
> vulkan_hpp = join_paths([
> vulkan_dep.get_pkgconfig_variable('includedir',
> define_variable: ['prefix', get_option('prefix')]),
> 'vulkan',
> 'vulkan.hpp'
> ])
>
> Implementation in build/meson-log.txt
>
> Called
> `/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
> --define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
> --variable=includedir vulkan` -> 0
>
>
> One would expect the following meson to work if STAGING_DIR_TARGET
> were set, as that's how pkg-config works:
>
> vulkan_dep = dependency('vulkan')
> vulkan_hpp = join_paths([
> vulkan_dep.get_pkgconfig_variable('includedir'),
> 'vulkan',
> 'vulkan.hpp'
> ])
>
> This will always return /usr/include/vulkan/vulkan.hpp regardless of
> PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
> be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
> value.
>
>
> Sandbox testing of pkg-config
>
> $ export
> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
> --define-variable=prefix=/opt --variable=includedir vulkan
>
> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include
>
>
> meson.cross
>
> Setting sys_root in the properties section of meson.cross (patching
> meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
> sys_root is present in nativesdk_meson*.bb, not meson*.bb.
>
> The issue for meson is that they are not passing the
> PKG_CONFIG_SYSROOT_DIR variable to the shell that launches pkg-config.
>
> My proposed work around (this email thread) would fix the behavior.  I
> believe the proper fix is for meson to address upstream.  Still waiting on
> a response from them: https://github.com/mesonbuild/meson/issues/9674
>
>
> Joel
>
> On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin <
> alex.kana...@gmail.com> wrote:
>
>> On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
>> wrote:
>>
>>> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config
>>> process.
>>>
>>> Currently meson.cross as generated in meson.bbclass points directly
>>> to the pkg-config executable (no wrapper script).
>>>
>>> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
>>> package config variable queries.  So if you want to determine the 
>>> absolute
>>> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
>>> query.  Currently this is not possible with Yocto+Meson.
>>>
>>> I think a simple wrapper script would resolve this.  This is from
>>> https://autotools.io/pkgconfig/cross-compiling.html:
>>>
>>> #!/bin/sh
>>>
>>> SYSROOT=/build/root
>>>
>>> export PKG_CONFIG_PATH=
>>> 

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

2021-11-30 Thread Joel Winarske
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.


On Tue, Nov 30, 2021 at 11:40 AM Alexander Kanavin 
wrote:

> I am seeing in mesonbuild/dependencies/pkgconfig.py
>
> sysroot = environment.properties[for_machine].get_sys_root()
> if sysroot:
> env['PKG_CONFIG_SYSROOT_DIR'] = sysroo
>
> So we probably need to ensure this 'sys_root' is correctly set, and then
> things will simply work?
>
> Alex
>
> On Tue, 30 Nov 2021 at 20:15, Joel Winarske 
> wrote:
>
>> https://github.com/vkmark/vkmark/blob/master/src/meson.build#L9
>>
>> On Tue, Nov 30, 2021 at 10:53 AM Alexander Kanavin <
>> alex.kana...@gmail.com> wrote:
>>
>>> I do not quite understand the use case. What is being done with the full
>>> path to the header?
>>>
>>> Alex
>>>
>>> On Tue, 30 Nov 2021 at 19:26, Joel Winarske 
>>> wrote:
>>>
 This pattern works to get the absolute path of the header:

 Yocto

 EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"

 Meson

 vulkan_dep = dependency('vulkan')
 vulkan_hpp = join_paths([
 vulkan_dep.get_pkgconfig_variable('includedir',
 define_variable: ['prefix', get_option('prefix')]),
 'vulkan',
 'vulkan.hpp'
 ])

 Implementation in build/meson-log.txt

 Called
 `/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
 --define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
 --variable=includedir vulkan` -> 0


 One would expect the following meson to work if STAGING_DIR_TARGET were
 set, as that's how pkg-config works:

 vulkan_dep = dependency('vulkan')
 vulkan_hpp = join_paths([
 vulkan_dep.get_pkgconfig_variable('includedir'),
 'vulkan',
 'vulkan.hpp'
 ])

 This will always return /usr/include/vulkan/vulkan.hpp regardless of
 PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
 be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
 value.


 Sandbox testing of pkg-config

 $ export
 STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
 $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
 --define-variable=prefix=/opt --variable=includedir vulkan

 /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include


 meson.cross

 Setting sys_root in the properties section of meson.cross (patching
 meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
 sys_root is present in nativesdk_meson*.bb, not meson*.bb.

 The issue for meson is that they are not passing the
 PKG_CONFIG_SYSROOT_DIR variable to the shell that launches pkg-config.

 My proposed work around (this email thread) would fix the behavior.  I
 believe the proper fix is for meson to address upstream.  Still waiting on
 a response from them: https://github.com/mesonbuild/meson/issues/9674


 Joel

 On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin <
 alex.kana...@gmail.com> wrote:

> On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
> wrote:
>
>> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config
>> process.
>>
>> Currently meson.cross as generated in meson.bbclass points directly
>> to the pkg-config executable (no wrapper script).
>>
>> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
>> package config variable queries.  So if you want to determine the 
>> absolute
>> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
>> query.  Currently this is not possible with Yocto+Meson.
>>
>> I think a simple wrapper script would resolve this.  This is from
>> https://autotools.io/pkgconfig/cross-compiling.html:
>>
>> #!/bin/sh
>>
>> SYSROOT=/build/root
>>
>> export PKG_CONFIG_PATH=
>> export 
>> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
>> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>>
>> exec pkg-config "$@"
>>
>>
>> The wrapper script would be generated per recipe via meson.bbclass,
>> meson.cross would then 

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

2021-11-30 Thread Alexander Kanavin
I am seeing in mesonbuild/dependencies/pkgconfig.py

sysroot = environment.properties[for_machine].get_sys_root()
if sysroot:
env['PKG_CONFIG_SYSROOT_DIR'] = sysroo

So we probably need to ensure this 'sys_root' is correctly set, and then
things will simply work?

Alex

On Tue, 30 Nov 2021 at 20:15, Joel Winarske  wrote:

> https://github.com/vkmark/vkmark/blob/master/src/meson.build#L9
>
> On Tue, Nov 30, 2021 at 10:53 AM Alexander Kanavin 
> wrote:
>
>> I do not quite understand the use case. What is being done with the full
>> path to the header?
>>
>> Alex
>>
>> On Tue, 30 Nov 2021 at 19:26, Joel Winarske 
>> wrote:
>>
>>> This pattern works to get the absolute path of the header:
>>>
>>> Yocto
>>>
>>> EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"
>>>
>>> Meson
>>>
>>> vulkan_dep = dependency('vulkan')
>>> vulkan_hpp = join_paths([
>>> vulkan_dep.get_pkgconfig_variable('includedir', define_variable:
>>> ['prefix', get_option('prefix')]),
>>> 'vulkan',
>>> 'vulkan.hpp'
>>> ])
>>>
>>> Implementation in build/meson-log.txt
>>>
>>> Called
>>> `/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
>>> --define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
>>> --variable=includedir vulkan` -> 0
>>>
>>>
>>> One would expect the following meson to work if STAGING_DIR_TARGET were
>>> set, as that's how pkg-config works:
>>>
>>> vulkan_dep = dependency('vulkan')
>>> vulkan_hpp = join_paths([
>>> vulkan_dep.get_pkgconfig_variable('includedir'),
>>> 'vulkan',
>>> 'vulkan.hpp'
>>> ])
>>>
>>> This will always return /usr/include/vulkan/vulkan.hpp regardless of
>>> PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
>>> be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
>>> value.
>>>
>>>
>>> Sandbox testing of pkg-config
>>>
>>> $ export
>>> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
>>> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
>>> --define-variable=prefix=/opt --variable=includedir vulkan
>>>
>>> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include
>>>
>>>
>>> meson.cross
>>>
>>> Setting sys_root in the properties section of meson.cross (patching
>>> meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
>>> sys_root is present in nativesdk_meson*.bb, not meson*.bb.
>>>
>>> The issue for meson is that they are not passing the
>>> PKG_CONFIG_SYSROOT_DIR variable to the shell that launches pkg-config.
>>>
>>> My proposed work around (this email thread) would fix the behavior.  I
>>> believe the proper fix is for meson to address upstream.  Still waiting on
>>> a response from them: https://github.com/mesonbuild/meson/issues/9674
>>>
>>>
>>> Joel
>>>
>>> On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin <
>>> alex.kana...@gmail.com> wrote:
>>>
 On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
 wrote:

> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.
>
> Currently meson.cross as generated in meson.bbclass points directly to
> the pkg-config executable (no wrapper script).
>
> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
> package config variable queries.  So if you want to determine the absolute
> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
> query.  Currently this is not possible with Yocto+Meson.
>
> I think a simple wrapper script would resolve this.  This is from
> https://autotools.io/pkgconfig/cross-compiling.html:
>
> #!/bin/sh
>
> SYSROOT=/build/root
>
> export PKG_CONFIG_PATH=
> export 
> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>
> exec pkg-config "$@"
>
>
> The wrapper script would be generated per recipe via meson.bbclass,
> meson.cross would then reference this wrapper instead of the pkg-config
> executable.
>
> Thoughts?
>

 I don't think this is correct. Meson's way of doing things is that you
 are not supposed to get the include/library paths directly from pkg-config,
 but rather use
 https://mesonbuild.com/Reference-manual_functions.html#dependency and
 meson will take care of any needed prefixes to the paths.

 For the custom variables defined in .pc that happen to contain paths,
 PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
 prepend it anyway everywhere where they're used. 

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

2021-11-30 Thread Joel Winarske
https://github.com/vkmark/vkmark/blob/master/src/meson.build#L9

On Tue, Nov 30, 2021 at 10:53 AM Alexander Kanavin 
wrote:

> I do not quite understand the use case. What is being done with the full
> path to the header?
>
> Alex
>
> On Tue, 30 Nov 2021 at 19:26, Joel Winarske 
> wrote:
>
>> This pattern works to get the absolute path of the header:
>>
>> Yocto
>>
>> EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"
>>
>> Meson
>>
>> vulkan_dep = dependency('vulkan')
>> vulkan_hpp = join_paths([
>> vulkan_dep.get_pkgconfig_variable('includedir', define_variable:
>> ['prefix', get_option('prefix')]),
>> 'vulkan',
>> 'vulkan.hpp'
>> ])
>>
>> Implementation in build/meson-log.txt
>>
>> Called
>> `/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
>> --define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
>> --variable=includedir vulkan` -> 0
>>
>>
>> One would expect the following meson to work if STAGING_DIR_TARGET were
>> set, as that's how pkg-config works:
>>
>> vulkan_dep = dependency('vulkan')
>> vulkan_hpp = join_paths([
>> vulkan_dep.get_pkgconfig_variable('includedir'),
>> 'vulkan',
>> 'vulkan.hpp'
>> ])
>>
>> This will always return /usr/include/vulkan/vulkan.hpp regardless of
>> PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
>> be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
>> value.
>>
>>
>> Sandbox testing of pkg-config
>>
>> $ export
>> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
>> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
>> --define-variable=prefix=/opt --variable=includedir vulkan
>>
>> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include
>>
>>
>> meson.cross
>>
>> Setting sys_root in the properties section of meson.cross (patching
>> meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
>> sys_root is present in nativesdk_meson*.bb, not meson*.bb.
>>
>> The issue for meson is that they are not passing the
>> PKG_CONFIG_SYSROOT_DIR variable to the shell that launches pkg-config.
>>
>> My proposed work around (this email thread) would fix the behavior.  I
>> believe the proper fix is for meson to address upstream.  Still waiting on
>> a response from them: https://github.com/mesonbuild/meson/issues/9674
>>
>>
>> Joel
>>
>> On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin 
>> wrote:
>>
>>> On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
>>> wrote:
>>>
 Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.

 Currently meson.cross as generated in meson.bbclass points directly to
 the pkg-config executable (no wrapper script).

 PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
 package config variable queries.  So if you want to determine the absolute
 path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
 query.  Currently this is not possible with Yocto+Meson.

 I think a simple wrapper script would resolve this.  This is from
 https://autotools.io/pkgconfig/cross-compiling.html:

 #!/bin/sh

 SYSROOT=/build/root

 export PKG_CONFIG_PATH=
 export 
 PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
 export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}

 exec pkg-config "$@"


 The wrapper script would be generated per recipe via meson.bbclass,
 meson.cross would then reference this wrapper instead of the pkg-config
 executable.

 Thoughts?

>>>
>>> I don't think this is correct. Meson's way of doing things is that you
>>> are not supposed to get the include/library paths directly from pkg-config,
>>> but rather use
>>> https://mesonbuild.com/Reference-manual_functions.html#dependency and
>>> meson will take care of any needed prefixes to the paths.
>>>
>>> For the custom variables defined in .pc that happen to contain paths,
>>> PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
>>> prepend it anyway everywhere where they're used. pkg-config does not know
>>> what variable is a path and what isn't.
>>>
>>> Alex
>>>
>>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158988): 
https://lists.openembedded.org/g/openembedded-core/message/158988
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


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

2021-11-30 Thread Alexander Kanavin
I do not quite understand the use case. What is being done with the full
path to the header?

Alex

On Tue, 30 Nov 2021 at 19:26, Joel Winarske  wrote:

> This pattern works to get the absolute path of the header:
>
> Yocto
>
> EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"
>
> Meson
>
> vulkan_dep = dependency('vulkan')
> vulkan_hpp = join_paths([
> vulkan_dep.get_pkgconfig_variable('includedir', define_variable:
> ['prefix', get_option('prefix')]),
> 'vulkan',
> 'vulkan.hpp'
> ])
>
> Implementation in build/meson-log.txt
>
> Called
> `/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
> --define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
> --variable=includedir vulkan` -> 0
>
>
> One would expect the following meson to work if STAGING_DIR_TARGET were
> set, as that's how pkg-config works:
>
> vulkan_dep = dependency('vulkan')
> vulkan_hpp = join_paths([
> vulkan_dep.get_pkgconfig_variable('includedir'),
> 'vulkan',
> 'vulkan.hpp'
> ])
>
> This will always return /usr/include/vulkan/vulkan.hpp regardless of
> PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
> be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
> value.
>
>
> Sandbox testing of pkg-config
>
> $ export
> STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
> $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
> --define-variable=prefix=/opt --variable=includedir vulkan
>
> /b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include
>
>
> meson.cross
>
> Setting sys_root in the properties section of meson.cross (patching
> meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
> sys_root is present in nativesdk_meson*.bb, not meson*.bb.
>
> The issue for meson is that they are not passing the
> PKG_CONFIG_SYSROOT_DIR variable to the shell that launches pkg-config.
>
> My proposed work around (this email thread) would fix the behavior.  I
> believe the proper fix is for meson to address upstream.  Still waiting on
> a response from them: https://github.com/mesonbuild/meson/issues/9674
>
>
> Joel
>
> On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin 
> wrote:
>
>> On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
>> wrote:
>>
>>> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.
>>>
>>> Currently meson.cross as generated in meson.bbclass points directly to
>>> the pkg-config executable (no wrapper script).
>>>
>>> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
>>> package config variable queries.  So if you want to determine the absolute
>>> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
>>> query.  Currently this is not possible with Yocto+Meson.
>>>
>>> I think a simple wrapper script would resolve this.  This is from
>>> https://autotools.io/pkgconfig/cross-compiling.html:
>>>
>>> #!/bin/sh
>>>
>>> SYSROOT=/build/root
>>>
>>> export PKG_CONFIG_PATH=
>>> export 
>>> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
>>> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>>>
>>> exec pkg-config "$@"
>>>
>>>
>>> The wrapper script would be generated per recipe via meson.bbclass,
>>> meson.cross would then reference this wrapper instead of the pkg-config
>>> executable.
>>>
>>> Thoughts?
>>>
>>
>> I don't think this is correct. Meson's way of doing things is that you
>> are not supposed to get the include/library paths directly from pkg-config,
>> but rather use
>> https://mesonbuild.com/Reference-manual_functions.html#dependency and
>> meson will take care of any needed prefixes to the paths.
>>
>> For the custom variables defined in .pc that happen to contain paths,
>> PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
>> prepend it anyway everywhere where they're used. pkg-config does not know
>> what variable is a path and what isn't.
>>
>> Alex
>>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158987): 
https://lists.openembedded.org/g/openembedded-core/message/158987
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Joel Winarske
This pattern works to get the absolute path of the header:

Yocto

EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"

Meson

vulkan_dep = dependency('vulkan')
vulkan_hpp = join_paths([
vulkan_dep.get_pkgconfig_variable('includedir', define_variable:
['prefix', get_option('prefix')]),
'vulkan',
'vulkan.hpp'
])

Implementation in build/meson-log.txt

Called
`/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
--define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
--variable=includedir vulkan` -> 0


One would expect the following meson to work if STAGING_DIR_TARGET were
set, as that's how pkg-config works:

vulkan_dep = dependency('vulkan')
vulkan_hpp = join_paths([
vulkan_dep.get_pkgconfig_variable('includedir'),
'vulkan',
'vulkan.hpp'
])

This will always return /usr/include/vulkan/vulkan.hpp regardless of
PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
value.


Sandbox testing of pkg-config

$ export
STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
$ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
--define-variable=prefix=/opt --variable=includedir vulkan
/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include


meson.cross

Setting sys_root in the properties section of meson.cross (patching
meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
sys_root is present in nativesdk_meson*.bb, not meson*.bb.

The issue for meson is that they are not passing the PKG_CONFIG_SYSROOT_DIR
variable to the shell that launches pkg-config.

My proposed work around (this email thread) would fix the behavior.  I
believe the proper fix is for meson to address upstream.  Still waiting on
a response from them: https://github.com/mesonbuild/meson/issues/9674


Joel

On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin 
wrote:

> On Tue, 30 Nov 2021 at 18:20, Joel Winarske 
> wrote:
>
>> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.
>>
>> Currently meson.cross as generated in meson.bbclass points directly to
>> the pkg-config executable (no wrapper script).
>>
>> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
>> package config variable queries.  So if you want to determine the absolute
>> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
>> query.  Currently this is not possible with Yocto+Meson.
>>
>> I think a simple wrapper script would resolve this.  This is from
>> https://autotools.io/pkgconfig/cross-compiling.html:
>>
>> #!/bin/sh
>>
>> SYSROOT=/build/root
>>
>> export PKG_CONFIG_PATH=
>> export 
>> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
>> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>>
>> exec pkg-config "$@"
>>
>>
>> The wrapper script would be generated per recipe via meson.bbclass,
>> meson.cross would then reference this wrapper instead of the pkg-config
>> executable.
>>
>> Thoughts?
>>
>
> I don't think this is correct. Meson's way of doing things is that you are
> not supposed to get the include/library paths directly from pkg-config, but
> rather use
> https://mesonbuild.com/Reference-manual_functions.html#dependency and
> meson will take care of any needed prefixes to the paths.
>
> For the custom variables defined in .pc that happen to contain paths,
> PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
> prepend it anyway everywhere where they're used. pkg-config does not know
> what variable is a path and what isn't.
>
> Alex
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158986): 
https://lists.openembedded.org/g/openembedded-core/message/158986
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



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

2021-11-30 Thread Alexander Kanavin
On Tue, 30 Nov 2021 at 18:20, Joel Winarske  wrote:

> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.
>
> Currently meson.cross as generated in meson.bbclass points directly to the
> pkg-config executable (no wrapper script).
>
> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all package
> config variable queries.  So if you want to determine the absolute path of
> a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your query.
> Currently this is not possible with Yocto+Meson.
>
> I think a simple wrapper script would resolve this.  This is from
> https://autotools.io/pkgconfig/cross-compiling.html:
>
> #!/bin/sh
>
> SYSROOT=/build/root
>
> export PKG_CONFIG_PATH=
> export 
> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>
> exec pkg-config "$@"
>
>
> The wrapper script would be generated per recipe via meson.bbclass,
> meson.cross would then reference this wrapper instead of the pkg-config
> executable.
>
> Thoughts?
>

I don't think this is correct. Meson's way of doing things is that you are
not supposed to get the include/library paths directly from pkg-config, but
rather use
https://mesonbuild.com/Reference-manual_functions.html#dependency and meson
will take care of any needed prefixes to the paths.

For the custom variables defined in .pc that happen to contain paths,
PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
prepend it anyway everywhere where they're used. pkg-config does not know
what variable is a path and what isn't.

Alex

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158985): 
https://lists.openembedded.org/g/openembedded-core/message/158985
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-