[oe-commits] [openembedded-core] 04/08: linuxloader: Convert to python function

git at git.openembedded.org git at git.openembedded.org
Thu Aug 23 06:52:17 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 401d5608d64947e476b9cb1088b2930f89269634
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Wed Aug 22 14:49:52 2018 +0000

    linuxloader: Convert to python function
    
    We could do with one decent general purpose python function to query the
    path to the dynamic loader. Convert the shell code into python.
    
    Also correct baremetal to return "None", not musl loaders.
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/image-mklibs.bbclass  |   2 +-
 meta/classes/image-prelink.bbclass |   2 +-
 meta/classes/linuxloader.bbclass   | 112 +++++++++++++++----------------------
 3 files changed, 47 insertions(+), 69 deletions(-)

diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass
index 5f6df1b..68e11d4 100644
--- a/meta/classes/image-mklibs.bbclass
+++ b/meta/classes/image-mklibs.bbclass
@@ -19,7 +19,7 @@ mklibs_optimize_image_doit() {
 		echo $i
 	done > ${WORKDIR}/mklibs/executables.list
 
-	dynamic_loader=$(linuxloader)
+	dynamic_loader=${@get_linuxloader(d)}
 
 	mklibs -v \
 		--ldlib ${dynamic_loader} \
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass
index 6a8afa8..04dd57c 100644
--- a/meta/classes/image-prelink.bbclass
+++ b/meta/classes/image-prelink.bbclass
@@ -33,7 +33,7 @@ prelink_image () {
 	fi
 	cat ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf >> $ldsoconf
 
-	dynamic_loader=$(linuxloader)
+	dynamic_loader=${@get_linuxloader(d)}
 
 	# prelink!
 	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass
index 8f30eb3..e1364a4 100644
--- a/meta/classes/linuxloader.bbclass
+++ b/meta/classes/linuxloader.bbclass
@@ -1,70 +1,48 @@
-LDSO_TCLIBC = "glibc"
-LDSO_TCLIBC_libc-musl = "musl"
-LDSO_TCLIBC_libc-baremetal = "musl"
+def get_linuxloader(d):
+    import re
 
-linuxloader_glibc () {
-	case ${TARGET_ARCH} in
-		powerpc | microblaze )
-			dynamic_loader="${base_libdir}/ld.so.1"
-			;;
-		mipsisa32r6el | mipsisa32r6 | mipsisa64r6el | mipsisa64r6)
-			dynamic_loader="${base_libdir}/ld-linux-mipsn8.so.1"
-			;;
-		mips* )
-			dynamic_loader="${base_libdir}/ld.so.1"
-			;;
-		powerpc64)
-			dynamic_loader="${base_libdir}/ld64.so.1"
-			;;
-		x86_64)
-			dynamic_loader="${base_libdir}/ld-linux-x86-64.so.2"
-			;;
-		i*86 )
-			dynamic_loader="${base_libdir}/ld-linux.so.2"
-			;;
-		arm )
-			dynamic_loader="${base_libdir}/ld-linux.so.3"
-			;;
-		* )
-			dynamic_loader="/unknown_dynamic_linker"
-			;;
-	esac
-	echo $dynamic_loader
-}
+    targetarch = d.getVar("TARGET_ARCH")
+    overrides = d.getVar("OVERRIDES").split(":")
 
-linuxloader_musl () {
-	case ${TARGET_ARCH} in
-		microblaze* )
-			dynamic_loader="${base_libdir}/ld-musl-microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el' ,d)}.so.1"
-			;;
-		mips* )
-			dynamic_loader="${base_libdir}/ld-musl-mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
-			;;
-		powerpc )
-			dynamic_loader="${base_libdir}/ld-musl-powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
-			;;
-		powerpc64 )
-			dynamic_loader="${base_libdir}/ld-musl-powerpc64.so.1"
-			;;
-		x86_64 )
-			dynamic_loader="${base_libdir}/ld-musl-x86_64.so.1"
-			;;
-		i*86 )
-			dynamic_loader="${base_libdir}/ld-musl-i386.so.1"
-			;;
-		arm* )
-			dynamic_loader="${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1"
-			;;
-		aarch64* )
-			dynamic_loader="${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
-			;;
-		* )
-			dynamic_loader="/unknown_dynamic_linker"
-			;;
-	esac
-	echo $dynamic_loader
-}
+    # No loader for baremetal
+    if "libc-baremetal" in overrides:
+        return None
+
+    dynamic_loader = None
+    if "libc-musl" in overrides:
+        if targetarch.startswith("microblaze"):
+            dynamic_loader = "${base_libdir}/ld-musl-microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el' ,d)}.so.1"
+        elif targetarch.startswith("mips"):
+            dynamic_loader = "${base_libdir}/ld-musl-mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
+        elif targetarch == "powerpc":
+            dynamic_loader = "${base_libdir}/ld-musl-powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1"
+        elif targetarch == "powerpc64":
+            dynamic_loader = "${base_libdir}/ld-musl-powerpc64.so.1"
+        elif targetarch == "x86_64":
+            dynamic_loader = "${base_libdir}/ld-musl-x86_64.so.1"
+        elif re.search("i.86", targetarch):
+            dynamic_loader = "${base_libdir}/ld-musl-i386.so.1"
+        elif targetarch.startswith("arm"):
+            dynamic_loader = "${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1"
+        elif targetarch.startswith("aarch64"):
+            dynamic_loader = "${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
+    else:
+        # glibc
+        if targetarch in ["powerpc", "microblaze"]:
+            dynamic_loader = "${base_libdir}/ld.so.1"
+        elif targetarch in ["mipsisa32r6el", "mipsisa32r6", "mipsisa64r6el", "mipsisa64r6"]:
+            dynamic_loader = "${base_libdir}/ld-linux-mipsn8.so.1"
+        elif targetarch.startswith("mips"):
+            dynamic_loader = "${base_libdir}/ld.so.1"
+        elif targetarch == "powerpc64":
+            dynamic_loader = "${base_libdir}/ld64.so.1"
+        elif targetarch == "x86_64":
+            dynamic_loader = "${base_libdir}/ld-linux-x86-64.so.2"
+        elif re.search("i.86", targetarch):
+            dynamic_loader = "${base_libdir}/ld-linux.so.2"
+        elif targetarch == "arm":
+            dynamic_loader = "${base_libdir}/ld-linux.so.3"
+
+    return dynamic_loader
+get_linuxloader[vardepvalue] = "${@get_linuxloader(d)}"
 
-linuxloader () {
-	linuxloader_${LDSO_TCLIBC}
-}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list