blob: 0ed00bc24e6786a4a3aa886f84869da05a776e29 (
plain) (
tree)
|
|
# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=musl
pkgver=1.2.2
pkgrel=1
pkgdesc="the musl c library (libc) implementation"
url="https://musl.libc.org/"
arch="all"
license="MIT"
options="lib64"
subpackages="$pkgname-libintl:libintl:noarch
$pkgname-dev
$pkgname-dbg
libc6-compat:compat:noarch
"
case "$BOOTSTRAP" in
nocc) pkgname="musl-dev"; subpackages="";;
nolibc) ;;
*) subpackages="$subpackages $pkgname-utils";;
esac
commit="v1.2.2"
source="musl-$commit.tar.gz::https://git.musl-libc.org/cgit/musl/snapshot/$commit.tar.gz
handle-aux-at_base.patch
ldconfig
__stack_chk_fail_local.c
getconf.c
getent.c
iconv.c
"
# secfixes:
# 1.2.2_pre2-r0:
# - CVE-2020-28928
# 1.1.23-r2:
# - CVE-2019-14697
# 1.1.15-r4:
# - CVE-2016-8859
builddir="$srcdir"/$commit
build() {
cd "$builddir"
[ "$BOOTSTRAP" = "nocc" ] && return 0
# provide minimal libssp_nonshared.a so we don't need libssp from gcc
${CROSS_COMPILE}gcc $CPPFLAGS $CFLAGS -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o
${CROSS_COMPILE}ar r libssp_nonshared.a __stack_chk_fail_local.o
if [ "$BOOTSTRAP" != "nolibc" ]; then
# getconf/getent/iconv
local i
for i in getconf getent iconv ; do
${CROSS_COMPILE}gcc $CPPFLAGS $CFLAGS "$srcdir"/$i.c -o $i
done
fi
# note: not autotools
LDFLAGS="$LDFLAGS -Wl,-soname,libc.musl-${CARCH}.so.1" \
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--localstatedir=/var \
--enable-debug
make
}
package() {
cd "$builddir"
case "$CARCH" in
aarch64*) ARCH="aarch64" ;;
arm*) ARCH="arm" ;;
x86) ARCH="i386" ;;
x86_64) ARCH="x86_64" ;;
ppc) ARCH="powerpc" ;;
ppc64*) ARCH="powerpc64" ;;
s390*) ARCH="s390x" ;;
mips64*) ARCH="mips64" ;;
mips*) ARCH="mips" ;;
esac
if [ "$BOOTSTRAP" = "nocc" ]; then
make ARCH="$ARCH" prefix=/usr DESTDIR="$pkgdir" install-headers
else
make DESTDIR="$pkgdir" install
cp libssp_nonshared.a "$pkgdir"/usr/lib
# make LDSO the be the real file, and libc the symlink
local LDSO=$(make -f Makefile --eval "$(echo -e 'print-ldso:\n\t@echo $$(basename $(LDSO_PATHNAME))')" print-ldso)
mv -f "$pkgdir"/usr/lib/libc.so "$pkgdir"/lib/"$LDSO"
ln -sf "$LDSO" "$pkgdir"/lib/libc.musl-${CARCH}.so.1
ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/lib/libc.so
mkdir -p "$pkgdir"/usr/bin
cat >>"$pkgdir"/usr/bin/ldd <<-EOF
#!/bin/sh
exec /lib/$LDSO --list "\$@"
EOF
chmod 755 "$pkgdir"/usr/bin/ldd
fi
}
utils() {
depends="scanelf"
replaces="libiconv"
license="MIT BSD GPL2+"
mkdir -p "$subpkgdir"/usr "$subpkgdir"/sbin
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
install -D \
"$builddir"/getent \
"$builddir"/getconf \
"$builddir"/iconv \
"$subpkgdir"/usr/bin
install -D -m755 "$srcdir"/ldconfig "$subpkgdir"/sbin
}
# currently we don't want by default any NLS
# and use GNU gettext where needed. the plan is to migrate to
# musl gettext() later on as fully as possible.
libintl() {
pkgdesc="musl libintl.h header"
mkdir -p "$subpkgdir"/usr/include
mv "$pkgdir"/usr/include/libintl.h \
"$subpkgdir"/usr/include/
}
compat() {
pkgdesc="compatibility libraries for glibc"
mkdir -p "$subpkgdir"/lib
# definitive source is https://sourceware.org/glibc/wiki/ABIList
case "$CARCH" in
aarch64) _ld="lib/ld-linux-aarch64.so.1" ;;
armel) _ld="lib/ld-linux.so.3" ;;
armhf) _ld="lib/ld-linux-armhf.so.3" ;;
armv7) _ld="lib/ld-linux-armhf.so.3" ;;
mips) _ld="lib/ld.so.1" ;;
mips64) _ld="lib64/ld.so.1" ;;
mipsel) _ld="lib/ld.so.1" ;;
mips64el) _ld="lib64/ld.so.1" ;;
ppc) _ld="lib/ld.so.1" ;;
ppc64) _ld="lib64/ld64.so.1" ;;
ppc64le) _ld="lib64/ld64.so.2" ;;
s390x) _ld="lib/ld64.so.1" ;;
x86) _ld="lib/ld-linux.so.2" ;;
x86_64) _ld="lib64/ld-linux-x86-64.so.2";;
esac
mkdir -p "$subpkgdir/${_ld%/*}"
ln -sf "/lib/libc.musl-${CARCH}.so.1" "$subpkgdir/$_ld"
for i in libc.so.6 libcrypt.so.1 libm.so.6 libpthread.so.0 librt.so.1 libutil.so.1; do
ln -sf "/lib/libc.musl-${CARCH}.so.1" "$subpkgdir/lib/$i"
done
}
sha512sums="7240550ab45cb6b410d65013c92f1f1de0f274322e7ba10e3cf9ce0464a1a833337c2fde39d2fc8c25af1d60599a5bb0ec0d9fb3723c098df3a72e82251bb3eb musl-v1.2.2.tar.gz
a76f79b801497ad994746cf82bb6eaf86f9e1ae646e6819fbae8532a7f4eee53a96ac1d4e789ec8f66aea2a68027b0597f7a579b3369e01258da8accfce41370 handle-aux-at_base.patch
8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig
062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b __stack_chk_fail_local.c
0d80f37b34a35e3d14b012257c50862dfeb9d2c81139ea2dfa101d981d093b009b9fa450ba27a708ac59377a48626971dfc58e20a3799084a65777a0c32cbc7d getconf.c
7f5b9d934d82deb5f8b23e16169a5d9b99ccab3a4708df06a95d685e1b24a3a3e69b3dcf4942f2f66c12a3d4bf0c5827e2ee2e8c4d7b1997359fccc2ac212dee getent.c
9d42d66fb1facce2b85dad919be5be819ee290bd26ca2db00982b2f8e055a0196290a008711cbe2b18ec9eee8d2270e3b3a4692c5a1b807013baa5c2b70a2bbf iconv.c"
|