musl: Add aliases for glibc provided libraries

Submitted by Khem Raj on Sept. 16, 2018, 3:53 p.m. | Patch ID: 154900

Details

Message ID 20180916155313.18535-1-raj.khem@gmail.com
State New
Headers show

Commit Message

Khem Raj Sept. 16, 2018, 3:53 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

Signee-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-core/musl/musl_git.bb | 12 ++++++++++++
 1 file changed, 12 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..a830c36eeb 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,10 +70,14 @@  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
 }
 
 RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"

Comments

Andre McCurdy Sept. 17, 2018, 6:19 p.m.
On Sun, Sep 16, 2018 at 8:53 AM, Khem Raj <raj.khem@gmail.com> 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

Should these symlinks go in a separate package (musl-glibc-compat ?)
so that only people trying to run closed source glibc binaries on musl
need to see them?

> Signee-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/recipes-core/musl/musl_git.bb | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
> index be31718e3a..a830c36eeb 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,10 +70,14 @@ 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
>  }
>
>  RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"
> --
> 2.19.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Sept. 17, 2018, 9:43 p.m.
On Mon, Sep 17, 2018 at 11:19 AM Andre McCurdy <armccurdy@gmail.com> wrote:

> On Sun, Sep 16, 2018 at 8:53 AM, Khem Raj <raj.khem@gmail.com> 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
>
> Should these symlinks go in a separate package (musl-glibc-compat ?)
> so that only people trying to run closed source glibc binaries on musl
> need to see them?


I thought about doing it but then this would mean we have to install that
package in image explicitly and here it’s practically adding no extra code
so decided against it but I am open if people feel strongly against it


>
> > Signee-off-by: Khem Raj <raj.khem@gmail.com>
> > ---
> >  meta/recipes-core/musl/musl_git.bb | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> >
> > diff --git a/meta/recipes-core/musl/musl_git.bb
> b/meta/recipes-core/musl/musl_git.bb
> > index be31718e3a..a830c36eeb 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,10 +70,14 @@ 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
> >  }
> >
> >  RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev
> libssp-nonshared-staticdev"
> > --
> > 2.19.0
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>