]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
linuxloader: Convert to python function
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 22 Aug 2018 14:49:52 +0000 (14:49 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 23 Aug 2018 08:24:31 +0000 (09:24 +0100)
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@linuxfoundation.org>
meta/classes/image-mklibs.bbclass
meta/classes/image-prelink.bbclass
meta/classes/linuxloader.bbclass

index 5f6df1b17fd52f077859556ac58e63ea68329c18..68e11d436558f6aa7a06d9645b43fee5b7d467ee 100644 (file)
@@ -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} \
index 6a8afa8fa95ae913a820a8f43850fc6b41965448..04dd57c940a32b952f9d8d9f2b96ad1f59c216b4 100644 (file)
@@ -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
index 8f30eb32e76d38e222d5366afdd38a4d38d46835..e1364a4e55b3e3842df359d0b37bff37f09ae610 100644 (file)
@@ -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}
-}