Skip to content
Snippets Groups Projects
APKBUILD 7.54 KiB
Newer Older
Ariadne Conill's avatar
Ariadne Conill committed
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: Timo Teräs <timo.teras@iki.fi>
Ariadne Conill's avatar
Ariadne Conill committed
pkgname=musl
Timo Teräs's avatar
Timo Teräs committed
pkgver=1.1.0
Ariadne Conill's avatar
Ariadne Conill committed
pkgdesc="the musl c library (libc) implementation"
url="http://www.musl-libc.org/"
Ariadne Conill's avatar
Ariadne Conill committed
license="MIT"
depends=""
depends_dev="!uclibc-dev"
Ariadne Conill's avatar
Ariadne Conill committed
makedepends="$depends_dev"
install=""
subpackages="$pkgname-dev $pkgname-utils"
Timo Teräs's avatar
Timo Teräs committed
[ "${CTARGET#*musl}" = "$CTARGET" ] && subpackages="$subpackages musl-gcc:crosstool"
source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz
	0001-v1.1.0-to-c3d9d172.patch
	0002-c3d9d172-to-8a2d8719.patch
	1001-add-basic-dns-record-parsing-functions.patch
	1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch
	1003-implement-y-and-C-specifiers-in-strptime.patch
	2001-default-to-localtime-timezone-if-TZ-is-undefined.patch
	__stack_chk_fail_local.c
Timo Teräs's avatar
Timo Teräs committed
	"
Ariadne Conill's avatar
Ariadne Conill committed

_builddir="$srcdir"/musl-$pkgver
prepare() {
	local i
	cd "$_builddir"
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done

	# use GNU compatible getopt() from BSD
	rm -f src/misc/getopt*.c
	cp "$srcdir"/getopt_long.c src/misc/

	# remove libintl wrappers that we don't want
	rm src/locale/intl.c include/libintl.h
install_sysroot_headers() {
	cd "$_builddir"
	if [ -z "${CBUILDROOT}" ]; then
		echo "CBUILDROOT not must be set!"
		return 1
	fi
	case "$CARCH" in
	arm*) ARCH="arm" ;;
	x86) ARCH="i386" ;;
	x86_64) ARCH="x86_64" ;;
	esac
	make ARCH="$ARCH" prefix=/usr DESTDIR="${CBUILDROOT}" install-headers || return 1
Ariadne Conill's avatar
Ariadne Conill committed
build() {
	cd "$_builddir"

	# 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 || return 1
	${CROSS_COMPILE}ar r libssp_nonshared.a __stack_chk_fail_local.o || return 1

	# getconf/getent/iconv
	local i
	for i in getconf getent iconv ; do
		${CROSS_COMPILE}gcc $CPPFLAGS $CFLAGS "$srcdir"/$i.c -o $i || return 1
	done
	# note: not autotools
	LDFLAGS="$LDFLAGS -Wl,-soname,libc.musl-${CARCH}.so.1" \
	./configure \
		--host=$CHOST \
		--prefix=/usr \
Ariadne Conill's avatar
Ariadne Conill committed
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--localstatedir=/var \
		|| return 1
	make || return 1
}

