From 3665e02901759cb584b383306cbba867a25918ff Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 20 Jul 2012 20:11:04 +0200 Subject: [PATCH 01/36] python: make pdb.py available as bin/pdb and bin/pdb${python.majorVersion} --- pkgs/development/interpreters/python/2.6/default.nix | 2 ++ pkgs/development/interpreters/python/2.7/default.nix | 2 ++ pkgs/development/interpreters/python/wrapper.nix | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index f87e1e3810f..6fa27c23525 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 09860310541..7e28cdc1db7 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 e8e343976bc..f4892f92b41 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" From e7c1aa52cc9594fa48622c2048ab69766f3f27d3 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 00:11:02 +0200 Subject: [PATCH 02/36] python: rename eventually created easy_install.pth to pkg-specific file --- pkgs/development/python-modules/generic/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 4e0b6100231..4aa17d28b25 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -20,6 +20,15 @@ , installCommand ? '' easy_install --prefix="$out" . + + # 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 '' , buildPhase ? "true" From 2c3ffeb79c9baabd36bcd24a054121c06f204026 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 00:11:17 +0200 Subject: [PATCH 03/36] python: remove colliding site.py* files --- pkgs/development/python-modules/generic/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 4aa17d28b25..3a6024e09a8 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -29,6 +29,11 @@ # 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* '' , buildPhase ? "true" From 5c564f26f09d313a127668ab6c77a8e9d254eaa4 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 00:20:21 +0200 Subject: [PATCH 04/36] python: always unzip eggs installed into the store grepping and tagging are two use cases coming to mind --- pkgs/development/python-modules/generic/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 4e0b6100231..3c5b7186f74 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -19,7 +19,7 @@ , installCommand ? '' - easy_install --prefix="$out" . + easy_install --always-unzip --prefix="$out" . '' , buildPhase ? "true" @@ -47,8 +47,6 @@ python.stdenv.mkDerivation (attrs // { pythonPath = [ setuptools] ++ pythonPath; - # XXX: Should we run `easy_install --always-unzip'? It doesn't seem - # to have a noticeable impact on small scripts. installPhase = '' mkdir -p "$out/lib/${python.libPrefix}/site-packages" From a40da09b444ad00c46d952bc4b4ac9e5cd51c6f9 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 01:55:50 +0200 Subject: [PATCH 05/36] python: create pth files for python build inputs (propagate/native or not) --- pkgs/development/python-modules/generic/default.nix | 11 ++++++++++- pkgs/development/python-modules/generic/wrap.sh | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 3a6024e09a8..6e8794103bc 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -59,6 +59,8 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; + buildInputStrings = map toString buildInputs; + pythonPath = [ setuptools] ++ pythonPath; # XXX: Should we run `easy_install --always-unzip'? It doesn't seem @@ -76,7 +78,7 @@ python.stdenv.mkDerivation (attrs // { 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 @@ -84,5 +86,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 65f3229ca7c..7cc72849190 100644 --- a/pkgs/development/python-modules/generic/wrap.sh +++ b/pkgs/development/python-modules/generic/wrap.sh @@ -45,3 +45,15 @@ _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 >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth + fi + done + fi +} From f8d3671629441fd6b528a532e9d3356d8d21f168 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sun, 22 Jul 2012 02:07:23 +0200 Subject: [PATCH 06/36] fix pth files --- pkgs/development/python-modules/generic/wrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh index 7cc72849190..71269945d6f 100644 --- a/pkgs/development/python-modules/generic/wrap.sh +++ b/pkgs/development/python-modules/generic/wrap.sh @@ -52,7 +52,8 @@ createBuildInputsPth() { if [ foo"$inputs" != foo ]; then for x in $inputs; do if test -d "$x"/lib/@libPrefix@/site-packages; then - echo $x >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth + echo $x/lib/@libPrefix@/site-packages \ + >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth fi done fi From 30ffafb47d14fb905d0ca2345fe097903e9180e1 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sun, 22 Jul 2012 02:16:59 +0200 Subject: [PATCH 07/36] recursive pth loader --- .../recursive-pth-loader/default.nix | 20 ++++++++ .../recursive-pth-loader/sitecustomize.py | 46 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 6 +++ 3 files changed, 72 insertions(+) create mode 100644 pkgs/development/python-modules/recursive-pth-loader/default.nix create mode 100644 pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py 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 00000000000..3452c62e216 --- /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 00000000000..057e779803c --- /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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b8327ddaaae..f06a97aadc9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13,6 +13,12 @@ let pythonPackages = python.modules // rec { }; + recursivePthLoader = import ../development/python-modules/recursive-pth-loader { + inherit (pkgs) stdenv; + inherit python; + }; + + setuptools = import ../development/python-modules/setuptools { inherit (pkgs) stdenv fetchurl; inherit python wrapPython; From 311fe7e371b3aa8ce5577196c2f2fb900420d5d9 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 20:15:26 +0200 Subject: [PATCH 08/36] cleanup of python packages --- pkgs/top-level/python-packages.nix | 57 ++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3f3d5244ab2..a8d4b7ab602 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -282,7 +282,7 @@ let pythonPackages = python.modules // rec { name = "bugz-0.9.3"; src = fetchgit { - url = "git://github.com/williamh/pybugz.git"; + url = "https://github.com/williamh/pybugz.git"; rev = "refs/tags/0.9.3"; }; @@ -1037,6 +1037,9 @@ let pythonPackages = python.modules // rec { preConfigure = "cp test/secrets.py-dist test/secrets.py"; + # tests fail as of 2012-07-21 + doCheck = false; + meta = { description = "A unified interface to many cloud providers"; homepage = http://incubator.apache.org/libcloud/; @@ -1480,7 +1483,7 @@ let pythonPackages = python.modules // rec { name = "optfunc-git"; src = pkgs.fetchgit { - url = "http://github.com/simonw/optfunc.git"; + url = "https://github.com/simonw/optfunc.git"; rev = "e3fa034a545ed94ac5a039cf5b170c7d0ee21b7b"; }; @@ -2699,19 +2702,20 @@ let pythonPackages = python.modules // rec { }); - svneverever = buildPythonPackage rec { - name = "svneverever-778489a8"; + # 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"; - }; + # src = pkgs.fetchgit { + # url = git://git.goodpoint.de/svneverever.git; + # rev = "778489a8c6f07825fb18c9da3892a781c3d659ac"; + # sha256 = "41c9da1dab2be7b60bff87e618befdf5da37c0a56287385cb0cbd3f91e452bb6"; + # }; - propagatedBuildInputs = [ pysvn argparse ]; + # propagatedBuildInputs = [ pysvn argparse ]; - doCheck = false; - }; + # doCheck = false; + # }; taskcoach = buildPythonPackage rec { name = "TaskCoach-1.3.8"; @@ -3134,22 +3138,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"; - }; + # 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; + # buildInputs = [ pkgs.setuptools ]; + # doCheck = false; - meta = { - description = "HgSVN"; - homepage = http://pypi.python.org/pypi/hgsvn; - }; - }; + # meta = { + # description = "HgSVN"; + # homepage = http://pypi.python.org/pypi/hgsvn; + # }; + # }; cliapp = buildPythonPackage rec { name = "cliapp-1.20120929"; From a68f4f12a96ddd3997555edad9021ea359cf8892 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 21 Jul 2012 21:43:39 +0200 Subject: [PATCH 09/36] more python cleanup, actually commenting for now Conflicts: pkgs/top-level/python-packages.nix --- pkgs/top-level/python-packages.nix | 74 +++++++++++++++--------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a8d4b7ab602..db5643427f8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -278,23 +278,23 @@ let pythonPackages = python.modules // rec { }; - bugz = buildPythonPackage (rec { - name = "bugz-0.9.3"; + # bugz = buildPythonPackage (rec { + # name = "bugz-0.9.3"; - src = fetchgit { - url = "https://github.com/williamh/pybugz.git"; - rev = "refs/tags/0.9.3"; - }; + # src = fetchgit { + # url = "https://github.com/williamh/pybugz.git"; + # rev = "refs/tags/0.9.3"; + # }; - propagatedBuildInputs = [ argparse python.modules.ssl ]; + # propagatedBuildInputs = [ argparse python.modules.ssl ]; - doCheck = false; + # doCheck = false; - meta = { - homepage = http://www.liquidx.net/pybugz/; - description = "Command line interface for Bugzilla"; - }; - }); + # meta = { + # homepage = http://www.liquidx.net/pybugz/; + # description = "Command line interface for Bugzilla"; + # }; + # }); carrot = buildPythonPackage rec { @@ -1479,27 +1479,27 @@ let pythonPackages = python.modules // rec { }; }); - 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/"; - }; - }); + # 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"; @@ -3146,11 +3146,11 @@ let pythonPackages = python.modules // rec { # url = "http://pypi.python.org/packages/source/h/hgsvn/${name}.tar.gz#md5=56209eae48b955754e09185712123428"; # sha256 = "18a7bj1i0m4shkxmdvw1ci5i0isq5vqf0bpwgrhnk305rijvbpch"; # }; - + # # buildInputs = [ pkgs.setuptools ]; # doCheck = false; - - # meta = { + # + # meta = { # description = "HgSVN"; # homepage = http://pypi.python.org/pypi/hgsvn; # }; From fa1c8fef2ff3a887ce6f89691a80dce200122009 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 15:54:55 +0100 Subject: [PATCH 10/36] move pth rename and site.py removal to buildPhase This leaves the installCommand to be only easy_install and makes it easy again to overwrite this. --- .../python-modules/generic/default.nix | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 6e8794103bc..4989bd44773 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -20,20 +20,6 @@ , installCommand ? '' easy_install --prefix="$out" . - - # 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* '' , buildPhase ? "true" @@ -72,6 +58,20 @@ 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} ''; From 224251d104723871fe6cc07149b57b0ac97c3ee4 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 17:27:12 +0100 Subject: [PATCH 11/36] python-offline-distutils --- .../offline-distutils/default.nix | 21 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/development/python-modules/offline-distutils/default.nix 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 00000000000..2ed41b08bb7 --- /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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 761f63d4be6..318ce39022e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -18,6 +18,10 @@ let pythonPackages = python.modules // rec { inherit python wrapPython; }; + offlineDistutils = import ../development/python-modules/offline-distutils { + inherit (pkgs) stdenv; + inherit python; + }; ipython = import ../shells/ipython { inherit (pkgs) stdenv fetchurl; From ad8a4c73fa487deb2a1f2d4814f50acb8a647f5e Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 17:27:55 +0100 Subject: [PATCH 12/36] use offline-disutils in buildPythonPackage --- pkgs/development/python-modules/generic/builder.sh | 10 ++++++++++ pkgs/development/python-modules/generic/default.nix | 4 +++- pkgs/top-level/python-packages.nix | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/python-modules/generic/builder.sh diff --git a/pkgs/development/python-modules/generic/builder.sh b/pkgs/development/python-modules/generic/builder.sh new file mode 100644 index 00000000000..52b66aaf6a6 --- /dev/null +++ b/pkgs/development/python-modules/generic/builder.sh @@ -0,0 +1,10 @@ +source $stdenv/setup + +# do not allow distutils to make downloads, whatever install command is used +export PYTHONPATH="${setuptools}/lib/${python.libPrefix}:$PYTHONPATH" +export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" + +# enable pth files for dependencies +export PYTHONPATH="${site}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" + +genericBuild diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 4e0b6100231..394bfcbc7cd 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -3,7 +3,7 @@ (http://pypi.python.org/pypi/setuptools/), which represents a large number of Python packages nowadays. */ -{ python, setuptools, wrapPython, lib }: +{ python, setuptools, wrapPython, lib, offlineDistutils }: { name, namePrefix ? "python-" @@ -45,6 +45,8 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; + builder = ./builder.sh + pythonPath = [ setuptools] ++ pythonPath; # XXX: Should we run `easy_install --always-unzip'? It doesn't seem diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 318ce39022e..cc8aea98cf5 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9,7 +9,7 @@ let pythonPackages = python.modules // rec { buildPythonPackage = import ../development/python-modules/generic { inherit (pkgs) lib; - inherit python wrapPython setuptools; + inherit python wrapPython setuptools offlineDistutils; }; From 337d16368a926b3c27259dc5f21d7bf3a9b32556 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 17:38:31 +0100 Subject: [PATCH 13/36] fix builder in python-module --- pkgs/development/python-modules/generic/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 394bfcbc7cd..e7f98f94d00 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -45,7 +45,7 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; - builder = ./builder.sh + builder = ./builder.sh; pythonPath = [ setuptools] ++ pythonPath; From ccb5d0fc19729a0b25cd550086320e76e6b1da69 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 18:33:03 +0100 Subject: [PATCH 14/36] fix python module builder --- pkgs/development/python-modules/generic/builder.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/development/python-modules/generic/builder.sh b/pkgs/development/python-modules/generic/builder.sh index 52b66aaf6a6..43ad139fe74 100644 --- a/pkgs/development/python-modules/generic/builder.sh +++ b/pkgs/development/python-modules/generic/builder.sh @@ -1,10 +1,6 @@ source $stdenv/setup # do not allow distutils to make downloads, whatever install command is used -export PYTHONPATH="${setuptools}/lib/${python.libPrefix}:$PYTHONPATH" export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" -# enable pth files for dependencies -export PYTHONPATH="${site}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" - genericBuild From bdccb5417bc50831ded45d0a7d56729caae0c828 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Fri, 23 Nov 2012 18:33:03 +0100 Subject: [PATCH 15/36] fix python module builder --- pkgs/development/python-modules/generic/builder.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkgs/development/python-modules/generic/builder.sh b/pkgs/development/python-modules/generic/builder.sh index 52b66aaf6a6..43ad139fe74 100644 --- a/pkgs/development/python-modules/generic/builder.sh +++ b/pkgs/development/python-modules/generic/builder.sh @@ -1,10 +1,6 @@ source $stdenv/setup # do not allow distutils to make downloads, whatever install command is used -export PYTHONPATH="${setuptools}/lib/${python.libPrefix}:$PYTHONPATH" export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" -# enable pth files for dependencies -export PYTHONPATH="${site}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" - genericBuild From 74d963c69a6d5f3f1f969bc477046d1342eea0b3 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 24 Nov 2012 22:32:47 +0100 Subject: [PATCH 16/36] offlineDistutils in PYTHONPATH in configurePhase instead of builder.sh Conflicts: pkgs/development/python-modules/generic/default.nix --- pkgs/development/python-modules/generic/builder.sh | 6 ------ pkgs/development/python-modules/generic/default.nix | 8 +++++++- 2 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 pkgs/development/python-modules/generic/builder.sh diff --git a/pkgs/development/python-modules/generic/builder.sh b/pkgs/development/python-modules/generic/builder.sh deleted file mode 100644 index 43ad139fe74..00000000000 --- a/pkgs/development/python-modules/generic/builder.sh +++ /dev/null @@ -1,6 +0,0 @@ -source $stdenv/setup - -# do not allow distutils to make downloads, whatever install command is used -export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" - -genericBuild diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index e7f98f94d00..b5889b36f13 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -32,6 +32,7 @@ python setup.py test runHook postCheck '' +, configurePhase ? "true" , postInstall ? "" @@ -45,7 +46,12 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; - builder = ./builder.sh; + buildInputStrings = map toString buildInputs; + + configurePhase = '' + export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" + ${configurePhase} + ''; pythonPath = [ setuptools] ++ pythonPath; From 9208fb1edb490a4b4385665446bac42b1de69779 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Sat, 24 Nov 2012 23:24:22 +0100 Subject: [PATCH 17/36] fix mercurial -extra PYTHONPATH +setuptools - PYTHONPATH is already set correctly - setuptools is needed to see docutils --- pkgs/applications/version-management/mercurial/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index 486bebc2531..afbfc1c8935 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, python, makeWrapper, docutils, unzip +{ stdenv, fetchurl, python, makeWrapper, docutils, setuptools, unzip , guiSupport ? false, tk ? null, curses }: let @@ -15,9 +15,7 @@ stdenv.mkDerivation { inherit python; # pass it so that the same version can be used in hg2git pythonPackages = [ curses ]; - 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"; + buildInputs = [ python makeWrapper docutils setuptools unzip ]; makeFlags = "PREFIX=$(out)"; From dd9d1b7cf96ab1758694b3ecb90850409c1e6c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Tue, 27 Nov 2012 20:27:04 +0100 Subject: [PATCH 18/36] #185 Fix calibre by adding setuptools as an input (thanks @chaoflow) --- pkgs/applications/misc/calibre/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix index b9b14848370..a2e29ffba03 100644 --- a/pkgs/applications/misc/calibre/default.nix +++ b/pkgs/applications/misc/calibre/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { fontconfig podofo qt4 pil chmlib icu pythonPackages.mechanize pythonPackages.lxml pythonPackages.dateutil pythonPackages.cssutils pythonPackages.beautifulsoup - pythonPackages.sqlite3 sqlite + pythonPackages.setuptools pythonPackages.sqlite3 sqlite ]; installPhase = '' From a5d55021002ba23028949e09e4e7ce3c2a152c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Tue, 27 Nov 2012 23:41:42 +0100 Subject: [PATCH 19/36] #185 fix salut_a_toi --- .../networking/instant-messengers/salut-a-toi/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix index c35101bb874..98a3ac55fad 100644 --- a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix +++ b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { buildInputs = with pythonPackages; [ python twisted urwid beautifulsoup wxPython distribute pygobject - wokkel pythonDBus pyfeed wrapPython + wokkel pythonDBus pyfeed pythonPackages.setuptools wrapPython ]; configurePhase = '' From 671bf5b4d706b95db4059abe19ac99178326830e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cillian=20de=20R=C3=B3iste?= Date: Tue, 27 Nov 2012 23:50:24 +0100 Subject: [PATCH 20/36] #185 Fix pycurl Moving the preConfigure command into the installCommand 'fixes' pycurl. --- pkgs/top-level/python-packages.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 22fc3ac5b69..aa41bb54d66 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1852,12 +1852,11 @@ let pythonPackages = python.modules // rec { doCheck = false; - preConfigure = '' - substituteInPlace setup.py --replace '--static-libs' '--libs' + installCommand = '' + substituteInPlace setup.py --replace '--static-libs' '--libs' + python setup.py install --prefix=$out ''; - installCommand = "python setup.py install --prefix=$out"; - meta = { homepage = http://pycurl.sourceforge.net/; description = "Python wrapper for libcurl"; From ac89a3de46d1d66d437bb975e259b51b301b0821 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Wed, 28 Nov 2012 16:13:37 +0100 Subject: [PATCH 21/36] Revert "#185 Fix pycurl" This reverts commit 671bf5b4d706b95db4059abe19ac99178326830e. We need to support preConfigure. --- pkgs/top-level/python-packages.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index aa41bb54d66..22fc3ac5b69 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1852,11 +1852,12 @@ let pythonPackages = python.modules // rec { doCheck = false; - installCommand = '' - substituteInPlace setup.py --replace '--static-libs' '--libs' - python setup.py install --prefix=$out + 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"; From a4ded477764ba35cb4e185f82af27fb43b46cc82 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Thu, 29 Nov 2012 15:29:41 +0100 Subject: [PATCH 22/36] include offlineDistutils in preConfigure instead of configurePhase --- .../development/python-modules/generic/default.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index a2c3627cd63..e9c51c3b87f 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -22,6 +22,8 @@ easy_install --always-unzip --prefix="$out" . '' +, preConfigure ? "true" + , buildPhase ? "true" , doCheck ? true @@ -32,8 +34,6 @@ python setup.py test runHook postCheck '' -, configurePhase ? "true" - , postInstall ? "" , ... } @ attrs: @@ -48,12 +48,12 @@ python.stdenv.mkDerivation (attrs // { buildInputStrings = map toString buildInputs; - configurePhase = '' - export PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}:$PYTHONPATH" - ${configurePhase} - ''; + pythonPath = [ setuptools ] ++ pythonPath; - pythonPath = [ setuptools] ++ pythonPath; + preConfigure = '' + PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" + ${preConfigure} + ''; installPhase = '' mkdir -p "$out/lib/${python.libPrefix}/site-packages" From 5436356733147985a1c5cfff809a13ba217dea98 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 04:40:38 +0100 Subject: [PATCH 23/36] a package does not need to include setuptools manually this breaks for now --- pkgs/applications/misc/calibre/default.nix | 2 +- .../networking/instant-messengers/salut-a-toi/default.nix | 2 +- pkgs/applications/version-management/mercurial/default.nix | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix index a2e29ffba03..b9b14848370 100644 --- a/pkgs/applications/misc/calibre/default.nix +++ b/pkgs/applications/misc/calibre/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { fontconfig podofo qt4 pil chmlib icu pythonPackages.mechanize pythonPackages.lxml pythonPackages.dateutil pythonPackages.cssutils pythonPackages.beautifulsoup - pythonPackages.setuptools pythonPackages.sqlite3 sqlite + pythonPackages.sqlite3 sqlite ]; installPhase = '' diff --git a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix index 98a3ac55fad..c35101bb874 100644 --- a/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix +++ b/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { buildInputs = with pythonPackages; [ python twisted urwid beautifulsoup wxPython distribute pygobject - wokkel pythonDBus pyfeed pythonPackages.setuptools wrapPython + wokkel pythonDBus pyfeed wrapPython ]; configurePhase = '' diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index afbfc1c8935..6a06cd545c3 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, python, makeWrapper, docutils, setuptools, unzip +{ stdenv, fetchurl, python, makeWrapper, docutils, unzip , guiSupport ? false, tk ? null, curses }: let @@ -15,7 +15,7 @@ stdenv.mkDerivation { inherit python; # pass it so that the same version can be used in hg2git pythonPackages = [ curses ]; - buildInputs = [ python makeWrapper docutils setuptools unzip ]; + buildInputs = [ python makeWrapper docutils unzip ]; makeFlags = "PREFIX=$(out)"; From d4d76a84433331ae5ac60adcb0e4280e9d0d8097 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 04:41:19 +0100 Subject: [PATCH 24/36] make diff to master look nicer --- .../development/python-modules/generic/default.nix | 3 ++- pkgs/top-level/python-packages.nix | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index e9c51c3b87f..aa24bc78a65 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -34,6 +34,7 @@ python setup.py test runHook postCheck '' + , postInstall ? "" , ... } @ attrs: @@ -48,7 +49,7 @@ python.stdenv.mkDerivation (attrs // { buildInputStrings = map toString buildInputs; - pythonPath = [ setuptools ] ++ pythonPath; + pythonPath = [ setuptools] ++ pythonPath; preConfigure = '' PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}/site-packages:$PYTHONPATH" diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index eb5b624fd2f..c049de9d6f5 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -284,16 +284,16 @@ let pythonPackages = python.modules // rec { # 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"; @@ -2709,15 +2709,15 @@ let pythonPackages = python.modules // rec { # 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; # }; From e50571e29ddaa2fb336430678fe263e4fd564891 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 05:20:04 +0100 Subject: [PATCH 25/36] setuptoolsSite - only setuptools' site.py --- .../python-modules/setuptools/default.nix | 4 +++- .../python-modules/setuptools/site.nix | 16 ++++++++++++++++ pkgs/top-level/python-packages.nix | 7 ++++++- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/python-modules/setuptools/site.nix diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix index 50b73aaf8f6..879f6aed8de 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 00000000000..34e7b478595 --- /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/python-packages.nix b/pkgs/top-level/python-packages.nix index c049de9d6f5..6ce58ef54b0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9,7 +9,7 @@ let pythonPackages = python.modules // rec { buildPythonPackage = import ../development/python-modules/generic { inherit (pkgs) lib; - inherit python wrapPython setuptools offlineDistutils; + inherit python wrapPython setuptools setuptoolsSite offlineDistutils; }; @@ -24,6 +24,11 @@ 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; From 17597e8350a45dcb5d551d5d02280e7b15f2424e Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 05:20:50 +0100 Subject: [PATCH 26/36] propagate setuptoolsSite to load pth files --- pkgs/development/python-modules/generic/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index aa24bc78a65..6583373f322 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, offlineDistutils }: +{ 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. @@ -47,6 +49,9 @@ python.stdenv.mkDerivation (attrs // { buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath; + # setuptoolsSite is responsible for loading pth files + propagatedBuildInputs = propagatedBuildInputs ++ [ setuptoolsSite ]; + buildInputStrings = map toString buildInputs; pythonPath = [ setuptools] ++ pythonPath; From 1adc9b1b1fb1ff9234c4740c9d78cf0ce11a443f Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 06:38:11 +0100 Subject: [PATCH 27/36] python module cleanup, enable a couple of tests, add comments for failing --- .../version-management/mercurial/default.nix | 2 - pkgs/top-level/python-packages.nix | 218 +++++++++++------- 2 files changed, 136 insertions(+), 84 deletions(-) diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix index 6a06cd545c3..865033ae2d2 100644 --- a/pkgs/applications/version-management/mercurial/default.nix +++ b/pkgs/applications/version-management/mercurial/default.nix @@ -45,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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6ce58ef54b0..ef163543fd8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -59,6 +59,7 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ notmuch pkgs.dbacl ]; + # error: invalid command 'test' doCheck = false; postInstall = '' @@ -85,6 +86,7 @@ let pythonPackages = python.modules // rec { sha256 = "1b724d47bf766ba3ca7cb6d27c7bb597dbc67dcae1347c5a0f01f80c2246ca07"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ notmuch urwid twisted magic configobj pygpgme ]; @@ -128,6 +130,7 @@ let pythonPackages = python.modules // rec { sha1 = "f124e5e4a6644bf6d1734032a01ac44db1b25a29"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -147,6 +150,8 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.unzip pkgs.sqlite ]; + # ImportError: No module named apsw + # XXX: Looks bad doCheck = false; meta = { @@ -164,9 +169,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 ]; + }); @@ -180,7 +190,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.unzip ]; - # How do we run the tests? + # error: invalid command 'test' doCheck = false; meta = { @@ -221,7 +231,7 @@ let pythonPackages = python.modules // rec { sha256 = "1gasiy5lwbhsxw27g36d88n36xbj52434klisvqhljgckd4xqcy7"; }; - # No tests implemented + # error: invalid command 'test' doCheck = false; meta = { @@ -353,6 +363,7 @@ let pythonPackages = python.modules // rec { sha256 = "1xlvanhnxgvwd7vvypbafyl6yqfkpnwa9rs9k3058z84gd86bz8d"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -388,6 +399,8 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ stompclient distribute ]; + #buildInputs = [ coverage ]; + # needs coverage doCheck = false; meta = { @@ -406,6 +419,7 @@ let pythonPackages = python.modules // rec { md5 = "201dbaa732a9049c839f9bb6c27fc7b5"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -425,9 +439,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 = { @@ -454,7 +468,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 = { @@ -512,6 +526,9 @@ 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 . ''; + + # FAIL: test_bad_urls (setuptools.tests.test_packageindex.TestPackageIndex) + # AssertionError: False is not true doCheck = false; meta = { @@ -547,6 +564,7 @@ let pythonPackages = python.modules // rec { sha256 = "16s0anvpaccbqmdrhl71z73k0dy2sl166nnc2fbd5lshlgmj13ad"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -564,6 +582,7 @@ let pythonPackages = python.modules // rec { sha256 = "0snlrcvk92qj1v0n9dpycn6sw56w4zns4mpc30837q6yi7ylrx4f"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -619,7 +638,9 @@ 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. + doCheck = "${python.majorVersion}" != "2.6"; meta = { description = "Simple Python implementation of the Git file formats and protocols."; @@ -653,6 +674,7 @@ let pythonPackages = python.modules // rec { sha256 = "0wfz4nxl95jcr2f2mc5gijgighavcghg33plzbz5jyi531jpffss"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -727,6 +749,7 @@ let pythonPackages = python.modules // rec { md5 = "abfdbb25d37c28e9da05f1b5c3596d1a"; }; + # AttributeError: 'NoneType' object has no attribute 'clone' doCheck = false; meta = { @@ -782,9 +805,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/; @@ -831,7 +851,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 ]; @@ -929,6 +950,7 @@ let pythonPackages = python.modules // rec { sha256 = "1wmd1svx5344alb8ff9vzdam1ccqdl0h7shp1xnsk843hqwc0fz0"; }; + # error: invalid command 'test' doCheck = false; postUnpack = "find . -print0 | xargs -0 touch"; @@ -948,8 +970,6 @@ let pythonPackages = python.modules // rec { sha256 = "baa7bf431fa9d3c1016562de717e1ebb322a99df72a2918f6b5b8f65fa65bc2e"; }; - doCheck = false; # doesn't have a test - meta = { homepage = "http://code.google.com/p/httplib2"; description = "A comprehensive HTTP client library"; @@ -985,6 +1005,7 @@ let pythonPackages = python.modules // rec { md5 = "f4f7ddc7c5e55a47222a5cc6c0a87b6d"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1024,6 +1045,7 @@ let pythonPackages = python.modules // rec { md5 = "506cf1b13020b3ed2f3c845ea0c9830e"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1042,11 +1064,12 @@ let pythonPackages = python.modules // rec { sha256 = "11qilrs4sd4c1mkd64ikrjsc2vwrshhc54n5mh4xrark9c7ayp0y"; }; - buildInputs = [ zopeInterface ]; + buildInputs = [ zopeInterface mock ]; preConfigure = "cp test/secrets.py-dist test/secrets.py"; - # tests fail as of 2012-07-21 + # ERROR: test_list_locations (test.test_softlayer.SoftLayerTests) + # AttributeError: MockSoftLayerTransport instance has no attribute '_parse_response' doCheck = false; meta = { @@ -1064,7 +1087,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/; @@ -1155,6 +1179,7 @@ let pythonPackages = python.modules // rec { md5 = "751e8055be2433dfd1a82e0fb1b12f13"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1170,6 +1195,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 ]; @@ -1246,6 +1272,7 @@ let pythonPackages = python.modules // rec { sha1 = "b71aeaacf31898c3b38d8b9ca5bcc0664499c0de"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1274,6 +1301,7 @@ let pythonPackages = python.modules // rec { MySQL_python = buildPythonPackage { name = "MySQL-python-1.2.3"; + # plenty of failing tests doCheck = false; src = fetchurl { @@ -1281,7 +1309,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"; @@ -1301,6 +1331,7 @@ let pythonPackages = python.modules // rec { # No support of GUI yet. + # error: invalid command 'test' doCheck = false; meta = { @@ -1333,7 +1364,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/; @@ -1342,46 +1374,47 @@ let pythonPackages = python.modules // rec { }; - nevow = buildPythonPackage (rec { - name = "nevow-${version}"; - version = "0.10.0"; - - src = fetchurl { - url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-${version}.tar.gz?format=raw"; - sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0"; - name = "${name}.tar.gz"; - }; - - propagatedBuildInputs = [ twisted ]; - - postInstall = "twistd --help > /dev/null"; - - 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. - - 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; - - license = "BSD-style"; - }; - }); +# 404 Error +# nevow = buildPythonPackage (rec { +# name = "nevow-${version}"; +# version = "0.10.0"; +# +# src = fetchurl { +# url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-${version}.tar.gz?format=raw"; +# sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0"; +# name = "${name}.tar.gz"; +# }; +# +# propagatedBuildInputs = [ twisted ]; +# +# postInstall = "twistd --help > /dev/null"; +# +# 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. +# +# 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; +# +# license = "BSD-style"; +# }; +# }); nose = buildPythonPackage rec { name = "nose-1.0.0"; @@ -1391,13 +1424,6 @@ let pythonPackages = python.modules // rec { md5 = "47a4784c817afa6ef11a505b574584ed"; }; - # Fails with ‘This platform lacks a functioning sem_open - # implementation, therefore, the required synchronization - # primitives needed will not function, see issue 3770.’ However, - # our Python does seem to be built with the necessary - # functionality. - doCheck = false; - meta = { description = "A unittest-based testing framework for python that makes writing and running tests easier"; }; @@ -1457,6 +1483,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 ]; @@ -1469,7 +1497,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"; @@ -1477,6 +1505,8 @@ let pythonPackages = python.modules // rec { }; propagatedBuildInputs = [ httplib2 ]; + + # AttributeError: 'NoneType' object has no attribute 'clone' doCheck = false; meta = { @@ -1641,6 +1671,7 @@ let pythonPackages = python.modules // rec { sha256 = "0x8bfjjqygriry1iyygm5048ykl5qpbpzqfp6i8dhkslm3ryf5fk"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1679,6 +1710,7 @@ let pythonPackages = python.modules // rec { sha256 = "1sr2bb3g7rl7gr6156j5qv71kg06q1x01r1lbps9ksnyz37djn2q"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -1720,6 +1752,7 @@ let pythonPackages = python.modules // rec { psycopg2 = buildPythonPackage rec { name = "psycopg2-2.0.13"; + # error: invalid command 'test' doCheck = false; src = fetchurl { @@ -1788,8 +1821,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/"; @@ -1806,7 +1837,7 @@ let pythonPackages = python.modules // rec { sha256 = "4a3a085ecf1fcd2736573538ffa114f1f4331b3bbbdd69381e6e172c49c9750f"; }; - doCheck = false; + buildInputs = [ pytz ]; meta = { homepage = http://babel.edgewall.org; @@ -1855,14 +1886,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"; @@ -1893,7 +1923,7 @@ let pythonPackages = python.modules // rec { }; propagatedBuildInputs = [xe]; - # tests not described in setup.py + # error: invalid command 'test' doCheck = false; meta = { @@ -1926,6 +1956,7 @@ let pythonPackages = python.modules // rec { sha256 = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ pkgs.gpgme ]; @@ -1971,7 +2002,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."; @@ -2001,6 +2035,8 @@ let pythonPackages = python.modules // rec { sha256 = "1idks7j9bn62xzsaxkvhl7bdq6ws8kv8aa0wahfh7724qlbbcf1k"; }; + # ERROR: testExtended (tests.test_acls.AclExtensions) + # IOError: [Errno 0] Error doCheck = false; buildInputs = [ pkgs.acl ]; @@ -2096,6 +2132,7 @@ let pythonPackages = python.modules // rec { md5 = "3076164a7079891d149a23f9435581db"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2125,7 +2162,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 = { @@ -2187,9 +2224,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 = '' @@ -2266,6 +2300,7 @@ let pythonPackages = python.modules // rec { sha256 = "0jmkffik6hdzs7ng8c65bggss2ai40nm59jykswdf5lpd36cxddq"; }; + # error: invalid command 'test' doCheck = false; buildInputs = [ pkgs.attr ]; @@ -2335,6 +2370,8 @@ let pythonPackages = python.modules // rec { }; buildInputs = [freetype]; + + # error: invalid command 'test' doCheck = false; meta = { @@ -2368,6 +2405,7 @@ let pythonPackages = python.modules // rec { sha256 = "1c7ipk5vwqnln83rmai5jzyxkjdajdzbk5cgy1z83nyr5hbkgkqr"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2450,6 +2488,8 @@ let pythonPackages = python.modules // rec { buildInputs = [pkgs.gfortran]; propagatedBuildInputs = [ numpy ]; + + # error: invalid command 'test' doCheck = false; # TODO: add ATLAS=${pkgs.atlas} @@ -2588,6 +2628,7 @@ let pythonPackages = python.modules // rec { md5 = "9e8099b57cd27493a6988e9c9b313e23"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -2611,6 +2652,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 ]; @@ -2700,7 +2742,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"; @@ -2744,6 +2788,7 @@ let pythonPackages = python.modules // rec { --prefix LD_LIBRARY_PATH : $libspaths ''; + # error: invalid command 'test' doCheck = false; meta = { @@ -2779,6 +2824,7 @@ let pythonPackages = python.modules // rec { sha256 = "1ihf5031pc1wpwbxpfzzz2bcpwww795n5y22baglyim1lalivd65"; }; + # couple of failing tests doCheck = false; PYTHON_EGG_CACHE = "`pwd`/.egg-cache"; @@ -2801,6 +2847,9 @@ let pythonPackages = python.modules // rec { }; propagatedBuildInputs = [ oauth2 urwid tweepy ]; + + #buildInputs = [ tox ]; + # needs tox doCheck = false; meta = { @@ -2820,8 +2869,6 @@ let pythonPackages = python.modules // rec { sha256 = "2b9fa225e9254e2cbbb01e59c6e92d9c42e5d41d97e8c74dee93eb09babffde5"; }; - doCheck = false; - meta = { homepage = "https://github.com/tweepy/tweepy"; description = "Twitter library for python"; @@ -2888,6 +2935,7 @@ let pythonPackages = python.modules // rec { sha256 = "4437076c8708e5754ea04540e46c7f4f233734ee3590bb8a96389264fb0650d0"; }; + # error: invalid command 'test' doCheck = false; propagatedBuildInputs = [ pycurl ]; @@ -2904,6 +2952,7 @@ let pythonPackages = python.modules // rec { urwid = buildPythonPackage (rec { name = "urwid-1.0.2"; + # multiple: NameError: name 'evl' is not defined doCheck = false; src = fetchurl { @@ -2931,7 +2980,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"; @@ -2950,6 +3001,7 @@ let pythonPackages = python.modules // rec { md5 = "8492e46496e187b49fe5569b5639804e"; }; + # error: invalid command 'test' doCheck = false; meta = { @@ -3049,7 +3101,7 @@ let pythonPackages = python.modules // rec { sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42"; }; - # tests not described in setup.py + # error: invalid command 'test' doCheck = false; meta = { @@ -3138,8 +3190,6 @@ let pythonPackages = python.modules // rec { sha256 = "294c3c0529e84169177bce78d616c768fa1c028a2fbc1854f615d32ed88dbc6c"; }; - doCheck = false; - meta = { description = "Zope.Interface"; homepage = http://zope.org/Products/ZopeInterface; @@ -3175,6 +3225,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3195,6 +3246,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3215,6 +3267,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; + # error: invalid command 'test' doCheck = false; meta = { @@ -3236,6 +3289,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ sphinx ]; propagatedBuildInputs = [ tracing ttystatus cliapp ]; + # error: invalid command 'test' doCheck = false; meta = { From e517d8791feae7c7ac00833160c3d434d9c60b78 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 06:54:13 +0100 Subject: [PATCH 28/36] fix nevow url and uncomment again --- pkgs/top-level/python-packages.nix | 81 +++++++++++++++--------------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ef163543fd8..3b0828acb8e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1374,47 +1374,46 @@ let pythonPackages = python.modules // rec { }; -# 404 Error -# nevow = buildPythonPackage (rec { -# name = "nevow-${version}"; -# version = "0.10.0"; -# -# src = fetchurl { -# url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-${version}.tar.gz?format=raw"; -# sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0"; -# name = "${name}.tar.gz"; -# }; -# -# propagatedBuildInputs = [ twisted ]; -# -# postInstall = "twistd --help > /dev/null"; -# -# 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. -# -# 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; -# -# license = "BSD-style"; -# }; -# }); + nevow = buildPythonPackage (rec { + name = "nevow-${version}"; + version = "0.10.0"; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/N/Nevow/Nevow-${version}.tar.gz"; + sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0"; + name = "${name}.tar.gz"; + }; + + propagatedBuildInputs = [ twisted ]; + + postInstall = "twistd --help > /dev/null"; + + 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. + + 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; + + license = "BSD-style"; + }; + }); nose = buildPythonPackage rec { name = "nose-1.0.0"; From d76e4420af3c959c13419fe1004ba48bf990c585 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 07:11:26 +0100 Subject: [PATCH 29/36] pil for python27 and python26 --- pkgs/top-level/all-packages.nix | 2 +- pkgs/top-level/python-packages.nix | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 66589873ab1..a02a35c7983 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5236,7 +5236,7 @@ let numeric = callPackage ../development/python-modules/numeric { }; - pil = callPackage ../development/python-modules/pil { }; + pil = python27Packages.pil; psyco = callPackage ../development/python-modules/psyco { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3b0828acb8e..62039b853a6 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -39,6 +39,9 @@ let pythonPackages = python.modules // rec { inherit buildPythonPackage pythonPackages; }; + pil = import ../development/python-modules/pil { + inherit (pkgs) fetchurl stdenv python libjpeg zlib freetype; + }; wrapPython = pkgs.makeSetupHook { deps = pkgs.makeWrapper; From cd905b16af32d3dc7ce825e1cf0ee4776f1d902b Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 07:36:57 +0100 Subject: [PATCH 30/36] pil uses buildPythonPackage and is now actually also built for 2.6 --- pkgs/development/python-modules/pil/default.nix | 8 ++++---- pkgs/top-level/python-packages.nix | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/development/python-modules/pil/default.nix b/pkgs/development/python-modules/pil/default.nix index 4cf4576c0ce..1dfdfee08fb 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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 62039b853a6..8d6fca1a69e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -40,7 +40,8 @@ let pythonPackages = python.modules // rec { }; pil = import ../development/python-modules/pil { - inherit (pkgs) fetchurl stdenv python libjpeg zlib freetype; + inherit (pkgs) fetchurl stdenv libjpeg zlib freetype; + inherit python buildPythonPackage; }; wrapPython = pkgs.makeSetupHook @@ -620,7 +621,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"; From 6dc414d6ae439590910a30eedfb5508fa9f62513 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 07:37:04 +0100 Subject: [PATCH 31/36] python2.6 fixes --- pkgs/top-level/python-packages.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8d6fca1a69e..0a09549529b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -644,7 +644,7 @@ let pythonPackages = python.modules // rec { ''; # For some reason "python setup.py test" doesn't work with Python 2.6. - doCheck = "${python.majorVersion}" != "2.6"; + doCheck = python.majorVersion != "2.6"; meta = { description = "Simple Python implementation of the Git file formats and protocols."; @@ -882,7 +882,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"; @@ -918,6 +919,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"; From 3cf96816b0ae3bd0dc1672fe97d39bab0411d3aa Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 07:59:32 +0100 Subject: [PATCH 32/36] pycrypto for python26 and 27 --- .../python-modules/pycrypto/default.nix | 15 +++++++++------ pkgs/top-level/all-packages.nix | 2 +- pkgs/top-level/python-packages.nix | 7 ++++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/pycrypto/default.nix b/pkgs/development/python-modules/pycrypto/default.nix index 9c756c9ed64..0ad1663da65 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a02a35c7983..08d5a59e384 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5242,7 +5242,7 @@ let 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 0a09549529b..5efc8c54804 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -44,6 +44,11 @@ let pythonPackages = python.modules // rec { inherit python buildPythonPackage; }; + pycrypto = import ../development/python-modules/pycrypto { + inherit (pkgs) fetchurl stdenv gmp; + inherit python buildPythonPackage; + }; + wrapPython = pkgs.makeSetupHook { deps = pkgs.makeWrapper; substitutions.libPrefix = python.libPrefix; @@ -1590,7 +1595,7 @@ let pythonPackages = python.modules // rec { sha256 = "1bjy4jn51c50mpq51jbwk0glzd8bxz83gxdfkr9p95dmrd17c7hh"; }; - buildInputs = [ pkgs.pycrypto ]; + buildInputs = [ pycrypto ]; meta = { homepage = "http://www.lag.net/paramiko/"; From 78be9481752fd0c445db1ba66701b902f4b9da8b Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 08:01:16 +0100 Subject: [PATCH 33/36] change order of phases for python modules: checkPhase after installPhase at least pycrypto it helps --- pkgs/development/python-modules/generic/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix index 6583373f322..cdf759aa7f6 100644 --- a/pkgs/development/python-modules/generic/default.nix +++ b/pkgs/development/python-modules/generic/default.nix @@ -47,6 +47,8 @@ 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 From c7113470b891a8d336199c67cf2a59aa0fce01bb Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 08:05:58 +0100 Subject: [PATCH 34/36] python2.6 fixes --- pkgs/top-level/python-packages.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5efc8c54804..8ee1b2b6a64 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2403,8 +2403,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 ]; }; @@ -2858,7 +2858,9 @@ 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 From c17ae4bbf7c6fbdd34b32889f6ee00c7ac242cf1 Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 08:30:17 +0100 Subject: [PATCH 35/36] checkPhase after installPhase fixed some more tests --- pkgs/top-level/python-packages.nix | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8ee1b2b6a64..22597a9554c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -159,8 +159,7 @@ let pythonPackages = python.modules // rec { buildInputs = [ pkgs.unzip pkgs.sqlite ]; - # ImportError: No module named apsw - # XXX: Looks bad + # python: double free or corruption (fasttop): 0x0000000002fd4660 *** doCheck = false; meta = { @@ -536,10 +535,6 @@ let pythonPackages = python.modules // rec { easy_install --verbose --prefix=$out . ''; - # FAIL: test_bad_urls (setuptools.tests.test_packageindex.TestPackageIndex) - # AssertionError: False is not true - doCheck = false; - meta = { description = "Easily download, build, install, upgrade, and uninstall Python packages"; homepage = http://packages.python.org/distribute; @@ -649,6 +644,7 @@ let pythonPackages = python.modules // rec { ''; # 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 = { @@ -758,7 +754,9 @@ let pythonPackages = python.modules // rec { md5 = "abfdbb25d37c28e9da05f1b5c3596d1a"; }; - # AttributeError: 'NoneType' object has no attribute 'clone' + buildInputs = [ nose ]; + + # 3 failing tests doCheck = false; meta = { @@ -1081,10 +1079,6 @@ let pythonPackages = python.modules // rec { preConfigure = "cp test/secrets.py-dist test/secrets.py"; - # ERROR: test_list_locations (test.test_softlayer.SoftLayerTests) - # AttributeError: MockSoftLayerTransport instance has no attribute '_parse_response' - doCheck = false; - meta = { description = "A unified interface to many cloud providers"; homepage = http://incubator.apache.org/libcloud/; @@ -1518,7 +1512,8 @@ let pythonPackages = python.modules // rec { propagatedBuildInputs = [ httplib2 ]; - # AttributeError: 'NoneType' object has no attribute 'clone' + #buildInputs = [ mock coverage ]; + # needs coverage doCheck = false; meta = { From 5c7c82f63596c27e647ad1dd53b68e5fe29aef4c Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Mon, 3 Dec 2012 09:03:29 +0100 Subject: [PATCH 36/36] missed two failing tests --- pkgs/top-level/python-packages.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 22597a9554c..4baab676eb2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -535,6 +535,9 @@ let pythonPackages = python.modules // rec { easy_install --verbose --prefix=$out . ''; + # test for 27 fails + doCheck = false; + meta = { description = "Easily download, build, install, upgrade, and uninstall Python packages"; homepage = http://packages.python.org/distribute; @@ -1079,6 +1082,9 @@ let pythonPackages = python.modules // rec { 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/;