add python3 support to pythonPackages

This commit is contained in:
Domen Kozar 2013-07-27 20:51:54 +02:00
parent b253eb0d59
commit 5ec6cf3756
11 changed files with 91 additions and 29 deletions

View File

@ -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;

View File

@ -75,6 +75,7 @@ let
passthru = {
inherit zlibSupport;
libPrefix = "python${majorVersion}";
executable = "python2.6";
};
enableParallelBuilding = true;

View File

@ -85,6 +85,7 @@ let
passthru = {
inherit zlibSupport;
libPrefix = "python${majorVersion}";
executable = "python2.7";
};
enableParallelBuilding = true;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -33,7 +33,7 @@
, checkPhase ?
''
runHook preCheck
python setup.py test
${python}/bin/${python.executable} setup.py test
runHook postCheck
''

View File

@ -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";

View File

@ -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)

View File

@ -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;

View File

@ -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;