blob: af6b3886879306dbf465b3cb6c693659769f6d20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
# Contributor:
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=musl
pkgver=1.1.23
pkgrel=3
pkgdesc="the musl c library (libc) implementation"
url="http://www.musl-libc.org/"
arch="all"
license="MIT"
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
source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz
0001-x87-float-stack-imbalance.patch
0002-x87-float-stack-imbalance.patch
handle-aux-at_base.patch
ldconfig
__stack_chk_fail_local.c
getconf.c
getent.c
iconv.c
"
# secfixes:
# 1.1.23-r2:
# - CVE-2019-14697
# 1.1.15-r4:
# - CVE-2016-8859
builddir="$srcdir"/musl-$pkgver
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
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="a2278de9903852b08352d3e734a39d4616caa602496997ba843e8fea0e1c481761776745faf04536a149d1c4af416b68df681b6fbc9ae2de8794e18c2e853b09 musl-1.1.23.tar.gz
bbe309259d0bf08b51ecf1d3a8928ebb84faa8d9e770d25c9c1bb65df7ebb148e994b93416e55ce19a1f69ba251d9a48f1f135f00d49efc476bbe5950c99763f 0001-x87-float-stack-imbalance.patch
1fd81026940174b45454fbeb9f9e5c7df1695a76dc5ced0d1d0abb47e930f4c0035be8ffca370c72c186bc613639839e313b8cc64ae0fa95f098ff4c51a41a11 0002-x87-float-stack-imbalance.patch
6a7ff16d95b5d1be77e0a0fbb245491817db192176496a57b22ab037637d97a185ea0b0d19da687da66c2a2f5578e4343d230f399d49fe377d8f008410974238 handle-aux-at_base.patch
8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig
062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b __stack_chk_fail_local.c
0d80f37b34a35e3d14b012257c50862dfeb9d2c81139ea2dfa101d981d093b009b9fa450ba27a708ac59377a48626971dfc58e20a3799084a65777a0c32cbc7d getconf.c
378d70e65bcc65bb4e1415354cecfa54b0c1146dfb24474b69e418cdbf7ad730472cd09f6f103e1c99ba6c324c9560bccdf287f5889bbc3ef0bdf0e08da47413 getent.c
9d42d66fb1facce2b85dad919be5be819ee290bd26ca2db00982b2f8e055a0196290a008711cbe2b18ec9eee8d2270e3b3a4692c5a1b807013baa5c2b70a2bbf iconv.c"
|