From 31e32b6d9ee2712966e2b09a68d4f783c164ddd3 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Sun, 4 Dec 2016 09:51:12 +0100 Subject: [PATCH] Python interpreters: add pkgs attribute A package set is constructed for a specific interpreter. Therefore, we add the possibility to override the package set to the interpreter. This should make it easier to override the interpreter and the package set at the same time. --- .../python/cpython/2.6/default.nix | 11 ++++++-- .../python/cpython/2.7/default.nix | 10 +++++-- .../python/cpython/3.3/default.nix | 10 +++++-- .../python/cpython/3.4/default.nix | 10 +++++-- .../python/cpython/3.5/default.nix | 10 +++++-- .../python/cpython/3.6/default.nix | 10 +++++-- .../interpreters/python/pypy/2.7/default.nix | 12 ++++++-- pkgs/top-level/all-packages.nix | 28 +++++-------------- 8 files changed, 59 insertions(+), 42 deletions(-) diff --git a/pkgs/development/interpreters/python/cpython/2.6/default.nix b/pkgs/development/interpreters/python/cpython/2.6/default.nix index 64f2b80d09fa..9a4c2d5b3981 100644 --- a/pkgs/development/interpreters/python/cpython/2.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.6/default.nix @@ -1,6 +1,8 @@ { stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false , sqlite, tcl, tk, xlibsWrapper, openssl, readline, db, ncurses, gdbm, self, callPackage -, python26Packages }: +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) +}: assert zlibSupport -> zlib != null; @@ -100,13 +102,16 @@ let ${ optionalString includeModules "$out/bin/python ./setup.py build_ext"} ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix; inherit zlibSupport; isPy2 = true; isPy26 = true; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python26Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; executable = libPrefix; sitePackages = "lib/${libPrefix}/site-packages"; interpreter = "${self}/bin/${executable}"; diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix index a6eeee25be96..4a25382997c3 100644 --- a/pkgs/development/interpreters/python/cpython/2.7/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix @@ -10,12 +10,13 @@ , zlib , callPackage , self -, python27Packages , gettext , db , expat , libffi , CF, configd, coreutils +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) }: assert x11Support -> tcl != null @@ -180,11 +181,14 @@ in stdenv.mkDerivation { rm "$out"/lib/python*/plat-*/regen # refers to glibc.dev ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch; executable = libPrefix; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; isPy2 = true; isPy27 = true; interpreter = "${self}/bin/${executable}"; diff --git a/pkgs/development/interpreters/python/cpython/3.3/default.nix b/pkgs/development/interpreters/python/cpython/3.3/default.nix index b25e2ffd0cb1..6a543a8a0ee0 100644 --- a/pkgs/development/interpreters/python/cpython/3.3/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.3/default.nix @@ -10,8 +10,9 @@ , zlib , callPackage , self -, python33Packages , CF, configd +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) }: assert x11Support -> tcl != null @@ -102,11 +103,14 @@ in stdenv.mkDerivation { ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; isPy3 = true; isPy33 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix index 43edce8a44c2..623fa5d74f64 100644 --- a/pkgs/development/interpreters/python/cpython/3.4/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix @@ -10,8 +10,9 @@ , zlib , callPackage , self -, python34Packages , CF, configd +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) }: assert x11Support -> tcl != null @@ -111,11 +112,14 @@ in stdenv.mkDerivation { ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; isPy3 = true; isPy34 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/cpython/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix index dd2cce707efe..7172e429f236 100644 --- a/pkgs/development/interpreters/python/cpython/3.5/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix @@ -10,8 +10,9 @@ , zlib , callPackage , self -, python35Packages , CF, configd +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) }: assert x11Support -> tcl != null @@ -110,11 +111,14 @@ in stdenv.mkDerivation { rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython* ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; isPy3 = true; isPy35 = true; interpreter = "${self}/bin/${executable}"; diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix index d5960ccde99f..f65989f5bb57 100644 --- a/pkgs/development/interpreters/python/cpython/3.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix @@ -11,8 +11,9 @@ , zlib , callPackage , self -, python36Packages , CF, configd +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) }: assert x11Support -> tcl != null @@ -99,11 +100,14 @@ in stdenv.mkDerivation { ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc" ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; buildEnv = callPackage ../../wrapper.nix { python = self; }; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; isPy3 = true; isPy35 = true; is_py3k = true; # deprecated diff --git a/pkgs/development/interpreters/python/pypy/2.7/default.nix b/pkgs/development/interpreters/python/pypy/2.7/default.nix index bce6d19d58d3..1fd9eaee4303 100644 --- a/pkgs/development/interpreters/python/pypy/2.7/default.nix +++ b/pkgs/development/interpreters/python/pypy/2.7/default.nix @@ -1,6 +1,9 @@ { stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, pkgconfig, libffi , sqlite, openssl, ncurses, python, expat, tcl, tk, xlibsWrapper, libX11 -, makeWrapper, callPackage, self, pypyPackages, gdbm, db }: +, makeWrapper, callPackage, self, gdbm, db +# For the Python package set +, pkgs, packageOverrides ? (self: super: {}) +}: assert zlibSupport -> zlib != null; @@ -120,14 +123,17 @@ let echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py ''; - passthru = rec { + passthru = let + pythonPackages = callPackage ../../../../../top-level/python-packages.nix {python=self; overrides=packageOverrides;}; + in rec { inherit zlibSupport libPrefix; executable = "pypy"; isPypy = true; buildEnv = callPackage ../../wrapper.nix { python = self; }; interpreter = "${self}/bin/${executable}"; sitePackages = "site-packages"; - withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = pypyPackages; }; + withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; + pkgs = pythonPackages; }; enableParallelBuilding = true; # almost no parallelization without STM diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e0b0656a59e7..b3ecfb0d67ad 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9895,33 +9895,19 @@ in # Therefore we do not recurse into attributes here, in contrast to # python27Packages. `nix-env -iA python26Packages.nose` works # regardless. - python26Packages = callPackage ./python-packages.nix { - python = python26; - }; + python26Packages = python26.pkgs; - python27Packages = lib.hiPrioSet (recurseIntoAttrs (callPackage ./python-packages.nix { - python = python27; - })); + python27Packages = lib.hiPrioSet (recurseIntoAttrs python27.pkgs); - python33Packages = callPackage ./python-packages.nix { - python = python33; - }; + python33Packages = python33.pkgs; - python34Packages = callPackage ./python-packages.nix { - python = python34; - }; + python34Packages = python34.pkgs; - python35Packages = recurseIntoAttrs (callPackage ./python-packages.nix { - python = python35; - }); + python35Packages = recurseIntoAttrs python35.pkgs; - python36Packages = (callPackage ./python-packages.nix { - python = python36; - }); + python36Packages = python36.pkgs; - pypyPackages = callPackage ./python-packages.nix { - python = pypy; - }; + pypyPackages = pypy.pkgs; ### DEVELOPMENT / R MODULES