[V2,2/2] musl: Add aliases for glibc provided libraries

Message ID 20180919185542.2329-2-raj.khem@gmail.com
State New
Headers show
Series
  • [1/2] mtools: Fix build with clang
Related show

Commit Message

Khem Raj Sept. 19, 2018, 6:55 p.m.
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>

---
V2 - Package new symlinks into separate compat package

 meta/recipes-core/musl/musl_git.bb | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

-- 
2.19.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Richard Purdie Sept. 19, 2018, 7 p.m. | #1
On Wed, 2018-09-19 at 11:55 -0700, Khem Raj wrote:
> 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>

> ---

> V2 - Package new symlinks into separate compat package

> 

>  meta/recipes-core/musl/musl_git.bb | 22 ++++++++++++++++++++++

>  1 file changed, 22 insertions(+)

> 

> diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-

> core/musl/musl_git.bb

> index be31718e3a..efdf620c6c 100644

> --- a/meta/recipes-core/musl/musl_git.bb

> +++ b/meta/recipes-core/musl/musl_git.bb

> @@ -26,6 +26,14 @@ DEPENDS = "virtual/${TARGET_PREFIX}binutils \

>             bsd-headers \

>             libssp-nonshared \

>            "

> +GLIBC_LDSO ?= "ld.so.1"

> +GLIBC_LDSO_arm = "${@ bb.utils.contains('TUNE_FEATURES',

> 'callconvention-hard', 'ld-linux-armhf.so.3', 'ld-linux.so.3', d)}"

> +GLIBC_LDSO_aarch64 = "ld-linux-aarch64.so.1"

> +GLIBC_LDSO_x86 = "ld-linux.so.2"

> +GLIBC_LDSO_x86_64 = "ld-linux-x86-64.so.2"

> +GLIBC_LDSO_x32 = "ld-linux-x32.so.2"

> +GLIBC_LDSO_powerpc64 = "ld64.so.1"

> +GLIBC_LDSO_mips64 = "ld64.so.1"


How about we tweak linuxloader.bbclass to have a glibc specific
function could call to get this? I'm not a fan of adding another set of
these lists...

Cheers,

Richard


-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index be31718e3a..efdf620c6c 100644
--- a/meta/recipes-core/musl/musl_git.bb
+++ b/meta/recipes-core/musl/musl_git.bb
@@ -26,6 +26,14 @@  DEPENDS = "virtual/${TARGET_PREFIX}binutils \
            bsd-headers \
            libssp-nonshared \
           "
+GLIBC_LDSO ?= "ld.so.1"
+GLIBC_LDSO_arm = "${@ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ld-linux-armhf.so.3', 'ld-linux.so.3', d)}"
+GLIBC_LDSO_aarch64 = "ld-linux-aarch64.so.1"
+GLIBC_LDSO_x86 = "ld-linux.so.2"
+GLIBC_LDSO_x86_64 = "ld-linux-x86-64.so.2"
+GLIBC_LDSO_x32 = "ld-linux-x32.so.2"
+GLIBC_LDSO_powerpc64 = "ld64.so.1"
+GLIBC_LDSO_mips64 = "ld64.so.1"
 
 export CROSS_COMPILE="${TARGET_PREFIX}"
 
@@ -62,12 +70,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}${base_libdir}/${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 \
+                ${base_libdir}/${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)"