* Glibc 2.5. It compiles and seems to work. However, we probably

should bite the bullet on NPTL.

svn path=/nixpkgs/trunk/; revision=6756
This commit is contained in:
Eelco Dolstra 2006-10-17 22:07:10 +00:00
parent 76405f2b7f
commit 7827a75fe0
3 changed files with 164 additions and 0 deletions

View file

@ -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

View file

@ -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;
}

View file

@ -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