summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorDomen Kozar <domen@dev.si>2013-07-27 20:51:54 +0200
committerDomen Kozar <domen@dev.si>2013-07-29 12:09:06 +0200
commit5ec6cf37566107f01af013abbd100d8c9aa9ec75 (patch)
treeed9dbe95d0c31160fc6d618c33925a71dab5d3df /pkgs
parentb253eb0d593cb1041bd9c87ab03dbf72295c79d6 (diff)
downloadnixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar.gz
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar.bz2
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar.lz
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar.xz
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.tar.zst
nixpkgs-5ec6cf37566107f01af013abbd100d8c9aa9ec75.zip
add python3 support to pythonPackages
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/interpreters/pypy/2.0/default.nix2
-rw-r--r--pkgs/development/interpreters/python/2.6/default.nix1
-rw-r--r--pkgs/development/interpreters/python/2.7/default.nix1
-rw-r--r--pkgs/development/interpreters/python/3.2/default.nix5
-rw-r--r--pkgs/development/interpreters/python/3.3/default.nix5
-rw-r--r--pkgs/development/interpreters/python/3.3/setup-hook.sh4
-rw-r--r--pkgs/development/python-modules/generic/default.nix2
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix24
-rw-r--r--pkgs/development/python-modules/setuptools/distribute-skip-sdist_with_utf8_encoded_filename.patch28
-rw-r--r--pkgs/top-level/all-packages.nix14
-rw-r--r--pkgs/top-level/python-packages.nix34
11 files changed, 91 insertions, 29 deletions
diff --git a/pkgs/development/interpreters/pypy/2.0/default.nix b/pkgs/development/interpreters/pypy/2.0/default.nix
index 969746d3a34..f3d1e4e9ade 100644
--- a/pkgs/development/interpreters/pypy/2.0/default.nix
+++ b/pkgs/development/interpreters/pypy/2.0/default.nix
@@ -59,6 +59,7 @@ let
     installPhase = ''
        mkdir -p $out/bin
        mkdir -p $out/pypy-c
+       # TODO: make libPrefix work
        cp -R {include,lib_pypy,lib-python,pypy-c} $out/pypy-c
        ln -s $out/pypy-c/pypy-c $out/bin/pypy
        chmod +x $out/bin/pypy
@@ -68,6 +69,7 @@ let
     passthru = {
       inherit zlibSupport;
       libPrefix = "pypy${majorVersion}";
+      executable = "pypy";
     };
 
     enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix
index f264e4179e7..61c997206c1 100644
--- a/pkgs/development/interpreters/python/2.6/default.nix
+++ b/pkgs/development/interpreters/python/2.6/default.nix
@@ -75,6 +75,7 @@ let
     passthru = {
       inherit zlibSupport;
       libPrefix = "python${majorVersion}";
+      executable = "python2.6";
     };
 
     enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix
index 76ef7399812..f5a39a3b242 100644
--- a/pkgs/development/interpreters/python/2.7/default.nix
+++ b/pkgs/development/interpreters/python/2.7/default.nix
@@ -85,6 +85,7 @@ let
     passthru = {
       inherit zlibSupport;
       libPrefix = "python${majorVersion}";
+      executable = "python2.7";
     };
 
     enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/python/3.2/default.nix b/pkgs/development/interpreters/python/3.2/default.nix
