mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
Python: remove 2.6
This commit is contained in:
parent
6891c9291d
commit
c2e2a4d2c5
11 changed files with 1 additions and 413 deletions
|
@ -1,228 +0,0 @@
|
|||
{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false
|
||||
, sqlite, tcl, tk, xlibsWrapper, openssl, readline, db, ncurses, gdbm, self, callPackage
|
||||
# For the Python package set
|
||||
, pkgs, packageOverrides ? (self: super: {})
|
||||
}:
|
||||
|
||||
assert zlibSupport -> zlib != null;
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
let
|
||||
majorVersion = "2.6";
|
||||
minorVersion = "9";
|
||||
minorVersionSuffix = "";
|
||||
pythonVersion = majorVersion;
|
||||
version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
|
||||
libPrefix = "python${majorVersion}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
|
||||
sha256 = "0hbfs2691b60c7arbysbzr0w9528d5pl8a4x7mq5psh6a2cvprya";
|
||||
};
|
||||
|
||||
patches =
|
||||
[ # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
|
||||
./search-path.patch
|
||||
|
||||
# Python recompiles a Python if the mtime stored *in* the
|
||||
# pyc/pyo file differs from the mtime of the source file. This
|
||||
# doesn't work in Nix because Nix changes the mtime of files in
|
||||
# the Nix store to 1. So treat that as a special case.
|
||||
./nix-store-mtime.patch
|
||||
|
||||
# http://bugs.python.org/issue10013
|
||||
./python2.6-fix-parallel-make.patch
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
# Purity.
|
||||
for i in /usr /sw /opt /pkg; do
|
||||
substituteInPlace ./setup.py --replace $i /no-such-path
|
||||
done
|
||||
'' + optionalString (stdenv ? cc && stdenv.cc.libc != null) ''
|
||||
for i in Lib/plat-*/regen; do
|
||||
substituteInPlace $i --replace /usr/include/ ${stdenv.cc.libc}/include/
|
||||
done
|
||||
'' + optionalString stdenv.isCygwin ''
|
||||
# On Cygwin, `make install' tries to read this Makefile.
|
||||
mkdir -p $out/lib/python${majorVersion}/config
|
||||
touch $out/lib/python${majorVersion}/config/Makefile
|
||||
mkdir -p $out/include/python${majorVersion}
|
||||
touch $out/include/python${majorVersion}/pyconfig.h
|
||||
'';
|
||||
|
||||
configureFlags = "--enable-shared --with-threads --enable-unicode=ucs4";
|
||||
|
||||
buildInputs =
|
||||
optional (stdenv ? cc && stdenv.cc.libc != null) stdenv.cc.libc ++
|
||||
[ bzip2 openssl ]++ optionals includeModules [ db openssl ncurses gdbm readline xlibsWrapper tcl tk sqlite ]
|
||||
++ optional zlibSupport zlib;
|
||||
|
||||
mkPaths = paths: {
|
||||
C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
|
||||
LIBRARY_PATH = makeLibraryPath paths;
|
||||
};
|
||||
|
||||
# Build the basic Python interpreter without modules that have
|
||||
# external dependencies.
|
||||
python = stdenv.mkDerivation {
|
||||
name = "python${if includeModules then "" else "-minimal"}-${version}";
|
||||
pythonVersion = majorVersion;
|
||||
|
||||
inherit majorVersion version src patches buildInputs preConfigure
|
||||
configureFlags;
|
||||
|
||||
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
|
||||
|
||||
NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2";
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
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"
|
||||
fi
|
||||
done
|
||||
touch $out/lib/python${majorVersion}/test/__init__.py
|
||||
ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb
|
||||
ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion}
|
||||
mv $out/share/man/man1/{python.1,python2.6.1}
|
||||
ln -s $out/share/man/man1/{python2.6.1,python.1}
|
||||
|
||||
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
|
||||
|
||||
${ optionalString includeModules "$out/bin/python ./setup.py build_ext"}
|
||||
'';
|
||||
|
||||
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;};
|
||||
pkgs = pythonPackages;
|
||||
executable = libPrefix;
|
||||
sitePackages = "lib/${libPrefix}/site-packages";
|
||||
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 = stdenv.lib.platforms.all;
|
||||
maintainers = with stdenv.lib.maintainers; [ chaoflow domenkozar ];
|
||||
# If you want to use Python 2.6, remove "broken = true;" at your own
|
||||
# risk. Python 2.6 has known security vulnerabilities is not receiving
|
||||
# security updates as of October 2013.
|
||||
broken = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
# This function builds a Python module included in the main Python
|
||||
# distribution in a separate derivation.
|
||||
buildInternalPythonModule =
|
||||
{ moduleName
|
||||
, internalName ? "_" + moduleName
|
||||
, deps
|
||||
}:
|
||||
if includeModules then null else stdenv.mkDerivation rec {
|
||||
name = "python-${moduleName}-${python.version}";
|
||||
|
||||
inherit src patches preConfigure configureFlags;
|
||||
|
||||
buildInputs = [ python ] ++ deps;
|
||||
|
||||
inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
|
||||
|
||||
buildPhase =
|
||||
''
|
||||
substituteInPlace setup.py --replace 'self.extensions = extensions' \
|
||||
'self.extensions = [ext for ext in self.extensions if ext.name in ["${internalName}"]]'
|
||||
|
||||
python ./setup.py build_ext
|
||||
[ -z "$(find build -name '*_failed.so' -print)" ]
|
||||
'';
|
||||
|
||||
installPhase =
|
||||
''
|
||||
dest=$out/lib/${python.libPrefix}/site-packages
|
||||
mkdir -p $dest
|
||||
cp -p $(find . -name "*.${if stdenv.isCygwin then "dll" else "so"}") $dest/
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
# The Python modules included in the main Python distribution, built
|
||||
# as separate derivations.
|
||||
modules = {
|
||||
|
||||
bsddb = buildInternalPythonModule {
|
||||
moduleName = "bsddb";
|
||||
deps = [ db ];
|
||||
};
|
||||
|
||||
crypt = buildInternalPythonModule {
|
||||
moduleName = "crypt";
|
||||
internalName = "crypt";
|
||||
deps = optional (stdenv ? glibc) stdenv.glibc;
|
||||
};
|
||||
|
||||
curses = buildInternalPythonModule {
|
||||
moduleName = "curses";
|
||||
deps = [ ncurses ];
|
||||
};
|
||||
|
||||
curses_panel = buildInternalPythonModule {
|
||||
moduleName = "curses_panel";
|
||||
deps = [ ncurses modules.curses ];
|
||||
};
|
||||
|
||||
gdbm = buildInternalPythonModule {
|
||||
moduleName = "gdbm";
|
||||
internalName = "gdbm";
|
||||
deps = [ gdbm ];
|
||||
};
|
||||
|
||||
sqlite3 = buildInternalPythonModule {
|
||||
moduleName = "sqlite3";
|
||||
deps = [ sqlite ];
|
||||
};
|
||||
|
||||
tkinter = buildInternalPythonModule {
|
||||
moduleName = "tkinter";
|
||||
deps = [ tcl tk xlibsWrapper ];
|
||||
};
|
||||
|
||||
readline = buildInternalPythonModule {
|
||||
moduleName = "readline";
|
||||
internalName = "readline";
|
||||
deps = [ readline ];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
in python // { inherit modules; }
|
|
@ -1,12 +0,0 @@
|
|||
diff -ru -x '*~' Python-2.7.1-orig/Python/import.c Python-2.7.1/Python/import.c
|
||||
--- Python-2.7.1-orig/Python/import.c 2010-05-20 20:37:55.000000000 +0200
|
||||
+++ Python-2.7.1/Python/import.c 2011-01-04 15:55:11.000000000 +0100
|
||||
@@ -751,7 +751,7 @@
|
||||
return NULL;
|
||||
}
|
||||
pyc_mtime = PyMarshal_ReadLongFromFile(fp);
|
||||
- if (pyc_mtime != mtime) {
|
||||
+ if (pyc_mtime != mtime && mtime != 1) {
|
||||
if (Py_VerboseFlag)
|
||||
PySys_WriteStderr("# %s has bad mtime\n", cpathname);
|
||||
fclose(fp);
|
|
@ -1,37 +0,0 @@
|
|||
diff -up Python-2.7/Makefile.pre.in.fix-parallel-make Python-2.7/Makefile.pre.in
|
||||
--- Python-2.7/Makefile.pre.in.fix-parallel-make 2010-07-22 15:01:39.567996932 -0400
|
||||
+++ Python-2.7/Makefile.pre.in 2010-07-22 15:47:02.437998509 -0400
|
||||
@@ -207,6 +207,7 @@ SIGNAL_OBJS= @SIGNAL_OBJS@
|
||||
|
||||
##########################################################################
|
||||
# Grammar
|
||||
+GRAMMAR_STAMP= $(srcdir)/grammar-stamp
|
||||
GRAMMAR_H= $(srcdir)/Include/graminit.h
|
||||
GRAMMAR_C= $(srcdir)/Python/graminit.c
|
||||
GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar
|
||||
@@ -530,10 +531,24 @@ Modules/getpath.o: $(srcdir)/Modules/get
|
||||
Modules/python.o: $(srcdir)/Modules/python.c
|
||||
$(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
|
||||
|
||||
+# GNU "make" interprets rules with two dependents as two copies of the rule.
|
||||
+#
|
||||
+# In a parallel build this can lead to pgen being run twice, once for each of
|
||||
+# GRAMMAR_H and GRAMMAR_C, leading to race conditions in which the compiler
|
||||
+# reads a partially-overwritten copy of one of these files, leading to syntax
|
||||
+# errors (or linker errors if the fragment happens to be syntactically valid C)
|
||||
+#
|
||||
+# See http://www.gnu.org/software/hello/manual/automake/Multiple-Outputs.html
|
||||
+# for more information
|
||||
+#
|
||||
+# Introduce ".grammar-stamp" as a contrived single output from PGEN to avoid
|
||||
+# this:
|
||||
+$(GRAMMAR_H) $(GRAMMAR_C): $(GRAMMAR_STAMP)
|
||||
|
||||
-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
|
||||
+$(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT)
|
||||
-@$(INSTALL) -d Include
|
||||
-$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
||||
+ touch $(GRAMMAR_STAMP)
|
||||
|
||||
$(PGEN): $(PGENOBJS)
|
||||
$(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
|
|
@ -1,27 +0,0 @@
|
|||
diff -rc Python-2.4.4-orig/setup.py Python-2.4.4/setup.py
|
||||
*** Python-2.4.4-orig/setup.py 2006-10-08 19:41:25.000000000 +0200
|
||||
--- Python-2.4.4/setup.py 2007-05-27 16:04:54.000000000 +0200
|
||||
***************
|
||||
*** 279,288 ****
|
||||
# Check for AtheOS which has libraries in non-standard locations
|
||||
if platform == 'atheos':
|
||||
lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
|
||||
- lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||
- inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||
|
||||
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||
if platform in ['osf1', 'unixware7', 'openunix8']:
|
||||
lib_dirs += ['/usr/ccs/lib']
|
||||
--- 279,289 ----
|
||||
# Check for AtheOS which has libraries in non-standard locations
|
||||
if platform == 'atheos':
|
||||
lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
|
||||
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||
|
||||
+ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||
+ inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||
+
|
||||
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||
if platform in ['osf1', 'unixware7', 'openunix8']:
|
||||
lib_dirs += ['/usr/ccs/lib']
|
|
@ -1,15 +0,0 @@
|
|||
addPythonPath() {
|
||||
addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python2.6/site-packages
|
||||
}
|
||||
|
||||
toPythonPath() {
|
||||
local paths="$1"
|
||||
local result=
|
||||
for i in $paths; do
|
||||
p="$i/lib/python2.6/site-packages"
|
||||
result="${result}${result:+:}$p"
|
||||
done
|
||||
echo $result
|
||||
}
|
||||
|
||||
envHooks+=(addPythonPath)
|
|
@ -1,18 +0,0 @@
|
|||
# This file was generated and will be overwritten by ./generate.sh
|
||||
|
||||
{ stdenv, fetchurl, lib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "python26-docs-html-2.6.8";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-html.tar.bz2;
|
||||
sha256 = "09kznik9ahmnrqw9gkr7mjv3b3zr258f2fm27n12hrrwwsaszkni";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python26
|
||||
cp -R ./ $out/share/doc/python26/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 = "python26-docs-pdf-a4-2.6.8";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-a4.tar.bz2;
|
||||
sha256 = "07k8n9zhd59s1yn8ahsizkaqnv969p0f2c2acxgxrxhhyy842pp8";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python26
|
||||
cp -R ./ $out/share/doc/python26/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 = "python26-docs-pdf-letter-2.6.8";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-pdf-letter.tar.bz2;
|
||||
sha256 = "01r87m8hb7f9ql4j9zcjcrr9150nsk23sj8cy02vygr83sc1ldmq";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python26
|
||||
cp -R ./ $out/share/doc/python26/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 = "python26-docs-text-2.6.8";
|
||||
src = fetchurl {
|
||||
url = http://docs.python.org/ftp/python/doc/2.6.8/python-2.6.8-docs-text.tar.bz2;
|
||||
sha256 = "05wsdh6ilgkclgak09fq7fsx5kflkmqq8dyxi2rpydx289cw3a8c";
|
||||
};
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/doc/python26
|
||||
cp -R ./ $out/share/doc/python26/text
|
||||
'';
|
||||
meta = {
|
||||
maintainers = [ lib.maintainers.chaoflow ];
|
||||
};
|
||||
}
|
|
@ -10,9 +10,6 @@ pythonDocs = {
|
|||
python27 = import ./2.7-html.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python26 = import ./2.6-html.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
pdf_a4 = {
|
||||
recurseForDerivations = true;
|
||||
|
@ -22,9 +19,6 @@ pythonDocs = {
|
|||
python27 = import ./2.7-pdf-a4.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python26 = import ./2.6-pdf-a4.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
pdf_letter = {
|
||||
recurseForDerivations = true;
|
||||
|
@ -34,9 +28,6 @@ pythonDocs = {
|
|||
python27 = import ./2.7-pdf-letter.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python26 = import ./2.6-pdf-letter.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
text = {
|
||||
recurseForDerivations = true;
|
||||
|
@ -46,8 +37,5 @@ pythonDocs = {
|
|||
python27 = import ./2.7-text.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
python26 = import ./2.6-text.nix {
|
||||
inherit stdenv fetchurl lib;
|
||||
};
|
||||
};
|
||||
}; in pythonDocs
|
||||
|
|
|
@ -5845,7 +5845,6 @@ with pkgs;
|
|||
# These are for compatibility and should not be used inside Nixpkgs.
|
||||
pythonFull = python.override{x11Support=true;};
|
||||
python2Full = python2.override{x11Support=true;};
|
||||
python26Full = python26.override{includeModules=true;self=python26Full;};
|
||||
python27Full = python27.override{x11Support=true;};
|
||||
python3Full = python3.override{x11Support=true;};
|
||||
python33Full = python33.override{x11Support=true;};
|
||||
|
@ -5858,10 +5857,6 @@ with pkgs;
|
|||
python2Packages = python27Packages;
|
||||
python3Packages = python35Packages;
|
||||
|
||||
python26 = callPackage ../development/interpreters/python/cpython/2.6 {
|
||||
db = db4;
|
||||
self = python26;
|
||||
};
|
||||
python27 = callPackage ../development/interpreters/python/cpython/2.7 {
|
||||
self = python27;
|
||||
inherit (darwin) CF configd;
|
||||
|
@ -10165,11 +10160,7 @@ with pkgs;
|
|||
|
||||
### DEVELOPMENT / PYTHON MODULES
|
||||
|
||||
# `nix-env -i python-nose` installs for 2.7, the default python.
|
||||
# Therefore we do not recurse into attributes here, in contrast to
|
||||
# python27Packages. `nix-env -iA python26Packages.nose` works
|
||||
# regardless.
|
||||
python26Packages = python26.pkgs;
|
||||
# Python package sets.
|
||||
|
||||
python27Packages = lib.hiPrioSet (recurseIntoAttrs python27.pkgs);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue