# Contributor: Carlo Landmeter # Maintainer: pkgname=eglibc pkgver=2.17_svn20121226 pkgrel=3 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-pic $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 \ --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() { pkgdesc="eglibc scripts sotruss tzselect and xtrace based on bash" depends="bash" local i mkdir -p "$subpkgdir"/usr/bin for i in sotruss xtrace; 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 \ "$subpkgdir"/usr/sbin \ "$subpkgdir"/usr/lib mv "$pkgdir"/sbin/* \ "$subpkgdir"/sbin/ || return 1 mv "$pkgdir"/usr/bin/* \ "$subpkgdir"/usr/bin/ || return 1 mv "$pkgdir"/usr/sbin/* \ "$subpkgdir"/usr/sbin/ || return 1 mv "$pkgdir"/usr/lib/pt_chown \ "$subpkgdir"/usr/lib/ || return 1 # remove tzselect in favor of tzdata implementation rm -f "$subpkgdir"/usr/bin/tzselect } pic() { pkgdesc="eglibc PIC archive library" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/*pic.map \ "$subpkgdir"/usr/lib/ || 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 $pkgname-pic" } md5sums="41acb18d9024e1bc4a576bdebaf989ce eglibc-2.17_svn20121226.tar.bz2 08ec272b104e35cd420e26ad09b63bad ld.so.conf 137fe99a6bc1786da759fb99bfeddb1f nscd.initd 340a91bc354854bc70a5bb4973367e6a ldd-sh.patch"