package() {
	cd "$_builddir"
	make DESTDIR="$pkgdir" install || return 1
	rm -f "$pkgdir"/usr/lib/*.la
	cp libssp_nonshared.a "$pkgdir"/usr/lib || return 1

	# make LDSO the be the real file, and libc the symlink (will be upstream change)
	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" || return 1
	ln -sf "$LDSO" "$pkgdir"/lib/libc.musl-${CARCH}.so.1 || return 1
	ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/lib/libc.so || return 1
	mkdir -p "$pkgdir"/usr/bin
	ln -sf ../../lib/"$LDSO" "$pkgdir"/usr/bin/ldd || return 1
	depends="!uclibc-utils scanelf"
	replaces="libiconv"
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/sbin
	mv "$pkgdir"/usr/bin/ldd "$subpkgdir"/usr/bin
	find "$pkgdir" -type d -delete 2>/dev/null
	install -D \
		"$_builddir"/getent \
		"$_builddir"/getconf \
		"$_builddir"/iconv \
		"$subpkgdir"/usr/bin

	install -D -m755 "$srcdir"/ldconfig "$subpkgdir"/sbin
Ariadne Conill's avatar
Ariadne Conill committed
crosstool() {
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib
Ariadne Conill's avatar
Ariadne Conill committed
	mv "$pkgdir"/usr/bin/musl-gcc "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/lib/musl-gcc.specs "$subpkgdir"/usr/lib
	find "$pkgdir" -type d -delete 2>/dev/null
Timo Teräs's avatar
Timo Teräs committed
md5sums="c2118c3b6afc77f46a0b23a38a8c3080  musl-1.1.0.tar.gz
1789d43fa0c5f76184cdbaff18a429cb  0001-v1.1.0-to-c3d9d172.patch
3c352daa12dd718cf5e2958a58b53723  0002-c3d9d172-to-8a2d8719.patch
a3810683ef61ac27e2f6ec9801280c81  1001-add-basic-dns-record-parsing-functions.patch
83c3bd2a50b1de5ef948704d3f4e0583  1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch
441a6addbb29c6286eb6b026eee6d905  1003-implement-y-and-C-specifiers-in-strptime.patch
e936297ceb484b2160a4cd8a3a4eb291  2001-default-to-localtime-timezone-if-TZ-is-undefined.patch
013be8897f27c3909ada59c62020502f  ldconfig
61c6c1e84ed1df82abbe6d75e90cf21c  getopt_long.c
0df687757221bbb0fc1aa67f1bd646f9  __stack_chk_fail_local.c
cb82d21fed17a116b44b830adba71c5a  getconf.c
2b941c4251cac44988a4abfc50e21267  getent.c
45f92f8d59cf84d765de698a9578dbf4  iconv.c"
Timo Teräs's avatar
Timo Teräs committed
sha256sums="de1b43019e5361d7577e5e0213e9dde591853e9da5d4a7cd75e2e0d78bf60820  musl-1.1.0.tar.gz
6ce417df2acedd6973580ae7985b337fa6ba58bd26752a01c5dcab1f2ce8925c  0001-v1.1.0-to-c3d9d172.patch
d8819b9a13f588cbfec9cdb320594157e4a19991677c4b6e718f7bf2159f160d  0002-c3d9d172-to-8a2d8719.patch
758390768b1bc4159d56908ca332b9640cd0552ed3b4b2b8d4a6d499c54c11a1  1001-add-basic-dns-record-parsing-functions.patch
1c25880095e869b827f02997e864fdf4bf157a4e923e52d97dbd05e657aedb70  1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch
980d9ae4b364f2ff60705f656df952b51b84b22e6d053c407a0f33f178e0ea57  1003-implement-y-and-C-specifiers-in-strptime.patch
60d7aa78040ee664681e507475129f76e445291863137e568c9a3d11ae8436ce  2001-default-to-localtime-timezone-if-TZ-is-undefined.patch
398dc26ec82cc6af056c738e8ac62da212ba978229d9839eb8b61f7ce536da4a  ldconfig
d9b644ec20bc33e81a7c52b9fcf7973d835923a69faf50f03db45534b811bd96  getopt_long.c
299a7d75a09de3e2e11e7fb4acc3182e4a14e868093d2f30938fce9bfcff13da  __stack_chk_fail_local.c
1b540709f83b7b9a03073b39066810fdb90537d840b50c2016a84bedce038606  getconf.c
68373a55e89ce85c562d941ccf588337d6cc6c9c17689d695f65cd7607134bbe  getent.c
f79a2930a2e5bb0624321589edf8b889d1e9b603e01e6b7ae214616605b3fdd7  iconv.c"
Timo Teräs's avatar
Timo Teräs committed
sha512sums="72dab085fa56a2f02d407074b9a4c1d409624df74924ed385b174a767113aa0a4112bd22d3eaf465b31a14b8e60a15997d6042421994673977de306ee8738b3d  musl-1.1.0.tar.gz
72be49c7b0598954f5ec2f9377d1848f3d22d018f97544f5c9ea96a8cd6e7b654365703832bcbb3e98a8b2d96e445a4fb0a0573ce5355ccd8a03dbeb9acc5dbc  0001-v1.1.0-to-c3d9d172.patch
89137455877efc71b36cc78efdcfb144d7f3ff4c66eba1f1e84274d5d4f03bb2a0a0337d1cd5103abd629d4be94c2e4aba4c32edb96e5c95e624115e02bb1ce4  0002-c3d9d172-to-8a2d8719.patch
dad965258daf69371b844f76bfe5a914b0eca0ca76f3fc340b8fd7acf598b5f87bbe6d68b1f43ed0293ee0ed3bfd85d5173ccc169aa6265646248d5b8a906708  1001-add-basic-dns-record-parsing-functions.patch
72cf33738d2cf31f6ec02312bc494d754c17470b519172bb8bd7e2e29ac3b119023088a2b3fbc0dbc2fddd0078ccbae62096106cae361f8c31d6a9950043af25  1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch
4c8c99f1d1a0abe9c491d1ae153ffe2f0a32a4fc58f31734b8cb914074d1f10925977e69ace506021c0f639f6772ea32ff43ad6f9968ed31609218c58d819a98  1003-implement-y-and-C-specifiers-in-strptime.patch
8d4cae760895a18e83b5fcbdc925705a6dd98acd2270562ee6c905363096a4111cf3aa324b52a16066e30bddc9ab104883e2b25b5c68396ea27f1c50cb939f0a  2001-default-to-localtime-timezone-if-TZ-is-undefined.patch
33e13d2242063f3dc9ec199ae9528e469a52ccae4d3726faa3c866e0c7dcf546f69294f9c00307324cee05fd965f84350ae100b8b1138f9d9c8c916de04ab0d1  ldconfig
140f3f20d30bd95ebce8c41b8cc7f616c6cbedf4ea06c729c21014e74f6043796825cc40ebc5180620ea38173afdba23f09ebf6d8b11fa05440b14d23764fca9  getopt_long.c
062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b  __stack_chk_fail_local.c
06064adfb4dfb45257857113b3f342f77201685f6d3b8e64e203ff618dbb254e7ecb65ecc2d108395f27154825396251b3cfbc678d197d590d93cf79ac5cb56d  getconf.c
b35de9847353b273516162ed4828a810c6130fc5b7de44ee4433003b3f99647b25792d9b1c40dfc67069add11f3fb850e5c35d4f1912dccac108059bbbdfd5a2  getent.c
9d42d66fb1facce2b85dad919be5be819ee290bd26ca2db00982b2f8e055a0196290a008711cbe2b18ec9eee8d2270e3b3a4692c5a1b807013baa5c2b70a2bbf  iconv.c"