commit
468fdddde6
@ -423,7 +423,7 @@ and in this case the `python35` interpreter is automatically used.
|
||||
### Interpreters
|
||||
|
||||
Versions 2.7, 3.3, 3.4, 3.5 and 3.6 of the CPython interpreter are available as
|
||||
respectively `python27`, `python33`, `python34`, `python35` and `python36`. The PyPy interpreter
|
||||
respectively `python27`, `python34`, `python35` and `python36`. The PyPy interpreter
|
||||
is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and
|
||||
`python35`. The default interpreter, `python`, maps to `python2`.
|
||||
The Nix expressions for the interpreters can be found in
|
||||
@ -469,7 +469,6 @@ sets are
|
||||
|
||||
* `pkgs.python26Packages`
|
||||
* `pkgs.python27Packages`
|
||||
* `pkgs.python33Packages`
|
||||
* `pkgs.python34Packages`
|
||||
* `pkgs.python35Packages`
|
||||
* `pkgs.python36Packages`
|
||||
@ -622,7 +621,7 @@ attribute. The `shell.nix` file from the previous section can thus be also writt
|
||||
```nix
|
||||
with import <nixpkgs> {};
|
||||
|
||||
(python33.withPackages (ps: [ps.numpy ps.requests])).env
|
||||
(python36.withPackages (ps: [ps.numpy ps.requests])).env
|
||||
```
|
||||
|
||||
In contrast to `python.buildEnv`, `python.withPackages` does not support the more advanced options
|
||||
|
@ -1,160 +0,0 @@
|
||||
{ stdenv, fetchurl
|
||||
, bzip2
|
||||
, gdbm
|
||||
, lzma
|
||||
, ncurses
|
||||
, openssl
|
||||
, readline
|
||||
, sqlite
|
||||
, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
|
||||
, zlib
|
||||
, callPackage
|
||||
, self
|
||||
, CF, configd
|
||||
, python-setup-hook
|
||||
# For the Python package set
|
||||
, pkgs, packageOverrides ? (self: super: {})
|
||||
}:
|
||||
|
||||
assert x11Support -> tcl != null
|
||||
&& tk != null
|
||||
&& xproto != null
|
||||
&& libX11 != null;
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
majorVersion = "3.3";
|
||||
minorVersion = "6";
|
||||
minorVersionSuffix = "";
|
||||
pythonVersion = majorVersion;
|
||||
version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
|
||||
libPrefix = "python${majorVersion}";
|
||||
sitePackages = "lib/${libPrefix}/site-packages";
|
||||
|
||||
buildInputs = filter (p: p != null) [
|
||||
zlib bzip2 lzma gdbm sqlite readline ncurses openssl ]
|
||||
++ optionals x11Support [ tcl tk libX11 xproto ]
|
||||
++ optionals stdenv.isDarwin [ CF configd ];
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
name = "python3-${version}";
|
||||
pythonVersion = majorVersion;
|
||||
inherit majorVersion version;
|
||||
|
||||
inherit buildInputs;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
|
||||
sha256 = "0gsxpgd5p4mwd01gw501vsyahncyw3h9836ypkr3y32kgazy89jj";
|
||||
};
|
||||
|
||||
NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
|
||||
|
||||
# Determinism: The interpreter is patched to write null timestamps when compiling python files.
|
||||
# This way python doesn't try to update them when we freeze timestamps in nix store.
|
||||
DETERMINISTIC_BUILD=1;
|
||||
# Determinism: We fix the hashes of str, bytes and datetime objects.
|
||||
PYTHONHASHSEED=0;
|
||||
|
||||
postPatch = ''
|
||||
# Determinism
|
||||
substituteInPlace "Lib/py_compile.py" --replace "source_stats['mtime']" "(1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime'])"
|
||||
# # We do not patch `Lib/importlib/_bootstrap_external.py` because it does not exist.
|
||||
'' + optionalString (x11Support && (tix != null)) ''
|
||||
substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
for i in /usr /sw /opt /pkg; do # improve purity
|
||||
substituteInPlace ./setup.py --replace $i /no-such-path
|
||||
done
|
||||
${optionalString stdenv.isDarwin ''export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"''}
|
||||
|
||||
configureFlagsArray=( --enable-shared --with-threads
|
||||
CPPFLAGS="${concatStringsSep " " (map (p: "-I${getDev p}/include") buildInputs)}"
|
||||
LDFLAGS="${concatStringsSep " " (map (p: "-L${getLib p}/lib") buildInputs)}"
|
||||
LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
|
||||
)
|
||||
'';
|
||||
|
||||
setupHook = python-setup-hook sitePackages;
|
||||
|
||||
postInstall = ''
|
||||
# needed for some packages, especially packages that backport functionality
|
||||
# to 2.x from 3.x
|
||||
for item in $out/lib/python${majorVersion}/test/*; do
|
||||
if [[ "$item" != */test_support.py* ]]; then
|
||||
rm -rf "$item"
|
||||
else
|
||||
echo $item
|
||||
fi
|
||||
done
|
||||
touch $out/lib/python${majorVersion}/test/__init__.py
|
||||
|
||||
ln -s "$out/include/python${majorVersion}m" "$out/include/python${majorVersion}"
|
||||
paxmark E $out/bin/python${majorVersion}
|
||||
|
||||
# Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
|
||||
echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
|
||||
|
||||
# Determinism: Windows installers were not deterministic.
|
||||
# We're also not interested in building Windows installers.
|
||||
find "$out" -name 'wininst*.exe' | xargs -r rm -f
|
||||
|
||||
# Use Python3 as default python
|
||||
ln -s "$out/bin/idle3" "$out/bin/idle"
|
||||
ln -s "$out/bin/pip3" "$out/bin/pip"
|
||||
ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
|
||||
ln -s "$out/bin/python3" "$out/bin/python"
|
||||
ln -s "$out/bin/python3-config" "$out/bin/python-config"
|
||||
ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
|
||||
|
||||
# Get rid of retained dependencies on -dev packages, and remove
|
||||
# some $TMPDIR references to improve binary reproducibility.
|
||||
# Note that the .pyc file of _sysconfigdata.py should be regenerated!
|
||||
for i in $out/lib/python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
|
||||
sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
|
||||
done
|
||||
|
||||
# Determinism: rebuild all bytecode
|
||||
# We exclude lib2to3 because that's Python 2 code which fails
|
||||
# We rebuild three times, once for each optimization level
|
||||
find $out -name "*.py" | $out/bin/python -m compileall -q -f -x "lib2to3" -i -
|
||||
find $out -name "*.py" | $out/bin/python -O -m compileall -q -f -x "lib2to3" -i -
|
||||
find $out -name "*.py" | $out/bin/python -OO -m compileall -q -f -x "lib2to3" -i -
|
||||
'';
|
||||
|
||||
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;};
|
||||
pkgs = pythonPackages;
|
||||
isPy3 = true;
|
||||
isPy33 = true;
|
||||
is_py3k = true; # deprecated
|
||||
interpreter = "${self}/bin/${executable}";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = {
|
||||
homepage = http://python.org;
|
||||
description = "A high-level dynamically-typed programming language";
|
||||
longDescription = ''
|
||||
Python is a remarkably powerful dynamic programming language that
|
||||
is used in a wide variety of application domains. Some of its key
|
||||
distinguishing features include: clear, readable syntax; strong
|
||||
introspection capabilities; intuitive object orientation; natural
|
||||
expression of procedural code; full modularity, supporting
|
||||
hierarchical packages; exception-based error handling; and very
|
||||
high level dynamic data types.
|
||||
'';
|
||||
license = stdenv.lib.licenses.psfl;
|
||||
platforms = with stdenv.lib.platforms; linux ++ darwin;
|
||||
maintainers = with stdenv.lib.maintainers; [ chaoflow cstrahan ];
|
||||
};
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
# This file was generated and will be overwritten by ./generate.sh
|
||||
|
||||
{ stdenv, fetchurl, lib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "python33-docs-html-3.3.0";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-html.tar.bz2;
|
||||
sha256 = "0vv24b9qi7gznv687ik0pa2w1rq9grqivy44znvj2ysjfg7mc2c1";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python33
|
||||
cp -R ./ $out/share/doc/python33/html
|
||||
'';
|
||||
meta = {
|
||||
maintainers = [ lib.maintainers.chaoflow ];
|
||||
};
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
# This file was generated and will be overwritten by ./generate.sh
|
||||
|
||||
{ stdenv, fetchurl, lib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "python33-docs-pdf-a4-3.3.0";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-a4.tar.bz2;
|
||||
sha256 = "1y6n13bxlw8a11khy3ynfbz8z0kpf2lvh32dvy8scyw3hrk6wdxp";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python33
|
||||
cp -R ./ $out/share/doc/python33/pdf-a4
|
||||
'';
|
||||
meta = {
|
||||
maintainers = [ lib.maintainers.chaoflow ];
|
||||
};
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
# This file was generated and will be overwritten by ./generate.sh
|
||||
|
||||
{ stdenv, fetchurl, lib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "python33-docs-pdf-letter-3.3.0";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-pdf-letter.tar.bz2;
|
||||
sha256 = "0mcj1i47nx81fc9zk1cic4c4p139qjcqlzf4hnnkzvb3jcgy5z6k";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python33
|
||||
cp -R ./ $out/share/doc/python33/pdf-letter
|
||||
'';
|
||||
meta = {
|
||||
maintainers = [ lib.maintainers.chaoflow ];
|
||||
};
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
# This file was generated and will be overwritten by ./generate.sh
|
||||
|
||||
{ stdenv, fetchurl, lib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "python33-docs-text-3.3.0";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/3.3.0/python-3.3.0-docs-text.tar.bz2;
|
||||
sha256 = "10vk2fixg1aglqmsf89kn98rlirrbhnrk1285vzfbynf2iavxw0n";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python33
|
||||
cp -R ./ $out/share/doc/python33/text
|
||||
'';
|
||||
meta = {
|
||||
maintainers = [ lib.maintainers.chaoflow ];
|
||||
};
|
||||
}
|
@ -4,36 +4,24 @@ let
|
||||
pythonDocs = {
|
||||
html = {
|
||||
recurseForDerivations = true;
|
||||
python33 = import ./3.3-html.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python27 = import ./2.7-html.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
pdf_a4 = {
|
||||
recurseForDerivations = true;
|
||||
python33 = import ./3.3-pdf-a4.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python27 = import ./2.7-pdf-a4.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
pdf_letter = {
|
||||
recurseForDerivations = true;
|
||||
python33 = import ./3.3-pdf-letter.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python27 = import ./2.7-pdf-letter.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
text = {
|
||||
recurseForDerivations = true;
|
||||
python33 = import ./3.3-text.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python27 = import ./2.7-text.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
|
@ -6331,7 +6331,6 @@ with pkgs;
|
||||
python2Full = python2.override{x11Support=true;};
|
||||
python27Full = python27.override{x11Support=true;};
|
||||
python3Full = python3.override{x11Support=true;};
|
||||
python33Full = python33.override{x11Support=true;};
|
||||
python34Full = python34.override{x11Support=true;};
|
||||
python35Full = python35.override{x11Support=true;};
|
||||
python36Full = python36.override{x11Support=true;};
|
||||
@ -6345,10 +6344,6 @@ with pkgs;
|
||||
self = python27;
|
||||
inherit (darwin) CF configd;
|
||||
};
|
||||
python33 = callPackage ../development/interpreters/python/cpython/3.3 {
|
||||
self = python33;
|
||||
inherit (darwin) CF configd;
|
||||
};
|
||||
python34 = callPackage ../development/interpreters/python/cpython/3.4 {
|
||||
inherit (darwin) CF configd;
|
||||
self = python34;
|
||||
@ -10914,8 +10909,6 @@ with pkgs;
|
||||
|
||||
python27Packages = lib.hiPrioSet (recurseIntoAttrs python27.pkgs);
|
||||
|
||||
python33Packages = python33.pkgs;
|
||||
|
||||
python34Packages = python34.pkgs;
|
||||
|
||||
python35Packages = python35.pkgs;
|
||||
|
Loading…
Reference in New Issue
Block a user