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.

(From OE-Core rev: 73fab4ede12d8ae31be72b5cb4ab29d7ef7dae17)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2018-08-22 14:49:52 +00:00
parent 7b23f6124b
commit 516697bed6
3 changed files with 47 additions and 69 deletions

View 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}
}