diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index 486bebc2531c..865033ae2d26 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -17,8 +17,6 @@ stdenv.mkDerivation { buildInputs = [ python makeWrapper docutils unzip ]; - PYTHONPATH = "${python}/lib/python2.6/site-packages:${python}/lib/python2.7/site-packages:${docutils}/lib/python2.5/site-packages:${docutils}/lib/python2.6/site-packages:${docutils}/lib/python2.7/site-packages"; - makeFlags = "PREFIX=$(out)"; postInstall = (stdenv.lib.optionalString guiSupport @@ -47,8 +45,6 @@ stdenv.mkDerivation { chmod u+x $out/share/cgi-bin/hgweb.cgi ''; - doCheck = false; # The test suite fails, unfortunately. Not sure why. - meta = { description = "A fast, lightweight SCM system for very large distributed projects"; homepage = "http://www.selenic.com/mercurial/"; diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index f87e1e3810f0..6fa27c23525c 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -60,6 +60,8 @@ let postInstall = '' rm -rf "$out/lib/python${majorVersion}/test" + ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb + ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion} ''; passthru = { diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index 098603105410..7e28cdc1db74 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -74,6 +74,8 @@ let postInstall = '' rm -rf "$out/lib/python${majorVersion}/test" + ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb + ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion} ''; passthru = { diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix index e8e343976bc3..f4892f92b417 100644 --- a/pkgs/development/interpreters/python/wrapper.nix +++ b/pkgs/development/interpreters/python/wrapper.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation { unpackPhase = "true"; installPhase = '' mkdir -p "$out/bin" - for prg in 2to3 idle pydoc python python-config python${python.majorVersion} python${python.majorVersion}-config smtpd.py; do + for prg in 2to3 idle pdb pdb${python.majorVersion} pydoc python python-config python${python.majorVersion} python${python.majorVersion}-config smtpd.py; do makeWrapper "$python/bin/$prg" "$out/bin/$prg" --suffix PYTHONPATH : "$PYTHONPATH" done ensureDir "$out/share" diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 4e0b61002316..cdf759aa7f69 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -3,12 +3,14 @@ (http://pypi.python.org/pypi/setuptools/), which represents a large number of Python packages nowadays. */ -{ python, setuptools, wrapPython, lib }: +{ python, setuptools, wrapPython, lib, offlineDistutils, setuptoolsSite }: { name, namePrefix ? "python-" , buildInputs ? [] +, propagatedBuildInputs ? [] + , # List of packages that should be added to the PYTHONPATH # environment variable in programs built by this function. Packages # in the standard `propagatedBuildInputs' variable are also added. @@ -19,9 +21,11 @@ , installCommand ? '' - easy_install --prefix="$out" . + easy_install --always-unzip --prefix="$out" . '' +, preConfigure ? "true" + , buildPhase ? "true" , doCheck ? true @@ -43,12 +47,22 @@ python.stdenv.mkDerivation (attrs // { name = namePrefix + name; + phases = "unpackPhase patchPhase configurePhase buildPhase installPhase checkPhase fixupPhase distPhase"; + buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; + # setuptoolsSite is responsible for loading pth files + propagatedBuildInputs = propagatedBuildInputs ++ [ setuptoolsSite ]; + + buildInputStrings = map toString buildInputs; + pythonPath = [ setuptools] ++ pythonPath; - # XXX: Should we run `easy_install --always-unzip'? It doesn't seem - # to have a noticeable impact on small scripts. + preConfigure = '' + PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" + ${preConfigure} + ''; + installPhase = '' mkdir -p "$out/lib/${python.libPrefix}/site-packages" @@ -56,13 +70,27 @@ python.stdenv.mkDerivation (attrs // { export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" ${installCommand} + # A pth file might have been generated to load the package from + # within its own site-packages, rename this package not to + # collide with others. + eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth + if [ -e "$eapth" ]; then + # move colliding easy_install.pth to specifically named one + mv "$eapth" $(dirname "$eapth")/${name}.pth + fi + + # Remove any site.py files generated by easy_install as these + # cause collisions. If pth files are to be processed a + # corresponding site.py needs to be included in the PYTHONPATH. + rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py* + ${postInstall} ''; postFixup = '' wrapPythonPrograms - + # If a user installs a Python package, she probably also wants its # dependencies in the user environment (since Python modules don't # have something like an RPATH, so the only way to find the @@ -70,5 +98,12 @@ python.stdenv.mkDerivation (attrs // { if test -e $out/nix-support/propagated-build-inputs; then ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages fi + + createBuildInputsPth build-inputs "$buildInputStrings" + for inputsfile in propagated-build-inputs propagated-build-native-inputs; do + if test -e $out/nix-support/$inputsfile; then + createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)" + fi + done ''; }) diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh index 65f3229ca7c4..71269945d6f4 100644 --- a/pkgs/development/python-modules/generic/wrap.sh +++ b/pkgs/development/python-modules/generic/wrap.sh @@ -45,3 +45,16 @@ _addToPythonPath() { done fi } + +createBuildInputsPth() { + local category="$1" + local inputs="$2" + if [ foo"$inputs" != foo ]; then + for x in $inputs; do + if test -d "$x"/lib/@libPrefix@/site-packages; then + echo $x/lib/@libPrefix@/site-packages \ + >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth + fi + done + fi +} diff --git a/pkgs/development/python-modules/offline-distutils/default.nix b/pkgs/development/python-modules/offline-distutils/default.nix new file mode 100644 index 000000000000..2ed41b08bb71 --- /dev/null +++ b/pkgs/development/python-modules/offline-distutils/default.nix @@ -0,0 +1,21 @@ +# Used during module installation to prevent easy_install and python +# setup.py install/test from downloading + +{ stdenv, python }: + +stdenv.mkDerivation { + name = "python-offline-distutils-${python.version}"; + + buildInputs = [ python ]; + + unpackPhase = "true"; + installPhase = '' + dst="$out/lib/${python.libPrefix}" + ensureDir $dst/distutils + ln -s ${python}/lib/${python.libPrefix}/distutils/* $dst/distutils/ + cat < $dst/distutils/distutils.cfg +[easy_install] +allow-hosts = None +EOF + ''; +} diff --git a/pkgs/development/python-modules/pil/default.nix b/pkgs/development/python-modules/pil/default.nix index 4cf4576c0ce4..1dfdfee08fb6 100644 --- a/pkgs/development/python-modules/pil/default.nix +++ b/pkgs/development/python-modules/pil/default.nix @@ -1,9 +1,9 @@ -{ fetchurl, stdenv, python, libjpeg, zlib, freetype }: +{ fetchurl, stdenv, python, buildPythonPackage, libjpeg, zlib, freetype }: let version = "1.1.7"; in -stdenv.mkDerivation { - name = "python-imaging-${version}"; +buildPythonPackage { + name = "imaging-${version}"; src = fetchurl { url = "http://effbot.org/downloads/Imaging-${version}.tar.gz"; @@ -23,7 +23,7 @@ stdenv.mkDerivation { buildPhase = "python setup.py build_ext -i"; checkPhase = "python selftest.py"; - installPhase = "python setup.py install --prefix=$out"; + #installPhase = "python setup.py install --prefix=$out"; meta = { homepage = http://www.pythonware.com/products/pil/; diff --git a/pkgs/development/python-modules/pycrypto/default.nix b/pkgs/development/python-modules/pycrypto/default.nix index 9c756c9ed64c..0ad1663da65a 100644 --- a/pkgs/development/python-modules/pycrypto/default.nix +++ b/pkgs/development/python-modules/pycrypto/default.nix @@ -1,7 +1,8 @@ -{ stdenv, fetchurl, python, gmp }: +{ stdenv, fetchurl, python, buildPythonPackage, gmp }: -stdenv.mkDerivation rec { +buildPythonPackage rec { name = "pycrypto-2.6"; + namePrefix = ""; src = fetchurl { url = "http://pypi.python.org/packages/source/p/pycrypto/${name}.tar.gz"; @@ -10,14 +11,16 @@ stdenv.mkDerivation rec { buildInputs = [ python gmp ]; - buildPhase = "true"; - - installPhase = + buildPhase = '' python ./setup.py build_ext --library-dirs=${gmp}/lib - python ./setup.py install --prefix=$out ''; +# installPhase = +# '' +# python ./setup.py install --prefix=$out +# ''; + meta = { homepage = "http://www.pycrypto.org/"; description = "Python Cryptography Toolkit"; diff --git a/pkgs/development/python-modules/recursive-pth-loader/default.nix b/pkgs/development/python-modules/recursive-pth-loader/default.nix new file mode 100644 index 000000000000..3452c62e2168 --- /dev/null +++ b/pkgs/development/python-modules/recursive-pth-loader/default.nix @@ -0,0 +1,20 @@ +{ stdenv, python }: + +stdenv.mkDerivation rec { + name = "resursive-pth-loader-1.0"; + + unpackPhase = "true"; + + buildInputs = [ python ]; + + installPhase = + '' + dst=$out/lib/${python.libPrefix}/site-packages + mkdir -p $dst + cat ${./sitecustomize.py} >> $dst/sitecustomize.py + ''; + + meta = { + description = "Enable recursive processing of pth files anywhere in sys.path"; + }; +} diff --git a/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py b/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py new file mode 100644 index 000000000000..057e779803cb --- /dev/null +++ b/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py @@ -0,0 +1,46 @@ +"""Recursively load pth files in site-packages of sys.path + +- iterate over sys.path +- check for pth in dirs that end in site-packages +- ignore import statements in pth files +- add dirs listed in pth files right after current sys.path element, + they will be processed in next iteration +""" + +import os +import site +import sys + + +for path_idx, sitedir in enumerate(sys.path): + # ignore non-site-packages + if not sitedir.endswith('site-packages'): + continue + + # find pth files + try: + names = os.listdir(sitedir) + except os.error: + continue + dotpth = os.extsep + "pth" + pths = [name for name in names if name.endswith(dotpth)] + + for pth in pths: + fullname = os.path.join(sitedir, pth) + try: + f = open(fullname, "rU") + except IOError: + continue + + with f: + for n, line in enumerate(f): + if line.startswith("#"): + continue + + if line.startswith(("import ", "import\t")): + continue + + line = line.rstrip() + dir, dircase = site.makepath(sitedir, line) + if not dircase in sys.path: + sys.path.insert(path_idx+1, dir) diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix index 50b73aaf8f60..879f6aed8dee 100644 --- a/pkgs/development/python-modules/setuptools/default.nix +++ b/pkgs/development/python-modules/setuptools/default.nix @@ -1,7 +1,9 @@ { stdenv, fetchurl, python, wrapPython }: stdenv.mkDerivation rec { - name = "setuptools-0.6c11"; + name = "setuptools-" + version; + + version = "0.6c11"; src = fetchurl { url = "http://pypi.python.org/packages/source/s/setuptools/${name}.tar.gz"; diff --git a/pkgs/development/python-modules/setuptools/site.nix b/pkgs/development/python-modules/setuptools/site.nix new file mode 100644 index 000000000000..34e7b478595e --- /dev/null +++ b/pkgs/development/python-modules/setuptools/site.nix @@ -0,0 +1,16 @@ +# Propagated by buildPythonPackge to process pth files + +{ stdenv, python, setuptools }: + +stdenv.mkDerivation { + name = "python-setuptools-site-${setuptools.version}"; + + buildInputs = [ python setuptools ]; + + unpackPhase = "true"; + installPhase = '' + dst="$out/lib/${python.libPrefix}/site-packages" + ensureDir $dst + ln -s ${setuptools}/lib/${python.libPrefix}/site-packages/site.* $dst/ + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5dba3d201941..00babc7df18e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5233,13 +5233,13 @@ let numeric = callPackage ../development/python-modules/numeric { }; - pil = callPackage ../development/python-modules/pil { }; + pil = python27Packages.pil; psyco = callPackage ../development/python-modules/psyco { }; pycairo = callPackage ../development/python-modules/pycairo { }; - pycrypto = callPackage ../development/python-modules/pycrypto { }; + pycrypto = python27Packages.pycrypto; pycups = callPackage ../development/python-modules/pycups { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5487deea5e3b..3b34238663eb 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9,7 +9,13 @@ let pythonPackages = python.modules // rec { buildPythonPackage = import ../development/python-modules/generic { inherit (pkgs) lib; - inherit python wrapPython setuptools; + inherit python wrapPython setuptools setuptoolsSite offlineDistutils; + }; + + + recursivePthLoader = import ../development/python-modules/recursive-pth-loader { + inherit (pkgs) stdenv; + inherit python; }; @@ -18,12 +24,30 @@ let pythonPackages = python.modules // rec { inherit python wrapPython; }; + setuptoolsSite = import ../development/python-modules/setuptools/site.nix { + inherit (pkgs) stdenv; + inherit python setuptools; + }; + + offlineDistutils = import ../development/python-modules/offline-distutils { + inherit (pkgs) stdenv; + inherit python; + }; ipython = import ../shells/ipython { inherit (pkgs) stdenv fetchurl; inherit buildPythonPackage pythonPackages; }; + pil = import ../development/python-modules/pil { + inherit (pkgs) fetchurl stdenv libjpeg zlib freetype; + inherit python buildPythonPackage; + }; + + pycrypto = import ../development/python-modules/pycrypto { + inherit (pkgs) fetchurl stdenv gmp; + inherit python buildPythonPackage; + }; wrapPython = pkgs.makeSetupHook { deps = pkgs.makeWrapper; @@ -44,6 +68,7 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ notmuch pkgs.dbacl ]; + # error: invalid command 'test' doCheck = false; postInstall = '' @@ -70,6 +95,7 @@ let pythonPackages = python.modules // rec { sha256 = "b5239c4dfcd9882608fb48ef80fe9ba9223949ab7e6a2c1abe970ac307ebcd4a"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ notmuch urwid twisted magic configobj pygpgme ]; @@ -113,6 +139,7 @@ let pythonPackages = python.modules // rec { sha1 = "f124e5e4a6644bf6d1734032a01ac44db1b25a29"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -132,6 +159,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.unzip pkgs.sqlite ]; + # python: double free or corruption (fasttop): 0x0000000002fd4660 *** doCheck = false; meta = { @@ -149,9 +177,14 @@ let pythonPackages = python.modules // rec { rev = "b2c9cdcabd"; sha256 = "b0c12b8c48ed9180c7475fab18de50d63e1b517cfb46da4d2c66fc406fe902bc"; }; + installCommand = "python setup.py install --prefix=$out"; + + # error: invalid command 'test' doCheck = false; + propagatedBuildInputs = [ boto ]; + }); @@ -165,7 +198,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.unzip ]; - # How do we run the tests? + # error: invalid command 'test' doCheck = false; meta = { @@ -206,7 +239,7 @@ let pythonPackages = python.modules // rec { sha256 = "1gasiy5lwbhsxw27g36d88n36xbj52434klisvqhljgckd4xqcy7"; }; - # No tests implemented + # error: invalid command 'test' doCheck = false; meta = { @@ -272,23 +305,23 @@ let pythonPackages = python.modules // rec { }; - bugz = buildPythonPackage (rec { - name = "bugz-0.9.3"; - - src = fetchgit { - url = "git://github.com/williamh/pybugz.git"; - rev = "refs/tags/0.9.3"; - }; - - propagatedBuildInputs = [ argparse python.modules.ssl ]; - - doCheck = false; - - meta = { - homepage = http://www.liquidx.net/pybugz/; - description = "Command line interface for Bugzilla"; - }; - }); + # bugz = buildPythonPackage (rec { + # name = "bugz-0.9.3"; + # + # src = fetchgit { + # url = "https://github.com/williamh/pybugz.git"; + # rev = "refs/tags/0.9.3"; + # }; + # + # propagatedBuildInputs = [ argparse python.modules.ssl ]; + # + # doCheck = false; + # + # meta = { + # homepage = http://www.liquidx.net/pybugz/; + # description = "Command line interface for Bugzilla"; + # }; + # }); carrot = buildPythonPackage rec { @@ -338,6 +371,7 @@ let pythonPackages = python.modules // rec { sha256 = "1xlvanhnxgvwd7vvypbafyl6yqfkpnwa9rs9k3058z84gd86bz8d"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -373,6 +407,8 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ stompclient distribute ]; + #buildInputs = [ coverage ]; + # needs coverage doCheck = false; meta = { @@ -391,6 +427,7 @@ let pythonPackages = python.modules // rec { md5 = "201dbaa732a9049c839f9bb6c27fc7b5"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -427,9 +464,9 @@ let pythonPackages = python.modules // rec { sha256 = "139yfm9yz9k33kgqw4khsljs10rkhhxyywbq9i82bh2r31cil1pp"; }; - buildInputs = [ pkgs.unzip ]; + buildInputs = [ pkgs.unzip mock ]; - # The tests fail - I don't know why + # couple of failing tests doCheck = false; meta = { @@ -456,7 +493,7 @@ let pythonPackages = python.modules // rec { # http://thread.gmane.org/gmane.comp.file-systems.tahoe.devel/3200 for a # discussion. - # Gives "ValueError: Empty module name" with no clue as to why. + # AttributeError: 'module' object has no attribute 'test_darcsver' doCheck = false; meta = { @@ -514,6 +551,8 @@ let pythonPackages = python.modules // rec { # ehm, YES, the --verbose flags needs to be there, otherwise it tries to patch setuptools! easy_install --verbose --prefix=$out . ''; + + # test for 27 fails doCheck = false; meta = { @@ -549,6 +588,7 @@ let pythonPackages = python.modules // rec { sha256 = "16s0anvpaccbqmdrhl71z73k0dy2sl166nnc2fbd5lshlgmj13ad"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -566,6 +606,7 @@ let pythonPackages = python.modules // rec { sha256 = "0snlrcvk92qj1v0n9dpycn6sw56w4zns4mpc30837q6yi7ylrx4f"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -600,7 +641,7 @@ let pythonPackages = python.modules // rec { sha256 = "1d8vg5a9q2ldnbxqap1893lqb66jwcsli2brbjx7mcnqrzcz449x"; }; - propagatedBuildInputs = [ pkgs.pil django_1_3 ]; + propagatedBuildInputs = [ pil django_1_3 ]; meta = { description = "A collection of useful extensions for Django"; @@ -621,7 +662,10 @@ let pythonPackages = python.modules // rec { installCommand = '' python setup.py install --prefix="$out" --root=/ --record="$out/lib/${python.libPrefix}/site-packages/dulwich/list.txt" --single-version-externally-managed ''; - doCheck = false; + + # For some reason "python setup.py test" doesn't work with Python 2.6. + # pretty sure that is about import behaviour. + doCheck = python.majorVersion != "2.6"; meta = { description = "Simple Python implementation of the Git file formats and protocols."; @@ -655,6 +699,7 @@ let pythonPackages = python.modules // rec { sha256 = "0wfz4nxl95jcr2f2mc5gijgighavcghg33plzbz5jyi531jpffss"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -729,6 +774,9 @@ let pythonPackages = python.modules // rec { md5 = "abfdbb25d37c28e9da05f1b5c3596d1a"; }; + buildInputs = [ nose ]; + + # 3 failing tests doCheck = false; meta = { @@ -784,9 +832,6 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ twisted pkgs.pyopenssl ]; - # For some reason "python setup.py test" doesn't work with Python 2.6. - doCheck = false; - meta = { homepage = http://foolscap.lothar.com/; @@ -833,7 +878,8 @@ let pythonPackages = python.modules // rec { sha256 = "0jrajyppdzb3swcxv3w1mpp88vcy7400gy1v2h2gm3pq0dmggaij"; }; - # two tests fail on x86_64 at least. I don't know why. + # FAIL: test_sanitize_remove_script_elem (genshi.filters.tests.html.HTMLSanitizerTestCase) + # FAIL: test_sanitize_remove_src_javascript (genshi.filters.tests.html.HTMLSanitizerTestCase) doCheck = false; buildInputs = [ pkgs.setuptools ]; @@ -859,7 +905,8 @@ let pythonPackages = python.modules // rec { sha256 = "0bhiyx41kilvy04cgjbvjy2r4b6l7zz31fbrg3l6lvnqm26nihb0"; }; - buildInputs = [ pkgs.setuptools ]; + buildInputs = [ pkgs.setuptools ] ++ + (if python.majorVersion == "2.6" then [ argparse ] else []); meta = { description = "automatically generated zsh completion function for Python's option parser modules"; @@ -895,6 +942,9 @@ let pythonPackages = python.modules // rec { buildInputs = [ nose mox ]; + # tests fail for python2.6 + doCheck = python.majorVersion != "2.6"; + propagatedBuildInputs = [ gflags sqlalchemy webob routes eventlet ]; PYTHON_EGG_CACHE = "`pwd`/.egg-cache"; @@ -931,6 +981,7 @@ let pythonPackages = python.modules // rec { sha256 = "1wmd1svx5344alb8ff9vzdam1ccqdl0h7shp1xnsk843hqwc0fz0"; }; + # error: invalid command 'test' doCheck = false; postUnpack = "find . -print0 | xargs -0 touch"; @@ -950,8 +1001,6 @@ let pythonPackages = python.modules // rec { sha256 = "2e2ce18092c32d1ec54f8a447e14e33585e30f240b883bfeeca65f12b3bcfaf6"; }; - doCheck = false; # doesn't have a test - meta = { homepage = "http://code.google.com/p/httplib2"; description = "A comprehensive HTTP client library"; @@ -987,6 +1036,7 @@ let pythonPackages = python.modules // rec { md5 = "f4f7ddc7c5e55a47222a5cc6c0a87b6d"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1026,6 +1076,7 @@ let pythonPackages = python.modules // rec { md5 = "506cf1b13020b3ed2f3c845ea0c9830e"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1044,10 +1095,13 @@ let pythonPackages = python.modules // rec { sha256 = "11qilrs4sd4c1mkd64ikrjsc2vwrshhc54n5mh4xrark9c7ayp0y"; }; - buildInputs = [ zopeInterface ]; + buildInputs = [ zopeInterface mock ]; preConfigure = "cp test/secrets.py-dist test/secrets.py"; + # failing tests for 26 and 27 + doCheck = false; + meta = { description = "A unified interface to many cloud providers"; homepage = http://incubator.apache.org/libcloud/; @@ -1063,7 +1117,8 @@ let pythonPackages = python.modules // rec { sha1 = "1eebaee375641c9f29aeb21768f917dd2b985752"; }; - doCheck = false; # no tests + # error: invalid command 'test' + doCheck = false; meta = { homepage = http://code.google.com/p/pylockfile/; @@ -1154,6 +1209,7 @@ let pythonPackages = python.modules // rec { md5 = "751e8055be2433dfd1a82e0fb1b12f13"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1169,6 +1225,7 @@ let pythonPackages = python.modules // rec { sha256 = "be37e1d86c65ecacae6683f8805e051e9904e5f2e02bf2b7a34262c46a6d06a7"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ dateutil numpy pkgs.freetype pkgs.libpng pkgs.pkgconfig pkgs.tcl pkgs.tk pkgs.xlibs.libX11 ]; @@ -1245,6 +1302,7 @@ let pythonPackages = python.modules // rec { sha1 = "b71aeaacf31898c3b38d8b9ca5bcc0664499c0de"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1273,6 +1331,7 @@ let pythonPackages = python.modules // rec { MySQL_python = buildPythonPackage { name = "MySQL-python-1.2.3"; + # plenty of failing tests doCheck = false; src = fetchurl { @@ -1280,7 +1339,9 @@ let pythonPackages = python.modules // rec { sha256 = "0vkyg9dmj29hzk7fy77f42p7bfj28skyzsjsjry4wqr3z6xnzrkx"; }; - propagatedBuildInputs = [ pkgs.mysql pkgs.zlib nose ]; + buildInputs = [ nose ]; + + propagatedBuildInputs = [ pkgs.mysql pkgs.zlib ]; meta = { description = "MySQL database binding for Python"; @@ -1300,6 +1361,7 @@ let pythonPackages = python.modules // rec { # No support of GUI yet. + # error: invalid command 'test' doCheck = false; meta = { @@ -1332,7 +1394,8 @@ let pythonPackages = python.modules // rec { sha256 = "0ssxic389rdc79zkz8dxcjpqdi5qs80h12khkag410cl9cwk11f2"; }; - doCheck = false; # there is no test command + # error: invalid command 'test' + doCheck = false; meta = { homepage = https://github.com/drkjam/netaddr/; @@ -1346,41 +1409,41 @@ let pythonPackages = python.modules // rec { version = "0.10.0"; src = fetchurl { - url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-${version}.tar.gz?format=raw"; + url = "http://pypi.python.org/packages/source/N/Nevow/Nevow-${version}.tar.gz"; sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0"; name = "${name}.tar.gz"; }; - propagatedBuildInputs = [ twisted ]; + propagatedBuildInputs = [ twisted ]; - postInstall = "twistd --help > /dev/null"; + postInstall = "twistd --help > /dev/null"; - meta = { - description = "Nevow, a web application construction kit for Python"; + meta = { + description = "Nevow, a web application construction kit for Python"; - longDescription = '' - Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow - is a web application construction kit written in Python. It is - designed to allow the programmer to express as much of the view - logic as desired in Python, and includes a pure Python XML - expression syntax named stan to facilitate this. However it - also provides rich support for designer-edited templates, using - a very small XML attribute language to provide bi-directional - template manipulation capability. + longDescription = '' + Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow + is a web application construction kit written in Python. It is + designed to allow the programmer to express as much of the view + logic as desired in Python, and includes a pure Python XML + expression syntax named stan to facilitate this. However it + also provides rich support for designer-edited templates, using + a very small XML attribute language to provide bi-directional + template manipulation capability. - Nevow also includes formless, a declarative syntax for - specifying the types of method parameters and exposing these - methods to the web. Forms can be rendered automatically, and - form posts will be validated and input coerced, rendering error - pages if appropriate. Once a form post has validated - successfully, the method will be called with the coerced values. - ''; + Nevow also includes formless, a declarative syntax for + specifying the types of method parameters and exposing these + methods to the web. Forms can be rendered automatically, and + form posts will be validated and input coerced, rendering error + pages if appropriate. Once a form post has validated + successfully, the method will be called with the coerced values. + ''; - homepage = http://divmod.org/trac/wiki/DivmodNevow; + homepage = http://divmod.org/trac/wiki/DivmodNevow; - license = "BSD-style"; - }; - }); + license = "BSD-style"; + }; + }); nose = buildPythonPackage rec { name = "nose-1.2.1"; @@ -1451,6 +1514,8 @@ let pythonPackages = python.modules // rec { python setup.py build --fcompiler="gnu95" python setup.py install --prefix=$out ''; + + # error: invalid command 'test' doCheck = false; buildInputs = [ pkgs.gfortran ]; @@ -1463,7 +1528,7 @@ let pythonPackages = python.modules // rec { }); oauth2 = buildPythonPackage (rec { - name = "auth2-1.5.211"; + name = "oauth2-1.5.211"; src = fetchurl { url = "http://pypi.python.org/packages/source/o/oauth2/oauth2-1.5.211.tar.gz"; @@ -1471,6 +1536,9 @@ let pythonPackages = python.modules // rec { }; propagatedBuildInputs = [ httplib2 ]; + + #buildInputs = [ mock coverage ]; + # needs coverage doCheck = false; meta = { @@ -1482,27 +1550,27 @@ let pythonPackages = python.modules // rec { }; }); - optfunc = buildPythonPackage ( rec { - name = "optfunc-git"; - - src = pkgs.fetchgit { - url = "http://github.com/simonw/optfunc.git"; - rev = "e3fa034a545ed94ac5a039cf5b170c7d0ee21b7b"; - }; - - installCommand = '' - dest=$(toPythonPath $out)/optfunc - mkdir -p $dest - cp * $dest/ - ''; - - doCheck = false; - - meta = { - description = "A new experimental interface to optparse which works by introspecting a function definition"; - homepage = "http://simonwillison.net/2009/May/28/optfunc/"; - }; - }); + # optfunc = buildPythonPackage ( rec { + # name = "optfunc-git"; + # + # src = pkgs.fetchgit { + # url = "https://github.com/simonw/optfunc.git"; + # rev = "e3fa034a545ed94ac5a039cf5b170c7d0ee21b7b"; + # }; + # + # installCommand = '' + # dest=$(toPythonPath $out)/optfunc + # mkdir -p $dest + # cp * $dest/ + # ''; + # + # doCheck = false; + # + # meta = { + # description = "A new experimental interface to optparse which works by introspecting a function definition"; + # homepage = "http://simonwillison.net/2009/May/28/optfunc/"; + # }; + # }); ply = buildPythonPackage (rec { name = "ply-3.2"; @@ -1547,7 +1615,7 @@ let pythonPackages = python.modules // rec { sha256 = "1bjy4jn51c50mpq51jbwk0glzd8bxz83gxdfkr9p95dmrd17c7hh"; }; - buildInputs = [ pkgs.pycrypto ]; + buildInputs = [ pycrypto ]; meta = { homepage = "http://www.lag.net/paramiko/"; @@ -1635,6 +1703,7 @@ let pythonPackages = python.modules // rec { sha256 = "0x8bfjjqygriry1iyygm5048ykl5qpbpzqfp6i8dhkslm3ryf5fk"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1673,6 +1742,7 @@ let pythonPackages = python.modules // rec { sha256 = "1sr2bb3g7rl7gr6156j5qv71kg06q1x01r1lbps9ksnyz37djn2q"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1714,6 +1784,7 @@ let pythonPackages = python.modules // rec { psycopg2 = buildPythonPackage rec { name = "psycopg2-2.0.13"; + # error: invalid command 'test' doCheck = false; src = fetchurl { @@ -1782,8 +1853,6 @@ let pythonPackages = python.modules // rec { python setup.py install --prefix=$out ''; - doCheck = false; - meta = { description = "Python bindings for PortAudio"; homepage = "http://people.csail.mit.edu/hubert/pyaudio/"; @@ -1800,7 +1869,7 @@ let pythonPackages = python.modules // rec { sha256 = "4a3a085ecf1fcd2736573538ffa114f1f4331b3bbbdd69381e6e172c49c9750f"; }; - doCheck = false; + buildInputs = [ pytz ]; meta = { homepage = http://babel.edgewall.org; @@ -1849,14 +1918,13 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.curl ]; + # error: invalid command 'test' doCheck = false; preConfigure = '' substituteInPlace setup.py --replace '--static-libs' '--libs' ''; - installCommand = "python setup.py install --prefix=$out"; - meta = { homepage = http://pycurl.sourceforge.net/; description = "Python wrapper for libcurl"; @@ -1887,7 +1955,7 @@ let pythonPackages = python.modules // rec { }; propagatedBuildInputs = [xe]; - # tests not described in setup.py + # error: invalid command 'test' doCheck = false; meta = { @@ -1920,6 +1988,7 @@ let pythonPackages = python.modules // rec { sha256 = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ pkgs.gpgme ]; @@ -1965,7 +2034,10 @@ let pythonPackages = python.modules // rec { url = "http://pypi.python.org/packages/source/p/pyparsing/${name}.tar.gz"; md5 = "1e41cb219dae9fc353bd4cd47636b283"; }; + + # error: invalid command 'test' doCheck = false; + meta = { homepage = http://pyparsing.wikispaces.com/; description = "The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions."; @@ -1995,6 +2067,8 @@ let pythonPackages = python.modules // rec { sha256 = "1idks7j9bn62xzsaxkvhl7bdq6ws8kv8aa0wahfh7724qlbbcf1k"; }; + # ERROR: testExtended (tests.test_acls.AclExtensions) + # IOError: [Errno 0] Error doCheck = false; buildInputs = [ pkgs.acl ]; @@ -2090,6 +2164,7 @@ let pythonPackages = python.modules // rec { md5 = "3076164a7079891d149a23f9435581db"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2119,7 +2194,7 @@ let pythonPackages = python.modules // rec { --replace "/usr/local/lib" "${pkgs.sqlite}/lib" ''; - # FIXME: How do we run the tests? + # error: invalid command 'test' doCheck = false; meta = { @@ -2181,9 +2256,6 @@ let pythonPackages = python.modules // rec { sed -i -e 's|libpython2.7.dylib|lib/libpython2.7.dylib|' Makefile ''); - # The regression test suite expects locale support, which our glibc - # doesn't have by default. - doCheck = false; checkPhase = "make -C ../Tests"; installPhase = '' @@ -2260,6 +2332,7 @@ let pythonPackages = python.modules // rec { sha256 = "0jmkffik6hdzs7ng8c65bggss2ai40nm59jykswdf5lpd36cxddq"; }; + # error: invalid command 'test' doCheck = false; buildInputs = [ pkgs.attr ]; @@ -2329,6 +2402,8 @@ let pythonPackages = python.modules // rec { }; buildInputs = [freetype]; + + # error: invalid command 'test' doCheck = false; meta = { @@ -2348,8 +2423,8 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ recaptcha_client pytz memcached dateutil paramiko flup pygments - djblets django_1_3 django_evolution pkgs.pycrypto python.modules.sqlite3 - pysvn pkgs.pil psycopg2 + djblets django_1_3 django_evolution pycrypto python.modules.sqlite3 + pysvn pil psycopg2 ]; }; @@ -2362,6 +2437,7 @@ let pythonPackages = python.modules // rec { sha256 = "1c7ipk5vwqnln83rmai5jzyxkjdajdzbk5cgy1z83nyr5hbkgkqr"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2444,6 +2520,8 @@ let pythonPackages = python.modules // rec { buildInputs = [pkgs.gfortran]; propagatedBuildInputs = [ numpy ]; + + # error: invalid command 'test' doCheck = false; # TODO: add ATLAS=${pkgs.atlas} @@ -2582,6 +2660,7 @@ let pythonPackages = python.modules // rec { md5 = "9e8099b57cd27493a6988e9c9b313e23"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2605,6 +2684,7 @@ let pythonPackages = python.modules // rec { sourceRoot=`pwd`/`ls -d S*` ''; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ pkgs.xlibs.libX11 pkgs.pythonDBus pkgs.pygobject ]; @@ -2694,7 +2774,9 @@ let pythonPackages = python.modules // rec { md5 = "af0a314b6106dd80da24a918c24a1eab"; }; - doCheck = false; + buildInputs = [ mock nose ]; + + # XXX: Ran 0 tests in 0.217s meta = { description = "Lightweight and extensible STOMP messaging client"; @@ -2705,19 +2787,20 @@ let pythonPackages = python.modules // rec { }); - svneverever = buildPythonPackage rec { - name = "svneverever-778489a8"; - - src = pkgs.fetchgit { - url = git://git.goodpoint.de/svneverever.git; - rev = "778489a8c6f07825fb18c9da3892a781c3d659ac"; - sha256 = "41c9da1dab2be7b60bff87e618befdf5da37c0a56287385cb0cbd3f91e452bb6"; - }; - - propagatedBuildInputs = [ pysvn argparse ]; - - doCheck = false; - }; + # XXX: ValueError: ZIP does not support timestamps before 1980 + # svneverever = buildPythonPackage rec { + # name = "svneverever-778489a8"; + # + # src = pkgs.fetchgit { + # url = git://git.goodpoint.de/svneverever.git; + # rev = "778489a8c6f07825fb18c9da3892a781c3d659ac"; + # sha256 = "41c9da1dab2be7b60bff87e618befdf5da37c0a56287385cb0cbd3f91e452bb6"; + # }; + # + # propagatedBuildInputs = [ pysvn argparse ]; + # + # doCheck = false; + # }; taskcoach = buildPythonPackage rec { name = "TaskCoach-1.3.8"; @@ -2737,6 +2820,7 @@ let pythonPackages = python.modules // rec { --prefix LD_LIBRARY_PATH : $libspaths ''; + # error: invalid command 'test' doCheck = false; meta = { @@ -2772,6 +2856,7 @@ let pythonPackages = python.modules // rec { sha256 = "1ihf5031pc1wpwbxpfzzz2bcpwww795n5y22baglyim1lalivd65"; }; + # couple of failing tests doCheck = false; PYTHON_EGG_CACHE = "`pwd`/.egg-cache"; @@ -2793,7 +2878,12 @@ let pythonPackages = python.modules // rec { sha256 = "c0f32fa31e2c5fa42f5cc19f3dba4e73f0438bf36bf756ba137f2423c0ac4637"; }; - propagatedBuildInputs = [ oauth2 urwid tweepy ]; + propagatedBuildInputs = [ oauth2 urwid tweepy ] ++ + (if python.majorVersion == "2.6" then [ argparse ] + else []); + + #buildInputs = [ tox ]; + # needs tox doCheck = false; meta = { @@ -2813,8 +2903,6 @@ let pythonPackages = python.modules // rec { sha256 = "66d728527ab3d5f5e4d6725654783f99169172678105f609d14353f6626c1315"; }; - doCheck = false; - meta = { homepage = "https://github.com/tweepy/tweepy"; description = "Twitter library for python"; @@ -2881,6 +2969,7 @@ let pythonPackages = python.modules // rec { sha256 = "4437076c8708e5754ea04540e46c7f4f233734ee3590bb8a96389264fb0650d0"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ pycurl ]; @@ -2897,6 +2986,7 @@ let pythonPackages = python.modules // rec { urwid = buildPythonPackage (rec { name = "urwid-1.1.1"; + # multiple: NameError: name 'evl' is not defined doCheck = false; src = fetchurl { @@ -2924,7 +3014,9 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ python.modules.readline python.modules.sqlite3 ]; - doCheck = false; + buildInputs = [ mock nose ]; + + # XXX: Ran 0 tests in 0.003s meta = with stdenv.lib; { description = "a tool to create isolated Python environments"; @@ -2943,6 +3035,7 @@ let pythonPackages = python.modules // rec { md5 = "8492e46496e187b49fe5569b5639804e"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -3042,7 +3135,7 @@ let pythonPackages = python.modules // rec { sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42"; }; - # tests not described in setup.py + # error: invalid command 'test' doCheck = false; meta = { @@ -3131,8 +3224,6 @@ let pythonPackages = python.modules // rec { sha256 = "294c3c0529e84169177bce78d616c768fa1c028a2fbc1854f615d32ed88dbc6c"; }; - doCheck = false; - meta = { description = "Zope.Interface"; homepage = http://zope.org/Products/ZopeInterface; @@ -3140,22 +3231,23 @@ let pythonPackages = python.modules // rec { }; }; - hgsvn = buildPythonPackage rec { - name = "hgsvn-0.1.8"; - src = fetchurl rec { - name = "hgsvn-0.1.8.tar.gz"; - url = "http://pypi.python.org/packages/source/h/hgsvn/${name}.tar.gz#md5=56209eae48b955754e09185712123428"; - sha256 = "18a7bj1i0m4shkxmdvw1ci5i0isq5vqf0bpwgrhnk305rijvbpch"; - }; - - buildInputs = [ pkgs.setuptools ]; - doCheck = false; - - meta = { - description = "HgSVN"; - homepage = http://pypi.python.org/pypi/hgsvn; - }; - }; + # XXX: link broken + # hgsvn = buildPythonPackage rec { + # name = "hgsvn-0.1.8"; + # src = fetchurl rec { + # name = "hgsvn-0.1.8.tar.gz"; + # url = "http://pypi.python.org/packages/source/h/hgsvn/${name}.tar.gz#md5=56209eae48b955754e09185712123428"; + # sha256 = "18a7bj1i0m4shkxmdvw1ci5i0isq5vqf0bpwgrhnk305rijvbpch"; + # }; + # + # buildInputs = [ pkgs.setuptools ]; + # doCheck = false; + # + # meta = { + # description = "HgSVN"; + # homepage = http://pypi.python.org/pypi/hgsvn; + # }; + # }; cliapp = buildPythonPackage rec { name = "cliapp-1.20120929"; @@ -3167,6 +3259,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3187,6 +3280,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3207,6 +3301,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3228,6 +3323,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; propagatedBuildInputs = [ tracing ttystatus cliapp ]; + # error: invalid command 'test' doCheck = false; meta = {