diff options
-rw-r--r-- | main/eglibc/APKBUILD | 186 | ||||
-rw-r--r-- | main/eglibc/eglibc-utils.trigger | 3 | ||||
-rw-r--r-- | main/eglibc/ld.so.conf | 8 | ||||
-rw-r--r-- | main/eglibc/ldd-sh.patch | 8 | ||||
-rw-r--r-- | main/eglibc/nscd.initd | 19 | ||||
-rw-r--r-- | main/eglibc/tzselect-sh.patch | 160 |
6 files changed, 384 insertions, 0 deletions
diff --git a/main/eglibc/APKBUILD b/main/eglibc/APKBUILD new file mode 100644 index 000000000..2e25ca1db --- /dev/null +++ b/main/eglibc/APKBUILD @@ -0,0 +1,186 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Maintainer: +pkgname=eglibc +pkgver=2.17_svn20121226 +pkgrel=1 +pkgdesc="Embedded GLIBC is a variant of the GNU C Library that is designed to work well on embedded systems" +url="http://www.eglibc.org" +arch="all" +license="GPL" +depends="linux-headers=>3.2.7" +depends_dev="" +makedepends="$depends_dev gawk perl bash" +install="" +options="!strip ldpath-recursive" +triggers="$pkgname-utils.trigger=/lib:/usr/lib" +subpackages="$pkgname-dev $pkgname-lang $pkgname-locales $pkgname-scripts + $pkgname-nscd libthread_db $pkgname-gconv $pkgname-mtrace $pkgname-utils" +source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-$pkgver.tar.bz2 + ld.so.conf nscd.initd ldd-sh.patch" +svnurl="svn://svn.eglibc.org/branches/eglibc-2_17/libc" +disturl="dev.alpinelinux.org:/archive/$pkgname/" +verbase="2.17" + +[ "$ALPINE_LIBC" != "eglibc" ] && arch= + +_builddir="$srcdir"/eglibc-$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 + # set lib dir + echo "slibdir=/lib" >> configparms + # ldconfig does not need to look in lib64 or libx32 + sed -i "s#add_system_dir#do_not_add_system_dir#" \ + sysdeps/unix/sysv/linux/x86_64/dl-cache.h || return 1 + mkdir -p eglibc-build +} + +build() { + cd "$_builddir"/eglibc-build + export CFLAGS="$CFLAGS -fno-stack-protector" + ../configure \ + --build $CBUILD \ + --host $CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --mandir=/usr/share/info \ + --infodir=/usr/share/info \ + --libdir=/usr/lib \ + --libexecdir=/usr/lib \ + --with-headers=/usr/include \ + --enable-kernel=3.2.7 \ + --enable-add-ons=nptl,libidn \ + --disable-profile \ + --enable-bind-now \ + --without-gd \ + --enable-stackguard-randomization \ + --enable-obsolete-rpc \ + --with-bugurl=http://bugs.alpinelinux.org \ + || return 1 + make || return 1 +} + +package() { + cd "$_builddir"/eglibc-build + local i + + install -D -m644 "$srcdir"/ld.so.conf \ + "$pkgdir"/etc/ld.so.conf || return 1 + + make -j1 install_root="$pkgdir" install + + # multiarch compat (not working on current apk-tools) + if [ "$CARCH" = "x86_64" ]; then + cd $pkgdir + # multiarch compat (not working on current apk-tools) + ln -sf /lib "$pkgdir"/lib64 + # fix ldd to use /lib dir + sed -i '/RTLDLIST/s%lib64%lib%' \ + "$pkgdir"/usr/bin/ldd || return 1 + fi + + # strip all + for i in ldconfig sln gencat getconf getent iconv locale localedef makedb \ + pcprofiledump pldd rpcgen sprof iconvconfig nscd; do + find "$pkgdir" -type f -name "$i" -exec strip --strip-all '{}' \; + done + strip --strip-all "$pkgdir"/usr/lib/getconf/* + + # strip unneeded + for i in libanl-*.so libBrokenLocale-*.so libcidn-*.so libcrypt-*.so \ + libnss_compat-*.so libnss_db-*.so libnss_dns-*.so libnss_files-*.so \ + libnss_hesiod-*.so libnss_nis-*.so libnss_nisplus-*.so \ + libdl-*.so libm-*.so libnsl-*.so libresolv-*.so librt-*.so libutil-*.so \ + libmemusage.so libpcprofile.so libSegFault.so sotruss-lib.so pt_chown; do + find "$pkgdir" -type f -name "$i" -exec strip --strip-unneeded '{}' \; + done + strip --strip-unneeded "$pkgdir"/usr/lib/gconv/*.so + + # strip debug + strip --strip-debug "$pkgdir"/usr/lib/*.a +} + +gconv() { + pkgdesc="gconv character modules" + mkdir -p "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/lib/gconv \ + "$subpkgdir"/usr/lib/ || return 1 +} + +scripts() { + # current tzselect unbash patch does not work waiting for upstream. + pkgdesc="eglibc scripts sotruss tzselect and xtrace based on bash" + depends="bash" + local i + mkdir -p "$subpkgdir"/usr/bin + for i in sotruss xtrace tzselect; do + mv "$pkgdir"/usr/bin/$i \ + "$subpkgdir"/usr/bin/ || return 1 + done +} + +mtrace() { + pkgdesc="eglibc mtrace based on perl" + depends="perl" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/mtrace \ + "$subpkgdir"/usr/bin/ || return 1 +} + +utils() { + pkgdesc="eglibc utility programs" + replaces="uclibc-utils libiconv eglibc" + mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/sbin + mv "$pkgdir"/sbin/* \ + "$subpkgdir"/sbin/ || return 1 + mv "$pkgdir"/usr/bin/* \ + "$subpkgdir"/usr/bin/ || return 1 +} + +locales() { + pkgdesc="Common files for locale support" + mkdir -p "$subpkgdir"/usr/share + mv "$pkgdir"/usr/share/* \ + "$subpkgdir"/usr/share/ || return 1 +} + +nscd() { + pkgdesc="eglibc name service cache daemon" + mkdir -p "$subpkgdir"/var/db/nscd \ + "$subpkgdir"/var/run/nscd \ + "$subpkgdir"/usr/sbin || return 1 + install -Dm 755 "$srcdir"/nscd.initd \ + "$subpkgdir"/etc/init.d/nscd || return 1 + install -Dm 644 "$_builddir"/nscd/nscd.conf \ + "$subpkgdir"/etc/nscd.conf || return 1 + mv "$pkgdir"/usr/sbin/nscd \ + "$subpkgdir"/usr/sbin/ || return 1 +} + +libthread_db() { + pkgdesc="eglibc thread debugging library" + mkdir -p "$subpkgdir"/lib + mv "$pkgdir"/lib/libthread_db* \ + "$subpkgdir"/lib/ || return 1 +} + +dev() { + default_dev + # do not depends on $pkgname-scripts and $pkgname-mtrace + # so we do not pull in bash and perl with eglibc-dev + depends="$pkgname $pkgname-lang $pkgname-locales $pkgname-nscd + libthread_db $pkgname-gconv $pkgname-utils" +} + +md5sums="41acb18d9024e1bc4a576bdebaf989ce eglibc-2.17_svn20121226.tar.bz2 +08ec272b104e35cd420e26ad09b63bad ld.so.conf +137fe99a6bc1786da759fb99bfeddb1f nscd.initd +340a91bc354854bc70a5bb4973367e6a ldd-sh.patch" diff --git a/main/eglibc/eglibc-utils.trigger b/main/eglibc/eglibc-utils.trigger new file mode 100644 index 000000000..7a20842c5 --- /dev/null +++ b/main/eglibc/eglibc-utils.trigger @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /sbin/ldconfig -X &> /dev/null diff --git a/main/eglibc/ld.so.conf b/main/eglibc/ld.so.conf new file mode 100644 index 000000000..0f4d2b7ee --- /dev/null +++ b/main/eglibc/ld.so.conf @@ -0,0 +1,8 @@ +# Begin /etc/ld.so.conf + +/lib +/usr/lib +/usr/X11R6/lib + +# End /etc/ld.so.conf + diff --git a/main/eglibc/ldd-sh.patch b/main/eglibc/ldd-sh.patch new file mode 100644 index 000000000..60becc4f6 --- /dev/null +++ b/main/eglibc/ldd-sh.patch @@ -0,0 +1,8 @@ +--- eglibc-2.16_svn20121218/elf/ldd.bash.in.orig ++++ eglibc-2.16_svn20121218/elf/ldd.bash.in +@@ -1,4 +1,4 @@ +-#! @BASH@ ++#!/bin/sh + # Copyright (C) 1996-2011, 2012 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + diff --git a/main/eglibc/nscd.initd b/main/eglibc/nscd.initd new file mode 100644 index 000000000..7087dcf4c --- /dev/null +++ b/main/eglibc/nscd.initd @@ -0,0 +1,19 @@ +#!/sbin/runscript + +DAEMON=/usr/sbin/nscd + +start() { + ebegin "Starting nscd" + # remove stale files + rm -f /var/db/nscd/* /var/run/nscd/* 2>/dev/null + start-stop-daemon --start --exec $DAEMON + eend $? +} + +stop () { + ebegin "Stopping nscd" + start-stop-daemon --stop --quiet \ + --pidfile=/var/run/nscd/nscd.pid + eend $? +} + diff --git a/main/eglibc/tzselect-sh.patch b/main/eglibc/tzselect-sh.patch new file mode 100644 index 000000000..c173ae2f8 --- /dev/null +++ b/main/eglibc/tzselect-sh.patch @@ -0,0 +1,160 @@ +tzselect: eliminate ksh-dependency + +This is an adapted version of a patch originally +by Peter Seebach <peter.seebach@windriver.com> found here: +http://www.eglibc.org/archives/patches/msg00671.html + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +--- libc/timezone/tzselect.ksh ++++ libc/timezone/tzselect.ksh +@@ -1,6 +1,6 @@ +-#! @KSH@ ++#!/bin/sh + +-VERSION='@(#)tzselect.ksh 8.2' ++VERSION='@(#)tzselect.sh 8.2' + PKGVERSION='@PKGVERSION@' + REPORT_BUGS_TO='@REPORT_BUGS_TO@' + +@@ -11,19 +11,10 @@ REPORT_BUGS_TO='@REPORT_BUGS_TO@' + + # Porting notes: + # +-# This script requires several features of the Korn shell. +-# If your host lacks the Korn shell, +-# you can use either of the following free programs instead: ++# func_select allows this script to run on shells (such as busybox ash) ++# which lack the ksh "select" builtin. + # +-# <a href=ftp://ftp.gnu.org/pub/gnu/> +-# Bourne-Again shell (bash) +-# </a> +-# +-# <a href=ftp://ftp.cs.mun.ca/pub/pdksh/pdksh.tar.gz> +-# Public domain ksh +-# </a> +-# +-# This script also uses several features of modern awk programs. ++# This script uses several features of modern awk programs. + # If your host lacks awk, or has an old awk that does not conform to Posix.2, + # you can use either of the following free programs instead: + # +@@ -35,6 +26,70 @@ REPORT_BUGS_TO='@REPORT_BUGS_TO@' + # mawk + # </a> + ++# Implement ksh-style select in POSIX shell ++ ++# We need a mostly-portable echo-n. ++case `echo -n "foo\c"` in ++*n*c*) func_echo_n() { echo "$*"; } ;; ++*n*) func_echo_n() { echo "$*\c"; } ;; ++*) func_echo_n() { echo -n "$*"; } ;; ++esac ++ ++# Synopsis: Replace "select foo in list" with "while func_select foo in list" ++# and this works just like ksh, so far as I know. ++func_select () { ++ func_select_args=0 ++ if expr "$1" : "[_a-zA-Z][_a-zA-Z0-9]*$" > /dev/null; then ++ func_select_var=$1 ++ else ++ echo >&2 "func_select: '$1' is not a valid variable name." ++ return 1 ++ fi ++ shift 1 ++ case $1 in ++ in) shift 1;; ++ *) echo >&2 "func_select: usage: func_select var in ... (you must provide ++arguments)"; return 1;; ++ esac ++ case $# in ++ 0) echo >&2 "func_select: usage: func_select var in ..."; return 1;; ++ esac ++ for func_select_arg ++ do ++ func_select_args=`expr $func_select_args + 1` ++ eval func_select_a_$func_select_args=\$func_select_arg ++ done ++ REPLY="" ++ while : ++ do ++ if test -z "$REPLY"; then ++ func_select_i=1 ++ while test $func_select_i -le $func_select_args ++ do ++ eval echo "\"\$func_select_i) \$func_select_a_$func_select_i\"" ++ func_select_i=`expr $func_select_i + 1` ++ done ++ fi ++ func_echo_n "${PS3-#? }" >&2 ++ if read REPLY; then ++ if test -n "${REPLY}"; then ++ if expr "$REPLY" : '[1-9][0-9]*$' > /dev/null; then ++ if test "$REPLY" -ge 1 && test "$REPLY" -le $func_select_args; then ++ eval $func_select_var=\$func_select_a_$REPLY ++ else ++ eval $func_select_var= ++ fi ++ else ++ eval $func_select_var= ++ fi ++ return 0 ++ fi ++ else ++ eval $func_select_var= ++ return 1 ++ fi ++ done ++} + + # Specify default values for environment variables if they are unset. + : ${AWK=awk} +@@ -80,7 +135,7 @@ IFS=$newline + + + # Work around a bug in bash 1.14.7 and earlier, where $PS3 is sent to stdout. +-case $(echo 1 | (select x in x; do break; done) 2>/dev/null) in ++case $(echo 1 | (while func_select x in x; do break; done) 2>/dev/null) in + ?*) PS3= + esac + +@@ -100,7 +155,7 @@ while + + echo >&2 'Please select a continent or ocean.' + +- select continent in \ ++ while func_select continent in \ + Africa \ + Americas \ + Antarctica \ +@@ -180,7 +235,7 @@ while + case $countries in + *"$newline"*) + echo >&2 'Please select a country.' +- select country in $countries ++ while func_select country in $countries + do + case $country in + '') echo >&2 'Please enter a number in range.';; +@@ -219,7 +274,7 @@ while + *"$newline"*) + echo >&2 'Please select one of the following' \ + 'time zone regions.' +- select region in $regions ++ while func_select region in $regions + do + case $region in + '') echo >&2 'Please enter a number in range.';; +@@ -296,7 +351,7 @@ Universal Time is now: $UTdate." + echo >&2 "Is the above information OK?" + + ok= +- select ok in Yes No ++ while func_select ok in Yes No + do + case $ok in + '') echo >&2 'Please enter 1 for Yes, or 2 for No.';; |