* Purity fix in building Python: don't let it search in /usr/include
and /usr/lib to determine what optional modules (like bzip2, zlib, dl, etc.) to build. Unfortunately there doesn't seem to be a way to tell the Python build process to look anywhere else, so I had to patch setup.py. svn path=/nixpkgs/trunk/; revision=8780
This commit is contained in:
parent
eec1e8dc0e
commit
c5e1ae5eaf
|
@ -1,24 +1,52 @@
|
||||||
{stdenv, fetchurl, zlib ? null, zlibSupport ? true}:
|
{stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2}:
|
||||||
|
|
||||||
assert zlibSupport -> zlib != null;
|
assert zlibSupport -> zlib != null;
|
||||||
|
|
||||||
|
with stdenv.lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
optional (stdenv ? gcc && stdenv.gcc ? libc) stdenv.gcc.libc ++
|
||||||
|
[bzip2] ++
|
||||||
|
optional zlibSupport zlib;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "python-2.4.4";
|
name = "python-2.4.4";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2;
|
url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2;
|
||||||
md5 = "0ba90c79175c017101100ebf5978e906";
|
md5 = "0ba90c79175c017101100ebf5978e906";
|
||||||
};
|
};
|
||||||
buildInputs = [
|
|
||||||
(if zlibSupport then zlib else null)
|
patches = [
|
||||||
|
# Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
|
||||||
|
./search-path.patch
|
||||||
];
|
];
|
||||||
inherit zlibSupport;
|
|
||||||
|
inherit buildInputs;
|
||||||
|
C_INCLUDE_PATH = concatStringsSep ":" (map (p: "${p}/include") buildInputs);
|
||||||
|
LIBRARY_PATH = concatStringsSep ":" (map (p: "${p}/lib") buildInputs);
|
||||||
|
|
||||||
configureFlags = "--enable-shared";
|
configureFlags = "--enable-shared";
|
||||||
|
|
||||||
libPrefix = "python2.4";
|
preConfigure = "
|
||||||
|
# Purity.
|
||||||
|
for i in /usr /sw /opt /pkg; do
|
||||||
|
substituteInPlace ./setup.py --replace $i /no-such-path
|
||||||
|
done
|
||||||
|
";
|
||||||
|
|
||||||
postInstall = "
|
postInstall = "
|
||||||
ensureDir $out/nix-support
|
ensureDir $out/nix-support
|
||||||
cp ${./setup-hook.sh} $out/nix-support/setup-hook
|
cp ${./setup-hook.sh} $out/nix-support/setup-hook
|
||||||
rm -rf $out/lib/python2.4/test
|
rm -rf $out/lib/python2.4/test
|
||||||
";
|
";
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit zlibSupport;
|
||||||
|
libPrefix = "python2.4";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
diff -rc Python-2.4.4-orig/setup.py Python-2.4.4/setup.py
|
||||||
|
*** Python-2.4.4-orig/setup.py 2006-10-08 19:41:25.000000000 +0200
|
||||||
|
--- Python-2.4.4/setup.py 2007-05-27 16:04:54.000000000 +0200
|
||||||
|
***************
|
||||||
|
*** 279,288 ****
|
||||||
|
# Check for AtheOS which has libraries in non-standard locations
|
||||||
|
if platform == 'atheos':
|
||||||
|
lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
|
||||||
|
- lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||||
|
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||||
|
- inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||||
|
|
||||||
|
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||||
|
if platform in ['osf1', 'unixware7', 'openunix8']:
|
||||||
|
lib_dirs += ['/usr/ccs/lib']
|
||||||
|
--- 279,289 ----
|
||||||
|
# Check for AtheOS which has libraries in non-standard locations
|
||||||
|
if platform == 'atheos':
|
||||||
|
lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
|
||||||
|
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||||
|
|
||||||
|
+ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||||
|
+ inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||||
|
+
|
||||||
|
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||||
|
if platform in ['osf1', 'unixware7', 'openunix8']:
|
||||||
|
lib_dirs += ['/usr/ccs/lib']
|
|
@ -38,6 +38,10 @@ rec {
|
||||||
++ (intersperse separator (tail list));
|
++ (intersperse separator (tail list));
|
||||||
|
|
||||||
|
|
||||||
|
concatStringsSep = separator: list:
|
||||||
|
concatStrings (intersperse separator list);
|
||||||
|
|
||||||
|
|
||||||
# Flatten the argument into a single list; that is, nested lists are
|
# Flatten the argument into a single list; that is, nested lists are
|
||||||
# spliced into the top-level lists. E.g., `flatten [1 [2 [3] 4] 5]
|
# spliced into the top-level lists. E.g., `flatten [1 [2 [3] 4] 5]
|
||||||
# == [1 2 3 4 5]' and `flatten 1 == [1]'.
|
# == [1 2 3 4 5]' and `flatten 1 == [1]'.
|
||||||
|
|
|
@ -885,7 +885,7 @@ rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
python = import ../development/interpreters/python {
|
python = import ../development/interpreters/python {
|
||||||
inherit fetchurl stdenv zlib;
|
inherit fetchurl stdenv zlib bzip2;
|
||||||
};
|
};
|
||||||
|
|
||||||
realPerl = import ../development/interpreters/perl {
|
realPerl = import ../development/interpreters/perl {
|
||||||
|
|
Loading…
Reference in New Issue