diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index a13f2d62688..4ad973d82a1 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -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"; + }; } diff --git a/pkgs/development/interpreters/python/search-path.patch b/pkgs/development/interpreters/python/search-path.patch new file mode 100644 index 00000000000..2e7b7526c0c --- /dev/null +++ b/pkgs/development/interpreters/python/search-path.patch @@ -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'] diff --git a/pkgs/lib/default.nix b/pkgs/lib/default.nix index b7087a57aba..cac34c26719 100644 --- a/pkgs/lib/default.nix +++ b/pkgs/lib/default.nix @@ -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]'. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2ed2740868a..0ccdb7bb9b5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -885,7 +885,7 @@ rec { }; python = import ../development/interpreters/python { - inherit fetchurl stdenv zlib; + inherit fetchurl stdenv zlib bzip2; }; realPerl = import ../development/interpreters/perl {