summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/eglibc/APKBUILD186
-rw-r--r--main/eglibc/eglibc-utils.trigger3
-rw-r--r--main/eglibc/ld.so.conf8
-rw-r--r--main/eglibc/ldd-sh.patch8
-rw-r--r--main/eglibc/nscd.initd19
-rw-r--r--main/eglibc/tzselect-sh.patch160
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.';;