A couple of SDK fixes
cover A couple of SDK fixes
The following changes since commit b18fa5f2f2f46afc6fdc58f4d29679dea9c36c43:
Remove LIC_FILES_CHKSUM from recipes without SRC_URI (2016-10-28 11:27:33 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/sdk-fixes
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/sdk-fixes
Paul Eggleton (2):
classes/populate_sdk_base: fix usage of & character in SDK_TITLE classes/nativesdk: set SDK_OLDEST_KERNEL appropriately
meta/classes/nativesdk.bbclass | 2 ++ meta/classes/populate_sdk_base.bbclass | 7 +------ meta/conf/bitbake.conf | 5 +++++ meta/conf/machine-sdk/i586.conf | 1 + meta/conf/machine-sdk/i686.conf | 1 + meta/conf/machine-sdk/x86_64.conf | 1 + 6 files changed, 11 insertions(+), 6 deletions(-)
Signature · 1 line
2.5.5
PATCH 1/2 classes/populate_sdk_base: fix usage of & character in SDK_TITLE
If you used an & character in SDK_TITLE (possibly indirectly from DISTRO_NAME) then sed interpreted this as a directive to paste in the replaced string (@SDK_TITLE@ in this case). Escape any & characters in SDK_TITLE to avoid that.
--- meta/classes/populate_sdk_base.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/populate_sdk_base.bbclass +1 -1
@@ -223,7 +223,7 @@ EOF -e 's#@SDKEXTPATH@#${SDKEXTPATH}#g' \ -e 's#@OLDEST_KERNEL@#${SDK_OLDEST_KERNEL}#g' \ -e 's#@REAL_MULTIMACH_TARGET_SYS@#${REAL_MULTIMACH_TARGET_SYS}#g' \ - -e 's#@SDK_TITLE@#${SDK_TITLE}#g' \ + -e 's#@SDK_TITLE@#${@d.getVar("SDK_TITLE", True).replace('&', '\&')}#g' \ -e 's#@SDK_VERSION@#${SDK_VERSION}#g' \ -e '/@SDK_PRE_INSTALL_COMMAND@/d' \ -e '/@SDK_POST_INSTALL_COMMAND@/d' \
Signature · 1 line
2.5.5
PATCH 2/2 classes/nativesdk: set SDK_OLDEST_KERNEL appropriately
In reply to Paul EggletonSDK_OLDEST_KERNEL currently only controls the check on SDK installation, however as with OLDEST_KERNEL it should be controlling the OLDEST_KERNEL value for building glibc used in the SDK. Thus, set it in nativesdk.bbclass. This means we need to move the default to bitbake.conf so that it can be seen in both places.
Also set a more reasonable default for SDK_OLDEST_KERNEL for x86/x86-64 as glibc 2.24 still supports back to 2.6.32 there and there are still people wanting to build SDKs that will install on older distros (e.g. CentOS 6). However it's not possible to set this with overrides since there aren't any for the SDK_ARCH, however we can instead set the variable from conf files in conf/machine-sdk especially as there is now a soft default for SDKMACHINE.
Fixes [YOCTO #10561].
--- meta/classes/nativesdk.bbclass | 2 ++ meta/classes/populate_sdk_base.bbclass | 5 ----- meta/conf/bitbake.conf | 5 +++++ meta/conf/machine-sdk/i586.conf | 1 + meta/conf/machine-sdk/i686.conf | 1 + meta/conf/machine-sdk/x86_64.conf | 1 + 6 files changed, 10 insertions(+), 5 deletions(-)
meta/classes/nativesdk.bbclass +2 -0
@@ -97,3 +97,5 @@ do_populate_sysroot[stamp-extra-info] = "" do_packagedata[stamp-extra-info] = "" USE_NLS = "${SDKUSE_NLS}" + +OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
meta/classes/populate_sdk_base.bbclass +0 -5
@@ -89,11 +89,6 @@ POPULATE_SDK_POST_HOST_COMMAND_append = " write_host_sdk_manifest; " SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}" SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; tar_sdk; ${SDK_PACKAGING_COMMAND} " -# Some archs override this, we need the nativesdk version -# turns out this is hard to get from the datastore due to TRANSLATED_TARGET_ARCH -# manipulation. -SDK_OLDEST_KERNEL = "3.2.0" - def populate_sdk_common(d): from oe.sdk import populate_sdk from oe.manifest import create_manifest, Manifest
meta/conf/bitbake.conf +5 -0
@@ -408,6 +408,11 @@ OLDEST_KERNEL = "3.2.0" OLDEST_KERNEL_aarch64 = "3.14" OLDEST_KERNEL_nios2 = "3.19" +# SDK_OLDEST_KERNEL can't be set using overrides since there are +# none for the SDK architecture. Best to set it from a machine-sdk +# include file if you need an SDK arch-specific value +SDK_OLDEST_KERNEL = "3.2.0" + # Define where the kernel headers are installed on the target as well as where # they are staged. KERNEL_SRC_PATH = "/usr/src/kernel"
meta/conf/machine-sdk/i586.conf +1 -0
@@ -1,4 +1,5 @@ SDK_ARCH = "i586" SDK_CC_ARCH = "-march=i586" ABIEXTENSION_class-nativesdk = "" +SDK_OLDEST_KERNEL = "2.6.32"
meta/conf/machine-sdk/i686.conf +1 -0
@@ -1,3 +1,4 @@ SDK_ARCH = "i686" SDK_CC_ARCH = "-march=i686" ABIEXTENSION_class-nativesdk = "" +SDK_OLDEST_KERNEL = "2.6.32"
meta/conf/machine-sdk/x86_64.conf +1 -0
@@ -1,2 +1,3 @@ SDK_ARCH = "x86_64" ABIEXTENSION_class-nativesdk = "" +SDK_OLDEST_KERNEL = "2.6.32"
Signature · 1 line
2.5.5