* 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;
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
|
||||
buildInputs =
|
||||
optional (stdenv ? gcc && stdenv.gcc ? libc) stdenv.gcc.libc ++
|
||||
[bzip2] ++
|
||||
optional zlibSupport zlib;
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "python-2.4.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2;
|
||||
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";
|
||||
|
||||
libPrefix = "python2.4";
|
||||
preConfigure = "
|
||||
# Purity.
|
||||
for i in /usr /sw /opt /pkg; do
|
||||
substituteInPlace ./setup.py --replace $i /no-such-path
|
||||
done
|
||||
";
|
||||
|
||||
postInstall = "
|
||||
ensureDir $out/nix-support
|
||||
cp ${./setup-hook.sh} $out/nix-support/setup-hook
|
||||
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));
|
||||
|
||||
|
||||
concatStringsSep = separator: list:
|
||||
concatStrings (intersperse separator list);
|
||||
|
||||
|
||||
# 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]
|
||||
# == [1 2 3 4 5]' and `flatten 1 == [1]'.
|
||||
|
|
|
@ -885,7 +885,7 @@ rec {
|
|||
};
|
||||
|
||||
python = import ../development/interpreters/python {
|
||||
inherit fetchurl stdenv zlib;
|
||||
inherit fetchurl stdenv zlib bzip2;
|
||||
};
|
||||
|
||||
realPerl = import ../development/interpreters/perl {
|
||||
|
|
Loading…
Reference in New Issue