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

Submitted by Khem Raj on Sept. 19, 2018, 6:55 p.m. | Patch ID: 155012

Details

Message ID 20180919185542.2329-2-raj.khem@gmail.com
State New
Headers 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(+)

Patch hide | download patch | download mbox

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)"

Comments

Richard Purdie Sept. 19, 2018, 7 p.m.
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