summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2007-05-27 14:34:01 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2007-05-27 14:34:01 +0000
commitc5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b (patch)
tree02eef1a5900879bd8f2f746a365e8e27be202a22 /pkgs
parenteec1e8dc0e3589340dd9afb33839a5bee988716a (diff)
downloadnixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar.gz
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar.bz2
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar.lz
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar.xz
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.tar.zst
nixlib-c5e1ae5eaf0cc67f3ea626bd4160150fa6ba6d7b.zip
* 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
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/interpreters/python/default.nix38
-rw-r--r--pkgs/development/interpreters/python/search-path.patch27
-rw-r--r--pkgs/lib/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix2
4 files changed, 65 insertions, 6 deletions
diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix
index a13f2d626886..4ad973d82a1b 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 000000000000..2e7b7526c0ce
--- /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 b7087a57aba5..cac34c267190 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 2ed2740868a8..0ccdb7bb9b52 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 {