diff mbox

gstreamer1.0-plugins-bad: Add PKG_CONFIG_SYSROOT_DIR to output of pkg-config

Message ID 20161201083726.6160-1-raj.khem@gmail.com
State Superseded
Headers show

Commit Message

Khem Raj Dec. 1, 2016, 8:37 a.m. UTC
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@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/gstreamer/gstreamer1.0-plugins-bad/0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch

-- 
2.10.2

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Jussi Kukkonen Dec. 5, 2016, 1:20 p.m. UTC | #1
On 1 December 2016 at 10:37, Khem Raj <raj.khem@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@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/gstreamer/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-

> voaacenc,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@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@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.

I've set "WAYLAND_PROTOCOLS_SYSROOT_DIR=${STAGING_DIR}/${MACHINE}"
in EXTRA_OECONF in other recipes and used that variable in the patches.
It's not pretty but seems to work.

Jussi

+       else
> +         AC_MSG_RESULT([wayland-scanner is required to build the wayland

> plugin])

> +         HAVE_WAYLAND="no"

> +--

> +2.10.2

> +

> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-

> plugins-bad_1.10.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-

> plugins-bad_1.10.1.bb

> index 9cd892e..6c6f011 100644

> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb

> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb

> @@ -14,6 +14,7 @@ SRC_URI = " \

>      file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch

> \

>      file://0009-glimagesink-Downrank-to-marginal.patch \

>      file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch

> \

> +    file://0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch

> \

>  "

>  SRC_URI[md5sum] = "491d2d5aab55ffc60c66e714d3d664ea"

>  SRC_URI[sha256sum] = "133e0ed9fe21011b15d3898e3d3a9d

> 17ab74eed31996da2e353353e688ca921d"

> --

> 2.10.2

>

> --

> _______________________________________________

> Openembedded-core mailing list

> Openembedded-core@lists.openembedded.org

> http://lists.openembedded.org/mailman/listinfo/openembedded-core

>
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Dec. 5, 2016, 4:46 p.m. UTC | #2
On Mon, Dec 5, 2016 at 5:20 AM, Jussi Kukkonen <jussi.kukkonen@intel.com> wrote:
>

>

> On 1 December 2016 at 10:37, Khem Raj <raj.khem@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@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/gstreamer/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-voaacenc,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@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@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.


how so ?
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Dec. 5, 2016, 7:08 p.m. UTC | #3
> On Dec 5, 2016, at 5:20 AM, Jussi Kukkonen <jussi.kukkonen@intel.com> wrote:

> 

> 

> 

> On 1 December 2016 at 10:37, Khem Raj <raj.khem@gmail.com <mailto:raj.khem@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@gmail.com <mailto:raj.khem@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 <http://gstreamer1.0-plugins-bad_1.10.1.bb/>   |  1 +

>  3 files changed, 39 insertions(+), 1 deletion(-)

>  create mode 100644 meta/recipes-multimedia/gstreamer/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-voaacenc,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@gmail.com <mailto:raj.khem@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@gmail.com <mailto:raj.khem@gmail.com>>

> +---

> + configure.ac <http://configure.ac/> | 2 +-

> + 1 file changed, 1 insertion(+), 1 deletion(-)

> +

> +diff --git a/configure.ac <http://configure.ac/> b/configure.ac <http://configure.ac/>

> +index f8ac96b..dc87b08 100644

> +--- a/configure.ac <http://configure.ac/>

> ++++ b/configure.ac <http://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.

> 

> I've set "WAYLAND_PROTOCOLS_SYSROOT_DIR=${STAGING_DIR}/${MACHINE}" in EXTRA_OECONF in other recipes and used that variable in the patches. It's not pretty but seems to work.

> 

> Jussi

> 

> +       else

> +         AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])

> +         HAVE_WAYLAND="no"

> +--

> +2.10.2

> +

> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb <http://gstreamer1.0-plugins-bad_1.10.1.bb/> b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb <http://gstreamer1.0-plugins-bad_1.10.1.bb/>

> index 9cd892e..6c6f011 100644

> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb <http://gstreamer1.0-plugins-bad_1.10.1.bb/>

> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb <http://gstreamer1.0-plugins-bad_1.10.1.bb/>

> @@ -14,6 +14,7 @@ SRC_URI = " \

>      file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \

>      file://0009-glimagesink-Downrank-to-marginal.patch \

>      file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \

> +    file://0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch \

>  "

>  SRC_URI[md5sum] = "491d2d5aab55ffc60c66e714d3d664ea"

>  SRC_URI[sha256sum] = "133e0ed9fe21011b15d3898e3d3a9d17ab74eed31996da2e353353e688ca921d"

> --

> 2.10.2

> 

> --

> _______________________________________________

> Openembedded-core mailing list

> Openembedded-core@lists.openembedded.org <mailto:Openembedded-core@lists.openembedded.org>

> http://lists.openembedded.org/mailman/listinfo/openembedded-core <http://lists.openembedded.org/mailman/listinfo/openembedded-core>
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross Burton Dec. 6, 2016, 5:18 p.m. UTC | #4
On 5 December 2016 at 19:08, Khem Raj <raj.khem@gmail.com> wrote:

> 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.

>


Funnily enough this just failed in multilib on the AB (
http://errors.yoctoproject.org/Errors/Details/111361/)

Ross
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Jussi Kukkonen Dec. 7, 2016, 12:25 p.m. UTC | #5
On 5 December 2016 at 21:08, Khem Raj <raj.khem@gmail.com> wrote:

>

> On Dec 5, 2016, at 5:20 AM, Jussi Kukkonen <jussi.kukkonen@intel.com>

> wrote:

>

>

>

> On 1 December 2016 at 10:37, Khem Raj <raj.khem@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@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@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@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
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Dec. 7, 2016, 7:46 p.m. UTC | #6
On Wed, Dec 7, 2016 at 4:25 AM, Jussi Kukkonen <jussi.kukkonen@intel.com> wrote:
>

>

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

>>

>>

>> On Dec 5, 2016, at 5:20 AM, Jussi Kukkonen <jussi.kukkonen@intel.com>

>> wrote:

>>

>>

>>

>> On 1 December 2016 at 10:37, Khem Raj <raj.khem@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@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/gstreamer/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-voaacenc,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@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@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...


hmmm is seems to me that 'all' packages should be common between
all syroots, may be symlinks into multilib sysroots for all files could be
a solution, of just staging function for 'all' packages should install it in
both sysroots.

>

> Jussi

>

>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff mbox

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-voaacenc,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@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@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`)
+       else
+         AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
+         HAVE_WAYLAND="no"
+-- 
+2.10.2
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb
index 9cd892e..6c6f011 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.10.1.bb
@@ -14,6 +14,7 @@  SRC_URI = " \
     file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \
     file://0009-glimagesink-Downrank-to-marginal.patch \
     file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
+    file://0001-Prepend-PKG_CONFIG_SYSROOT_DIR-to-pkg-config-output.patch \
 "
 SRC_URI[md5sum] = "491d2d5aab55ffc60c66e714d3d664ea"
 SRC_URI[sha256sum] = "133e0ed9fe21011b15d3898e3d3a9d17ab74eed31996da2e353353e688ca921d"