populate_sdk_ext: Add variable to indicate running in eSDK
PATCH 1/2 populate_sdk_ext: Add variable to indicate running in eSDK
This allows for other scripts to know that they are being executed in the context of the eSDK in order to provide different behaviour as needed.
[YOCTO #11155]
--- meta/classes/populate_sdk_ext.bbclass | 3 +++ 1 file changed, 3 insertions(+)
meta/classes/populate_sdk_ext.bbclass +3 -0
@@ -352,6 +352,9 @@ python copy_buildsystem () { # Hide the config information from bitbake output (since it's fixed within the SDK) f.write('BUILDCFG_HEADER = ""\n\n') + f.write('# Provide a flag to indicate we are in the EXT_SDK Context\n') + f.write('WITHIN_EXT_SDK = "1"\n\n') + # Map gcc-dependent uninative sstate cache for installer usage f.write('SSTATE_MIRRORS += " file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n\n')
Signature · 1 line
2.7.5
PATCH v4 2/2 pkgconfig: allow kernel to be build with esdk
When the kernel's menuconfig target is called while using the esdk or an esdk-based container, the pkg-config info that is found is not correct. The pkg-config info is for the target, but we need the eSDK's information in order to build the host based menuconfig.
The new pkg-config-esdk script checks both that it's in SDK and being called from the check-lxdialog script in order to limit the scope of when the pkg-config automagically switches to pkg-config-native.
The pkg-config-esdk is only installed as pkg-config inside the eSDK, which is why we use the sstate post install script and check for if we are in the esdk environment using the WITHIN_EXT_SDK
[YOCTO #11155]
--- .../pkgconfig/pkgconfig/pkg-config-esdk.in | 24 ++++++++++++++++++++++ meta/recipes-devtools/pkgconfig/pkgconfig_git.bb | 16 +++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-esdk.in
meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-esdk.in new file +24 -0
@@ -0,0 +1,24 @@ +#! /bin/sh + +# Orignal pkg-config-native action when called as pkg-config-native +# NO Change here +if [ "pkg-config-native" = "`basename $0`" ] ; then + PKG_CONFIG_PATH="@PATH_NATIVE@" + PKG_CONFIG_LIBDIR="@LIBDIR_NATIVE@" + unset PKG_CONFIG_SYSROOT_DIR +else + # in this case check if we are in the esdk + if [ "$OE_SKIP_SDK_CHECK" = "1" ] ; then + parentpid=`ps -o ppid= -p $$` + parentpid_info=`ps -wo comm= -o args= -p $parentpid` + + # check if we are being called from the kernel's make menuconfig + if ( echo $parentpid_info | grep -q check-lxdialog ) ; then + PKG_CONFIG_PATH="@PATH_NATIVE@" + PKG_CONFIG_LIBDIR="@LIBDIR_NATIVE@" + unset PKG_CONFIG_SYSROOT_DIR + fi + fi +fi + +pkg-config.real "$@"
meta/recipes-devtools/pkgconfig/pkgconfig_git.bb +16 -0
@@ -12,6 +12,7 @@ SRCREV = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b" PV = "0.29.2+git${SRCPV}" SRC_URI = "git://anongit.freedesktop.org/pkg-config \ + file://pkg-config-esdk.in \ file://pkg-config-native.in \ file://fix-glib-configure-libtool-usage.patch \ file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \
@@ -54,4 +55,19 @@ do_install_append_class-native () { -e "s|@LIBDIR_NATIVE@|${PKG_CONFIG_LIBDIR}|" \ < ${WORKDIR}/pkg-config-native.in > ${B}/pkg-config-native install -m755 ${B}/pkg-config-native ${D}${bindir}/pkg-config-native + sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \ + -e "s|@LIBDIR_NATIVE@|${PKG_CONFIG_LIBDIR}|" \ + < ${WORKDIR}/pkg-config-esdk.in > ${B}/pkg-config-esdk + install -m755 ${B}/pkg-config-esdk ${D}${bindir}/pkg-config-esdk } + +pkgconfig_sstate_fixup_esdk () { + if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" -a "${WITHIN_EXT_SDK}" = "1" ] ; then + pkgconfdir="${SSTATE_INSTDIR}/recipe-sysroot-native/${bindir_native}" + mv $pkgconfdir/pkg-config $pkgconfdir/pkg-config.real + lnr $pkgconfdir/pkg-config-esdk $pkgconfdir/pkg-config + sed -i -e "s|^pkg-config|pkg-config.real|" $pkgconfdir/pkg-config-native + fi +} + +SSTATEPOSTUNPACKFUNCS_append_class-native = " pkgconfig_sstate_fixup_esdk"
Signature · 1 line
2.7.5