Python: further unify expressions interpreters

This commit is contained in:
Frederik Rietdijk 2016-10-14 15:06:01 +02:00
parent 061758490f
commit 80433e7030
6 changed files with 75 additions and 124 deletions

View File

@ -1,15 +1,23 @@
{ stdenv, fetchurl, fetchpatch, self, callPackage, python27Packages { stdenv, fetchurl
, bzip2, openssl, gettext , bzip2
, db, gdbm, ncurses, sqlite, readline , gdbm
, fetchpatch
, ncurses
, openssl
, readline
, sqlite
, tcl ? null, tk ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? !stdenv.isCygwin , tcl ? null, tk ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? !stdenv.isCygwin
, zlib ? null, zlibSupport ? true , zlib
, expat, libffi , callPackage
, self
, python27Packages
, gettext
, db
, expat
, libffi
, CF, configd , CF, configd
}: }:
assert zlibSupport -> zlib != null;
assert x11Support -> tcl != null assert x11Support -> tcl != null
&& tk != null && tk != null
&& xlibsWrapper != null && xlibsWrapper != null
@ -109,14 +117,11 @@ let
buildInputs = buildInputs =
optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++ optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++
[ bzip2 openssl ] [ bzip2 openssl zlib ]
++ optionals stdenv.isCygwin [ expat libffi ] ++ optionals stdenv.isCygwin [ expat libffi ]
++ [ db gdbm ncurses sqlite readline ] ++ [ db gdbm ncurses sqlite readline ]
++ optionals x11Support [ tcl tk xlibsWrapper libX11 ] ++ optionals x11Support [ tcl tk xlibsWrapper libX11 ]
++ optional zlibSupport zlib ++ optionals stdenv.isDarwin [ CF configd ];
++ optional stdenv.isDarwin CF;
propagatedBuildInputs = optional stdenv.isDarwin configd;
mkPaths = paths: { mkPaths = paths: {
C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths; C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
@ -130,7 +135,7 @@ in stdenv.mkDerivation {
name = "python-${version}"; name = "python-${version}";
pythonVersion = majorVersion; pythonVersion = majorVersion;
inherit majorVersion version src patches buildInputs propagatedBuildInputs inherit majorVersion version src patches buildInputs
preConfigure configureFlags; preConfigure configureFlags;
LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s"; LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
@ -174,13 +179,12 @@ in stdenv.mkDerivation {
outputs = ["out"] ++ optional x11Support "tkinter"; outputs = ["out"] ++ optional x11Support "tkinter";
passthru = rec { passthru = rec {
inherit libPrefix sitePackages; inherit libPrefix sitePackages x11Support;
inherit zlibSupport; executable = libPrefix;
isPy2 = true;
isPy27 = true;
buildEnv = callPackage ../../wrapper.nix { python = self; }; buildEnv = callPackage ../../wrapper.nix { python = self; };
withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; }; withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python27Packages; };
executable = libPrefix; isPy2 = true;
isPy27 = true;
interpreter = "${self}/bin/${executable}"; interpreter = "${self}/bin/${executable}";
}; };

View File

@ -1,21 +1,23 @@
{ stdenv, fetchurl { stdenv, fetchurl
, bzip2 , bzip2
, db
, gdbm , gdbm
, libX11, xproto
, lzma , lzma
, ncurses , ncurses
, openssl , openssl
, readline , readline
, sqlite , sqlite
, tcl, tk , tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? !stdenv.isCygwin
, zlib , zlib
, callPackage , callPackage
, self , self
, python33Packages , python33Packages
, CF, configd
}: }:
assert readline != null -> ncurses != null; assert x11Support -> tcl != null
&& tk != null
&& xproto != null
&& libX11 != null;
with stdenv.lib; with stdenv.lib;
@ -29,11 +31,11 @@ let
sitePackages = "lib/${libPrefix}/site-packages"; sitePackages = "lib/${libPrefix}/site-packages";
buildInputs = filter (p: p != null) [ buildInputs = filter (p: p != null) [
zlib bzip2 lzma gdbm sqlite db readline ncurses openssl tcl tk libX11 xproto zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
]; ++ optionals x11Support [ tcl tk libX11 xproto ]
++ optionals stdenv.isDarwin [ CF configd ];
in in stdenv.mkDerivation {
stdenv.mkDerivation {
name = "python3-${version}"; name = "python3-${version}";
pythonVersion = majorVersion; pythonVersion = majorVersion;
inherit majorVersion version; inherit majorVersion version;
@ -90,21 +92,16 @@ stdenv.mkDerivation {
# FIXME: should regenerate this. # FIXME: should regenerate this.
rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython* rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython*
'' + optionalString x11Support ''
# tkinter goes in a separate output # tkinter goes in a separate output
mkdir -p $tkinter/${sitePackages} mkdir -p $tkinter/${sitePackages}
mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/ mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/
''; '';
outputs = ["out" "tkinter"]; outputs = ["out"] ++ optional x11Support "tkinter";
passthru = rec { passthru = rec {
inherit libPrefix sitePackages; inherit libPrefix sitePackages x11Support;
zlibSupport = zlib != null;
sqliteSupport = sqlite != null;
dbSupport = db != null;
readlineSupport = readline != null;
opensslSupport = openssl != null;
tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
executable = "${libPrefix}m"; executable = "${libPrefix}m";
buildEnv = callPackage ../../wrapper.nix { python = self; }; buildEnv = callPackage ../../wrapper.nix { python = self; };
withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; }; withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python33Packages; };

View File

@ -1,23 +1,23 @@
{ stdenv, fetchurl { stdenv, fetchurl
, bzip2 , bzip2
, db
, gdbm , gdbm
, libX11, xproto
, lzma , lzma
, ncurses , ncurses
, openssl , openssl
, readline , readline
, sqlite , sqlite
, tcl, tk , tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? !stdenv.isCygwin
, zlib , zlib
, callPackage , callPackage
, self , self
, python34Packages , python34Packages
, CF, configd , CF, configd
}: }:
assert readline != null -> ncurses != null; assert x11Support -> tcl != null
&& tk != null
&& xproto != null
&& libX11 != null;
with stdenv.lib; with stdenv.lib;
@ -31,23 +31,11 @@ let
sitePackages = "lib/${libPrefix}/site-packages"; sitePackages = "lib/${libPrefix}/site-packages";
buildInputs = filter (p: p != null) [ buildInputs = filter (p: p != null) [
zlib zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
bzip2 ++ optionals x11Support [ tcl tk libX11 xproto ]
lzma ++ optionals stdenv.isDarwin [ CF configd ];
gdbm
sqlite
db
readline
ncurses
openssl
tcl
tk
libX11
xproto
] ++ optionals stdenv.isDarwin [ CF configd ];
in in stdenv.mkDerivation {
stdenv.mkDerivation {
name = "python3-${version}"; name = "python3-${version}";
pythonVersion = majorVersion; pythonVersion = majorVersion;
inherit majorVersion version; inherit majorVersion version;
@ -113,21 +101,16 @@ stdenv.mkDerivation {
# FIXME: should regenerate this. # FIXME: should regenerate this.
rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython* rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython*
'' + optionalString x11Support ''
# tkinter goes in a separate output # tkinter goes in a separate output
mkdir -p $tkinter/${sitePackages} mkdir -p $tkinter/${sitePackages}
mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/ mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/
''; '';
outputs = ["out" "tkinter"]; outputs = ["out"] ++ optional x11Support "tkinter";
passthru = rec { passthru = rec {
inherit libPrefix sitePackages; inherit libPrefix sitePackages x11Support;
zlibSupport = zlib != null;
sqliteSupport = sqlite != null;
dbSupport = db != null;
readlineSupport = readline != null;
opensslSupport = openssl != null;
tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
executable = "${libPrefix}m"; executable = "${libPrefix}m";
buildEnv = callPackage ../../wrapper.nix { python = self; }; buildEnv = callPackage ../../wrapper.nix { python = self; };
withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; }; withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python34Packages; };

View File

@ -1,22 +1,23 @@
{ stdenv, fetchurl { stdenv, fetchurl
, bzip2 , bzip2
, gdbm , gdbm
, libX11, xproto
, lzma , lzma
, ncurses , ncurses
, openssl , openssl
, readline , readline
, sqlite , sqlite
, tcl, tk , tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? !stdenv.isCygwin
, zlib , zlib
, callPackage , callPackage
, self , self
, python35Packages , python35Packages
, CF, configd , CF, configd
}: }:
assert readline != null -> ncurses != null; assert x11Support -> tcl != null
&& tk != null
&& xproto != null
&& libX11 != null;
with stdenv.lib; with stdenv.lib;
@ -30,21 +31,11 @@ let
sitePackages = "lib/${libPrefix}/site-packages"; sitePackages = "lib/${libPrefix}/site-packages";
buildInputs = filter (p: p != null) [ buildInputs = filter (p: p != null) [
zlib zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
bzip2 ++ optionals x11Support [ tcl tk libX11 xproto ]
lzma ++ optionals stdenv.isDarwin [ CF configd ];
gdbm
sqlite in stdenv.mkDerivation {
readline
ncurses
openssl
tcl
tk
libX11
xproto
] ++ optionals stdenv.isDarwin [ CF configd ];
in
stdenv.mkDerivation {
name = "python3-${version}"; name = "python3-${version}";
pythonVersion = majorVersion; pythonVersion = majorVersion;
inherit majorVersion version; inherit majorVersion version;
@ -110,27 +101,21 @@ stdenv.mkDerivation {
# FIXME: should regenerate this. # FIXME: should regenerate this.
rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython* rm $out/lib/python${majorVersion}/__pycache__/_sysconfigdata.cpython*
'' + optionalString x11Support ''
# tkinter goes in a separate output # tkinter goes in a separate output
mkdir -p $tkinter/${sitePackages} mkdir -p $tkinter/${sitePackages}
mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/ mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/
''; '';
outputs = ["out" "tkinter"]; outputs = ["out"] ++ optional x11Support "tkinter";
passthru = rec { passthru = rec {
inherit libPrefix sitePackages; inherit libPrefix sitePackages x11Support;
zlibSupport = zlib != null;
sqliteSupport = sqlite != null;
dbSupport = false;
readlineSupport = readline != null;
opensslSupport = openssl != null;
tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
executable = "${libPrefix}m"; executable = "${libPrefix}m";
buildEnv = callPackage ../../wrapper.nix { python = self; }; buildEnv = callPackage ../../wrapper.nix { python = self; };
withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; }; withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python35Packages; };
isPy3 = true; isPy3 = true;
isPy35 = true; isPy35 = true;
is_py3k = true; # deprecated
interpreter = "${self}/bin/${executable}"; interpreter = "${self}/bin/${executable}";
}; };

View File

@ -1,25 +1,24 @@
{ stdenv, fetchurl { stdenv, fetchurl
, glibc , glibc
, bzip2 , bzip2
, db
, gdbm , gdbm
, libX11, xproto
, lzma , lzma
, ncurses , ncurses
, openssl , openssl
, readline , readline
, sqlite , sqlite
, tcl, tk , tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? !stdenv.isCygwin
, zlib , zlib
, callPackage , callPackage
, self , self
, python36Packages , python36Packages
, CF, configd , CF, configd
}: }:
assert readline != null -> ncurses != null; assert x11Support -> tcl != null
&& tk != null
&& xproto != null
&& libX11 != null;
with stdenv.lib; with stdenv.lib;
let let
@ -32,23 +31,11 @@ let
sitePackages = "lib/${libPrefix}/site-packages"; sitePackages = "lib/${libPrefix}/site-packages";
buildInputs = filter (p: p != null) [ buildInputs = filter (p: p != null) [
glibc zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
zlib ++ optionals x11Support [ tcl tk libX11 xproto ]
bzip2 ++ optionals stdenv.isDarwin [ CF configd ];
lzma
gdbm in stdenv.mkDerivation {
sqlite
db
readline
ncurses
openssl
tcl
tk
libX11
xproto
] ++ optionals stdenv.isDarwin [ CF configd ];
in
stdenv.mkDerivation {
name = "python3-${version}"; name = "python3-${version}";
pythonVersion = majorVersion; pythonVersion = majorVersion;
inherit majorVersion version; inherit majorVersion version;
@ -104,22 +91,16 @@ stdenv.mkDerivation {
echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
''; '';
postFixup = '' postFixup = optionalString x11Support ''
# tkinter goes in a separate output # tkinter goes in a separate output
mkdir -p $tkinter/${sitePackages} mkdir -p $tkinter/${sitePackages}
mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/ mv $out/lib/${libPrefix}/lib-dynload/_tkinter* $tkinter/${sitePackages}/
''; '';
outputs = ["out" "tkinter"]; outputs = ["out"] ++ optional x11Support "tkinter";
passthru = rec { passthru = rec {
inherit libPrefix sitePackages; inherit libPrefix sitePackages x11Support;
zlibSupport = zlib != null;
sqliteSupport = sqlite != null;
dbSupport = db != null;
readlineSupport = readline != null;
opensslSupport = openssl != null;
tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
executable = "${libPrefix}m"; executable = "${libPrefix}m";
buildEnv = callPackage ../../wrapper.nix { python = self; }; buildEnv = callPackage ../../wrapper.nix { python = self; };
withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; withPackages = import ../../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; };

View File

@ -5514,6 +5514,7 @@ in
}; };
python33 = callPackage ../development/interpreters/python/cpython/3.3 { python33 = callPackage ../development/interpreters/python/cpython/3.3 {
self = python33; self = python33;
inherit (darwin) CF configd;
}; };
python34 = hiPrio (callPackage ../development/interpreters/python/cpython/3.4 { python34 = hiPrio (callPackage ../development/interpreters/python/cpython/3.4 {
inherit (darwin) CF configd; inherit (darwin) CF configd;