about summary refs log tree commit diff
path: root/pkgs/development/libraries/glibc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-10-24 22:23:20 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-10-24 22:23:20 +0000
commit69ee353dc7daf251afcaf4849005d434c9bb2ca7 (patch)
tree47056389727695db70b298ce894e87764b724d35 /pkgs/development/libraries/glibc
parentf6f207e0547878d717f14b8fa70344ea8e171ba9 (diff)
downloadnixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar.gz
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar.bz2
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar.lz
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar.xz
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.tar.zst
nixlib-69ee353dc7daf251afcaf4849005d434c9bb2ca7.zip
* glibc-2.5 is the default now.
* Remove gcc-static-3.4.

svn path=/nixpkgs/trunk/; revision=6831
Diffstat (limited to 'pkgs/development/libraries/glibc')
-rw-r--r--pkgs/development/libraries/glibc/builder.sh48
-rw-r--r--pkgs/development/libraries/glibc/default.nix32
-rw-r--r--pkgs/development/libraries/glibc/glibc-pwd.patch74
3 files changed, 154 insertions, 0 deletions
diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc/builder.sh
new file mode 100644
index 000000000000..9d34bda23bf2
--- /dev/null
+++ b/pkgs/development/libraries/glibc/builder.sh
@@ -0,0 +1,48 @@
+# glibc cannot have itself in its rpath.
+export NIX_NO_SELF_RPATH=1
+export NIX_DONT_SET_RPATH=1
+
+source $stdenv/setup
+source $substitute
+
+# 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
+}
+
+
+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/default.nix b/pkgs/development/libraries/glibc/default.nix
new file mode 100644
index 000000000000..33ecfc807cd2
--- /dev/null
+++ b/pkgs/development/libraries/glibc/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, kernelHeaders
+, installLocales ? true
+, profilingLibraries ? false
+}:
+
+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;
+
+  # `--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
+    ${if profilingLibraries then "--enable-profile" else "--disable-profile"}";
+}
diff --git a/pkgs/development/libraries/glibc/glibc-pwd.patch b/pkgs/development/libraries/glibc/glibc-pwd.patch
new file mode 100644
index 000000000000..07039718477f
--- /dev/null
+++ b/pkgs/development/libraries/glibc/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 <<EOF | cmp $testout - || exit 1
+ base = "$tmp/", file = "ftwtest.d", flag = FTW_D, cwd = $tmpreal, level = 0
+@@ -138,7 +138,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
+@@ -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