Message ID | 20161201083726.6160-1-raj.khem@gmail.com |
---|---|
State | Superseded |
Headers | show |
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
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
> 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
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
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
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 --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"
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