diff options
-rw-r--r-- | abs/core-testing/glibc/PKGBUILD | 146 | ||||
-rw-r--r-- | abs/core-testing/glibc/glibc-2.10-bz4781.patch | 42 | ||||
-rw-r--r-- | abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch | 13 | ||||
-rw-r--r-- | abs/core-testing/glibc/glibc-__i686.patch | 13 | ||||
-rw-r--r-- | abs/core-testing/glibc/glibc.install | 129 |
5 files changed, 162 insertions, 181 deletions
diff --git a/abs/core-testing/glibc/PKGBUILD b/abs/core-testing/glibc/PKGBUILD index e7f866f..e31d7b6 100644 --- a/abs/core-testing/glibc/PKGBUILD +++ b/abs/core-testing/glibc/PKGBUILD @@ -1,67 +1,69 @@ -# $Id: PKGBUILD 25809 2009-01-29 17:49:56Z aaron $ +# $Id: PKGBUILD 83855 2010-06-23 10:51:26Z allan $ # Maintainer: Jan de Groot <jgc@archlinux.org> -# Maintainer: Andreas Radke <andyrtr@archlinux.org> +# Maintainer: Allan McRae <allan@archlinux.org> + +# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc +# NOTE: valgrind requires rebuilt with each new glibc version pkgname=glibc -pkgver=2.9 +pkgver=2.12 pkgrel=4 -_glibcdate=20081119 -install=glibc.install -backup=(etc/locale.gen) +_glibcdate=20100620 pkgdesc="GNU C Library" -arch=(i686 x86_64) -license=('GPL' 'LGPL') +arch=('i686' 'x86_64') url="http://www.gnu.org/software/libc" +license=('GPL' 'LGPL') groups=('base') -depends=('kernel-headers>=2.6.27.6' 'tzdata') -makedepends=('gcc>=4.3.2-2') +depends=('linux-api-headers>=2.6.34' 'tzdata') +makedepends=('gcc>=4.4') replaces=('glibc-xen') +backup=(etc/locale.gen + etc/nscd.conf) +options=('!strip') +install=glibc.install source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.tar.bz2 - ftp://ftp.archlinux.org/other/glibc/glibc-patches-${pkgver}-2.tar.gz - nscd - locale.gen.txt - locale-gen) -md5sums=('1f7cc590a7a9bbef8b09fe89af69fb8c' - '7679e2bcd981847efccb2bad9e57fee3' + glibc-2.10-dont-build-timezone.patch + glibc-2.10-bz4781.patch + glibc-__i686.patch + nscd + locale.gen.txt + locale-gen) +md5sums=('8857bfae3e0a659452ddd8f9d2606490' + '4dadb9203b69a3210d53514bb46f41c3' + '0c5540efc51c0b93996c51b57a8540ae' + '40cd342e21f71f5e49e32622b25acc52' 'b587ee3a70c9b3713099295609afde49' '07ac979b6ab5eeb778d55f041529d623' '476e9113489f93b348b21e144b6a8fcf') -build() { - - # for cvs checkout - mkdir ${srcdir}/glibc-${_glibcdate} - cd ${srcdir}/glibc-${_glibcdate} - export _TAG=glibc-2_9-branch - export 'CVSROOT=:pserver:anoncvs@sources.redhat.com:/cvs/glibc' -# cvs -z9 co -r $_TAG libc || return 1 -# tar -cvjf ../../glibc-2.9_${_glibcdate}.tar.bz2 libc -# return 1 - - cd ${srcdir}/libc +mksource() { + git clone git://sourceware.org/git/glibc.git + pushd glibc + git checkout -b glibc-2.12-arch origin/release/2.12/master + popd + tar -cvjf glibc-${pkgver}_${_glibcdate}.tar.bz2 glibc/* +} - # patch from Debian - patch -Np1 -i ${srcdir}/glibc-patches/glibc-2.5-localedef_segfault-1.patch || return 1 # still needed? +build() { + cd ${srcdir}/glibc - # Upstream fixes. See sources.redhat.com bugzilla - patch -Np1 -i ${srcdir}/glibc-patches/glibc-2.7-bz4781.patch || return 1 + # timezone data is in separate package (tzdata) + patch -Np1 -i ${srcdir}/glibc-2.10-dont-build-timezone.patch - # Gentoo fixes - patch -Np1 -i ${srcdir}/glibc-patches/glibc-dont-build-timezone.patch || return 1 + # http://sources.redhat.com/bugzilla/show_bug.cgi?id=4781 + patch -Np1 -i ${srcdir}/glibc-2.10-bz4781.patch - # fixes taken from FC10 2.9-3 rpm, fixes FS#12215 - # see http://sources.redhat.com/bugzilla/show_bug.cgi?id=7060 - # see https://bugzilla.redhat.com/show_bug.cgi?id=459756 - patch -Np1 -i ${srcdir}/glibc-patches/glibc-nss_dns-gethostbyname4-disable.patch || return 1 - patch -Np1 -i ${srcdir}/glibc-patches/glibc-fixes1.patch || return 1 + # http://sources.redhat.com/bugzilla/show_bug.cgi?id=411 + # http://sourceware.org/ml/libc-alpha/2009-07/msg00072.html + patch -Np1 -i ${srcdir}/glibc-__i686.patch - install -m755 -d ${pkgdir}/etc + install -dm755 ${pkgdir}/etc touch ${pkgdir}/etc/ld.so.conf mkdir glibc-build cd glibc-build - if [ "${CARCH}" = "i686" ]; then + if [[ ${CARCH} = "i686" ]]; then # Hack to fix NPTL issues with Xen, only required on 32bit platforms export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs" fi @@ -70,34 +72,41 @@ build() { ../configure --prefix=/usr \ --enable-add-ons=nptl,libidn --without-cvs \ - --enable-kernel=2.6.16 --disable-profile \ + --enable-kernel=2.6.18 --disable-profile \ --with-headers=/usr/include --libexecdir=/usr/lib \ --enable-bind-now --with-tls --with-__thread \ - --libdir=/usr/lib --without-gd - - make || return 1 - make install_root=${pkgdir} install || return 1 + --libdir=/usr/lib --without-gd --disable-multi-arch + + make +} - rm -f ${pkgdir}/etc/ld.so.cache ${pkgdir}/etc/ld.so.conf ${pkgdir}/etc/localtime +package() { + cd ${srcdir}/glibc/glibc-build + make install_root=${pkgdir} install - install -m755 -d ${pkgdir}/etc/rc.d - install -m755 -d ${pkgdir}/usr/sbin - install -m755 -d ${pkgdir}/usr/lib/locale - install -m644 ${srcdir}/libc/nscd/nscd.conf ${pkgdir}/etc/nscd.conf + # provided by kernel-headers + rm ${pkgdir}/usr/include/scsi/scsi.h + + rm ${pkgdir}/etc/ld.so.conf + + install -dm755 ${pkgdir}/etc/rc.d + install -dm755 ${pkgdir}/usr/sbin + install -dm755 ${pkgdir}/usr/lib/locale + install -m644 ${srcdir}/glibc/nscd/nscd.conf ${pkgdir}/etc/nscd.conf install -m755 ${srcdir}/nscd ${pkgdir}/etc/rc.d/nscd install -m755 ${srcdir}/locale-gen ${pkgdir}/usr/sbin - sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf || return 1 + sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf # create /etc/locale.gen install -m644 ${srcdir}/locale.gen.txt ${pkgdir}/etc/locale.gen - sed -i "s|/| |g" ${srcdir}/libc/localedata/SUPPORTED - sed -i 's|\\| |g' ${srcdir}/libc/localedata/SUPPORTED - sed -i "s|SUPPORTED-LOCALES=||" ${srcdir}/libc/localedata/SUPPORTED - cat ${srcdir}/libc/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen + sed -i "s|/| |g" ${srcdir}/glibc/localedata/SUPPORTED + sed -i 's|\\| |g' ${srcdir}/glibc/localedata/SUPPORTED + sed -i "s|SUPPORTED-LOCALES=||" ${srcdir}/glibc/localedata/SUPPORTED + cat ${srcdir}/glibc/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen sed -i "s|^|#|g" ${pkgdir}/etc/locale.gen - if [ "${CARCH}" = "x86_64" ]; then + if [[ ${CARCH} = "x86_64" ]]; then # fix for the linker sed -i '/RTLDLIST/s%/ld-linux.so.2 /lib64%%' ${pkgdir}/usr/bin/ldd #Comply with multilib binaries, they look for the linker in /lib64 @@ -105,6 +114,25 @@ build() { cd ${pkgdir}/lib64 ln -v -s ../lib/ld* . fi - - rm -f ${pkgdir}/usr/share/info/dir + + # manually strip files as stripping libpthread-*.so and libthread_db.so + # with the default $STRIP_SHARED breaks gdb and stripping ld-*.so breaks + # valgrind on x86_64 + + cd $pkgdir + strip $STRIP_BINARIES sbin/{ldconfig,sln} \ + usr/bin/{gencat,getconf,getent,iconv,locale} \ + usr/bin/{localedef,pcprofiledump,rpcgen,sprof} \ + usr/lib/getconf/* \ + usr/sbin/{iconvconfig,nscd,rpcinfo} + [[ $CARCH = "i686" ]] && strip $STRIP_BINARIES usr/bin/lddlibc4 + + strip $STRIP_STATIC usr/lib/*.a \ + lib/{{ld,libpthread}-2.12,libthread_db-1.0}.so + + strip $STRIP_SHARED lib/{libanl,libBrokenLocale,libc,libcidn,libcrypt}-2.12.so \ + lib/libnss_{compat,dns,files,hesiod,nis,nisplus}-2.12.so \ + lib/{libdl,libm,libnsl,libresolv,librt,libutil}-2.12.so \ + lib/{libmemusage,libpcprofile,libSegFault}.so \ + usr/lib/{pt_chown,gconv/*.so} } diff --git a/abs/core-testing/glibc/glibc-2.10-bz4781.patch b/abs/core-testing/glibc/glibc-2.10-bz4781.patch new file mode 100644 index 0000000..cf1a97a --- /dev/null +++ b/abs/core-testing/glibc/glibc-2.10-bz4781.patch @@ -0,0 +1,42 @@ +diff -Naur glibc-old/sysdeps/unix/sysv/linux/i386/clone.S glibc/sysdeps/unix/sysv/linux/i386/clone.S +--- glibc-old/sysdeps/unix/sysv/linux/i386/clone.S 2009-05-09 13:35:30.000000000 +1000 ++++ glibc/sysdeps/unix/sysv/linux/i386/clone.S 2009-05-23 13:27:46.000000000 +1000 +@@ -120,9 +120,6 @@ + ret + + L(thread_start): +- cfi_startproc; +- /* Clearing frame pointer is insufficient, use CFI. */ +- cfi_undefined (eip); + /* Note: %esi is zero. */ + movl %esi,%ebp /* terminate the stack frame */ + #ifdef RESET_PID +@@ -155,7 +152,6 @@ + jmp L(haspid) + .previous + #endif +- cfi_endproc; + + cfi_startproc + PSEUDO_END (BP_SYM (__clone)) +diff -Naur glibc-old/sysdeps/unix/sysv/linux/x86_64/clone.S glibc/sysdeps/unix/sysv/linux/x86_64/clone.S +--- glibc-old/sysdeps/unix/sysv/linux/x86_64/clone.S 2009-05-09 13:35:30.000000000 +1000 ++++ glibc/sysdeps/unix/sysv/linux/x86_64/clone.S 2009-05-23 13:27:46.000000000 +1000 +@@ -89,9 +89,6 @@ + ret + + L(thread_start): +- cfi_startproc; +- /* Clearing frame pointer is insufficient, use CFI. */ +- cfi_undefined (rip); + /* Clear the frame pointer. The ABI suggests this be done, to mark + the outermost frame obviously. */ + xorl %ebp, %ebp +@@ -116,7 +113,6 @@ + /* Call exit with return value from function call. */ + movq %rax, %rdi + call HIDDEN_JUMPTARGET (_exit) +- cfi_endproc; + + cfi_startproc; + PSEUDO_END (BP_SYM (__clone)) diff --git a/abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch b/abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch new file mode 100644 index 0000000..d3abeff --- /dev/null +++ b/abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch @@ -0,0 +1,13 @@ +timezone data has been split into the package sys-libs/timezone-data + +--- glibc-2.4/Makeconfig ++++ glibc-2.4/Makeconfig +@@ -931,7 +931,7 @@ + stdlib stdio-common libio malloc string wcsmbs time dirent \ + grp pwd posix io termios resource misc socket sysvipc gmon \ + gnulib iconv iconvdata wctype manual shadow gshadow po argp \ +- crypt nss localedata timezone rt conform debug \ ++ crypt nss localedata rt conform debug \ + $(add-on-subdirs) $(dlfcn) $(binfmt-subdir) + + ifndef avoid-generated diff --git a/abs/core-testing/glibc/glibc-__i686.patch b/abs/core-testing/glibc/glibc-__i686.patch new file mode 100644 index 0000000..28d5dd4 --- /dev/null +++ b/abs/core-testing/glibc/glibc-__i686.patch @@ -0,0 +1,13 @@ +diff -Naur glibc-old//sysdeps/i386/Makefile glibc//sysdeps/i386/Makefile +--- glibc-old//sysdeps/i386/Makefile 2010-03-18 11:52:30.000000000 +1000 ++++ glibc//sysdeps/i386/Makefile 2010-04-16 15:05:50.000000000 +1000 +@@ -1,6 +1,7 @@ + # The mpn functions need a #define for asm syntax flavor. +-# Every i386 port in use uses gas syntax (I think). +-asm-CPPFLAGS += -DGAS_SYNTAX ++# Every i386 port in use uses gas syntax (I think). Don't replace ++# __i686 in __i686.get_pc_thunk.bx. ++asm-CPPFLAGS += -DGAS_SYNTAX -U __i686 + + # The i386 `long double' is a distinct type we support. + long-double-fcts = yes diff --git a/abs/core-testing/glibc/glibc.install b/abs/core-testing/glibc/glibc.install index 17c6b5d..0b250b4 100644 --- a/abs/core-testing/glibc/glibc.install +++ b/abs/core-testing/glibc/glibc.install @@ -2,135 +2,20 @@ infodir=/usr/share/info filelist=(libc.info libc.info-1 libc.info-2 libc.info-3 libc.info-4 libc.info-5 libc.info-6 libc.info-7 libc.info-8 libc.info-9 libc.info-10 libc.info-11) -pre_upgrade() { -if [ "`uname -m`" = "x86_64" ]; then - if [ "`vercmp $2 2.4`" -lt 0 ]; then - cat << _EOF - ==> glibc oldpkgver < 2.4 detected! - ==> - ==> ATTENTION x86_64 USERS: - ==> - ==> We now switch from the former lib-linking to pure /lib support. To get rid - ==> of all lib64 directories we have removed the link /lib -> /lib64 and - ==> /usr/lib -> /usr/lib64. - ==> - ==> We have also rebuilt all packages we know that still used lib64 directories. - ==> Now all should go to /lib directories. - ==> - ==> Internally we have removed the link and then mv /lib64 /lib. Same to /usr/lib64. - ==> /lib64 and /usr/lib64 shouldn't exist anymore. If any package still installs to - ==> /lib64 or /usr/lib64 let us know. - ==> -_EOF - -# now the moving -rm -rf /lib/tls && echo "/lib/tls removed" -ldconfig -r . -rm -f /usr/lib -mv /usr/lib64 /usr/lib && echo "/usr/lib64 moved" -rm -f /lib -mv /lib64 /lib && echo "/lib64 moved" - - fi -fi - - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null - done -} - post_upgrade() { ldconfig -r . - init u - - if [ "`vercmp $2 2.3.6`" -lt 0 ]; then - cat << _EOF - ==> ATTENTION INTERNATIONAL USERS: - ==> - ==> Locales are no longer included in the glibc package. - ==> They are generated by /usr/sbin/locale-gen depending on the contents - ==> of /etc/locale.gen. - ==> glibc will try to autodetect the required locales now, if you need - ==> additional locales, please enable them in /etc/locale.gen and run - ==> /usr/sbin/locale-gen - ==> -_EOF - # Check active locales, enable the ones that are in use - loc=("$LANG" - "`grep '^LOCALE=' etc/rc.conf | awk -F '=' '{ print $2 }'`") - for l in "${loc[@]}"; do - if [ ! -z "${l}" ]; then - line="`grep -i "^#${l}[[:space:]]" etc/locale.gen`" - if [ ! -z "${line}" ]; then - sed -i -e "s|${line}|${line/\#/}|" etc/locale.gen - fi - fi - done - fi - + [ -x /sbin/init ] && init u usr/sbin/locale-gen - -# fix CHOST for arch64 -if [ "`uname -m`" = "x86_64" ]; then - if [ "`vercmp $2 2.4`" -lt 0 ]; then - sed -i s/'x86_64-pc-linux-gnu'/'x86_64-unknown-linux-gnu'/ /etc/makepkg.conf && \ - echo "in /etc/makepkg.conf CHOST has been changed to \"x86_64-unknown-linux-gnu\"" - - # we remove files from glibc 2.3.6 that are not removed automatically - rm -f /lib/ld-2.3.* && echo "removing unneeded old files" - rm -f /lib/libBrokenLocale-2.3.* - rm -f /lib/libNoVersion* - rm -f /lib/libanl-2.3.* - rm -f /lib/libc-2.3.* - rm -f /lib/libcidn-2.3.* - rm -f /lib/libcrypt-2.3.* - rm -f /lib/libdl-2.3.* - rm -f /lib/libm-2.3.* - rm -f /lib/libnsl-2.3.* - rm -f /lib/libnss1* - rm -f /lib/libnss_compat-2.3.* - rm -f /lib/libnss_dns-2.3.* - rm -f /lib/libnss_dns.so.1 - rm -f /lib/libnss_files-2.3.* - rm -f /lib/libnss_files.so.1 - rm -f /lib/libnss_hesiod-2.3.* - rm -f /lib/libnss_nis-2.3.* - rm -f /lib/libnss_nis.so.1 - rm -f /lib/libnss_nisplus-2.3.* - rm -f /lib/libpthread-0.10.so - rm -f /lib/libresolv-2.3.* - rm -f /lib/librt-2.3.* - rm -f /lib/libutil-2.3.* - rm -fR /lib/nosegneg - #rm -fR /usr/include/asm - #rm -fR /usr/include/linux - rm -fR /usr/include/ntpl - rm -f /usr/lib/libNoVersion* - rm -f /usr/lib/libc_stubs.a - rm -f /usr/lib/libnss1* - rm -f /usr/lib/libnss_compat.so.1 - rm -f /usr/lib/libnss_dns.so.1 - rm -f /usr/lib/libnss_files.so.1 - rm -f /usr/lib/libnss_nis.so.1 - rm -fR /usr/lib/nptl - rm -f /usr/sbin/nscd_nischeck - rm -fR /usr/share/zoneinfo/SystemV - rm -fR /usr/share/zoneinfo/posix/SystemV - rm -fR /usr/share/zoneinfo/right/SystemV - ldconfig -r . - fi -fi - - [ -x usr/bin/install-info ] || return 0 - for file in ${filelist[@]}; do - usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null - done + + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done } pre_remove() { [ -x usr/bin/install-info ] || return 0 for file in ${filelist[@]}; do - usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null + usr/bin/install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null done } |