From 60a5bfb4db9124d735d7a6f37781bec87ac5a9a0 Mon Sep 17 00:00:00 2001
From: Cecil Hugh Watson <knoppmyth@gmail.com>
Date: Sat, 4 Sep 2010 15:59:23 -0700
Subject: glibc:Bumped/Updated for LinHES 7.

---
 abs/core-testing/glibc/PKGBUILD                    | 146 ++++++++++++---------
 abs/core-testing/glibc/glibc-2.10-bz4781.patch     |  42 ++++++
 .../glibc/glibc-2.10-dont-build-timezone.patch     |  13 ++
 abs/core-testing/glibc/glibc-__i686.patch          |  13 ++
 abs/core-testing/glibc/glibc.install               | 129 +-----------------
 5 files changed, 162 insertions(+), 181 deletions(-)
 create mode 100644 abs/core-testing/glibc/glibc-2.10-bz4781.patch
 create mode 100644 abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch
 create mode 100644 abs/core-testing/glibc/glibc-__i686.patch

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
 }
-- 
cgit v0.12

