summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/core-testing/glibc/PKGBUILD146
-rw-r--r--abs/core-testing/glibc/glibc-2.10-bz4781.patch42
-rw-r--r--abs/core-testing/glibc/glibc-2.10-dont-build-timezone.patch13
-rw-r--r--abs/core-testing/glibc/glibc-__i686.patch13
-rw-r--r--abs/core-testing/glibc/glibc.install129
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
}