[OE-core] [PATCH] gstreamer1.0-plugins-bad: Add PKG_CONFIG_SYSROOT_DIR to output of pkg-config

Jussi Kukkonen jussi.kukkonen at intel.com
Wed Dec 7 12:25:56 UTC 2016


On 5 December 2016 at 21:08, Khem Raj <raj.khem at gmail.com> wrote:

>
> On Dec 5, 2016, at 5:20 AM, Jussi Kukkonen <jussi.kukkonen at intel.com>
> wrote:
>
>
>
> On 1 December 2016 at 10:37, Khem Raj <raj.khem at gmail.com> wrote:
>
>> When configure pokes for wayland-protocols isntallations it ended up
>> using the ones from host, which is because it did not account for sysroot
>> prefix
>>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>>  .../gstreamer/gstreamer1.0-plugins-bad.inc         |  2 +-
>>  ...G_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch | 37
>> ++++++++++++++++++++++
>>  .../gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb   |  1 +
>>  3 files changed, 39 insertions(+), 1 deletion(-)
>>  create mode 100644 meta/recipes-multimedia/gstrea
>> mer/gstreamer1.0-plugins-bad/0001-Prepend-PKG_CONFIG_
>> SYSROOT_DIR-to-pkg-config-output.patch
>>
>> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
>> b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
>> index d26a6a9..d3c5326 100644
>> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
>> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc
>> @@ -64,7 +64,7 @@ PACKAGECONFIG[srtp]            =
>> "--enable-srtp,--disable-srtp,libsrtp"
>>  PACKAGECONFIG[uvch264]         = "--enable-uvch264,--disable-uvch264,libusb1
>> libgudev"
>>  PACKAGECONFIG[voaacenc]        = "--enable-voaacenc,--disable-v
>> oaacenc,vo-aacenc"
>>  PACKAGECONFIG[voamrwbenc]      = "--enable-voamrwbenc,--disable
>> -voamrwbenc,vo-amrwbenc"
>> -PACKAGECONFIG[wayland]         = "--enable-wayland,--disable-wayland,wayland-native
>> wayland"
>> +PACKAGECONFIG[wayland]         = "--enable-wayland,--disable-wayland,wayland-native
>> wayland wayland-protocols"
>>  PACKAGECONFIG[webp]            = "--enable-webp,--disable-webp,libwebp"
>>
>>  # these plugins have not been ported to 1.0 (yet):
>> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>> bad/0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch
>> b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>> bad/0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch
>> new file mode 100644
>> index 0000000..eb789df
>> --- /dev/null
>> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>> bad/0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch
>> @@ -0,0 +1,37 @@
>> +From c271503d7e233428ac0323c51d6517113e26bef7 Mon Sep 17 00:00:00 2001
>> +From: Khem Raj <raj.khem at gmail.com>
>> +Date: Thu, 1 Dec 2016 00:27:13 -0800
>> +Subject: [PATCH] Prepend PKG_CONFIG_SYSROOT_DIR to pkg-config output
>> +
>> +In cross environment we have to prepend the sysroot to the path found by
>> +pkgconfig since the path returned from pkgconfig does not have sysroot
>> prefixed
>> +it ends up using the files from host system. If build host has wayland
>> installed
>> +the build will succeed but if you dont have wayland-protocols installed
>> on build host then
>> +it wont find the files on build host
>> +
>> +This should work ok with non sysrooted builds too since in those cases
>> PKG_CONFIG_SYSROOT_DIR
>> +will be empty
>> +
>> +Upstream-Status: Pending
>> +
>> +Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> +---
>> + configure.ac | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/configure.ac b/configure.ac
>> +index f8ac96b..dc87b08 100644
>> +--- a/configure.ac
>> ++++ b/configure.ac
>> +@@ -2233,7 +2233,7 @@ AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink],
>> wayland , [
>> +     PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, wayland-protocols >= 1.4, [
>> +       if test "x$wayland_scanner" != "x"; then
>> +         HAVE_WAYLAND="yes"
>> +-        AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG
>> --variable=pkgdatadir wayland-protocols`)
>> ++        AC_SUBST(WAYLAND_PROTOCOLS_DATADIR,
>> ${PKG_CONFIG_SYSROOT_DIR}`$PKG_CONFIG --variable=pkgdatadir
>> wayland-protocols`)
>>
>
> I believe this breaks multilib because wayland-protocols is allarch so
> PKG_CONFIG_SYSROOT_DIR may then be incorrect.
>
>
> Realized my last reply is too terse. expanding on it a bit more.
> this is not really the case. Since PKG_CONFIG_SYSROOT_DIR is set to
>  STAGING_DIR_HOST which is then set to ${STAGING_DIR}/${MACHINE} so
> effectively its just
> reusing an existing var compared to your case where a new redundant
> variable is introduced.
>
> having said that, there could be a multilib issue if pkgdatadir thats in
> .pc file from wayland-protocols package is using variables like ${libdir}
> which then are
> multilib dependent, if this is the case then we need to fix .pc file.
> however when I look at the <target-sysroot>/usr/share/pkgconfig/wayland-protocols.pc
> it has
>
> prefix=/usr
> datarootdir=${prefix}/share
> pkgdatadir=/usr/share/wayland-protocols
>
> seems to be free of multilib deps.
>
>
It's not about the .pc file, the issue is that if you build
lib32-gstreamer1.0-plugins-bad WAYLAND_PROTOCOLS_DATADIR will end up as (as
an example)
    $TMPDIR/sysroots/lib32-qemux86-64/usr/share/wayland-protocols/
but that's not where wayland protocols are. The actual path is
    $TMPDIR/sysroots/qemux86-64/usr/share/wayland-protocols/

Maybe there should be a generic multilib fix for this but I can't figure
out what it would be...

Jussi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20161207/8be48411/attachment-0002.html>


More information about the Openembedded-core mailing list