version = "1.2.6" desc = "An implementation of the standard C library for Linux-based systems." libgcc_version="13.2.1_git20240309-r0" source = [ { url = "https://musl.libc.org/releases/musl-$version.tar.gz" }, { url = "https://git.adelielinux.org/adelie/gcompat/-/archive/current/gcompat-1.1.0.tar.gz" }, { url = "https://mirrors.ustc.edu.cn/alpine/latest-stable/main/x86_64/libgcc-$libgcc_version.apk"}, { url = "https://mirrors.ustc.edu.cn/alpine/latest-stable/main/x86_64/libstdc++-$libgcc_version.apk"}, { url = "__stack_chk_fail_local.c" }, { url = "getconf.c" }, { url = "iconv.c" }, { url = "getent.c" }, { url = "styp.patch" }, { url = "res_init.patch" }, { url = "handle_aux_at_base.patch" }, {url="sys-cdefs.h"}, {url="sys-queue.h"}, {url="sys-tree.h"}, {url="http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.bz2"}, {url="http://dl.2f30.org/releases/fortify-headers-0.9.tar.gz"}, {url="https://github.com/kaniini/libucontext/archive/refs/tags/libucontext-1.5.tar.gz"}, ] ext = ''' cd gcompat-* patch -Np1 -i "$srcdir"/res_init.patch cd .. tar xpf libgcc-* tar xpf libstdc++-* cd musl-$version for i in $source;do echo "### $i" case $i in res_init.patch) ;; *patch) patch -Nbp1 -i "$srcdir"/$i;; esac done ''' build = ''' unset LDFLAGS unset CXXFLAGS unset CFLAGS for i in sys*.h; do sed '/#warning/d' "$i" | install -D /dev/stdin "$pkgdir/include/sys/${i#sys-}" done cd "$srcdir"/libpthread-stubs-0.3 ./configure --prefix= make make DESTDIR="$pkgdir" install cd "$srcdir"/fortify-headers-0.9 make PREFIX= DESTDIR="$pkgdir" install cd "$srcdir"/libucontext-* sed -i 's|/usr|/|g' Makefile make ARCH=$ARCH make ARCH=$ARCH PREFIX=/ DESTDIR=$pkgdir install cd "$srcdir"/gcompat-* sed -i 's/__count/_count/g' libgcompat/pthread.c make DESTDIR="$pkgdir" LINKER_PATH=/lib/ld-musl-x86_64.so.1 LOADER_NAME=ld-linux-x86-64.so.2 WITH_LIBUCONTEXT=1 install if [ ! -z "$OTARGETS" ]; then for OTARGET in $OTARGETS; do mkdir -p "$srcdir"/build-$OTARGET cd "$srcdir"/build-$OTARGET mkdir -p "$pkgdir"/$OTARGET/bin "$pkgdir"/$OTARGET/lib ln -srf "$pkgdir"/$OTARGET/ "$pkgdir"/$OTARGET/usr $OTARGET-$CC -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o $OTARGET-ar r libssp_nonshared.a __stack_chk_fail_local.o cp libssp_nonshared.a "$pkgdir"/$OTARGET/lib "$srcdir"/musl-$version/configure \ --target=$OTARGET \ --prefix=/$OTARGET \ --libdir=/$OTARGET/lib \ --libexecdir=/$OTARGET/lib \ --syslibdir=/$OTARGET/lib \ --sysconfdir=/etc \ --mandir=/share/man \ --localstatedir=/var make make DESTDIR="$pkgdir" install done fi mkdir -p "$srcdir"/build cd "$srcdir"/build mkdir -p "$pkgdir"/bin "$pkgdir"/lib $CC -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o ar r libssp_nonshared.a __stack_chk_fail_local.o cp libssp_nonshared.a "$pkgdir"/lib "$srcdir"/musl-$version/configure \ --prefix= \ --libdir=/lib \ --libexecdir=/lib \ --syslibdir=/lib \ --sysconfdir=/etc \ --mandir=/share/man \ --localstatedir=/var make make DESTDIR="$pkgdir" install mkdir -p "$pkgdir"/etc/ cat >> "$pkgdir"/etc/ld-musl-$ARCH.path << EOF /lib /lib/$ARCH-unknown-linux-musl /lib/systemd EOF ln -s /lib/libc.so "$pkgdir"/bin/ldd for i in getconf getent iconv ; do $CC "$srcdir"/$i.c -o "$pkgdir"/bin/$i done cp "$srcdir"/usr/lib/libgcc*so* "$pkgdir"/lib/ ln -srf "$pkgdir"/lib/libgcc_s.so.1 "$pkgdir"/lib/libgcc_s.so cp "$srcdir"/usr/lib/libstdc++*so* "$pkgdir"/lib/ '''