From 7827a75fe0e4e380c2caab6f8e660962d69cedba Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 17 Oct 2006 22:07:10 +0000 Subject: [PATCH] * Glibc 2.5. It compiles and seems to work. However, we probably should bite the bullet on NPTL. svn path=/nixpkgs/trunk/; revision=6756 --- .../libraries/glibc-2.5/builder.sh | 69 +++++++++++++++++ .../libraries/glibc-2.5/default.nix | 21 ++++++ .../libraries/glibc-2.5/glibc-pwd.patch | 74 +++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 pkgs/development/libraries/glibc-2.5/builder.sh create mode 100644 pkgs/development/libraries/glibc-2.5/default.nix create mode 100644 pkgs/development/libraries/glibc-2.5/glibc-pwd.patch diff --git a/pkgs/development/libraries/glibc-2.5/builder.sh b/pkgs/development/libraries/glibc-2.5/builder.sh new file mode 100644 index 000000000000..0219e30c4ba9 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.5/builder.sh @@ -0,0 +1,69 @@ +# glibc cannot have itself in its rpath. +export NIX_NO_SELF_RPATH=1 +export NIX_DONT_SET_RPATH=1 + +source $stdenv/setup +source $substitute + +glibc=`cat $NIX_GCC/nix-support/orig-glibc` +echo $glibc + +export LD_LIBRARY_PATH=$glibc/lib + +# Explicitly tell glibc to use our pwd, not /bin/pwd. +export PWD_P=$(type -tP pwd) + + +postUnpack=postUnpack +postUnpack() { + cd $sourceRoot + unpackFile $linuxthreadsSrc + cd .. +} + + +preConfigure=preConfigure +preConfigure() { + + # Use Linuxthreads instead of NPTL. + rm -rf nptl + + for i in configure io/ftwtest-sh; do + substituteInPlace "$i" \ + --replace "@PWD@" "pwd" + done + + mkdir ../build + cd ../build + + configureScript=../$sourceRoot/configure + # `--with-tls --without-__thread' enables support for TLS but + # causes it not to be used. Required if we don't want to barf on + # 2.4 kernels. Or something. + configureFlags="--enable-add-ons \ + --with-headers=$kernelHeaders/include + --with-tls --without-__thread --disable-sanity-checks" +} + + +postConfigure=postConfigure +postConfigure() { + # Hack: get rid of the `-static' flag set by the bootstrap stdenv. + # This has to be done *after* `configure' because it builds some + # test binaries. + export NIX_CFLAGS_LINK= + export NIX_LDFLAGS_BEFORE= +} + + +postInstall=postInstall +postInstall() { + if test -n "$installLocales"; then + make localedata/install-locales + fi + rm $out/etc/ld.so.cache + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 +} + + +genericBuild diff --git a/pkgs/development/libraries/glibc-2.5/default.nix b/pkgs/development/libraries/glibc-2.5/default.nix new file mode 100644 index 000000000000..20f5cba82b15 --- /dev/null +++ b/pkgs/development/libraries/glibc-2.5/default.nix @@ -0,0 +1,21 @@ +{stdenv, fetchurl, kernelHeaders, installLocales ? true}: + +stdenv.mkDerivation { + name = "glibc-2.5"; + builder = ./builder.sh; + substitute = ../../../build-support/substitute/substitute.sh; + + src = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2; + md5 = "1fb29764a6a650a4d5b409dda227ac9f"; + }; + + linuxthreadsSrc = fetchurl { + url = http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2; + md5 = "870d76d46dcaba37c13d01dca47d1774"; + }; + + patches = [ ./glibc-pwd.patch ]; + + inherit kernelHeaders installLocales; +} diff --git a/pkgs/development/libraries/glibc-2.5/glibc-pwd.patch b/pkgs/development/libraries/glibc-2.5/glibc-pwd.patch new file mode 100644 index 000000000000..07039718477f --- /dev/null +++ b/pkgs/development/libraries/glibc-2.5/glibc-pwd.patch @@ -0,0 +1,74 @@ +diff -ruN glibc-20050110/configure glibc-20050110.patched/configure +--- glibc-20050110/configure 2005-01-05 10:39:53.000000000 +0100 ++++ glibc-20050110.patched/configure 2005-01-18 13:33:01.000000000 +0100 +@@ -1393,7 +1393,7 @@ + ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + + +-if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then ++if test "`cd $srcdir; @PWD@`" = "`@PWD@`"; then + { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5 + echo "$as_me: error: you must configure in a separate build directory" >&2;} + { (exit 1); exit 1; }; } +diff -ruN glibc-20050110/io/ftwtest-sh glibc-20050110.patched/io/ftwtest-sh +--- glibc-20050110/io/ftwtest-sh 2004-02-09 21:12:23.000000000 +0100 ++++ glibc-20050110.patched/io/ftwtest-sh 2005-01-18 13:33:15.000000000 +0100 +@@ -120,7 +120,7 @@ + sort > $testout + + # perhaps $tmp involves some symlinks... +-tmpreal=`cd $tmp; /bin/pwd 2>/dev/null || /usr/bin/pwd` ++tmpreal=`cd $tmp; @PWD@ 2>/dev/null || /usr/bin/pwd` + + cat </dev/null || /usr/bin/pwd` ++curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` + cd "$tmp" + LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d | + sort > $testout +@@ -160,7 +160,7 @@ + EOF + rm $testout + +-curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd` ++curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` + cd "$tmp" + LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d/. | + sort > $testout +@@ -182,7 +182,7 @@ + EOF + rm $testout + +-curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd` ++curwd=`@PWD@ 2>/dev/null || /usr/bin/pwd` + cd "$tmp" + LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d/foo/lvl1/link@1 | + sort > $testout +diff -ruN glibc-20050110/scripts/rellns-sh glibc-20050110.patched/scripts/rellns-sh +--- glibc-20050110/scripts/rellns-sh 1999-12-19 00:40:25.000000000 +0100 ++++ glibc-20050110.patched/scripts/rellns-sh 2005-01-18 13:35:53.245937423 +0100 +@@ -22,13 +22,13 @@ + exit 1 + fi + +-if test -x /bin/pwd; then +- pwd=/bin/pwd +-elif test -x /usr/bin/pwd; then +- pwd=/usr/bin/pwd +-else ++#if test -x /bin/pwd; then ++# pwd=/bin/pwd ++#elif test -x /usr/bin/pwd; then ++# pwd=/usr/bin/pwd ++#else + pwd='pwd' +-fi ++#fi + + # Make both paths absolute. + if test -d $1; then