* [PATCH 1/2] linuxloader.bbclass: Refactor to have seprate functions for musl/glibc loader
@ 2018-09-20 3:52 Khem Raj
2018-09-20 3:52 ` [PATCH V3 2/2] musl: Add aliases for glibc provided libraries Khem Raj
0 siblings, 1 reply; 2+ messages in thread
From: Khem Raj @ 2018-09-20 3:52 UTC (permalink / raw)
To: openembedded-core
this makes it possible to use this for musl where we are trying to
create a glibc compat package
Add missing aarch64 loader definition for glibc function
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
meta/classes/linuxloader.bbclass | 85 ++++++++++++++++++--------------
1 file changed, 49 insertions(+), 36 deletions(-)
diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass
index e1364a4e55..b4c413494a 100644
--- a/meta/classes/linuxloader.bbclass
+++ b/meta/classes/linuxloader.bbclass
@@ -1,48 +1,61 @@
-def get_linuxloader(d):
+def get_musl_loader(d):
+ import re
+ dynamic_loader = None
+
+ targetarch = d.getVar("TARGET_ARCH")
+ 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"
+ return dynamic_loader
+
+def get_glibc_loader(d):
import re
+ dynamic_loader = None
targetarch = d.getVar("TARGET_ARCH")
+ 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"
+ elif targetarch.startswith("aarch64"):
+ dynamic_loader = "${base_libdir}/ld-linux-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
+ return dynamic_loader
+
+def get_linuxloader(d):
overrides = d.getVar("OVERRIDES").split(":")
- # 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"
+ dynamic_loader = get_musl_loader(d)
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"
-
+ dynamic_loader = get_glibc_loader(d)
return dynamic_loader
-get_linuxloader[vardepvalue] = "${@get_linuxloader(d)}"
+get_linuxloader[vardepvalue] = "${@get_linuxloader(d)}"
+get_musl_loader[vardepvalue] = "${@get_musl_loader(d)}"
+get_glibc_loader[vardepvalue] = "${@get_glibc_loader(d)}"
--
2.19.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* [PATCH V3 2/2] musl: Add aliases for glibc provided libraries
2018-09-20 3:52 [PATCH 1/2] linuxloader.bbclass: Refactor to have seprate functions for musl/glibc loader Khem Raj
@ 2018-09-20 3:52 ` Khem Raj
0 siblings, 0 replies; 2+ messages in thread
From: Khem Raj @ 2018-09-20 3:52 UTC (permalink / raw)
To: openembedded-core
This is a step towards running pebuilt applications for glibc on musl
There are many realworld applications which are not always built from
source, especially provided by third party
Package the glibc symlinks into new package musl-glibc-compat
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
V3: Inherit linuxloader for glibc ldso
meta/recipes-core/musl/musl_git.bb | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index be31718e3a..f0556533b5 100644
--- a/meta/recipes-core/musl/musl_git.bb
+++ b/meta/recipes-core/musl/musl_git.bb
@@ -2,6 +2,7 @@
# Released under the MIT license (see COPYING.MIT for the terms)
require musl.inc
+inherit linuxloader
SRCREV = "0fa1e638e87cf257e9f96b4019b2076afd674a19"
@@ -26,6 +27,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils \
bsd-headers \
libssp-nonshared \
"
+GLIBC_LDSO = "${@get_glibc_loader(d)}"
export CROSS_COMPILE="${TARGET_PREFIX}"
@@ -62,12 +64,26 @@ do_install() {
install -d ${D}${bindir}
rm -f ${D}${bindir}/ldd
lnr ${D}${libdir}/libc.so ${D}${bindir}/ldd
+ lnr ${D}${libdir}/libc.so ${D}${GLIBC_LDSO}
for l in crypt dl m pthread resolv rt util xnet
do
ln -sf libc.so ${D}${libdir}/lib$l.so
done
+ for i in libc.so.6 libcrypt.so.1 libdl.so.2 libm.so.6 libpthread.so.0 libresolv.so.2 librt.so.1 libutil.so.1; do
+ ln -sf libc.so ${D}${libdir}/$i
+ done
}
+PACKAGES =+ "${PN}-glibc-compat"
+
+FILES_${PN}-glibc-compat += "\
+ ${libdir}/libc.so.6 ${libdir}/libcrypt.so.1 \
+ ${libdir}/libdl.so.2 ${libdir}/libm.so.6 \
+ ${libdir}/libpthread.so.0 ${libdir}/libresolv.so.2 \
+ ${libdir}/librt.so.1 ${libdir}/libutil.so.1 \
+ ${GLIBC_LDSO} \
+ "
+
RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"
RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev"
RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)"
--
2.19.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-09-20 3:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-20 3:52 [PATCH 1/2] linuxloader.bbclass: Refactor to have seprate functions for musl/glibc loader Khem Raj
2018-09-20 3:52 ` [PATCH V3 2/2] musl: Add aliases for glibc provided libraries Khem Raj
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox