aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-22 14:49:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-23 09:24:31 +0100
commit73fab4ede12d8ae31be72b5cb4ab29d7ef7dae17 (patch)
tree0fb88d70ed2f7de2a902c90bf093ce57b40e2709 /meta/classes
parenta09f8e32044c8daec2d2fb3ff0e830c21402df6e (diff)
downloadopenembedded-core-contrib-73fab4ede12d8ae31be72b5cb4ab29d7ef7dae17.tar.gz
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@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/image-mklibs.bbclass2
-rw-r--r--meta/classes/image-prelink.bbclass2
-rw-r--r--meta/classes/linuxloader.bbclass112
3 files changed, 47 insertions, 69 deletions
diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass
index 5f6df1b17f..68e11d4365 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 6a8afa8fa9..04dd57c940 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 8f30eb32e7..e1364a4e55 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}
-}