index b3f5a17b064..4c858c99272 100644
--- a/pkgs/development/interpreters/python/3.2/default.nix
+++ b/pkgs/development/interpreters/python/3.2/default.nix
@@ -32,6 +32,8 @@ stdenv.mkDerivation {
     sha256 = "0pxs234g08v3lar09lvzxw4vqdpwkbqmvkv894j2w7aklskcjd6v";
   };
 
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
@@ -58,7 +60,8 @@ stdenv.mkDerivation {
     readlineSupport = readline != null;
     opensslSupport = openssl != null;
     tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
-    libPrefix = "python${majorVersion}m";
+    libPrefix = "python${majorVersion}";
+    executable = "python3.2m";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/python/3.3/default.nix b/pkgs/development/interpreters/python/3.3/default.nix
index 84f4ec184aa..7d3ede6594f 100644
--- a/pkgs/development/interpreters/python/3.3/default.nix
+++ b/pkgs/development/interpreters/python/3.3/default.nix
@@ -32,6 +32,8 @@ stdenv.mkDerivation {
     sha256 = "16myvina7nakyyg7r5gnjyydk8bzar988vmxsw2k485w5gz04wpp";
   };
 
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
@@ -58,7 +60,8 @@ stdenv.mkDerivation {
     readlineSupport = readline != null;
     opensslSupport = openssl != null;
     tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
-    libPrefix = "python${majorVersion}m";
+    libPrefix = "python${majorVersion}";
+    executable = "python3.3m";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/interpreters/python/3.3/setup-hook.sh b/pkgs/development/interpreters/python/3.3/setup-hook.sh
index e6fa34bf54b..c272c87daf1 100644
--- a/pkgs/development/interpreters/python/3.3/setup-hook.sh
+++ b/pkgs/development/interpreters/python/3.3/setup-hook.sh
@@ -1,12 +1,12 @@
 addPythonPath() {
-    addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.2/site-packages
+    addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.3/site-packages
 }
 
 toPythonPath() {
     local paths="$1"
     local result=
     for i in $paths; do
-        p="$i/lib/python3.2/site-packages"
+        p="$i/lib/python3.3/site-packages"
         result="${result}${result:+:}$p"
     done
     echo $result
diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix
index d32c6818bb2..71b5c1952a0 100644
--- a/pkgs/development/python-modules/generic/default.nix
+++ b/pkgs/development/python-modules/generic/default.nix
@@ -33,7 +33,7 @@
 , checkPhase ?
     ''
       runHook preCheck
-      python setup.py test
+      ${python}/bin/${python.executable} setup.py test
       runHook postCheck
     ''
 
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index 92c39afc249..3dcaaca4c25 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -2,31 +2,37 @@
 
 stdenv.mkDerivation rec {
   shortName = "setuptools-${version}";
-  name = "python-${shortName}";
+  name = "${python.executable}-${shortName}";
 
-  version = "0.6c11";
+  version = "0.9.8";
 
   src = fetchurl {
     url = "http://pypi.python.org/packages/source/s/setuptools/${shortName}.tar.gz";
-    sha256 = "1lx1hwxkhipyh206bgl90ddnfcnb68bzcvyawczbf833fadyl3v3";
+    sha256 = "037b8x3fdhx8s6xafqndi3yr8x2vr42n1kzs7jxk6j9s9fd65gs2";
   };
 
+  patches = [
+    # https://bitbucket.org/pypa/setuptools/issue/55/1-failure-lc_all-c-python33m-setuppy-test
+    ./distribute-skip-sdist_with_utf8_encoded_filename.patch
+  ];
+
   buildInputs = [ python wrapPython ];
 
-  buildPhase = "python setup.py build --build-base $out";
+  buildPhase = "${python}/bin/${python.executable} setup.py build --build-base $out";
 
   installPhase =
     ''
       dst=$out/lib/${python.libPrefix}/site-packages
       mkdir -p $dst
-      PYTHONPATH=$dst:$PYTHONPATH
-      python setup.py install --prefix=$out
+      PYTHONPATH="$dst:$PYTHONPATH"
+      ${python}/bin/${python.executable} setup.py install --prefix=$out
       wrapPythonPrograms
     '';
 
-  doCheck = false; # doesn't work with Python 2.7
-
-  checkPhase = "python setup.py test";
+  doCheck = true;
+  checkPhase = ''
+    ${python}/bin/${python.executable} setup.py test
+  '';
 
   meta = {
     description = "Utilities to facilitate the installation of Python packages";
diff --git a/pkgs/development/python-modules/setuptools/distribute-skip-sdist_with_utf8_encoded_filename.patch b/pkgs/development/python-modules/setuptools/distribute-skip-sdist_with_utf8_encoded_filename.patch
new file mode 100644
index 00000000000..96a4f81ee58
--- /dev/null
+++ b/pkgs/development/python-modules/setuptools/distribute-skip-sdist_with_utf8_encoded_filename.patch
@@ -0,0 +1,28 @@
+diff -r f5ac515f062a setuptools/tests/test_sdist.py
+--- a/setuptools/tests/test_sdist.py	Fri Jul 26 09:52:26 2013 +0200
++++ b/setuptools/tests/test_sdist.py	Sat Jul 27 20:22:17 2013 +0200
+@@ -3,12 +3,14 @@
+ 
+ 
+ import os
++import locale
+ import shutil
+ import sys
+ import tempfile
+ import unittest
+ import unicodedata
+ 
++from setuptools.tests.py26compat import skipIf
+ from setuptools.compat import StringIO, unicode
+ from setuptools.command.sdist import sdist
+ from setuptools.command.egg_info import manifest_maker
+@@ -318,6 +320,9 @@
+             filename = filename.decode('latin-1')
+             self.assertFalse(filename in cmd.filelist.files)
+ 
++
++    @skipIf(sys.version_info >= (3,) and locale.getpreferredencoding() != 'UTF-8',
++            'Unittest fails if locale is not utf-8 but the manifests is recorded correctly')
+     def test_sdist_with_utf8_encoded_filename(self):
+         # Test for #303.
+         dist = Distribution(SETUP_ATTRS)
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 82fb66a8908..90102796ccb 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5750,6 +5750,20 @@ let
     python = python26;
   };
 
+  python3Packages = python33Packages;
+
+  python33Packages = import ./python-packages.nix {
+    inherit pkgs;
+    inherit (lib) lowPrio;
+    python = python33;
+  };
+
+  python32Packages = import ./python-packages.nix {
+    inherit pkgs;
+    inherit (lib) lowPrio;
+    python = python32;
+  };
+
   python27Packages = recurseIntoAttrs (import ./python-packages.nix {
     inherit pkgs;
     inherit (lib) lowPrio;
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index ba6155ffff1..b5b64843faf 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -5,8 +5,9 @@ isPy26 = python.majorVersion == "2.6";
 isPy27 = python.majorVersion == "2.7";
 optional = pkgs.lib.optional;
 optionals = pkgs.lib.optionals;
+modules = python.modules or { readline = null; sqlite3 = null; curses = null; ssl = null; };
 
-pythonPackages = python.modules // rec {
+pythonPackages = modules // rec {
 
   inherit python;
   inherit (pkgs) fetchurl fetchsvn fetchgit stdenv;
@@ -444,8 +445,8 @@ pythonPackages = python.modules // rec {
         pythonPackages.mutagen
         pythonPackages.munkres
         pythonPackages.musicbrainzngs
-        python.modules.sqlite3
-        python.modules.readline
+        modules.sqlite3
+        modules.readline
       ];
 
     meta = {
@@ -506,7 +507,7 @@ pythonPackages = python.modules // rec {
        sha256 = "02dkmsmgy04l33nyw54rlxkjwff0yf3cy2kvdx8s5w344mqkkkv0";
      };
 
-     propagatedBuildInputs = [ python.modules.curses pygments ];
+     propagatedBuildInputs = [ modules.curses pygments ];
      doCheck = false;
 
      meta = {
@@ -606,7 +607,7 @@ pythonPackages = python.modules // rec {
   #     rev = "refs/tags/0.9.3";
   #   };
   #
-  #   propagatedBuildInputs = [ pythonPackages.argparse python.modules.ssl ];
+  #   propagatedBuildInputs = [ pythonPackages.argparse modules.ssl ];
   #
   #   doCheck = false;
   #
@@ -2387,7 +2388,7 @@ pythonPackages = python.modules // rec {
       sha256 = "0xfaa6h8css3yhsmx5vcffizrz6mvmgm46q7449z3hq7g3793184";
     };
 
-    propagatedBuildInputs = [ python.modules.sqlite3 ];
+    propagatedBuildInputs = [ modules.sqlite3 ];
 
     doCheck = false;
 
@@ -2754,7 +2755,7 @@ pythonPackages = python.modules // rec {
 
     buildInputs = [ pkgs.unzip ];
 
-    propagatedBuildInputs = [ argparse jinja2 six python.modules.readline ] ++
+    propagatedBuildInputs = [ argparse jinja2 six modules.readline ] ++
                             (optionals isPy26 [ importlib ordereddict ]);
 
     meta = {
@@ -3273,7 +3274,7 @@ pythonPackages = python.modules // rec {
     };
 
     buildInputs = [ nose ];
-    propagatedBuildInputs = [ dateutil numpy pytz python.modules.sqlite3 ];
+    propagatedBuildInputs = [ dateutil numpy pytz modules.sqlite3 ];
 
     # Tests require networking to pass
     doCheck = false;
@@ -4629,7 +4630,7 @@ pythonPackages = python.modules // rec {
 
     propagatedBuildInputs =
       [ recaptcha_client pytz memcached dateutil_1_5 paramiko flup pygments
-        djblets django_1_3 django_evolution pycrypto python.modules.sqlite3
+        djblets django_1_3 django_evolution pycrypto modules.sqlite3
         pysvn pil psycopg2
       ];
   };
@@ -5022,7 +5023,7 @@ pythonPackages = python.modules // rec {
 
     buildInputs = [ nose ];
 
-    propagatedBuildInputs = [ python.modules.sqlite3 ];
+    propagatedBuildInputs = [ modules.sqlite3 ];
 
     meta = {
       homepage = http://www.sqlalchemy.org/;
@@ -5201,7 +5202,7 @@ pythonPackages = python.modules // rec {
 
     PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
 
-    propagatedBuildInputs = [ genshi pkgs.setuptools python.modules.sqlite3 ];
+    propagatedBuildInputs = [ genshi pkgs.setuptools modules.sqlite3 ];
 
     meta = {
       description = "Enhanced wiki and issue tracking system for software development projects";
@@ -5384,9 +5385,12 @@ pythonPackages = python.modules // rec {
       md5 = "9745c28256c70c76d36adb3767a00212";
     };
 
+    inherit recursivePthLoader;
+    pythonPath = [ recursivePthLoader ];
+
     patches = [ ../development/python-modules/virtualenv-change-prefix.patch ];
 
-    propagatedBuildInputs = [ python.modules.readline python.modules.sqlite3 ];
+    propagatedBuildInputs = [ modules.readline modules.sqlite3 modules.curses ];
 
     buildInputs = [ mock nose ];
 
@@ -5446,7 +5450,7 @@ pythonPackages = python.modules // rec {
       md5 = "11825b7074ba7043e157805e4e6e0f55";
     };
 
-    propagatedBuildInputs = [ nose python.modules.ssl ];
+    propagatedBuildInputs = [ nose modules.ssl ];
 
     meta = {
       description = "WSGI request and response object";
@@ -6237,7 +6241,7 @@ pythonPackages = python.modules // rec {
     };
 
     buildInputs = [ pkgs.unzip unittest2 nose mock ];
-    propagatedBuildInputs = [ python.modules.curses libarchive ];
+    propagatedBuildInputs = [ modules.curses libarchive ];
 
     # two tests fail
     doCheck = false;
@@ -6478,7 +6482,7 @@ pythonPackages = python.modules // rec {
       sha256 = "1gj8i6j2i172cldqw98395235bn78ciagw6v17fgv01rmind3lag";
     };
 
-    buildInputs = [ django pkgs.pycairo ldap memcached python.modules.sqlite3 ];
+    buildInputs = [ django pkgs.pycairo ldap memcached modules.sqlite3 ];
 
     # error: invalid command 'test'
     doCheck = false;