summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/PVER-dbg.overrides.in2
-rw-r--r--debian/PVER-dbg.postinst.in4
-rw-r--r--debian/PVER-minimal.overrides.in1
-rw-r--r--debian/PVER-minimal.postinst.in4
-rw-r--r--debian/PVER.menu.in4
-rw-r--r--debian/PVER.overrides.in2
-rw-r--r--debian/PVER.postinst.in4
-rw-r--r--debian/PVER.pycentral.in4
-rw-r--r--debian/changelog1016
-rw-r--r--debian/compat2
-rw-r--r--debian/control53
-rw-r--r--debian/control.in43
-rw-r--r--debian/copyright226
-rw-r--r--debian/depgraph.py2
-rw-r--r--debian/idle-PVER.menu.in5
-rw-r--r--debian/idle-PVER.overrides.in2
-rw-r--r--debian/idle-PVER.postinst.in4
-rw-r--r--debian/libPVER-dbg.postinst.in12
-rw-r--r--debian/libPVER-minimal.postinst.in4
-rw-r--r--debian/libPVER-minimal.postrm.in1
-rw-r--r--debian/libPVER-testsuite.overrides.in2
-rw-r--r--debian/libpython.symbols.in30
-rw-r--r--debian/multiarch.h.in44
-rw-r--r--debian/patches/add-python-config-sh.diff22
-rw-r--r--debian/patches/bsddb-libpath.diff4
-rw-r--r--debian/patches/build-hash.diff6
-rw-r--r--debian/patches/build-libpython.diff4
-rw-r--r--debian/patches/ctypes-arm.diff4
-rw-r--r--debian/patches/deb-locations.diff20
-rw-r--r--debian/patches/deb-setup.diff4
-rw-r--r--debian/patches/debug-build.diff52
-rw-r--r--debian/patches/disable-sem-check.diff6
-rw-r--r--debian/patches/distutils-install-layout.diff58
-rw-r--r--debian/patches/distutils-link.diff4
-rw-r--r--debian/patches/distutils-sysconfig.diff32
-rw-r--r--debian/patches/do-not-italicize-punctuation.patch49
-rw-r--r--debian/patches/enable-fpectl.diff2
-rw-r--r--debian/patches/enable-sqlite-loadext.diff4
-rw-r--r--debian/patches/ensurepip-disabled.diff12
-rw-r--r--debian/patches/ensurepip-wheels.diff38
-rw-r--r--debian/patches/ext-no-libpython-link.diff4
-rw-r--r--debian/patches/fix-sslv3-test.diff18
-rw-r--r--debian/patches/git-updates.diff4
-rw-r--r--debian/patches/hg-updates.diff4
-rw-r--r--debian/patches/hotshot-import.diff2
-rw-r--r--debian/patches/hurd-disable-nonworking-constants.diff8
-rw-r--r--debian/patches/installed-testsuite.diff2
-rw-r--r--debian/patches/issue27239.diff13
-rw-r--r--debian/patches/issue9189.diff70
-rw-r--r--debian/patches/langpack-gettext.diff4
-rw-r--r--debian/patches/lib2to3-no-pickled-grammar.diff147
-rw-r--r--debian/patches/libffi-shared.diff6
-rw-r--r--debian/patches/link-opt.diff4
-rw-r--r--debian/patches/link-system-expat.diff8
-rw-r--r--debian/patches/link-whole-archive.diff4
-rw-r--r--debian/patches/local-doc-references.diff27
-rw-r--r--debian/patches/locale-module.diff2
-rw-r--r--debian/patches/lto-link-flags.diff6
-rw-r--r--debian/patches/m-i-p-s-r6.diff24
-rw-r--r--debian/patches/mangle-fstack-protector.diff24
-rw-r--r--debian/patches/multiarch-libc.diff50
-rw-r--r--debian/patches/multiarch.diff76
-rw-r--r--debian/patches/no-zip-on-sys.path.diff12
-rw-r--r--debian/patches/platform-lsbrelease.diff6
-rw-r--r--debian/patches/profiled-build.diff28
-rw-r--r--debian/patches/pydoc-use-pager.diff15
-rw-r--r--debian/patches/rename-md5-init.diff124
-rw-r--r--debian/patches/reproducible-buildinfo.diff15
-rw-r--r--debian/patches/series.in15
-rw-r--r--debian/patches/statvfs-f_flag-constants.diff2
-rw-r--r--debian/patches/test-sundry.diff2
-rw-r--r--debian/patches/tkinter-import.diff19
-rw-r--r--debian/pyfpe-breaks.Debian70
-rw-r--r--debian/pyfpe-breaks.Ubuntu5
-rw-r--r--debian/pyhtml2devhelp.py2
-rw-r--r--debian/pymindeps.py6
-rwxr-xr-xdebian/rules176
-rw-r--r--debian/script.py2
-rw-r--r--debian/source.lintian-overrides3
-rw-r--r--debian/source.lintian-overrides.in3
-rw-r--r--debian/tests/failing-tests23
-rw-r--r--debian/tests/failing-tests-dbg24
-rw-r--r--debian/tests/testsuite25
-rw-r--r--debian/tests/testsuite-dbg24
-rw-r--r--debian/watch2
85 files changed, 2360 insertions, 542 deletions
diff --git a/debian/PVER-dbg.overrides.in b/debian/PVER-dbg.overrides.in
index 0ac61da..5ca661b 100644
--- a/debian/PVER-dbg.overrides.in
+++ b/debian/PVER-dbg.overrides.in
@@ -9,3 +9,5 @@
# pointless lintian ...
@PVER@-dbg binary: hardening-no-fortify-functions
+
+@PVER@-dbg binary: command-with-path-in-maintainer-script
diff --git a/debian/PVER-dbg.postinst.in b/debian/PVER-dbg.postinst.in
index 2801ce2..8f0208e 100644
--- a/debian/PVER-dbg.postinst.in
+++ b/debian/PVER-dbg.postinst.in
@@ -5,9 +5,9 @@ set -e
if [ "$1" = configure ]; then
files=$(dpkg -L lib@PVER@-dbg@HOST_QUAL@ | sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p')
if [ -n "$files" ]; then
- @PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
- @PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
fi
else
echo >&2 "@PVER@-dbg: can't get files for byte-compilation"
diff --git a/debian/PVER-minimal.overrides.in b/debian/PVER-minimal.overrides.in
new file mode 100644
index 0000000..f63083b
--- /dev/null
+++ b/debian/PVER-minimal.overrides.in
@@ -0,0 +1 @@
+@PVER@-minimal binary: command-with-path-in-maintainer-script
diff --git a/debian/PVER-minimal.postinst.in b/debian/PVER-minimal.postinst.in
index 1863461..9d78381 100644
--- a/debian/PVER-minimal.postinst.in
+++ b/debian/PVER-minimal.postinst.in
@@ -39,9 +39,9 @@ if [ "$1" = configure ]; then
files=$(dpkg -L lib@PVER@-minimal@HOST_QUAL@ \
| sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p' | $filt)
if [ -n "$files" ]; then
- @PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
- @PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
fi
else
echo >&2 "@PVER@-minimal: can't get files for byte-compilation"
diff --git a/debian/PVER.menu.in b/debian/PVER.menu.in
deleted file mode 100644
index 1d3ede8..0000000
--- a/debian/PVER.menu.in
+++ /dev/null
@@ -1,4 +0,0 @@
-?package(@PVER@):needs="text" section="Applications/Programming"\
- title="Python (v@VER@)"\
- icon="/usr/share/pixmaps/@PVER@.xpm"\
- command="/usr/bin/python@VER@"
diff --git a/debian/PVER.overrides.in b/debian/PVER.overrides.in
index b686588..4a955cf 100644
--- a/debian/PVER.overrides.in
+++ b/debian/PVER.overrides.in
@@ -12,3 +12,5 @@
# no, not useless
@PVER@ binary: manpage-has-useless-whatis-entry
+
+@PVER@ binary: command-with-path-in-maintainer-script
diff --git a/debian/PVER.postinst.in b/debian/PVER.postinst.in
index 1fd9826..e42b8d4 100644
--- a/debian/PVER.postinst.in
+++ b/debian/PVER.postinst.in
@@ -6,9 +6,9 @@ case "$1" in
configure)
files=$(dpkg -L lib@PVER@-stdlib@HOST_QUAL@ | sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p')
if [ -n "$files" ]; then
- @PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
- @PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
+ /usr/bin/@PVER@ -E -S -O /usr/lib/@PVER@/py_compile.py $files
fi
else
echo >&2 "@PVER@: can't get files for byte-compilation"
diff --git a/debian/PVER.pycentral.in b/debian/PVER.pycentral.in
deleted file mode 100644
index 97613f1..0000000
--- a/debian/PVER.pycentral.in
+++ /dev/null
@@ -1,4 +0,0 @@
-[@PVER@]
-runtime: @PVER@
-interpreter: /usr/bin/@PVER@
-prefix: /usr/lib/@PVER@
diff --git a/debian/changelog b/debian/changelog
index a5c46be..edc2773 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,1019 @@
+python2.7 (2.7.17-1) unstable; urgency=medium
+
+ * Python 2.7.17 release.
+
+ -- Matthias Klose <doko@debian.org> Sun, 20 Oct 2019 01:36:22 +0200
+
+python2.7 (2.7.17~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.17 release candidate 1.
+ - CVE-2019-16056, don't parse domains containing @. Closes: #940901.
+ * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org> Thu, 10 Oct 2019 12:26:01 +0200
+
+python2.7 (2.7.16-4) unstable; urgency=medium
+
+ * Update to 20190904 from the 2.7 branch.
+ * Refresh patches.
+ * Drop build dependency on python:any. Addresses: #937569.
+ * Annotate Build-Depends: xvfb and xauth with <!nocheck>. Closes: #928514.
+
+ -- Matthias Klose <doko@debian.org> Wed, 04 Sep 2019 10:19:57 +0200
+
+python2.7 (2.7.16-3) unstable; urgency=medium
+
+ * Update to 20190708 from the 2.7 branch.
+ * Bump standards version.
+
+ -- Matthias Klose <doko@debian.org> Mon, 08 Jul 2019 11:45:29 +0200
+
+python2.7 (2.7.16-2) unstable; urgency=high
+
+ [ Matthias Klose ]
+ * CVE-2019-9636. Fix issue #36216: Add check for characters in netloc that
+ normalize to separators. Closes: #924073.
+ * CVE-2019-9948. Fix issue #35907: Stop urllib exposing the local_file schema
+ (file://).
+
+ [ Dimitri John Ledkov ]
+ * Bump Build-Depedency and Dependency of libssl-dev and libss1.1 to
+ 1.1.1 or higher. As TLS1.3 constants leak into ssl module, thus one
+ shouldn't mix and match python2.7 & libssl1.1. LP: #1808476
+
+ -- Matthias Klose <doko@debian.org> Sat, 06 Apr 2019 03:42:57 +0200
+
+python2.7 (2.7.16-1) unstable; urgency=medium
+
+ * Python 2.7.16 release.
+ - Now has a version without a trailing '+'. Closes: #914072.
+
+ -- Matthias Klose <doko@debian.org> Mon, 04 Mar 2019 16:29:09 +0100
+
+python2.7 (2.7.16~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.16 release candidate 1.
+
+ -- Matthias Klose <doko@debian.org> Mon, 18 Feb 2019 12:05:09 +0100
+
+python2.7 (2.7.15-9) unstable; urgency=medium
+
+ * Update to 20190216 from the 2.7 branch.
+ - Backport of TLS 1.3 related fixes from 3.7.
+ * Drop the local TLS 1.3 backports.
+
+ -- Matthias Klose <doko@debian.org> Sat, 16 Feb 2019 11:39:20 +0100
+
+python2.7 (2.7.15-8) unstable; urgency=medium
+
+ * Fix typo in autopkg test.
+
+ -- Matthias Klose <doko@debian.org> Sun, 03 Feb 2019 14:13:16 +0100
+
+python2.7 (2.7.15-7) unstable; urgency=medium
+
+ * Expect the test_site test failing as in 3.7.
+
+ -- Matthias Klose <doko@debian.org> Sun, 03 Feb 2019 12:51:14 +0100
+
+python2.7 (2.7.15-6) unstable; urgency=medium
+
+ * Update to 20190201 from the 2.7 branch.
+ - CVE-2013-1752: Limit imaplib.IMAP4_SSL.readline().
+ - CVE-2018-14647: _elementtree.c doesn't call XML_SetHashSalt().
+ Closes: #921039.
+ - CVE-2019-5010: DsO vulnerability exists in the X509 certificate parser.
+ Closes: #921040.
+ * Bump standards version.
+ * Update symbols file.
+
+ -- Matthias Klose <doko@debian.org> Fri, 01 Feb 2019 08:18:31 +0100
+
+python2.7 (2.7.15-5) unstable; urgency=medium
+
+ * Update to 20181127 from the 2.7 branch.
+ - Fix issue #20744, running an external 'zip' in shutil.make_archive().
+ CVE-2018-1000802. Closes: #909673.
+ * Cherrypick in-progress backports to 2.7 branch from 3.6 branch to fix
+ test_ssl assertions with openssl 1.1.1. Resolves autopkgtest failure
+ of the 2.7 with openssl 1.1.1 (Dimitri John Ledkov).
+ * Don't hard code location of netinet/in.h. Closes: #912422.
+ * Update VCS attributes.
+
+ -- Matthias Klose <doko@debian.org> Wed, 28 Nov 2018 17:27:22 +0100
+
+python2.7 (2.7.15-4) unstable; urgency=medium
+
+ * Update to 20180831 from the 2.7 branch.
+ - Fixes the build with OpenSSL 1.1.1. Closes: #900157.
+ * Don't run the test_ftplib and test_ssl autopkg tests, not yet ready
+ for OpenSSL 1.1.1. Closes: #907033.
+
+ -- Matthias Klose <doko@debian.org> Fri, 31 Aug 2018 13:56:52 +0200
+
+python2.7 (2.7.15-3) unstable; urgency=medium
+
+ * Bump standards version.
+ * Pass the list of the pyFPE breaks as a parameter into dpkg-gencontrol
+ instead of hard-coding them in the control file.
+
+ -- Matthias Klose <doko@debian.org> Sat, 28 Jul 2018 13:29:29 +0200
+
+python2.7 (2.7.15-1) unstable; urgency=medium
+
+ * Python 2.7.15 release.
+
+ -- Matthias Klose <doko@debian.org> Tue, 01 May 2018 07:55:50 +0200
+
+python2.7 (2.7.15~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.15 release candidate 1.
+
+ -- Matthias Klose <doko@debian.org> Sun, 15 Apr 2018 23:51:34 +0200
+
+python2.7 (2.7.14-8) unstable; urgency=medium
+
+ * Update to 20180402 from the 2.7 branch.
+
+ -- Matthias Klose <doko@debian.org> Mon, 02 Apr 2018 06:16:25 +0200
+
+python2.7 (2.7.14-7) unstable; urgency=medium
+
+ * Update to 20180313 from the 2.7 branch.
+ - Fix issue #32185: The SSL module no longer sends IP addresses in SNI TLS
+ extension on platforms with OpenSSL 1.0.2+ or inet_pton. See #892814.
+ * Add support for riscv64 (Aurelien Jarno). Closes: #892329.
+
+ -- Matthias Klose <doko@debian.org> Tue, 13 Mar 2018 16:23:44 +0100
+
+python2.7 (2.7.14-6) unstable; urgency=medium
+
+ * Don't run lib2to3 tests which rely on the pickled grammar files.
+
+ -- Matthias Klose <doko@debian.org> Tue, 06 Feb 2018 20:12:18 +0100
+
+python2.7 (2.7.14-5) unstable; urgency=medium
+
+ * Update to 20180204 from the 2.7 branch.
+ - Fix issue #31530. Closes: #889280.
+ * python2.7-minimal: Pre-Depend on zlib1g. Closes: #887629.
+
+ -- Matthias Klose <doko@debian.org> Sun, 04 Feb 2018 09:35:17 +0100
+
+python2.7 (2.7.14-4) unstable; urgency=medium
+
+ * Fix applying the m-i-p-s-r6 patch.
+
+ -- Matthias Klose <doko@debian.org> Tue, 05 Dec 2017 16:17:02 +0100
+
+python2.7 (2.7.14-3) unstable; urgency=medium
+
+ * Update to 20171205 from the 2.7 branch.
+ * Build with -fstack-protector instead of -fstack-protector-strong.
+ Performance improvements of around 1-2%.
+ * Add support for mipsr6 triplets (YunQiang Su). Closes: #881945.
+
+ -- Matthias Klose <doko@debian.org> Tue, 05 Dec 2017 10:01:24 +0100
+
+python2.7 (2.7.14-2) unstable; urgency=medium
+
+ * Really rename the md5_* functions.
+
+ -- Matthias Klose <doko@debian.org> Sun, 17 Sep 2017 20:50:44 +0200
+
+python2.7 (2.7.14-1) unstable; urgency=medium
+
+ * Python 2.7.14 release.
+
+ -- Matthias Klose <doko@debian.org> Sun, 17 Sep 2017 14:27:46 +0200
+
+python2.7 (2.7.14~rc1-3) unstable; urgency=medium
+
+ * Add package breaks for extensions referencing symbols for the removed
+ _PyFPE module. Closes: #873791, #873915, #873899.
+ * Expect the regrtest test to fail on s390x.
+
+ -- Matthias Klose <doko@debian.org> Tue, 05 Sep 2017 20:16:23 +0200
+
+python2.7 (2.7.14~rc1-2) unstable; urgency=medium
+
+ * Rename md5_* functions to _Py_md5_*. Closes: #868366.
+ * Break python-numpy (<< 1:1.12.1-3.1), referencing the now missing fpectl
+ modules. Closes: #873791.
+
+ -- Matthias Klose <doko@debian.org> Thu, 31 Aug 2017 17:34:52 +0200
+
+python2.7 (2.7.14~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.14 release candidate 1.
+ * Stop building the fpectl extension.
+ * Build the _math.o object file without -fPIC for static builds. LP: #1638695.
+
+ -- Matthias Klose <doko@debian.org> Wed, 30 Aug 2017 12:54:17 +0200
+
+python2.7 (2.7.13-4) unstable; urgency=medium
+
+ * Update to 20170719 from the 2.7 branch.
+ * Move test/support from libpython2.7-testsuite to libpython2.7-stdlib.
+ Closes: #868168.
+
+ -- Matthias Klose <doko@debian.org> Wed, 19 Jul 2017 20:15:03 +0200
+
+python2.7 (2.7.13-3) unstable; urgency=medium
+
+ * Update to 20170608 from the 2.7 branch.
+ - bpo-27945: Fixed various segfaults with dict when input collections are
+ mutated during searching, inserting or comparing.
+ - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
+ non-interned or unicode attribute names.
+ - bpo-29935: Fixed error messages in the index() method of tuple and list
+ when pass indices of wrong type.
+ - bpo-28598: Support __rmod__ for subclasses of str being called before
+ str.__mod__.
+ - bpo-29602: Fix incorrect handling of signed zeros in complex constructor
+ for complex subclasses and for inputs having a __complex__ method.
+ - bpo-29347: Fixed possibly dereferencing undefined pointers
+ when creating weakref objects.
+ - Issue #14376: Allow sys.exit to accept longs as well as ints.
+ - Issue #29028: Fixed possible use-after-free bugs in the subscription
+ of the buffer object with custom index object.
+ - Issue #29145: Fix overflow checks in string, bytearray and unicode.
+ - Issue #28932: Do not include <sys/random.h> if it does not exist.
+ - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
+ handle IPv6 addresses.
+ - bpo-29960: Preserve generator state when _random.Random.setstate()
+ raises an exception.
+ - bpo-30310: tkFont now supports unicode options (e.g. font family).
+ - bpo-30414: multiprocessing.Queue._feed background running
+ thread do not break from main loop on exception.
+ - bpo-30003: Fix handling escape characters in HZ codec.
+ - bpo-30375: Warnings emitted when compile a regular expression now always
+ point to the line in the user code. Previously they could point into
+ inners of the re module if emitted from inside of groups or conditionals.
+ - bpo-30363: Running Python with the -3 option now warns about regular
+ expression syntax that is invalid or has different semantic in Python 3
+ or will change the behavior in future Python versions.
+ - bpo-30365: Running Python with the -3 option now emits deprecation
+ warnings for getchildren() and getiterator() methods of the Element class
+ in the xml.etree.cElementTree module and when pass the html argument to
+ xml.etree.ElementTree.XMLParser().
+ - bpo-30365: Fixed a deprecation warning about the doctype() method of the
+ xml.etree.ElementTree.XMLParser class. Now it is emitted only when define
+ the doctype() method in the subclass of XMLParser.
+ - bpo-29990: Fix range checking in GB18030 decoder.
+ - bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
+ Misusing them could cause memory leaks or crashes. Now scanner and
+ encoder objects are completely initialized in the __new__ methods.
+ - Revert bpo-26293 for zipfile breakage. See also bpo-29094.
+ - bpo-30070: Fixed leaks and crashes in errors handling in the parser
+ module.
+ - bpo-30061: Fixed crashes in IOBase methods next() and readlines() when
+ readline() or next() respectively return non-sizeable object.
+ Fixed possible other errors caused by not checking results of
+ PyObject_Size(), PySequence_Size(), or PyMapping_Size().
+ - bpo-30011: Fixed race condition in HTMLParser.unescape().
+ - bpo-30068: _io._IOBase.readlines will check if it's closed first when
+ hint is present.
+ - bpo-27863: Fixed multiple crashes in ElementTree caused by race
+ conditions and wrong types.
+ - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
+ long runs of empty iterables.
+ - bpo-29861: Release references to tasks, their arguments and their results
+ as soon as they are finished in multiprocessing.Pool.
+ - bpo-27880: Fixed integer overflow in cPickle when pickle large strings or
+ too many objects.
+ - bpo-29110: Fix file object leak in aifc.open() when file is given as a
+ filesystem path and is not in valid AIFF format.
+ - Issue #29354: Fixed inspect.getargs() for parameters which are cell
+ variables.
+ - Issue #29335: Fix subprocess.Popen.wait() when the child process has
+ exited to a stopped instead of terminated state (ex: when under ptrace).
+ - Issue #29219: Fixed infinite recursion in the repr of uninitialized
+ ctypes.CDLL instances.
+ - Issue #29188: Support glibc 2.24 on Linux: don't use getentropy()
+ function but read from /dev/urandom to get random bytes, for example in
+ os.urandom(). On Linux, getentropy() is implemented which getrandom()
+ is blocking mode, whereas os.urandom() should not block.
+ - Issue #29142: In urllib, suffixes in no_proxy environment variable
+ with leading dots could match related hostnames again (e.g. .b.c
+ matches a.b.c).
+ - Issue #13051: Fixed recursion errors in large or resized
+ curses.textpad.Textbox.
+ - Issue #9770: curses.ascii predicates now work correctly with negative
+ integers.
+ - Issue #28427: old keys should not remove new values from
+ WeakValueDictionary when collecting from another thread.
+ - Issue #28998: More APIs now support longs as well as ints.
+ - Issue 28923: Remove editor artifacts from Tix.py,
+ including encoding not recognized by codecs.lookup.
+ - Issue #29019: Fix dict.fromkeys(x) overallocates when x is sparce dict.
+ - Issue #19542: Fix bugs in WeakValueDictionary.setdefault() and
+ WeakValueDictionary.pop() when a GC collection happens in another
+ thread.
+ - Issue #28925: cPickle now correctly propagates errors when unpickle
+ instances of old-style classes.
+ - Issue #26355: Add canonical header link on each page to corresponding
+ major version of the documentation.
+ - Issue #12067: Rewrite Comparisons section in the Expressions chapter of
+ the language reference. Some of the details of comparing mixed types were
+ incorrect or ambiguous. Added default behaviour and consistency
+ suggestions for user-defined classes.
+ - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
+ ``make install`` and some other make targets when configured with
+ ``--enable-optimizations``.
+ - bpo-23404: Don't regenerate generated files based on file modification
+ time anymore: the action is now explicit. Replace ``make touch`` with
+ ``make regen-all``.
+ - bpo-27593: sys.version and the platform module python_build(),
+ python_branch(), and python_revision() functions now use
+ git information rather than hg when building from a repo.
+ - bpo-29643: Fix ``--enable-optimization`` configure option didn't work.
+ - Issue #28768: Fix implicit declaration of function _setmode.
+ - bpo-11790: Fix sporadic failures in
+ test_multiprocessing.WithProcessesTestCondition.
+ - bpo-30236: Backported test.regrtest options -m/--match and -G/--failfast
+ from Python 3.
+ - bpo-30223: To unify running tests in Python 2.7 and Python 3, the test
+ package can be run as a script. This is equivalent to running the
+ test.regrtest module as a script.
+ - bpo-30207: To simplify backports from Python 3, the test.test_support
+ module was converted into a package and renamed to test.support. The
+ test.script_helper module was moved into the test.support package.
+ Names test.test_support and test.script_helper are left as aliases to
+ test.support and test.support.script_helper.
+ - bpo-30197: Enhanced function swap_attr() in the test.test_support module.
+ It now works when delete replaced attribute inside the with statement.
+ The old value of the attribute (or None if it doesn't exist) now will be
+ assigned to the target of the "as" clause, if there is one.
+ Also backported function swap_item().
+ - bpo-15083: Convert ElementTree doctests to unittests.
+ * Explicitly use the system python for byte compilation in postinst scripts.
+ Addresses: #852163. LP: #1682934.
+ * Build using -fexceptions on ppc64 and ppc64el.
+ Closes: #862925. LP: #1691848.
+
+ -- Matthias Klose <doko@debian.org> Thu, 08 Jun 2017 09:45:33 -0700
+
+python2.7 (2.7.13-2) unstable; urgency=medium
+
+ * Lower priority of interpreter packages to optional.
+
+ -- Matthias Klose <doko@debian.org> Thu, 19 Jan 2017 15:48:08 +0100
+
+python2.7 (2.7.13-1) unstable; urgency=medium
+
+ * Python 2.7.13 release.
+ - Revert a37cc3d926ec (Issue #5322). Closes: #847791.
+ * Fix one more broken -gdb.py symlink. Closes: #807513.
+
+ -- Matthias Klose <doko@debian.org> Sun, 18 Dec 2016 21:19:42 +0100
+
+python2.7 (2.7.13~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.13 release candidate 1.
+ - Issue #5322: Fixed setting __new__ to a PyCFunction inside Python code.
+ - Issue #28847: dumbdbm no longer writes the index file in when it is not
+ changed and supports reading read-only files.
+ - Issue #11145: Fixed miscellaneous issues with C-style formatting of types
+ with custom __oct__ and __hex__.
+ - Issue #24469: Fixed memory leak caused by int subclasses without
+ overridden tp_free (e.g. C-inherited Cython classes).
+ * Pass CXX when configuring and building. Closes: #846326.
+ * Add profile for libbluetooth-dev build dependency. Closes: #738520.
+
+ -- Matthias Klose <doko@debian.org> Sun, 04 Dec 2016 15:12:39 +0100
+
+python2.7 (2.7.12-7) unstable; urgency=medium
+
+ * Update to 20161121 from the 2.7 branch.
+ - Issue #19398: Extra slash no longer added to sys.path components
+ in case of empty compile-time PYTHONPATH components.
+ - Issue #25659: In ctypes, prevent a crash calling the from_buffer() and
+ from_buffer_copy() methods on abstract classes like Array.
+ - Issue #28563: Fixed possible DoS and arbitrary code execution when handle
+ plural form selections in the gettext module. The expression parser now
+ supports exact syntax supported by GNU gettext.
+ - Issue #25507: Add back import needed for 2.x encoding warning box.
+ Add pointer to 'Encoding declaration' in Language Reference.
+ - Issue #28666: Now test.test_support.rmtree is able to remove unwritable
+ or unreadable directories.
+ - Issue #23839: Various caches now are cleared before running every
+ test file.
+ - Issue #26359: Rename --with-optimiations to --enable-optimizations.
+
+ -- Matthias Klose <doko@debian.org> Tue, 22 Nov 2016 01:48:54 +0100
+
+python2.7 (2.7.12-5) unstable; urgency=medium
+
+ * Update to 20161104 from the 2.7 branch.
+ - Issue #28387: Fixed possible crash in _io.TextIOWrapper deallocator when
+ the garbage collector is invoked in other thread.
+ * Disable some lib2to3 tests relying on the saved pickled grammar files.
+
+ -- Matthias Klose <doko@debian.org> Fri, 04 Nov 2016 18:04:30 +0100
+
+python2.7 (2.7.12-4) unstable; urgency=medium
+
+ * Update to 20161103 from the 2.7 branch.
+ - Issue #21720: Improve exception message when the type of fromlist is
+ unicode. fromlist parameter of __import__() only accepts str in Python 2
+ and this will help to identify the problem especially when the
+ unicode_literals future import is used.
+ - Issue #26906: Resolving special methods of uninitialized type now causes
+ implicit initialization of the type instead of a fail.
+ - Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
+ - Issue #24098: Fixed possible crash when AST is changed in process of
+ compiling it.
+ - Issue #28350: String constants with null character no longer interned.
+ - Issue #27942: String constants now interned recursively in tuples and
+ frozensets.
+ - Issue #15578: Correctly incref the parent module while importing.
+ - Issue #26307: The profile-opt build now applies PGO to the built-in
+ modules.
+ - Issue #26020: set literal evaluation order did not match documented
+ behaviour.
+ - Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a
+ tar file with compression before trying to open it without compression.
+ Otherwise it had 50% chance failed with ignore_zeros=True.
+ - Issue #25464: Fixed HList.header_exists() in Tix module by adding
+ a workaround to Tix library bug.
+ - Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP
+ archive.
+ - Issue #28480: Fix error building _sqlite3 module when multithreading is
+ disabled.
+ - Issue #26293: Fixed writing ZIP files that starts not from the start of
+ the file. Offsets in ZIP file now are relative to the start of the
+ archive in conforming to the specification.
+ - Fix possible integer overflows and crashes in the mmap module with
+ unusual usage patterns.
+ - Issue #27897: Fixed possible crash in
+ sqlite3.Connection.create_collation() if pass invalid string-like object
+ as a name.
+ - Issue #1703178: Fix the ability to pass the --link-objects option to the
+ distutils build_ext command.
+ - Issue #28253: Fixed calendar functions for extreme months: 0001-01
+ and 9999-12.
+ Methods itermonthdays() and itermonthdays2() are reimplemented so
+ that they don't call itermonthdates() which can cause datetime.date
+ under/overflow.
+ - Issue #27963: Fixed possible null pointer dereference in
+ ctypes.set_conversion_mode().
+ - Issue #28284: Strengthen resistance of ``_json.encode_basestring_ascii()``
+ to integer overflow.
+ - Issue #27611: Fixed support of default root window in the Tix module.
+ - Issue #24363: When parsing HTTP header fields, if an invalid line is
+ encountered, skip it and continue parsing. Previously, no more header
+ fields were parsed, which could lead to fields for HTTP framing like
+ Content-Length and Transfer-Encoding being overlooked.
+ - Issue #27599: Fixed buffer overrun in binascii.b2a_qp() and
+ binascii.a2b_qp().
+ - Issue #25969: Update the lib2to3 grammar to handle the unpacking
+ generalizations added in 3.5.
+ - Issue #24594: Validates persist parameter when opening MSI database
+ - Issue #27570: Avoid zero-length memcpy() etc calls with null source
+ pointers in the "ctypes" and "array" modules.
+ - Issue #22450: urllib now includes an "Accept: */*" header among the
+ default headers. This makes the results of REST API requests more
+ consistent and predictable especially when proxy servers are involved.
+ - lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
+ between runs given the same Grammar.txt input regardless of the hash
+ randomization setting.
+ - Issue #27691: Fix ssl module's parsing of GEN_RID subject alternative
+ name fields in X.509 certs.
+ - Issue #27850: Remove 3DES from ssl module's default cipher list to
+ counter measure sweet32 attack (CVE-2016-2183).
+ - Issue #27766: Add ChaCha20 Poly1305 to ssl module's default ciper list.
+ (Required OpenSSL 1.1.0 or LibreSSL).
+ - Issue #26470: Port ssl and hashlib module to OpenSSL 1.1.0.
+ Closes: #835793.
+ - Issue #27944: Fix some memory-corruption bugs in the log reading code
+ of the _hotshot module.
+ - Issue #27934: Use ``float.__repr__`` instead of plain ``repr`` when JSON-
+ encoding an instance of a float subclass.
+ - Issue #21201: Improves readability of multiprocessing error message.
+ - Issue #15308: Add 'interrupt execution' (^C) to Shell menu.
+ - Issue #27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
+ - Issue #17642: add larger font sizes for classroom projection.
+ - Add version to title of IDLE help window.
+ - Issue #25564: In section on IDLE -- console differences, mention that
+ using exec means that __builtins__ is defined for each statement.
+ - Issue #28513: Documented command-line interface of zipfile.
+ - Issue #28258: Fixed build with Estonian locale.
+ - Issue #26661: setup.py now detects system libffi with multiarch wrapper.
+ - Issue #15819: The Include directory in the build tree is already
+ searched; drop unused code trying to add it again.
+ - Issue #27566: Fix clean target in freeze makefile.
+ - Issue #27983: Cause lack of llvm-profdata tool when using clang as
+ required for PGO linking to be a configure time error rather than
+ make time when --with-optimizations is enabled. Also improve our
+ ability to find the llvm-profdata tool on MacOS and some Linuxes.
+ - Issue #26359: Add the --with-optimizations configure flag.
+ - Issue #27952: Get Tools/scripts/fixcid.py working with the current "re"
+ module, avoid invalid Python backslash escapes, and fix a bug parsing
+ escaped C quote signs.
+
+ -- Matthias Klose <doko@debian.org> Thu, 03 Nov 2016 11:11:39 +0100
+
+python2.7 (2.7.12-3) unstable; urgency=medium
+
+ * Update to 20160901 from the 2.7 branch.
+ - Issue #27870: A left shift of zero by a large integer no longer attempts
+ to allocate large amounts of memory.
+ - Issue #25604: Fix a minor bug in integer true division; this bug could
+ potentially have caused off-by-one-ulp results on platforms with
+ unreliable ldexp implementations.
+ - Issue #27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
+ creates not a cursor.
+ - Issue #10513: Fix a regression in Connection.commit(). Statements should
+ not be reset after a commit.
+ - Issue #2466: posixpath.ismount now correctly recognizes mount points which
+ the user does not have permission to access.
+ - Issue #27783: Fix possible usage of uninitialized memory in
+ operator.methodcaller.
+ - Issue #27774: Fix possible Py_DECREF on unowned object in _sre.
+ - Issue #27760: Fix possible integer overflow in binascii.b2a_qp.
+ - In the curses module, raise an error if window.getstr() or window.instr()
+ is passed a negative value.
+ - Issue #27758: Fix possible integer overflow in the _csv module for large
+ record lengths.
+ - Issue #23369: Fixed possible integer overflow in
+ _json.encode_basestring_ascii.
+ - Issue #27714: text_textview and test_autocomplete now pass when re-run
+ in the same process. This occurs when test_idle fails when run with the
+ -w option but without -jn. Fix warning from test_config.
+ - Issue #27452: add line counter and crc to IDLE configHandler test dump.
+
+ -- Matthias Klose <doko@debian.org> Thu, 01 Sep 2016 22:27:38 +0200
+
+python2.7 (2.7.12-2) unstable; urgency=medium
+
+ * Update to 20160804 from the 2.7 branch.
+ - Issue #27473: Fixed possible integer overflow in str, unicode and
+ bytearray concatenations and repetitions.
+ - Issue #27507: Add integer overflow check in bytearray.extend().
+ - Issue #27581: Don't rely on wrapping for overflow check in
+ PySequence_Tuple().
+ - Issue #23908: os functions, open() and the io.FileIO constructor now
+ reject unicode paths with embedded null character on Windows instead of
+ silently truncating them.
+ - Issue #27514: Make having too many statically nested blocks a SyntaxError
+ instead of SystemError.
+ - Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
+ HTTP_PROXY variable when REQUEST_METHOD environment is set, which
+ indicates that the script is in CGI mode.
+ - Issue #27130: In the "zlib" module, fix handling of large buffers
+ (typically 2 or 4 GiB). Previously, inputs were limited to 2 GiB, and
+ compression and decompression operations did not properly handle results
+ of 2 or 4 GiB.
+ - Issue #23804: Fix SSL zero-length recv() calls to not block and not raise
+ an error about unclean EOF.
+ - Issue #27466: Change time format returned by http.cookie.time2netscape,
+ confirming the netscape cookie format and making it consistent with
+ documentation.
+ - Issue #22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong
+ mode no longer break tracing, trace_vinfo() now always returns a list of
+ pairs of strings.
+ - Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and
+ ispunct().
+ - Issue #22636: Avoid shell injection problems with
+ ctypes.util.find_library().
+ - Issue #27330: Fixed possible leaks in the ctypes module.
+ - Issue #27238: Got rid of bare excepts in the turtle module.
+ - Issue #26386: Fixed ttk.TreeView selection operations with item id's
+ containing spaces.
+ - Issue #25455: Fixed a crash in repr of cElementTree.Element with
+ recursive tag.
+ - Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor
+ names.
+ - Issue #27245: IDLE: Cleanly delete custom themes and key bindings.
+ Previously, when IDLE was started from a console or by import, a cascade
+ of warnings was emitted.
+ - Issue #16484: Change the default PYTHONDOCS URL to "https:", and fix the
+ resulting links to use lowercase.
+ - Issue #27369: In test_pyexpat, avoid testing an error message detail that
+ changed in Expat 2.2.0.
+ * Fix issue 27239, idlelib: macos _tk_type shall always be "other".
+ Closes: #830686.
+ * Ignore the winreg module for the set of minimal modules. Closes: #830573.
+
+ -- Matthias Klose <doko@debian.org> Thu, 04 Aug 2016 22:04:34 +0200
+
+python2.7 (2.7.12-1) unstable; urgency=medium
+
+ * Python 2.7.12 release.
+
+ -- Matthias Klose <doko@debian.org> Wed, 29 Jun 2016 10:18:26 +0200
+
+python2.7 (2.7.12~rc1-2) unstable; urgency=medium
+
+ * Extend debian/copyright to the files shipped in the wheel files.
+
+ -- Matthias Klose <doko@debian.org> Mon, 13 Jun 2016 11:20:59 +0200
+
+python2.7 (2.7.12~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.12 release candidate 1.
+ - Issue #20041: Fixed TypeError when frame.f_trace is set to None.
+ - Issue #25702: A --with-lto configure option has been added that will
+ enable link time optimizations at build time during a make profile-opt.
+ Some compilers and toolchains are known to not produce stable code when
+ using LTO, be sure to test things thoroughly before relying on it.
+ It can provide a few % speed up over profile-opt alone.
+ - Issue #26556: Update expat to 2.1.1, fixes CVE-2015-1283.
+ - Fix TLS stripping vulnerability in smptlib, CVE-2016-0772.
+ - Issue #7356: ctypes.util: Make parsing of ldconfig output independent of
+ the locale.
+ - Issue #25738: Stop BaseHTTPServer.BaseHTTPRequestHandler.send_error()
+ from sending a message body for 205 Reset Content. Also, don't send the
+ Content-Type header field in responses that don't have a body.
+ - Issue #21313: Fix the "platform" module to tolerate when sys.version
+ contains truncated build information.
+ - Issue #27211: Fix possible memory corruption in io.IOBase.readline().
+ - Issue #5124: Paste with text selected now replaces the selection on X11.
+ This matches how paste works on Windows, Mac, most modern Linux apps,
+ and ttk widgets.
+ - Issue #24759: Make clear in idlelib.idle_test.__init__ that the directory
+ is a private implementation of test.test_idle and tool for maintainers.
+ - Issue #21916: Added tests for the turtle module.
+ - Issue #27229: Fix the cross-compiling pgen rule for in-tree builds.
+ - Issue #17500, and https://github.com/python/pythondotorg/issues/945: Remove
+ unused and outdated icons.
+
+ -- Matthias Klose <doko@debian.org> Mon, 13 Jun 2016 09:07:49 +0200
+
+python2.7 (2.7.11-11) unstable; urgency=medium
+
+ * Update to 20160602 from the 2.7 branch.
+ - Issue #26168: Fixed possible refleaks in failing Py_BuildValue() with
+ the "N" format unit.
+ - Issue #27114: Fix SSLContext._load_windows_store_certs fails with
+ PermissionError.
+ - Issue #26673: When tk reports font size as 0, change to size 10.
+ Such fonts on Linux prevented the configuration dialog from opening.
+ - Issue #27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
+ - In the 'IDLE-console differences' section of the IDLE doc, clarify
+ how running with IDLE affects sys.modules and the standard streams.
+ - Issue #25507: Fix incorrect change in IOBinding that prevented printing.
+ Change also prevented saving shell window with non-ascii characters.
+ Augment IOBinding htest to include all major IOBinding functions.
+ - Issue #25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
+ MARK in README.txt and open this and NEWS.txt with 'ascii'.
+ Re-encode CREDITS.txt to utf-8 and open it with 'utf-8'.
+ * Rebuild to pick up the GNU triplet change on i386 archs. Closes: #826128.
+
+ -- Matthias Klose <doko@debian.org> Thu, 02 Jun 2016 21:34:15 +0200
+
+python2.7 (2.7.11-10) unstable; urgency=medium
+
+ * Update to 20160518 from the 2.7 branch.
+ - Issue #27039: Fixed bytearray.remove() for values greater than 127.
+ - Issue #14132: Fix urllib.request redirect handling when the target only
+ has a query string.
+ - Removed the requirements for the ctypes and modulefinder modules to be
+ compatible with earlier Python versions.
+ - Issue #22274: In the subprocess module, allow stderr to be redirected to
+ stdout even when stdout is not redirected.
+ - Issue #12045: Avoid duplicate execution of command in
+ ctypes.util._get_soname().
+ - Issue #26960: Backported #16270 from Python 3 to Python 2, to prevent
+ urllib from hanging when retrieving certain FTP files.
+
+ -- Matthias Klose <doko@debian.org> Wed, 18 May 2016 21:39:41 +0200
+
+python2.7 (2.7.11-9) unstable; urgency=medium
+
+ * Update to 20160509 from the 2.7 branch.
+ - Issue #25745: Fixed leaking a userptr in curses panel destructor.
+ - Issue #17765: weakref.ref() no longer silently ignores keyword arguments.
+ - Issue #26873: xmlrpclib now raises ResponseError on unsupported type tags
+ instead of silently return incorrect result.
+ - Issue #24114: Fix an uninitialized variable in `ctypes.util`.
+ - Issue #26864: In urllib, change the proxy bypass host checking against
+ no_proxy to be case-insensitive, and to not match unrelated host names
+ that happen to have a bypassed hostname as a suffix.
+ - Issue #26804: urllib will prefer lower_case proxy environment variables
+ over UPPER_CASE or Mixed_Case ones.
+ - Issue #26837: assertSequenceEqual() now correctly outputs non-stringified
+ differing items. This affects assertListEqual() and assertTupleEqual().
+ - Issue #26822: itemgetter, attrgetter and methodcaller objects no longer
+ silently ignore keyword arguments.
+ - Issue #26657: Fix directory traversal vulnerability with SimpleHTTPServer
+ on Windows. This fixes a regression that was introduced in 2.7.7.
+ - Issue #26736: Used HTTPS for external links in the documentation if
+ possible.
+ - Issue #22359: Avoid incorrect recursive $(MAKE), and disable the rules for
+ running pgen when cross-compiling.
+ - Issue #26799: Fix python-gdb.py: don't get C types once when the Python
+ code is loaded, but get C types on demand. The C types can change if
+ python-gdb.py is loaded before the Python executable.
+ * Fix issue #26673, runtime error in idle3. LP: #1578927.
+
+ -- Matthias Klose <doko@debian.org> Mon, 09 May 2016 17:54:33 +0200
+
+python2.7 (2.7.11-8) unstable; urgency=medium
+
+ * Update to 20160417 from the 2.7 branch.
+ - Issue #4806: Avoid masking the original TypeError exception when using
+ star (*) unpacking and the exception was raised from a generator.
+ - Issue #26659: Make the builtin slice type support cycle collection.
+ - Issue #26718: super.__init__ no longer leaks memory if called multiple
+ times. NOTE: A direct call of super.__init__ is not endorsed!
+ - Issue #13410: Fixed a bug in PyUnicode_Format where it failed to properly
+ ignore errors from a __int__() method.
+ - Issue #19377: Add .svg to mimetypes.types_map.
+ - Issue #13952: Add .csv to mimetypes.types_map.
+ - Issue #16329: Add .webm to mimetypes.types_map.
+ - Issue #23735: Handle terminal resizing with Readline 6.3+ by installing
+ our own SIGWINCH handler.
+ - Issue #6953: Rework the Readline module documentation to group related
+ functions together, and add more details such as what underlying Readline
+ functions and variables are accessed.
+ * Fix gdb auto-load symlink for the python2.7 binary. LP: #1571198.
+
+ -- Matthias Klose <doko@debian.org> Sun, 17 Apr 2016 16:00:29 +0200
+
+python2.7 (2.7.11-7) unstable; urgency=medium
+
+ * Update to 20160330 from the 2.7 branch.
+
+ -- Matthias Klose <doko@debian.org> Wed, 30 Mar 2016 23:00:42 +0200
+
+python2.7 (2.7.11-6) unstable; urgency=medium
+
+ * Update to 20160323 from the 2.7 branch.
+ * Always build _math.o with -fPIC.
+
+ -- Matthias Klose <doko@debian.org> Wed, 23 Mar 2016 12:35:56 +0100
+
+python2.7 (2.7.11-5) unstable; urgency=medium
+
+ * Update to 20160319, taken from the 2.7 release branch.
+ * Update symbols files.
+ * Don't run test_signal on alpha, hanging on the buildd.
+
+ -- Matthias Klose <doko@debian.org> Sat, 19 Mar 2016 13:14:21 +0100
+
+python2.7 (2.7.11-4) unstable; urgency=medium
+
+ * Update to 20160222, taken from the 2.7 release branch.
+
+ -- Matthias Klose <doko@debian.org> Mon, 22 Feb 2016 17:38:42 +0100
+
+python2.7 (2.7.11-3) unstable; urgency=medium
+
+ * Revert patches concerning issue #22995.
+
+ -- Matthias Klose <doko@debian.org> Mon, 11 Jan 2016 22:04:40 +0100
+
+python2.7 (2.7.11-2) unstable; urgency=medium
+
+ * Disable LTO on ppc64, ppc64el and s390x.
+ * Don't run the test_signal tests on alpha.
+
+ -- Matthias Klose <doko@debian.org> Wed, 09 Dec 2015 01:29:25 +0100
+
+python2.7 (2.7.11-1) unstable; urgency=medium
+
+ * Python 2.7.11 release.
+ * Don't run the test_cpickle test, causes other tests to fail.
+ See issue 25698.
+ * Fix building architecture independent packages only. Closes: #806868.
+ * Don't ship menu files anymore, just desktop files.
+ * d/p/fix-sslv3-test.diff: properly handle Ubuntu's openssl having OP_NO_SSLv3
+ forced on by default (Marc Deslauriers).
+ * Update symbols files.
+
+ -- Matthias Klose <doko@debian.org> Mon, 07 Dec 2015 14:27:52 +0100
+
+python2.7 (2.7.10-5) unstable; urgency=medium
+
+ * Update to 20151010, taken from the 2.7 release branch.
+ * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting
+ globbing of arguments. Closes: #800301.
+ * pydoc: use the pager command if available. Closes: #799555.
+
+ -- Matthias Klose <doko@debian.org> Sat, 10 Oct 2015 11:11:24 +0200
+
+python2.7 (2.7.10-4) unstable; urgency=medium
+
+ * Remove byte-code for _sysconfigdata_d.py in /usr/lib/python2.7.
+ Closes: #793528.
+ * Make derivatives builds the same as the parent distro. Closes: #797667.
+
+ -- Matthias Klose <doko@debian.org> Sun, 13 Sep 2015 22:30:50 +0200
+
+python2.7 (2.7.10-3) unstable; urgency=medium
+
+ * Revert issue #24134 changes, taken from the branch.
+ * Add hint to install the idle package when trying to run the turtle demo.
+ Closes: #788621.
+
+ -- Matthias Klose <doko@debian.org> Wed, 01 Jul 2015 12:54:53 +0200
+
+python2.7 (2.7.10-2) unstable; urgency=medium
+
+ * Cherry-pick some changes from the 2.7 branch:
+ - Issue #24264: Fixed buffer overflow in the imageop module.
+ - Issue #24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
+ PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
+ to check for and handle errors correctly.
+ - Issue #22095: Fixed HTTPConnection.set_tunnel with default port. The port
+ value in the host header was set to "None".
+ - Issue #4753, backport computed gotos.
+ * Configure --with-computed-gotos.
+ * Make the build reproducible (Jérémy Bobbio). Closes: #786978.
+ - Pass time of latest debian/changelog entry to sphinx via SPHINXOPTS.
+ - Do not store a timestamps when compressing devhelp.
+ * Pass DATE and TIME macros matching the current debian/changelog entry
+ when building getbuildinfo.o.
+ * Don't run the test_io test on sparc.
+
+ -- Matthias Klose <doko@debian.org> Mon, 01 Jun 2015 18:21:46 +0200
+
+python2.7 (2.7.10-1) unstable; urgency=medium
+
+ * Python 2.7.10 release.
+
+ -- Matthias Klose <doko@debian.org> Tue, 26 May 2015 14:47:02 +0200
+
+python2.7 (2.7.10~rc1-1) unstable; urgency=medium
+
+ * Python 2.7.10 release candidate 1.
+ * Re-enable running the tests, re-enable the pgo/lto build.
+
+ -- Matthias Klose <doko@debian.org> Sun, 10 May 2015 23:40:03 +0200
+
+python2.7 (2.7.9-5) unstable; urgency=medium
+
+ * Update to 20150507, taken from the 2.7 release branch.
+ - Issue #24134: assertRaises() and assertRaisesRegexp() checks are not
+ longer successful if the callable is None.
+ - Issues #24099, #24100, and #24101: Fix free-after-use bug in heapq's
+ siftup and siftdown functions.
+ - Backport collections.deque fixes from Python 3.5. Prevents reentrant
+ badness during deletion by deferring the decref until the container has
+ been restored to a consistent state.
+ - Issue #24125: Saved error's line and column numbers when an error
+ occured. Fixes python-docutils. Closes: #784270.
+ - Issue #23842, SystemError in os.minor, os.major. Closes: #782081.
+
+ -- Matthias Klose <doko@debian.org> Wed, 06 May 2015 22:47:05 +0200
+
+python2.7 (2.7.9-4) unstable; urgency=medium
+
+ * Fix installation of the optimized interpreter. Closes: #766877.
+
+ -- Matthias Klose <doko@debian.org> Wed, 29 Apr 2015 19:09:39 +0200
+
+python2.7 (2.7.9-3) unstable; urgency=medium
+
+ * Update to 20150429, taken from the 2.7 release branch.
+ - Issue #23629: Fix the default __sizeof__ implementation for
+ variable-sized objects.
+ - Issue #21526: Tkinter now supports new boolean type in Tcl 8.5.
+ - Issue #23838: linecache now clears the cache and returns an empty
+ result on MemoryError.
+ - Issue #23742: ntpath.expandvars() no longer loses unbalanced single
+ quotes.
+ - Issue #21802: The reader in BufferedRWPair now is closed even when
+ closing writer failed in BufferedRWPair.close().
+ - Issue #23671: string.Template now allows to specify the "self" parameter
+ as keyword argument. string.Formatter now allows to specify the "self"
+ and the "format_string" parameters as keyword arguments.
+ - Issue #21560: An attempt to write a data of wrong type no longer cause
+ GzipFile corruption.
+ - Issue #23647: Increase imaplib's MAXLINE to accommodate modern mailbox
+ sizes.
+ - Issue #23539: If body is None, http.client.HTTPConnection.request now
+ sets Content-Length to 0 for PUT, POST, and PATCH headers to avoid
+ 411 errors from some web servers.
+ - Issue #23136: _strptime now uniformly handles all days in week 0,
+ including Dec 30 of previous year.
+ - Issue #23138: Fixed parsing cookies with absent keys or values in
+ cookiejar.
+ - Issue #23051: multiprocessing.Pool methods imap() and imap_unordered()
+ now handle exceptions raised by an iterator.
+ - Issue #22928: Disabled HTTP header injections in httplib.
+ - Issue #23615: Module tarfile now can be reloaded with imp.reload().
+ - Issue #23799: Added test.test_support.start_threads() for running and
+ cleaning up multiple threads.
+ - Issue #22390: test.regrtest now emits a warning if temporary files or
+ directories are left after running a test.
+ - Issue #23583: Added tests for standard IO streams in IDLE.
+ - Issue #23583: Fixed writing unicode to standard output stream in IDLE.
+ - Issue #22853: Fixed a deadlock when use multiprocessing.Queue at import
+ time.
+ - Issue #23476: In the ssl module, enable OpenSSL's
+ X509_V_FLAG_TRUSTED_FIRST flag on certificate stores when it is available.
+ - Issue #23576: Avoid stalling in SSL reads when EOF has been reached
+ in the SSL layer but the underlying connection hasn't been closed.
+ - Issue #23504: Added an __all__ to the types module.
+ - Issue #23367: Fix possible overflows in the unicodedata module.
+ - Issue #23055: Fixed a buffer overflow in PyUnicode_FromFormatV.
+ - Issue #23048: Fix jumping out of an infinite while loop in the pdb.
+ - Issue #23458: On POSIX, the file descriptor kept open by os.urandom() is
+ now set to non inheritable.
+ - Issue #22113: struct.pack_into() now supports new buffer protocol (in
+ particular accepts writable memoryview).
+ - Issues #814253, #9179: Warnings now are raised when group references and
+ conditional group references are used in lookbehind assertions in regular
+ expressions.
+ - Issue #23215: Multibyte codecs with custom error handlers that ignores
+ errors consumed too much memory and raised SystemError or MemoryError.
+ - Issue #5700: io.FileIO() called flush() after closing the file.
+ flush() was not called in close() if closefd=False.
+ - Issue #21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with
+ empty docstrings.
+ - Issue #22885: Fixed arbitrary code execution vulnerability in the dumbdbm
+ module.
+ - Issue #23481: Remove RC4 from the SSL module's default cipher list.
+ - Issue #21849: Fixed xmlrpclib serialization of non-ASCII unicode strings
+ in the multiprocessing module.
+ - Issue #21840: Fixed expanding unicode variables of form $var in
+ posixpath.expandvars(). Fixed all os.path implementations on
+ unicode-disabled builds.
+ - Issue #23363: Fix possible overflow in itertools.permutations.
+ - Issue #23364: Fix possible overflow in itertools.product.
+ - Issue #23365: Fixed possible integer overflow in
+ itertools.combinations_with_replacement.
+ - Issue #23366: Fixed possible integer overflow in itertools.combinations.
+ - Issue #23191: fnmatch functions that use caching are now threadsafe.
+ - Issue #18518: timeit now rejects statements which can't be compiled
+ outside a function or a loop (e.g. "return" or "break").
+ - Issue #19996: Make :mod:`httplib` ignore headers with no name rather than
+ assuming the body has started.
+ - Issue #20188: Support Application-Layer Protocol Negotiation (ALPN) in the
+ ssl module.
+ - Issue #23248: Update ssl error codes from latest OpenSSL git master.
+ - Issue #23098: 64-bit dev_t is now supported in the os module.
+ - Issue #23063: In the disutils' check command, fix parsing of reST with
+ code or code-block directives.
+ - Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The
+ availability of the function is checked during the compilation.
+ - Backport the context argument to ftplib.FTP_TLS.
+ - Issue #23111: Maximize compatibility in protocol versions of
+ ftplib.FTP_TLS.
+ - Issue #23112: Fix SimpleHTTPServer to correctly carry the query string
+ and fragment when it redirects to add a trailing slash.
+ - Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls
+ getentropy(), instead of reading /dev/urandom, to get pseudo-random bytes.
+ - Issue #23093: In the io, module allow more operations to work on detached
+ streams.
+ - Issue #23071: Added missing names to codecs.__all__.
+ - Issue #23016: A warning no longer produces an AttributeError when
+ sys.stderr is None.
+ - Issue #21032. Fixed socket leak if HTTPConnection.getresponse() fails.
+ Original patch by Martin Panter.
+ - Issue #22609: Constructors and update methods of mapping classes in the
+ collections module now accept the self keyword argument.
+ - Issue #23006: Improve the documentation and indexing of dict.__missing__.
+ Add an entry in the language datamodel special methods section.
+ Revise and index its discussion in the stdtypes mapping/dict section.
+ Backport the code example from 3.4.
+ - Issue #21514: The documentation of the json module now refers to new
+ JSON RFC 7159 instead of obsoleted RFC 4627.
+ - Issue #6639: Module-level turtle functions no longer raise TclError after
+ closing the window.
+ - Issue #22314: pydoc now works when the LINES environment variable is set.
+ - Issue #18905: "pydoc -p 0" now outputs actually used port.
+ - Issue #23345: Prevent test_ssl failures with large OpenSSL patch level
+ values (like 0.9.8zc).
+ - Issue #23392: Added tests for marshal C API that works with FILE*.
+ - Issue #18982: Add tests for CLI of the calendar module.
+ - Issue #19949: The test_xpickle test now tests compatibility with installed
+ Python 2.7 and reports skipped tests.
+ - Issue #11578: Backported test for the timeit module.
+ - Issue #22943: bsddb tests are locale independend now.
+ - Issue #20577: Configuration of the max line length for the FormatParagraph
+ extension has been moved from the General tab of the Idle preferences
+ dialog to the FormatParagraph tab of the Config Extensions dialog.
+ - Issue #16893: Update Idle doc chapter to match current Idle and add new
+ information.
+ - Issue #23180: Rename IDLE "Windows" menu item to "Window".
+ - Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the
+ configure script.
+ - Issue #22079: PyType_Ready() now checks that statically allocated type has
+ no dynamically allocated bases.
+ * Re-apply the fix for issue #22079. This is now a warning instead of an
+ error. LP: #1426294.
+ * Fix issue #23842, SystemError in os.minor, os.major. LP: #1435242.
+ * When using GCC versions older than 4.9 for extension builds, automagically
+ mangle -fstack-protector-strong to -fstack-protector.
+ * debian/tests: Use init system agnostic "service" command instead of
+ upstart specific "stop". Also drop unnecessary "status" call right after
+ stopping apport.
+ * Refresh patches.
+
+ -- Matthias Klose <doko@debian.org> Wed, 29 Apr 2015 03:03:55 +0200
+
+python2.7 (2.7.9-2) unstable; urgency=medium
+
+ * python2.7-minimal: Make Pre-Depends mangling more robust. Closes: #779294.
+ * python2.7-doc: Depend on libjs-underscore. LP: #1424538.
+ * Remove LTO sections from the static libraries. Closes: #698395.
+
+ -- Matthias Klose <doko@debian.org> Sun, 01 Mar 2015 10:56:57 +0100
+
python2.7 (2.7.9-1) unstable; urgency=medium
* Python 2.7.9 release.
diff --git a/debian/compat b/debian/compat
index 7ed6ff8..ec63514 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-5
+9
diff --git a/debian/control b/debian/control
index baa8929..f798ebb 100644
--- a/debian/control
+++ b/debian/control
@@ -2,35 +2,34 @@ Source: python2.7
Section: python
Priority: optional
Maintainer: Matthias Klose <doko@debian.org>
-Build-Depends: debhelper (>= 5), dpkg-dev (>= 1.17.11),
- gcc (>= 4:4.9.2),
+Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.17.11),
quilt, autoconf, autotools-dev,
lsb-release, sharutils,
- libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3), gcc (>= 4:4.9.2-1~), gcc-4.9 (>= 4.9.2-7),
- tk-dev, blt-dev (>= 2.4z), libssl-dev,
+ libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3),
+ tk-dev, blt-dev (>= 2.4z), libssl-dev (>= 1.1.1),
zlib1g-dev, libbz2-dev,
libexpat1-dev,
- libbluetooth-dev [linux-any],
+ libbluetooth-dev [linux-any] <!profile.nobluetooth>,
locales [!armel !avr32 !hppa !ia64 !mipsel],
libsqlite3-dev, libffi-dev (>= 3.0.5) [!or1k !avr32],
libgpm2 [linux-any],
- mime-support, netbase, net-tools, bzip2,
- libdb-dev (<< 1:6.0), libgdbm-dev, python:any, help2man,
- xvfb, xauth
-Build-Depends-Indep: python-sphinx
+ mime-support, netbase, net-tools, bzip2, time,
+ libdb-dev (<< 1:6.0), libgdbm-dev, help2man,
+ xvfb <!nocheck>, xauth <!nocheck>
+Build-Depends-Indep: python3-sphinx
Build-Conflicts: tcl8.4-dev, tk8.4-dev,
python2.7-xml, python-xml,
autoconf2.13, python-cxx-dev,
hardening-wrapper
-Standards-Version: 3.9.6
-Vcs-Browser: https://code.launchpad.net/~doko/python/pkg2.7-debian
-Vcs-Bzr: http://bazaar.launchpad.net/~doko/python/pkg2.7-debian
+Standards-Version: 4.4.1
+Vcs-Browser: https://salsa.debian.org/cpython-team/python2
+Vcs-Git: https://salsa.debian.org/cpython-team/python2.git
XS-Testsuite: autopkgtest
Package: python2.7
Architecture: any
Multi-Arch: allowed
-Priority: standard
+Priority: optional
Depends: python2.7-minimal (= ${binary:Version}), libpython2.7-stdlib (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
Suggests: python2.7-doc, binutils
Conflicts: python-profiler (<= 2.7.1-2)
@@ -44,11 +43,11 @@ Description: Interactive high-level object-oriented language (version 2.7)
Package: libpython2.7-stdlib
Architecture: any
Multi-Arch: same
-Priority: standard
-Depends: libpython2.7-minimal (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
+Priority: optional
+Depends: libpython2.7-minimal (= ${binary:Version}), libssl1.1 (>= 1.1.1), mime-support, ${shlibs:Depends}, ${misc:Depends}
Provides: python2.7-cjkcodecs, python2.7-ctypes, python2.7-elementtree, python2.7-celementtree, python2.7-wsgiref, python2.7-profiler, python2.7-argparse, python-argparse
-Replaces: python2.7 (<< 2.7.5-0~)
-Breaks: python-urllib3 (<< 1.9.1-3)
+Replaces: python2.7 (<< 2.7.5-0~), libpython2.7-testsuite (<< 2.7.13-4)
+Breaks: python-urllib3 (<< 1.9.1-3), ${pyfpe:Breaks}
Description: Interactive high-level object-oriented language (standard library, version 2.7)
Python is a high-level, interactive, object-oriented language. Its 2.7 version
includes an extensive class library with lots of goodies for
@@ -60,7 +59,7 @@ Description: Interactive high-level object-oriented language (standard library,
Package: python2.7-minimal
Architecture: any
Multi-Arch: allowed
-Priority: standard
+Priority: optional
Pre-Depends: ${shlibs:Pre-Depends}
Depends: libpython2.7-minimal (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Recommends: python2.7
@@ -76,7 +75,7 @@ Description: Minimal subset of the Python language (version 2.7)
Package: libpython2.7-minimal
Architecture: any
Multi-Arch: same
-Priority: standard
+Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}
Recommends: libpython2.7-stdlib
Replaces: python2.7 (<< 2.7.4-2), python2.7-minimal (<< 2.7.3-10), libpython2.7-stdlib (<< 2.7.8-7)
@@ -90,8 +89,8 @@ Package: libpython2.7
Architecture: any
Multi-Arch: same
Section: libs
-Priority: standard
-Pre-Depends: multiarch-support
+Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
Depends: libpython2.7-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Replaces: python2.7 (<< 2.6)
Description: Shared Python runtime library (version 2.7)
@@ -104,7 +103,8 @@ Description: Shared Python runtime library (version 2.7)
Package: python2.7-examples
Architecture: all
-Depends: python2.7 (>= ${source:Version}), ${misc:Depends}
+Multi-Arch: foreign
+Depends: python2.7:any (>= ${source:Version}), ${misc:Depends}
Description: Examples for the Python language (v2.7)
Examples, Demos and Tools for Python (v2.7). These are files included in
the upstream Python distribution (v2.7).
@@ -126,7 +126,7 @@ Package: libpython2.7-dev
Section: libdevel
Architecture: any
Multi-Arch: same
-Pre-Depends: multiarch-support
+Pre-Depends: ${misc:Pre-Depends}
Depends: libpython2.7-stdlib (= ${binary:Version}), libpython2.7 (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
Replaces: python2.7 (<< 2.7-3), python2.7-dev (<< 2.7.3-10), python2.7-minimal (<< 2.7.3-10)
Recommends: libc6-dev | libc-dev
@@ -164,7 +164,8 @@ Description: IDE for Python (v2.7) using Tkinter
Package: python2.7-doc
Section: doc
Architecture: all
-Depends: libjs-jquery, ${misc:Depends}
+Multi-Arch: foreign
+Depends: libjs-jquery, libjs-underscore, ${misc:Depends}
Suggests: python2.7
Description: Documentation for the high-level object-oriented language Python (v2.7)
These is the official set of documentation for the interactive high-level
@@ -186,7 +187,6 @@ Package: python2.7-dbg
Section: debug
Architecture: any
Multi-Arch: allowed
-Priority: extra
Depends: python2.7 (= ${binary:Version}), libpython2.7-dbg (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Suggests: python-gdbm-dbg, python-tk-dbg
Description: Debug Build of the Python Interpreter (version 2.7)
@@ -203,8 +203,7 @@ Package: libpython2.7-dbg
Section: debug
Architecture: any
Multi-Arch: same
-Priority: extra
-Pre-Depends: multiarch-support
+Pre-Depends: ${misc:Pre-Depends}
Depends: libpython2.7-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Suggests: python2.7-gdbm-dbg, python2.7-tk-dbg
Replaces: python2.7-dbg (<< 2.7.3-10)
diff --git a/debian/control.in b/debian/control.in
index 27ecc31..211a6cf 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -2,29 +2,28 @@ Source: @PVER@
Section: python
Priority: optional
Maintainer: Matthias Klose <doko@debian.org>
-Build-Depends: debhelper (>= 5), @bd_dpkgdev@
- gcc (>= 4:4.9.2),
+Build-Depends: debhelper (>= 9), @bd_dpkgdev@ @bd_gcc@
quilt, autoconf, autotools-dev,
lsb-release, sharutils,
- libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3), @bd_gcc@
- tk-dev, blt-dev (>= 2.4z), libssl-dev,
+ libreadline-dev, libtinfo-dev, libncursesw5-dev (>= 5.3),
+ tk-dev, blt-dev (>= 2.4z), libssl-dev (>= 1.1.1),
zlib1g-dev, libbz2-dev,
libexpat1-dev,
- libbluetooth-dev [linux-any],
+ libbluetooth-dev [linux-any]@pf_bluetooth@,
locales [!armel !avr32 !hppa !ia64 !mipsel],
libsqlite3-dev, libffi-dev (>= 3.0.5) [!or1k !avr32],
libgpm2 [linux-any],
- mime-support, netbase, net-tools, bzip2,
- libdb-dev (<< 1:6.0), libgdbm-dev, python@bd_qual@, help2man,
- xvfb, xauth
-Build-Depends-Indep: python-sphinx
+ mime-support, netbase, net-tools, bzip2, time,
+ libdb-dev (<< 1:6.0), libgdbm-dev, help2man,
+ xvfb <!nocheck>, xauth <!nocheck>
+Build-Depends-Indep: python3-sphinx
Build-Conflicts: tcl8.4-dev, tk8.4-dev,
@PVER@-xml, python-xml,
autoconf2.13, python-cxx-dev,
hardening-wrapper
-Standards-Version: 3.9.6
-Vcs-Browser: https://code.launchpad.net/~doko/python/pkg@VER@-debian
-Vcs-Bzr: http://bazaar.launchpad.net/~doko/python/pkg@VER@-debian
+Standards-Version: 4.4.1
+Vcs-Browser: https://salsa.debian.org/cpython-team/python2
+Vcs-Git: https://salsa.debian.org/cpython-team/python2.git
XS-Testsuite: autopkgtest
Package: @PVER@
@@ -45,10 +44,10 @@ Package: lib@PVER@-stdlib
Architecture: any
Multi-Arch: same
Priority: @PRIO@
-Depends: lib@PVER@-minimal (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
+Depends: lib@PVER@-minimal (= ${binary:Version}), libssl1.1 (>= 1.1.1), mime-support, ${shlibs:Depends}, ${misc:Depends}
Provides: @PVER@-cjkcodecs, @PVER@-ctypes, @PVER@-elementtree, @PVER@-celementtree, @PVER@-wsgiref, @PVER@-profiler, @PVER@-argparse, python-argparse
-Replaces: @PVER@ (<< 2.7.5-0~)
-Breaks: python-urllib3 (<< 1.9.1-3)
+Replaces: @PVER@ (<< 2.7.5-0~), lib@PVER@-testsuite (<< 2.7.13-4)
+Breaks: python-urllib3 (<< 1.9.1-3), ${pyfpe:Breaks}
Description: Interactive high-level object-oriented language (standard library, version @VER@)
Python is a high-level, interactive, object-oriented language. Its @VER@ version
includes an extensive class library with lots of goodies for
@@ -91,7 +90,7 @@ Architecture: any
Multi-Arch: same
Section: libs
Priority: @PRIO@
-Pre-Depends: multiarch-support
+Pre-Depends: ${misc:Pre-Depends}
Depends: lib@PVER@-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Replaces: @PVER@ (<< 2.6)
Description: Shared Python runtime library (version @VER@)
@@ -104,7 +103,8 @@ Description: Shared Python runtime library (version @VER@)
Package: @PVER@-examples
Architecture: all
-Depends: @PVER@ (>= ${source:Version}), ${misc:Depends}
+Multi-Arch: foreign
+Depends: @PVER@:any (>= ${source:Version}), ${misc:Depends}
Description: Examples for the Python language (v@VER@)
Examples, Demos and Tools for Python (v@VER@). These are files included in
the upstream Python distribution (v@VER@).
@@ -126,7 +126,7 @@ Package: lib@PVER@-dev
Section: libdevel
Architecture: any
Multi-Arch: same
-Pre-Depends: multiarch-support
+Pre-Depends: ${misc:Pre-Depends}
Depends: lib@PVER@-stdlib (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
Replaces: @PVER@ (<< 2.7-3), @PVER@-dev (<< 2.7.3-10), @PVER@-minimal (<< 2.7.3-10)
Recommends: libc6-dev | libc-dev
@@ -164,7 +164,8 @@ Description: IDE for Python (v@VER@) using Tkinter
Package: @PVER@-doc
Section: doc
Architecture: all
-Depends: libjs-jquery, ${misc:Depends}
+Multi-Arch: foreign
+Depends: libjs-jquery, libjs-underscore, ${misc:Depends}
Suggests: @PVER@
Description: Documentation for the high-level object-oriented language Python (v@VER@)
These is the official set of documentation for the interactive high-level
@@ -186,7 +187,6 @@ Package: @PVER@-dbg
Section: debug
Architecture: any
Multi-Arch: allowed
-Priority: extra
Depends: @PVER@ (= ${binary:Version}), lib@PVER@-dbg (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Suggests: python-gdbm-dbg, python-tk-dbg
Description: Debug Build of the Python Interpreter (version @VER@)
@@ -203,8 +203,7 @@ Package: lib@PVER@-dbg
Section: debug
Architecture: any
Multi-Arch: same
-Priority: extra
-Pre-Depends: multiarch-support
+Pre-Depends: ${misc:Pre-Depends}
Depends: lib@PVER@-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Suggests: @PVER@-gdbm-dbg, @PVER@-tk-dbg
Replaces: @PVER@-dbg (<< 2.7.3-10)
diff --git a/debian/copyright b/debian/copyright
index fc9cbef..afe032d 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -730,3 +730,229 @@ License: * Permission to use this software in any way is granted without
/* Modified by Guido van Rossum */
/* Beep added by Mark Hammond */
/* Win9X Beep and platform identification added by Uncle Timmy */
+
+Files: Lib/ensurepip/_bundled/setuptools-*.whl
+License: see above, some license as Python.
+
+Files: Lib/ensurepip/_bundled/pip-*.whl
+Copyright: Copyright © 2008-2013 The pip developers:
+ Alex Grönholm
+ Alex Morega
+ Alexandre Conrad
+ Andrey Bulgakov
+ Antti Kaihola
+ Armin Ronacher
+ Aziz Köksal
+ Ben Rosser
+ Brian Rosner
+ Carl Meyer
+ Chris McDonough
+ Christian Oudard
+ Clay McClure
+ Cody Soyland
+ Daniel Holth
+ Dave Abrahams
+ David (d1b)
+ Dmitry Gladkov
+ Donald Stufft
+ Francesco
+ Geoffrey Lehée
+ Georgi Valkov
+ Hugo Lopes Tavares
+ Ian Bicking
+ Igor Sobreira
+ Ionel Maries Cristian
+ Jakub Vysoky
+ James Cleveland
+ Jannis Leidel
+ Jay Graves
+ John-Scott Atlakson
+ Jon Parise
+ Jonas Nockert
+ Josh Bronson
+ Kamal Bin Mustafa
+ Kelsey Hightower
+ Kenneth Belitzky
+ Kumar McMillan
+ Luke Macken
+ Masklinn
+ Marc Abramowitz
+ Marcus Smith
+ Markus Hametner
+ Matt Maker
+ Maxime R.
+ Miguel Araujo
+ Nick Stenning
+ Nowell Strite
+ Oliver Tonnhofer
+ Olivier Girardot
+ Patrick Jenkins
+ Paul Moore
+ Paul Nasrat
+ Paul Oswald
+ Paul van der Linden
+ Peter Waller
+ Phil Whelan
+ Piet Delport
+ Przemek Wrzos
+ Qiangning Hong
+ Rafael Caricio
+ Rene Dudfield
+ Roey Berman
+ Ronny Pfannschmidt
+ Rory McCann
+ Simon Cross
+ Stavros Korokithakis
+ Thomas Fenzl
+ Thomas Johansson
+ Vinay Sajip
+ Vitaly Babiy
+ W Trevor King
+ Wil Tan
+ Hsiaoming Yang
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+ .
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/ipaddress.py
+Copyright: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Python Software Foundation; All Rights Reserved
+ 2007 Google Inc.
+License: PSF-2
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/retrying.py
+Copyright: (c) 2013-2014, <ray@blacklocus.com>
+ (c) 2014, Derek Wilson <dwilson@domaintools.com>
+ (c) 2014, Alex Kuang <akuang@bizo.com>
+License: Apache-2
+
+License: Apache-2
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in /usr/share/common-licenses/Apache-2.0.
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/six.py
+Copyright: Copyright (c) 2010-2014 Benjamin Peterson
+License: Expat
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/cachecontrol
+Copyright: 2015 Eric Larson
+License: Apache-2.0
+ Copyright 2015 Eric Larson
+ .
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+ http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ .
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian systems, the license is available at
+ /usr/share/common-licenses/Apache-2.0
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/colorama
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/distlib
+Copyright: Copyright (C) 2012-2013 The Python Software Foundation
+ Copyright (C) 2012-2013 Vinay Sajip
+License: Python
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/html5lib
+html5lib is Copyright (c) 2006 The Authors
+Authors:
+ James Graham - james@hoppipolla.co.uk
+ Anne van Kesteren - annevankesteren@gmail.com
+ Lachlan Hunt - lachlan.hunt@lachy.id.au
+ Matt McDonald - kanashii@kanashii.ca
+ Sam Ruby - rubys@intertwingly.net
+ Ian Hickson (Google) - ian@hixie.ch
+ Thomas Broyer - t.broyer@gmail.com
+
+License:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/lockfile
+Copyright:
+ © 2014–2015 OpenStack Foundation <openstack-dev@lists.openstack.org>
+ © 2007–2012 Skip Montanaro <skip@pobox.com>
+ © 2008–2014 Ben Finney <ben+python@benfinney.id.au>
+License: Expat
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/packaging
+Copyright: Copyright (C) 2014 Donald Stufft
+ Copyright (C) 2012-2013 Vinay Sajip
+License: Apache-2.0
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/progress
+Copyright: Copyright (c) 2012 Giorgos Verigakis <verigak@gmail.com>
+License: ISC
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests
+Copyright: 2016, Kenneth Reitz
+License: Apache
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/*
+Copyright: 2008-2016, Andrey Petrov
+License: Expat
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py
+Copyright: 2009, Raymond Hettinger
+License: Expat
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py
+Copyright: 2011, Python Software Foundation
+License: PSF-2
+
+Files: Lib/ensurepip/_bundled/pip-*.whl/pip/_vendor/requests/packages/chardet/*
+Copyright: 2006-2008, Mark Pilgrim
+ 2012-2013, Ian Cordasco
+License: LGPL-2.1+
diff --git a/debian/depgraph.py b/debian/depgraph.py
index 58cd73b..9e03fff 100644
--- a/debian/depgraph.py
+++ b/debian/depgraph.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python2.7
# Copyright 2004 Toby Dickenson
#
diff --git a/debian/idle-PVER.menu.in b/debian/idle-PVER.menu.in
deleted file mode 100644
index 2d25521..0000000
--- a/debian/idle-PVER.menu.in
+++ /dev/null
@@ -1,5 +0,0 @@
-?package(idle-@PVER@):needs="X11" section="Applications/Programming"\
- title="IDLE (Python v@VER@)"\
- icon="/usr/share/pixmaps/@PVER@.xpm"\
- command="/usr/bin/idle-@PVER@" \
- hints="Environments"
diff --git a/debian/idle-PVER.overrides.in b/debian/idle-PVER.overrides.in
index 12a6287..58c4c44 100644
--- a/debian/idle-PVER.overrides.in
+++ b/debian/idle-PVER.overrides.in
@@ -1,3 +1,5 @@
# icon in dependent package
idle-@PVER@ binary: menu-icon-missing
+
+idle-@PVER@ binary: command-with-path-in-maintainer-script
idle-@PVER@ binary: image-file-in-usr-lib
diff --git a/debian/idle-PVER.postinst.in b/debian/idle-PVER.postinst.in
index e360513..91b1902 100644
--- a/debian/idle-PVER.postinst.in
+++ b/debian/idle-PVER.postinst.in
@@ -12,10 +12,10 @@ case "$1" in
configure|abort-upgrade|abort-remove|abort-deconfigure)
for i in $DIRLIST ; do
- @PVER@ /usr/lib/@PVER@/compileall.py -q $i
+ /usr/bin/@PVER@ /usr/lib/@PVER@/compileall.py -q $i
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config
then
- @PVER@ -O /usr/lib/@PVER@/compileall.py -q $i
+ /usr/bin/@PVER@ -O /usr/lib/@PVER@/compileall.py -q $i
fi
done
;;
diff --git a/debian/libPVER-dbg.postinst.in b/debian/libPVER-dbg.postinst.in
new file mode 100644
index 0000000..ae87a11
--- /dev/null
+++ b/debian/libPVER-dbg.postinst.in
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = configure ]; then
+ # _sysconfigdata_d.py now found in the platform directory
+ rm -f /usr/lib/python2.7/_sysconfigdata_d.py[co]
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/libPVER-minimal.postinst.in b/debian/libPVER-minimal.postinst.in
index 8cc1f11..07851c4 100644
--- a/debian/libPVER-minimal.postinst.in
+++ b/debian/libPVER-minimal.postinst.in
@@ -8,6 +8,10 @@ if [ ! -f /etc/@PVER@/sitecustomize.py ]; then
EOF
fi
+if [ "$1" = configure ]; then
+ rm -f /etc/@PVER@/cert-verification.conf
+fi
+
#DEBHELPER#
exit 0
diff --git a/debian/libPVER-minimal.postrm.in b/debian/libPVER-minimal.postrm.in
index 5a0bff0..c5fa423 100644
--- a/debian/libPVER-minimal.postrm.in
+++ b/debian/libPVER-minimal.postrm.in
@@ -19,6 +19,7 @@ if [ "$1" = "purge" ]; then
rmdir --ignore-fail-on-non-empty /etc/@PVER@ 2>/dev/null
fi
fi
+ rm -f /etc/@PVER@/cert-verification.conf
fi
#DEBHELPER#
diff --git a/debian/libPVER-testsuite.overrides.in b/debian/libPVER-testsuite.overrides.in
index cdb4408..930ff08 100644
--- a/debian/libPVER-testsuite.overrides.in
+++ b/debian/libPVER-testsuite.overrides.in
@@ -1,2 +1,4 @@
lib@PVER@-testsuite binary: python-script-but-no-python-dep
lib@PVER@-testsuite binary: image-file-in-usr-lib
+lib@PVER@-testsuite binary: privacy-breach-generic
+lib@PVER@-testsuite binary: command-with-path-in-maintainer-script
diff --git a/debian/libpython.symbols.in b/debian/libpython.symbols.in
index 8c0ea6d..326b8b1 100644
--- a/debian/libpython.symbols.in
+++ b/debian/libpython.symbols.in
@@ -920,15 +920,25 @@
_PyByteArray_empty_string@Base @VER@
_PyBytes_FormatAdvanced@Base @VER@
_PyCode_CheckLineNumber@Base @VER@
+ _PyCode_ConstantKey@Base 2.7.11
+ _PyCodecInfo_GetIncrementalDecoder@Base @VER@
+ _PyCodecInfo_GetIncrementalEncoder@Base @VER@
+ _PyCodec_DecodeText@Base @VER@
+ _PyCodec_EncodeText@Base @VER@
_PyCodec_Lookup@Base @VER@
+ _PyCodec_LookupTextEncoding@Base @VER@
_PyComplex_FormatAdvanced@Base @VER@
_PyDict_Contains@Base @VER@
+ _PyDict_DelItemIf@Base @VER@
+ _PyDict_GetItemWithError@Base 2.7.11
_PyDict_MaybeUntrack@Base @VER@
_PyDict_NewPresized@Base @VER@
_PyDict_Next@Base @VER@
_PyErr_BadInternalCall@Base @VER@
+ _PyErr_ReplaceException@Base @VER@
_PyEval_CallTracing@Base @VER@
_PyEval_SliceIndex@Base @VER@
+ _PyEval_SliceIndexNotNone@Base @VER@
_PyExc_Fini@Base @VER@
_PyExc_Init@Base @VER@
(optional)_PyFileIO_closed@Base @VER@
@@ -1061,6 +1071,8 @@
_PySet_Next@Base @VER@
_PySet_NextEntry@Base @VER@
_PySet_Update@Base @VER@
+ _PySlice_AdjustIndices@Base @VER@
+ _PySlice_Unpack@Base @VER@
_PySlice_FromIndices@Base @VER@
_PyString_Eq@Base @VER@
_PyString_FormatLong@Base @VER@
@@ -1244,9 +1256,10 @@
(optional)_Py_expm1@Base @VER@
_Py_findlabel@Base @VER@
(arch=i386 lpia m68k)_Py_force_double@Base @VER@
+ _Py_freegrammar@Base @VER@
(arch=amd64 i386 lpia)_Py_get_387controlword@Base @VER@
- _Py_hgidentifier@Base 2.7.1
- _Py_hgversion@Base 2.7.1
+ _Py_gitidentifier@Base 2.7.1
+ _Py_gitversion@Base 2.7.1
_Py_isalnum__doc__@Base @VER@
_Py_isalpha__doc__@Base @VER@
_Py_isdigit__doc__@Base @VER@
@@ -1265,15 +1278,14 @@
_Py_pgen@Base @VER@
_Py_samebitset@Base @VER@
(arch=amd64 i386 lpia)_Py_set_387controlword@Base @VER@
- _Py_svnversion@Base @VER@
_Py_swapcase__doc__@Base @VER@
_Py_title__doc__@Base @VER@
_Py_translatelabels@Base @VER@
_Py_upper__doc__@Base @VER@
- PyFPE_counter@Base @VER@
- PyFPE_dummy@Base @VER@
- PyFPE_jbuf@Base @VER@
+ (optional)PyFPE_counter@Base @VER@
+ (optional)PyFPE_dummy@Base @VER@
+ (optional)PyFPE_jbuf@Base @VER@
asdl_int_seq_new@Base @VER@
asdl_seq_new@Base @VER@
@@ -1285,9 +1297,9 @@
(optional)partial_reduce@Base @VER@
(optional)partial_setstate@Base @VER@
- (optional)md5_append@Base @VER@
- (optional)md5_finish@Base @VER@
- (optional)md5_init@Base @VER@
+ (optional)_Py_md5_append@Base @VER@
+ (optional)_Py_md5_finish@Base @VER@
+ (optional)_Py_md5_init@Base @VER@
# _check_for_multiple_distdirs@Base @VER@
(optional)init_ast@Base @VER@
diff --git a/debian/multiarch.h.in b/debian/multiarch.h.in
index 33d2efb..f5ea1f7 100644
--- a/debian/multiarch.h.in
+++ b/debian/multiarch.h.in
@@ -6,19 +6,57 @@
# elif defined(__i386__)
# include <i386-linux-gnu/@subdir@/@header@>
# elif defined(__aarch64__) && defined(__AARCH64EL__)
+# if defined(__ILP32__)
+# include <aarch64_ilp32-linux-gnu/@subdir@/@header@>
+# else
# include <aarch64-linux-gnu/@subdir@/@header@>
+# endif
+# elif defined(__aarch64__) && defined(__AARCH64EB__)
+# if defined(__ILP32__)
+# include <aarch64_be_ilp32-linux-gnu/@subdir@/@header@>
+# else
+# include <aarch64_be-linux-gnu/@subdir@/@header@>
+# endif
# elif defined(__alpha__)
# include <alpha-linux-gnu/@subdir@/@header@>
# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
+# if defined(__ARMEL__)
# include <arm-linux-gnueabihf/@subdir@/@header@>
+# else
+# include <armeb-linux-gnueabihf/@subdir@/@header@>
+# endif
# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
+# if defined(__ARMEL__)
# include <arm-linux-gnueabi/@subdir@/@header@>
+# else
+# include <armeb-linux-gnueabi/@subdir@/@header@>
+# endif
# elif defined(__hppa__)
# include <hppa-linux-gnu/@subdir@/@header@>
# elif defined(__ia64__)
# include <ia64-linux-gnu/@subdir@/@header@>
# elif defined(__m68k__) && !defined(__mcoldfire__)
# include <m68k-linux-gnu/@subdir@/@header@>
+# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
+# if _MIPS_SIM == _ABIO32
+# include <mipsisa32r6el-linux-gnu/@subdir@/@header@>
+# elif _MIPS_SIM == _ABIN32
+# include <mipsisa64r6el-linux-gnuabin32/@subdir@/@header@>
+# elif _MIPS_SIM == _ABI64
+# include <mipsisa64r6el-linux-gnuabi64/@subdir@/@header@>
+# else
+# error unknown multiarch location for @header@
+# endif
+# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6)
+# if _MIPS_SIM == _ABIO32
+# include <mipsisa32r6-linux-gnu/@subdir@/@header@>
+# elif _MIPS_SIM == _ABIN32
+# include <mipsisa64r6-linux-gnuabin32/@subdir@/@header@>
+# elif _MIPS_SIM == _ABI64
+# include <mipsisa64r6-linux-gnuabi64/@subdir@/@header@>
+# else
+# error unknown multiarch location for @header@
+# endif
# elif defined(__mips_hard_float) && defined(_MIPSEL)
# if _MIPS_SIM == _ABIO32
# include <mipsel-linux-gnu/@subdir@/@header@>
@@ -61,6 +99,12 @@
# include <sparc64-linux-gnu/@subdir@/@header@>
# elif defined(__sparc__)
# include <sparc-linux-gnu/@subdir@/@header@>
+# elif defined(__riscv)
+# if __riscv_xlen == 64
+# include <riscv64-linux-gnu/@subdir@/@header@>
+# else
+# include <riscv32-linux-gnu/@subdir@/@header@>
+# endif
# else
# error unknown multiarch location for @header@
# endif
diff --git a/debian/patches/add-python-config-sh.diff b/debian/patches/add-python-config-sh.diff
index 43a0760..11b28bb 100644
--- a/debian/patches/add-python-config-sh.diff
+++ b/debian/patches/add-python-config-sh.diff
@@ -1,8 +1,6 @@
-Index: b/Makefile.pre.in
-===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1078,6 +1078,8 @@ python-config: $(srcdir)/Misc/python-con
+@@ -1196,6 +1196,8 @@ python-config: $(srcdir)/Misc/python-con
# Substitution happens here, as the completely-expanded BINDIR
# is not available in configure
sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config
@@ -11,7 +9,7 @@ Index: b/Makefile.pre.in
# Install the include files
INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
-@@ -1137,6 +1139,7 @@ libainstall: all python-config
+@@ -1255,6 +1257,7 @@ libainstall: @DEF_MAKE_RULE@ python-conf
$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config
rm python-config
@@ -19,8 +17,6 @@ Index: b/Makefile.pre.in
@if [ -s Modules/python.exp -a \
"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
echo; echo "Installing support files for building shared extension modules on AIX:"; \
-Index: b/Misc/python-config.in
-===================================================================
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
@@ -56,3 +56,11 @@ for opt in opt_flags:
@@ -35,8 +31,6 @@ Index: b/Misc/python-config.in
+
+ elif opt == '--configdir':
+ print sysconfig.get_config_var('LIBPL')
-Index: b/Misc/python-config.sh.in
-===================================================================
--- /dev/null
+++ b/Misc/python-config.sh.in
@@ -0,0 +1,103 @@
@@ -143,11 +137,9 @@ Index: b/Misc/python-config.sh.in
+ ;;
+esac
+done
-Index: b/configure.ac
-===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -873,6 +873,7 @@ fi
+@@ -915,6 +915,7 @@ fi
# Other platforms follow
if test $enable_shared = "yes"; then
@@ -155,7 +147,7 @@ Index: b/configure.ac
AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
case $ac_sys_system in
BeOS*)
-@@ -933,6 +934,7 @@ if test $enable_shared = "yes"; then
+@@ -975,6 +976,7 @@ if test $enable_shared = "yes"; then
esac
else # shared is disabled
@@ -163,7 +155,7 @@ Index: b/configure.ac
case $ac_sys_system in
CYGWIN*)
BLDLIBRARY='$(LIBRARY)'
-@@ -940,6 +942,7 @@ else # shared is disabled
+@@ -982,6 +984,7 @@ else # shared is disabled
;;
esac
fi
@@ -171,8 +163,8 @@ Index: b/configure.ac
if test "$cross_compiling" = yes; then
RUNSHARED=
-@@ -4571,7 +4574,7 @@ done
- AC_MSG_RESULT(done)
+@@ -4959,7 +4962,7 @@ AC_MSG_RESULT($ENSUREPIP)
+ AC_SUBST(ENSUREPIP)
# generate output files
-AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
diff --git a/debian/patches/bsddb-libpath.diff b/debian/patches/bsddb-libpath.diff
index ec10d12..e0ecd68 100644
--- a/debian/patches/bsddb-libpath.diff
+++ b/debian/patches/bsddb-libpath.diff
@@ -1,10 +1,8 @@
# DP: Don't add the bsddb multilib path, if already in the standard lib path
-Index: b/setup.py
-===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -1070,7 +1070,13 @@ class PyBuildExt(build_ext):
+@@ -1136,7 +1136,13 @@ class PyBuildExt(build_ext):
if db_setup_debug:
print "bsddb using BerkeleyDB lib:", db_ver, dblib
print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
diff --git a/debian/patches/build-hash.diff b/debian/patches/build-hash.diff
index 957f7b2..d9da7ff 100644
--- a/debian/patches/build-hash.diff
+++ b/debian/patches/build-hash.diff
@@ -1,10 +1,8 @@
# DP: Always build the _md5, _sha1, _sha256 and _sha512 extension modules.
-Index: b/setup.py
-===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -854,7 +854,7 @@ class PyBuildExt(build_ext):
+@@ -920,7 +920,7 @@ class PyBuildExt(build_ext):
print ("warning: openssl 0x%08x is too old for _hashlib" %
openssl_ver)
missing.append('_hashlib')
@@ -13,7 +11,7 @@ Index: b/setup.py
# The _sha module implements the SHA1 hash algorithm.
exts.append( Extension('_sha', ['shamodule.c']) )
# The _md5 module implements the RSA Data Security, Inc. MD5
-@@ -865,7 +865,7 @@ class PyBuildExt(build_ext):
+@@ -931,7 +931,7 @@ class PyBuildExt(build_ext):
depends = ['md5.h']) )
min_sha2_openssl_ver = 0x00908000
diff --git a/debian/patches/build-libpython.diff b/debian/patches/build-libpython.diff
index 57616d8..1ee46e8 100644
--- a/debian/patches/build-libpython.diff
+++ b/debian/patches/build-libpython.diff
@@ -4,7 +4,7 @@ Index: b/Makefile.pre.in
===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -404,7 +404,7 @@ LIBRARY_OBJS= \
+@@ -400,7 +400,7 @@ LIBRARY_OBJS= \
$(PYTHON_OBJS) \
$(MODULE_OBJS) \
$(SIGNAL_OBJS) \
@@ -13,7 +13,7 @@ Index: b/Makefile.pre.in
#########################################################################
# Rules
-@@ -488,7 +488,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
+@@ -542,7 +542,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
$(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
$(AR) $(ARFLAGS) $@ $(PYTHON_OBJS)
$(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
diff --git a/debian/patches/ctypes-arm.diff b/debian/patches/ctypes-arm.diff
index a2c3c5c..e9f88be 100644
--- a/debian/patches/ctypes-arm.diff
+++ b/debian/patches/ctypes-arm.diff
@@ -1,6 +1,8 @@
+Index: b/Lib/ctypes/util.py
+===================================================================
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
-@@ -213,16 +213,27 @@
+@@ -236,16 +236,27 @@ elif os.name == "posix":
def _findSoname_ldconfig(name):
import struct
diff --git a/debian/patches/deb-locations.diff b/debian/patches/deb-locations.diff
index b53de9c..5cfb0de 100644
--- a/debian/patches/deb-locations.diff
+++ b/debian/patches/deb-locations.diff
@@ -1,8 +1,10 @@
# DP: adjust locations of directories to debian policy
+Index: b/Demo/tkinter/guido/ManPage.py
+===================================================================
--- a/Demo/tkinter/guido/ManPage.py
+++ b/Demo/tkinter/guido/ManPage.py
-@@ -189,8 +189,9 @@
+@@ -189,8 +189,9 @@ ManPage = ReadonlyManPage
def test():
import os
import sys
@@ -14,9 +16,11 @@
DEFAULTPAGE = 'Tcl'
formatted = 0
if sys.argv[1:] and sys.argv[1] == '-f':
+Index: b/Demo/tkinter/guido/tkman.py
+===================================================================
--- a/Demo/tkinter/guido/tkman.py
+++ b/Demo/tkinter/guido/tkman.py
-@@ -9,8 +9,8 @@
+@@ -9,8 +9,8 @@ import re
from Tkinter import *
from ManPage import ManPage
@@ -27,9 +31,11 @@
foundmanndir = 0
for dir in MANNDIRLIST:
+Index: b/Misc/python.man
+===================================================================
--- a/Misc/python.man
+++ b/Misc/python.man
-@@ -338,7 +338,7 @@
+@@ -337,7 +337,7 @@ exception). Error messages are written
These are subject to difference depending on local installation
conventions; ${prefix} and ${exec_prefix} are installation-dependent
and should be interpreted as for GNU software; they may be the same.
@@ -38,9 +44,11 @@
.IP \fI${exec_prefix}/bin/python\fP
Recommended location of the interpreter.
.PP
+Index: b/Tools/faqwiz/faqconf.py
+===================================================================
--- a/Tools/faqwiz/faqconf.py
+++ b/Tools/faqwiz/faqconf.py
-@@ -21,7 +21,7 @@
+@@ -21,7 +21,7 @@ OWNERNAME = "FAQ owner"
OWNEREMAIL = "nobody@anywhere.org" # Email for feedback
HOMEURL = "http://www.python.org" # Related home page
HOMENAME = "Python home" # Name of related home page
@@ -49,9 +57,11 @@
# (must end in a slash)
# Parameters you can normally leave alone
+Index: b/Tools/webchecker/webchecker.py
+===================================================================
--- a/Tools/webchecker/webchecker.py
+++ b/Tools/webchecker/webchecker.py
-@@ -19,7 +19,8 @@
+@@ -19,7 +19,8 @@ file index.html in that directory is ret
a directory listing is returned. Now, you can point webchecker to the
document tree in the local file system of your HTTP daemon, and have
most of it checked. In fact the default works this way if your local
diff --git a/debian/patches/deb-setup.diff b/debian/patches/deb-setup.diff
index 15c60e0..24c0ce3 100644
--- a/debian/patches/deb-setup.diff
+++ b/debian/patches/deb-setup.diff
@@ -1,10 +1,8 @@
# DP: Don't include /usr/local/include and /usr/local/lib as gcc search paths
-Index: b/setup.py
-===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -438,10 +438,10 @@ class PyBuildExt(build_ext):
+@@ -500,10 +500,10 @@ class PyBuildExt(build_ext):
os.unlink(tmpfile)
def detect_modules(self):
diff --git a/debian/patches/debug-build.diff b/debian/patches/debug-build.diff
index 24efc62..7d461e2 100644
--- a/debian/patches/debug-build.diff
+++ b/debian/patches/debug-build.diff
@@ -2,8 +2,6 @@
# DP: built with the python-dbg interpreter with a different name into
# DP: the same path (by appending `_d' to the extension name).
-Index: b/Lib/distutils/command/build.py
-===================================================================
--- a/Lib/distutils/command/build.py
+++ b/Lib/distutils/command/build.py
@@ -91,7 +91,8 @@ class build(Command):
@@ -16,11 +14,9 @@ Index: b/Lib/distutils/command/build.py
if self.build_platlib is None:
self.build_platlib = os.path.join(self.build_base,
'lib' + plat_specifier)
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -90,7 +90,7 @@ def get_python_inc(plat_specific=0, pref
+@@ -100,7 +100,7 @@ def get_python_inc(plat_specific=0, pref
# Include is located in the srcdir
inc_dir = os.path.join(srcdir, "Include")
return inc_dir
@@ -29,7 +25,7 @@ Index: b/Lib/distutils/sysconfig.py
elif os.name == "nt":
return os.path.join(prefix, "include")
elif os.name == "os2":
-@@ -263,7 +263,7 @@ def get_makefile_filename():
+@@ -270,7 +270,7 @@ def get_makefile_filename():
if python_build:
return os.path.join(project_base, "Makefile")
lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
@@ -38,11 +34,9 @@ Index: b/Lib/distutils/sysconfig.py
def parse_config_h(fp, g=None):
-Index: b/Lib/sysconfig.py
-===================================================================
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
-@@ -333,7 +333,7 @@ def get_makefile_filename():
+@@ -338,7 +338,7 @@ def get_makefile_filename():
"""Return the path of the Makefile."""
if _PYTHON_BUILD:
return os.path.join(_PROJECT_BASE, "Makefile")
@@ -51,7 +45,7 @@ Index: b/Lib/sysconfig.py
# Issue #22199: retain undocumented private name for compatibility
_get_makefile_filename = get_makefile_filename
-@@ -465,7 +465,7 @@ def get_config_h_filename():
+@@ -470,7 +470,7 @@ def get_config_h_filename():
else:
inc_dir = _PROJECT_BASE
else:
@@ -60,11 +54,9 @@ Index: b/Lib/sysconfig.py
return os.path.join(inc_dir, 'pyconfig.h')
def get_scheme_names():
-Index: b/Makefile.pre.in
-===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -117,8 +117,8 @@ SCRIPTDIR= $(prefix)/lib
+@@ -121,8 +121,8 @@ SCRIPTDIR= $(prefix)/lib
# Detailed destination directories
BINLIBDEST= $(LIBDIR)/python$(VERSION)
LIBDEST= $(SCRIPTDIR)/python$(VERSION)
@@ -75,7 +67,7 @@ Index: b/Makefile.pre.in
LIBP= $(LIBDIR)/python$(VERSION)
# Symbols used for using shared libraries
-@@ -132,6 +132,8 @@ DESTSHARED= $(BINLIBDEST)/lib-dynload
+@@ -136,6 +136,8 @@ DESTSHARED= $(BINLIBDEST)/lib-dynload
EXE= @EXEEXT@
BUILDEXE= @BUILDEXEEXT@
@@ -84,16 +76,16 @@ Index: b/Makefile.pre.in
# Short name and location for Mac OS X Python framework
UNIVERSALSDK=@UNIVERSALSDK@
PYTHONFRAMEWORK= @PYTHONFRAMEWORK@
-@@ -491,7 +493,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
+@@ -545,7 +547,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
$(AR) $(ARFLAGS) $@ $(sort $(MODOBJS))
$(RANLIB) $@
-libpython$(VERSION).so: $(LIBRARY_OBJS)
+libpython$(VERSION)$(DEBUG_EXT).so: $(LIBRARY_OBJS)
if test $(INSTSONAME) != $(LDLIBRARY); then \
- $(BLDSHARED) $(PY_LDFLAGS) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
+ $(BLDSHARED) $(PY_LDFLAGS) $(CCSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
$(LN) -f $(INSTSONAME) $@; \
-@@ -1089,8 +1091,8 @@ inclinstall:
+@@ -1207,8 +1209,8 @@ inclinstall:
$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
# Install the library and miscellaneous stuff needed for extending/embedding
@@ -104,8 +96,6 @@ Index: b/Makefile.pre.in
# pkgconfig directory
LIBPC= $(LIBDIR)/pkgconfig
-Index: b/Misc/python-config.in
-===================================================================
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
@@ -44,7 +44,7 @@ for opt in opt_flags:
@@ -117,8 +107,6 @@ Index: b/Misc/python-config.in
libs += getvar('LIBS').split()
libs += getvar('SYSLIBS').split()
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
-Index: b/Python/dynload_shlib.c
-===================================================================
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -46,6 +46,10 @@ const struct filedescr _PyImport_DynLoad
@@ -132,11 +120,9 @@ Index: b/Python/dynload_shlib.c
{".so", "rb", C_EXTENSION},
{"module.so", "rb", C_EXTENSION},
#endif
-Index: b/Python/sysmodule.c
-===================================================================
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
-@@ -1519,6 +1519,12 @@ _PySys_Init(void)
+@@ -1524,6 +1524,12 @@ _PySys_Init(void)
PyString_FromString("legacy"));
#endif
@@ -149,11 +135,9 @@ Index: b/Python/sysmodule.c
#undef SET_SYS_FROM_STRING
if (PyErr_Occurred())
return NULL;
-Index: b/configure.ac
-===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -740,7 +740,7 @@ AC_SUBST(LIBRARY)
+@@ -777,7 +777,7 @@ AC_SUBST(LIBRARY)
AC_MSG_CHECKING(LIBRARY)
if test -z "$LIBRARY"
then
@@ -162,7 +146,7 @@ Index: b/configure.ac
fi
AC_MSG_RESULT($LIBRARY)
-@@ -886,8 +886,8 @@ if test $enable_shared = "yes"; then
+@@ -923,8 +923,8 @@ if test $enable_shared = "yes"; then
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
@@ -173,7 +157,7 @@ Index: b/configure.ac
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
case $ac_sys_system in
FreeBSD*)
-@@ -1030,6 +1030,12 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
+@@ -1050,6 +1050,12 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
fi],
[AC_MSG_RESULT(no)])
@@ -186,7 +170,7 @@ Index: b/configure.ac
# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
# merged with this chunk of code?
-@@ -1919,7 +1925,7 @@ then
+@@ -2129,7 +2135,7 @@ then
esac
;;
CYGWIN*) SO=.dll;;
@@ -195,11 +179,9 @@ Index: b/configure.ac
esac
else
# this might also be a termcap variable, see #610332
-Index: b/Lib/distutils/tests/test_build_ext.py
-===================================================================
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
-@@ -287,8 +287,8 @@ class BuildExtTestCase(support.TempdirMa
+@@ -295,8 +295,8 @@ class BuildExtTestCase(support.TempdirMa
finally:
os.chdir(old_wd)
self.assertTrue(os.path.exists(so_file))
@@ -210,7 +192,7 @@ Index: b/Lib/distutils/tests/test_build_ext.py
so_dir = os.path.dirname(so_file)
self.assertEqual(so_dir, other_tmp_dir)
cmd.compiler = None
-@@ -296,8 +296,7 @@ class BuildExtTestCase(support.TempdirMa
+@@ -304,8 +304,7 @@ class BuildExtTestCase(support.TempdirMa
cmd.run()
so_file = cmd.get_outputs()[0]
self.assertTrue(os.path.exists(so_file))
@@ -220,8 +202,6 @@ Index: b/Lib/distutils/tests/test_build_ext.py
so_dir = os.path.dirname(so_file)
self.assertEqual(so_dir, cmd.build_lib)
-Index: b/Lib/distutils/tests/test_build.py
-===================================================================
--- a/Lib/distutils/tests/test_build.py
+++ b/Lib/distutils/tests/test_build.py
@@ -20,10 +20,6 @@ class BuildTestCase(support.TempdirManag
diff --git a/debian/patches/disable-sem-check.diff b/debian/patches/disable-sem-check.diff
index 5040699..c5293e9 100644
--- a/debian/patches/disable-sem-check.diff
+++ b/debian/patches/disable-sem-check.diff
@@ -1,10 +1,8 @@
# DP: Assume working semaphores on Linux, don't rely on running kernel for the check.
-Index: b/configure.ac
-===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -3841,6 +3841,11 @@ int main(void) {
+@@ -4061,6 +4061,11 @@ int main(void) {
[ac_cv_posix_semaphores_enabled=no],
[ac_cv_posix_semaphores_enabled=yes])
)
@@ -16,7 +14,7 @@ Index: b/configure.ac
AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
if test $ac_cv_posix_semaphores_enabled = no
then
-@@ -3877,6 +3882,11 @@ int main(void){
+@@ -4097,6 +4102,11 @@ int main(void){
[ac_cv_broken_sem_getvalue=yes],
[ac_cv_broken_sem_getvalue=yes])
)
diff --git a/debian/patches/distutils-install-layout.diff b/debian/patches/distutils-install-layout.diff
index 5799e9f..75cbc41 100644
--- a/debian/patches/distutils-install-layout.diff
+++ b/debian/patches/distutils-install-layout.diff
@@ -2,11 +2,9 @@
# DP: - installs into $prefix/dist-packages instead of $prefix/site-packages.
# DP: - doesn't encode the python version into the egg name.
-Index: b/Doc/install/index.rst
-===================================================================
--- a/Doc/install/index.rst
+++ b/Doc/install/index.rst
-@@ -250,6 +250,8 @@ is pure Python or contains extensions ("
+@@ -255,6 +255,8 @@ is pure Python or contains extensions ("
+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
| Platform | Standard installation location | Default value | Notes |
+=================+=====================================================+==================================================+=======+
@@ -15,7 +13,7 @@ Index: b/Doc/install/index.rst
| Unix (pure) | :file:`{prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
| Unix (non-pure) | :file:`{exec-prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
-@@ -259,6 +261,14 @@ is pure Python or contains extensions ("
+@@ -264,6 +266,14 @@ is pure Python or contains extensions ("
Notes:
@@ -30,7 +28,7 @@ Index: b/Doc/install/index.rst
(1)
Most Linux distributions include Python as a standard part of the system, so
:file:`{prefix}` and :file:`{exec-prefix}` are usually both :file:`/usr` on
-@@ -443,6 +453,15 @@ them to go in :file:`/usr/local/lib/pyth
+@@ -448,6 +458,15 @@ them to go in :file:`/usr/local/lib/pyth
/usr/bin/python setup.py install --prefix=/usr/local
@@ -46,7 +44,7 @@ Index: b/Doc/install/index.rst
Another possibility is a network filesystem where the name used to write to a
remote directory is different from the name used to read it: for example, the
Python interpreter accessed as :file:`/usr/local/bin/python` might search for
-@@ -694,6 +713,17 @@ Add-on Python modules might then belong
+@@ -699,6 +718,17 @@ Add-on Python modules might then belong
import them, this directory must be added to ``sys.path``. There are several
different ways to add the directory.
@@ -64,8 +62,6 @@ Index: b/Doc/install/index.rst
The most convenient way is to add a path configuration file to a directory
that's already on Python's path, usually to the :file:`.../site-packages/`
directory. Path configuration files have an extension of :file:`.pth`, and each
-Index: b/Lib/distutils/command/install.py
-===================================================================
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -47,6 +47,20 @@ INSTALL_SCHEMES = {
@@ -150,8 +146,6 @@ Index: b/Lib/distutils/command/install.py
# finalize_unix ()
-Index: b/Lib/distutils/command/install_egg_info.py
-===================================================================
--- a/Lib/distutils/command/install_egg_info.py
+++ b/Lib/distutils/command/install_egg_info.py
@@ -14,18 +14,37 @@ class install_egg_info(Command):
@@ -197,11 +191,9 @@ Index: b/Lib/distutils/command/install_egg_info.py
self.target = os.path.join(self.install_dir, basename)
self.outputs = [self.target]
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -115,6 +115,7 @@ def get_python_lib(plat_specific=0, stan
+@@ -125,6 +125,7 @@ def get_python_lib(plat_specific=0, stan
If 'prefix' is supplied, use it instead of sys.prefix or
sys.exec_prefix -- i.e., ignore 'plat_specific'.
"""
@@ -209,7 +201,7 @@ Index: b/Lib/distutils/sysconfig.py
if prefix is None:
prefix = plat_specific and EXEC_PREFIX or PREFIX
-@@ -123,6 +124,8 @@ def get_python_lib(plat_specific=0, stan
+@@ -133,6 +134,8 @@ def get_python_lib(plat_specific=0, stan
"lib", "python" + get_python_version())
if standard_lib:
return libpython
@@ -218,8 +210,6 @@ Index: b/Lib/distutils/sysconfig.py
else:
return os.path.join(libpython, "site-packages")
-Index: b/Lib/site.py
-===================================================================
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -273,6 +273,13 @@ def addusersitepackages(known_paths):
@@ -236,8 +226,6 @@ Index: b/Lib/site.py
return known_paths
def getsitepackages():
-Index: b/Lib/sysconfig.py
-===================================================================
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -16,6 +16,26 @@ _INSTALL_SCHEMES = {
@@ -267,7 +255,7 @@ Index: b/Lib/sysconfig.py
'posix_home': {
'stdlib': '{base}/lib/python',
'platstdlib': '{base}/lib/python',
-@@ -129,7 +149,7 @@ def is_python_build():
+@@ -134,7 +154,7 @@ def is_python_build():
_PYTHON_BUILD = is_python_build()
if _PYTHON_BUILD:
@@ -276,7 +264,7 @@ Index: b/Lib/sysconfig.py
_INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include'
_INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}'
-@@ -163,8 +183,11 @@ def _expand_vars(scheme, vars):
+@@ -168,8 +188,11 @@ def _expand_vars(scheme, vars):
def _get_default_scheme():
if os.name == 'posix':
@@ -290,7 +278,7 @@ Index: b/Lib/sysconfig.py
return os.name
def _getuserbase():
-@@ -310,7 +333,7 @@ def get_makefile_filename():
+@@ -315,7 +338,7 @@ def get_makefile_filename():
"""Return the path of the Makefile."""
if _PYTHON_BUILD:
return os.path.join(_PROJECT_BASE, "Makefile")
@@ -299,7 +287,7 @@ Index: b/Lib/sysconfig.py
# Issue #22199: retain undocumented private name for compatibility
_get_makefile_filename = get_makefile_filename
-@@ -442,7 +465,7 @@ def get_config_h_filename():
+@@ -447,7 +470,7 @@ def get_config_h_filename():
else:
inc_dir = _PROJECT_BASE
else:
@@ -308,8 +296,6 @@ Index: b/Lib/sysconfig.py
return os.path.join(inc_dir, 'pyconfig.h')
def get_scheme_names():
-Index: b/Lib/test/test_import.py
-===================================================================
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -301,7 +301,7 @@ class ImportTests(unittest.TestCase):
@@ -321,13 +307,11 @@ Index: b/Lib/test/test_import.py
def test_import_by_filename(self):
path = os.path.abspath(TESTFN)
-Index: b/Lib/test/test_site.py
-===================================================================
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
-@@ -242,10 +242,13 @@ class HelperFunctionsTests(unittest.Test
+@@ -255,10 +255,13 @@ class HelperFunctionsTests(unittest.Test
elif os.sep == '/':
- # OS X non-framwework builds, Linux, FreeBSD, etc
+ # OS X, Linux, FreeBSD, etc
self.assertEqual(len(dirs), 2)
- wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
- 'site-packages')
@@ -342,8 +326,6 @@ Index: b/Lib/test/test_site.py
self.assertEqual(dirs[1], wanted)
else:
# other platforms
-Index: b/Lib/test/test_sysconfig.py
-===================================================================
--- a/Lib/test/test_sysconfig.py
+++ b/Lib/test/test_sysconfig.py
@@ -239,8 +239,8 @@ class TestSysConfig(unittest.TestCase):
@@ -357,11 +339,9 @@ Index: b/Lib/test/test_sysconfig.py
self.assertEqual(get_scheme_names(), wanted)
@unittest.skipIf(sys.platform.startswith('win'),
-Index: b/Lib/distutils/tests/test_install.py
-===================================================================
--- a/Lib/distutils/tests/test_install.py
+++ b/Lib/distutils/tests/test_install.py
-@@ -193,7 +193,7 @@ class InstallTestCase(support.TempdirMan
+@@ -194,7 +194,7 @@ class InstallTestCase(support.TempdirMan
found = [os.path.basename(line) for line in content.splitlines()]
expected = ['hello.py', 'hello.pyc', 'sayhi',
@@ -370,7 +350,7 @@ Index: b/Lib/distutils/tests/test_install.py
self.assertEqual(found, expected)
def test_record_extensions(self):
-@@ -223,7 +223,7 @@ class InstallTestCase(support.TempdirMan
+@@ -224,7 +224,7 @@ class InstallTestCase(support.TempdirMan
found = [os.path.basename(line) for line in content.splitlines()]
expected = [_make_ext_name('xx'),
@@ -379,28 +359,24 @@ Index: b/Lib/distutils/tests/test_install.py
self.assertEqual(found, expected)
def test_debug_mode(self):
-Index: b/Lib/distutils/tests/test_bdist_dumb.py
-===================================================================
--- a/Lib/distutils/tests/test_bdist_dumb.py
+++ b/Lib/distutils/tests/test_bdist_dumb.py
@@ -87,7 +87,7 @@ class BuildDumbTestCase(support.TempdirM
fp.close()
- contents = sorted(os.path.basename(fn) for fn in contents)
+ contents = sorted(filter(None, map(os.path.basename, contents)))
- wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2], 'foo.py']
+ wanted = ['foo-0.1.egg-info', 'foo.py']
if not sys.dont_write_bytecode:
wanted.append('foo.pyc')
self.assertEqual(contents, sorted(wanted))
-Index: b/Lib/pydoc.py
-===================================================================
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
-@@ -390,6 +390,7 @@ class Doc:
+@@ -392,6 +392,7 @@ class Doc:
'marshal', 'posix', 'signal', 'sys',
'thread', 'zipimport') or
(file.startswith(basedir) and
+ not file.startswith(os.path.join(basedir, 'dist-packages')) and
not file.startswith(os.path.join(basedir, 'site-packages')))) and
object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
- if docloc.startswith("http://"):
+ if docloc.startswith(("http://", "https://")):
diff --git a/debian/patches/distutils-link.diff b/debian/patches/distutils-link.diff
index 92e7129..4d95d88 100644
--- a/debian/patches/distutils-link.diff
+++ b/debian/patches/distutils-link.diff
@@ -1,8 +1,10 @@
# DP: Don't add standard library dirs to library_dirs and runtime_library_dirs.
+Index: b/Lib/distutils/unixccompiler.py
+===================================================================
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
-@@ -155,7 +155,12 @@
+@@ -157,7 +157,12 @@ class UnixCCompiler(CCompiler):
objects, output_dir = self._fix_object_args(objects, output_dir)
libraries, library_dirs, runtime_library_dirs = \
self._fix_lib_args(libraries, library_dirs, runtime_library_dirs)
diff --git a/debian/patches/distutils-sysconfig.diff b/debian/patches/distutils-sysconfig.diff
index 88b77cb..d30e53c 100644
--- a/debian/patches/distutils-sysconfig.diff
+++ b/debian/patches/distutils-sysconfig.diff
@@ -1,28 +1,26 @@
# DP: Allow setting BASECFLAGS, OPT and EXTRA_LDFLAGS (like, CC, CXX, CPP,
# DP: CFLAGS, CPPFLAGS, CCSHARED, LDSHARED) from the environment.
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -174,10 +174,12 @@ def customize_compiler(compiler):
+@@ -184,10 +184,12 @@ def customize_compiler(compiler):
_osx_support.customize_compiler(_config_vars)
_config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True'
-- (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
-- get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
+- (cc, cxx, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
+- get_config_vars('CC', 'CXX', 'CFLAGS',
- 'CCSHARED', 'LDSHARED', 'SO', 'AR',
- 'ARFLAGS')
-+ (cc, cxx, opt, cflags, extra_cflags, basecflags,
++ (cc, cxx, cflags, extra_cflags, basecflags,
+ ccshared, ldshared, so_ext, ar, ar_flags,
+ configure_cppflags, configure_cflags, configure_ldflags) = \
-+ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'EXTRA_CFLAGS', 'BASECFLAGS',
++ get_config_vars('CC', 'CXX', 'CFLAGS', 'EXTRA_CFLAGS', 'BASECFLAGS',
+ 'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS',
+ 'CONFIGURE_CPPFLAGS', 'CONFIGURE_CFLAGS', 'CONFIGURE_LDFLAGS')
if 'CC' in os.environ:
newcc = os.environ['CC']
-@@ -198,13 +200,27 @@ def customize_compiler(compiler):
+@@ -208,13 +210,24 @@ def customize_compiler(compiler):
cpp = cc + " -E" # not always
if 'LDFLAGS' in os.environ:
ldshared = ldshared + ' ' + os.environ['LDFLAGS']
@@ -30,15 +28,12 @@ Index: b/Lib/distutils/sysconfig.py
+ ldshared = ldshared + ' ' + configure_ldflags
+ if 'BASECFLAGS' in os.environ:
+ basecflags = os.environ['BASECFLAGS']
-+ if 'OPT' in os.environ:
-+ opt = os.environ['OPT']
-+ cflags = ' '.join(str(x) for x in (basecflags, opt, extra_cflags) if x)
if 'CFLAGS' in os.environ:
-- cflags = opt + ' ' + os.environ['CFLAGS']
-+ cflags = ' '.join(str(x) for x in (opt, basecflags, os.environ['CFLAGS'], extra_cflags) if x)
+- cflags = cflags + ' ' + os.environ['CFLAGS']
++ cflags = ' '.join(str(x) for x in (basecflags, os.environ['CFLAGS'], extra_cflags) if x)
ldshared = ldshared + ' ' + os.environ['CFLAGS']
+ elif configure_cflags:
-+ cflags = ' '.join(str(x) for x in (opt, basecflags, configure_cflags, extra_cflags) if x)
++ cflags = ' '.join(str(x) for x in (basecflags, configure_cflags, extra_cflags) if x)
+ ldshared = ldshared + ' ' + configure_cflags
if 'CPPFLAGS' in os.environ:
cpp = cpp + ' ' + os.environ['CPPFLAGS']
@@ -51,3 +46,12 @@ Index: b/Lib/distutils/sysconfig.py
if 'AR' in os.environ:
ar = os.environ['AR']
if 'ARFLAGS' in os.environ:
+@@ -228,7 +241,7 @@ def customize_compiler(compiler):
+ compiler=cc_cmd,
+ compiler_so=cc_cmd + ' ' + ccshared,
+ compiler_cxx=cxx,
+- linker_so=ldshared,
++ linker_so=ldshared + ' ' + ccshared,
+ linker_exe=cc,
+ archiver=archiver)
+
diff --git a/debian/patches/do-not-italicize-punctuation.patch b/debian/patches/do-not-italicize-punctuation.patch
deleted file mode 100644
index 55412b5..0000000
--- a/debian/patches/do-not-italicize-punctuation.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/Misc/python.man
-+++ b/Misc/python.man
-@@ -290,9 +290,9 @@
- from that file;
- when called with
- .B \-c
--.I command,
-+.IR command ,
- it executes the Python statement(s) given as
--.I command.
-+.IR command .
- Here
- .I command
- may contain multiple statements separated by newlines.
-@@ -302,7 +302,7 @@
- .PP
- If available, the script name and additional arguments thereafter are
- passed to the script in the Python variable
--.I sys.argv ,
-+.IR sys.argv ,
- which is a list of strings (you must first
- .I import sys
- to be able to access it).
-@@ -316,14 +316,14 @@
- .I '-c'.
- Note that options interpreted by the Python interpreter itself
- are not placed in
--.I sys.argv.
-+.IR sys.argv .
- .PP
- In interactive mode, the primary prompt is `>>>'; the second prompt
- (which appears when a command is not complete) is `...'.
- The prompts can be changed by assignment to
- .I sys.ps1
- or
--.I sys.ps2.
-+.IR sys.ps2 .
- The interpreter quits when it reads an EOF at a prompt.
- When an unhandled exception occurs, a stack trace is printed and
- control returns to the primary prompt; in non-interactive mode, the
-@@ -382,7 +382,7 @@
- inserted in the path in front of $PYTHONPATH.
- The search path can be manipulated from within a Python program as the
- variable
--.I sys.path .
-+.IR sys.path .
- .IP PYTHONSTARTUP
- If this is the name of a readable file, the Python commands in that
- file are executed before the first prompt is displayed in interactive
diff --git a/debian/patches/enable-fpectl.diff b/debian/patches/enable-fpectl.diff
index 0472122..5cbe86e 100644
--- a/debian/patches/enable-fpectl.diff
+++ b/debian/patches/enable-fpectl.diff
@@ -4,7 +4,7 @@ Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -1379,6 +1379,9 @@ class PyBuildExt(build_ext):
+@@ -1399,6 +1399,9 @@ class PyBuildExt(build_ext):
else:
missing.append('_curses_panel')
diff --git a/debian/patches/enable-sqlite-loadext.diff b/debian/patches/enable-sqlite-loadext.diff
index bbebabc..2fd7c3c 100644
--- a/debian/patches/enable-sqlite-loadext.diff
+++ b/debian/patches/enable-sqlite-loadext.diff
@@ -1,10 +1,8 @@
# DP: Allow loading of extensions in the sqlite module
-Index: b/setup.py
-===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -1180,7 +1180,7 @@ class PyBuildExt(build_ext):
+@@ -1246,7 +1246,7 @@ class PyBuildExt(build_ext):
sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
# Comment this out if you want the sqlite3 module to be able to load extensions.
diff --git a/debian/patches/ensurepip-disabled.diff b/debian/patches/ensurepip-disabled.diff
index b762994..7db355b 100644
--- a/debian/patches/ensurepip-disabled.diff
+++ b/debian/patches/ensurepip-disabled.diff
@@ -1,8 +1,10 @@
# DP: Disable ensurepip in Debian for now.
+Index: b/Lib/ensurepip/__init__.py
+===================================================================
--- a/Lib/ensurepip/__init__.py
+++ b/Lib/ensurepip/__init__.py
-@@ -12,6 +12,21 @@
+@@ -12,6 +12,21 @@ import tempfile
__all__ = ["version", "bootstrap"]
@@ -22,9 +24,9 @@
+''')
+ sys.exit(1)
- # pip currently requires ssl support, so we try to provide a nicer
- # error message when that is missing (http://bugs.python.org/issue19744)
-@@ -47,6 +62,7 @@
+ _PROJECTS = [
+ ("setuptools"),
+@@ -33,6 +48,7 @@ def version():
"""
Returns a string specifying the bundled version of pip.
"""
@@ -32,7 +34,7 @@
whl_name = 'pip'
wheel_names = glob.glob('/usr/share/python-wheels/%s-*.whl' % whl_name)
if len(wheel_names) == 1:
-@@ -75,6 +91,7 @@
+@@ -76,6 +92,7 @@ def _bootstrap(root=None, upgrade=False,
Note that calling this function will alter both sys.path and os.environ.
"""
diff --git a/debian/patches/ensurepip-wheels.diff b/debian/patches/ensurepip-wheels.diff
index de47ae6..98ca065 100644
--- a/debian/patches/ensurepip-wheels.diff
+++ b/debian/patches/ensurepip-wheels.diff
@@ -1,7 +1,5 @@
# DP: Let ensurepip use the system wheels, not the ones from the python source.
-Index: b/Lib/ensurepip/__init__.py
-===================================================================
--- a/Lib/ensurepip/__init__.py
+++ b/Lib/ensurepip/__init__.py
@@ -1,6 +1,7 @@
@@ -16,29 +14,19 @@ Index: b/Lib/ensurepip/__init__.py
__all__ = ["version", "bootstrap"]
--_SETUPTOOLS_VERSION = "7.0"
+-_SETUPTOOLS_VERSION = "41.2.0"
-
--_PIP_VERSION = "1.5.6"
+-_PIP_VERSION = "19.2.3"
-
- # pip currently requires ssl support, so we try to provide a nicer
- # error message when that is missing (http://bugs.python.org/issue19744)
--_MISSING_SSL_MESSAGE = ("pip {} requires SSL/TLS".format(_PIP_VERSION))
-+_MISSING_SSL_MESSAGE = ("pip requires SSL/TLS")
- try:
- import ssl
- except ImportError:
-@@ -31,8 +28,8 @@ else:
- pass
-
_PROJECTS = [
- ("setuptools", _SETUPTOOLS_VERSION),
- ("pip", _PIP_VERSION),
-+ "setuptools",
-+ "pip",
++ ("setuptools"),
++ ("pip"),
]
-@@ -50,7 +47,11 @@ def version():
+@@ -36,7 +33,11 @@ def version():
"""
Returns a string specifying the bundled version of pip.
"""
@@ -51,7 +39,7 @@ Index: b/Lib/ensurepip/__init__.py
def _disable_pip_configuration_settings():
-@@ -93,21 +94,53 @@ def bootstrap(root=None, upgrade=False,
+@@ -93,21 +94,53 @@ def _bootstrap(root=None, upgrade=False,
# omit pip and easy_install
os.environ["ENSUREPIP_OPTIONS"] = "install"
@@ -115,16 +103,16 @@ Index: b/Lib/ensurepip/__init__.py
# Construct the arguments to be passed to the pip command
args = ["install", "--no-index", "--find-links", tmpdir]
-@@ -120,7 +153,7 @@ def bootstrap(root=None, upgrade=False,
+@@ -120,7 +153,7 @@ def _bootstrap(root=None, upgrade=False,
if verbosity:
args += ["-" + "v" * verbosity]
-- _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
-+ _run_pip(args + _PROJECTS, additional_paths)
+- return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
++ return _run_pip(args + _PROJECTS, additional_paths)
finally:
shutil.rmtree(tmpdir, ignore_errors=True)
-@@ -137,7 +170,8 @@ def _uninstall_helper(verbosity=0):
+@@ -136,7 +169,8 @@ def _uninstall_helper(verbosity=0):
return
# If the pip version doesn't match the bundled one, leave it alone
@@ -134,12 +122,12 @@ Index: b/Lib/ensurepip/__init__.py
msg = ("ensurepip will only uninstall a matching version "
"({!r} installed, {!r} bundled)")
print(msg.format(pip.__version__, _PIP_VERSION), file=sys.stderr)
-@@ -151,7 +185,7 @@ def _uninstall_helper(verbosity=0):
+@@ -149,7 +183,7 @@ def _uninstall_helper(verbosity=0):
if verbosity:
args += ["-" + "v" * verbosity]
-- _run_pip(args + [p[0] for p in reversed(_PROJECTS)])
-+ _run_pip(args + reversed(_PROJECTS))
+- return _run_pip(args + [p[0] for p in reversed(_PROJECTS)])
++ return _run_pip(args + reversed(_PROJECTS))
def _main(argv=None):
diff --git a/debian/patches/ext-no-libpython-link.diff b/debian/patches/ext-no-libpython-link.diff
index 0ccd370..3ef5c1a 100644
--- a/debian/patches/ext-no-libpython-link.diff
+++ b/debian/patches/ext-no-libpython-link.diff
@@ -4,7 +4,7 @@ Index: b/Lib/distutils/command/build_ext.py
===================================================================
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
-@@ -234,7 +234,7 @@ class build_ext (Command):
+@@ -237,7 +237,7 @@ class build_ext (Command):
# For building extensions with a shared Python library,
# Python's library directory must be appended to library_dirs
# See Issues: #1600860, #4366
@@ -13,7 +13,7 @@ Index: b/Lib/distutils/command/build_ext.py
if not sysconfig.python_build:
# building third party extensions
self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
-@@ -755,7 +755,7 @@ class build_ext (Command):
+@@ -758,7 +758,7 @@ class build_ext (Command):
return ext.libraries
else:
from distutils import sysconfig
diff --git a/debian/patches/fix-sslv3-test.diff b/debian/patches/fix-sslv3-test.diff
new file mode 100644
index 0000000..29b2e7e
--- /dev/null
+++ b/debian/patches/fix-sslv3-test.diff
@@ -0,0 +1,18 @@
+Description: properly handle Ubuntu's openssl having OP_NO_SSLv3 forced on by default
+Author: Marc Deslauriers <marc.deslauriers@canonical.com>
+Forwarded: yes, http://bugs.python.org/issue25724
+
+Index: b/Lib/test/test_ssl.py
+===================================================================
+--- a/Lib/test/test_ssl.py
++++ b/Lib/test/test_ssl.py
+@@ -777,7 +777,8 @@ class ContextTests(unittest.TestCase):
+ ctx.options = (ctx.options & ~ssl.OP_NO_TLSv1)
+ self.assertEqual(default, ctx.options)
+ ctx.options = 0
+- self.assertEqual(0, ctx.options)
++ # Ubuntu has OP_NO_SSLv3 forced on by default
++ self.assertEqual(0, ctx.options & ~ssl.OP_NO_SSLv3)
+ else:
+ with self.assertRaises(ValueError):
+ ctx.options = 0
diff --git a/debian/patches/git-updates.diff b/debian/patches/git-updates.diff
new file mode 100644
index 0000000..8fcdf45
--- /dev/null
+++ b/debian/patches/git-updates.diff
@@ -0,0 +1,4 @@
+# DP: git updates of the 2.7 release branch (until 2019-09-04).
+
+# git diff 413a49145e35c7a2d3a7de27c5a1828449c9b2e5 0229b56d8c0cb65b8ad789e69dcd281fd92a6d96 | filterdiff -x ?/.hgignore -x ?/.hgeol -x ?/.hgtags -x ?/.hgtouch -x ?/.gitignore -x ?/.gitattributes -x '?/.github/*' -x '?/.git*' -x ?/.codecov.yml -x ?/.travis.yml -x ?/configure --remove-timestamps
+
diff --git a/debian/patches/hg-updates.diff b/debian/patches/hg-updates.diff
deleted file mode 100644
index b4b9991..0000000
--- a/debian/patches/hg-updates.diff
+++ /dev/null
@@ -1,4 +0,0 @@
-# DP: hg updates of the 2.7 release branch (until 2014-12-09).
-
-# hg diff -r v2.7.9rc1 | filterdiff --exclude=.*ignore --exclude=.hg* --remove-timestamps
-
diff --git a/debian/patches/hotshot-import.diff b/debian/patches/hotshot-import.diff
index 80d6407..df480cb 100644
--- a/debian/patches/hotshot-import.diff
+++ b/debian/patches/hotshot-import.diff
@@ -1,5 +1,7 @@
# DP: hotshot: Check for the availability of the profile and pstats modules.
+Index: b/Lib/hotshot/stats.py
+===================================================================
--- a/Lib/hotshot/stats.py
+++ b/Lib/hotshot/stats.py
@@ -1,7 +1,10 @@
diff --git a/debian/patches/hurd-disable-nonworking-constants.diff b/debian/patches/hurd-disable-nonworking-constants.diff
index baf33f6..595c22d 100644
--- a/debian/patches/hurd-disable-nonworking-constants.diff
+++ b/debian/patches/hurd-disable-nonworking-constants.diff
@@ -1,11 +1,9 @@
# DP: Comment out constant exposed on the API which are not implemented on
# DP: GNU/Hurd. They would not work at runtime anyway.
-Index: b/Modules/posixmodule.c
-===================================================================
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
-@@ -9248,12 +9248,14 @@ all_ins(PyObject *d)
+@@ -9320,12 +9320,14 @@ all_ins(PyObject *d)
#ifdef O_LARGEFILE
if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
#endif
@@ -20,11 +18,9 @@ Index: b/Modules/posixmodule.c
/* MS Windows */
#ifdef O_NOINHERIT
-Index: b/Modules/socketmodule.c
-===================================================================
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
-@@ -4903,9 +4903,11 @@ init_socket(void)
+@@ -4948,9 +4948,11 @@ init_socket(void)
#ifdef SO_OOBINLINE
PyModule_AddIntConstant(m, "SO_OOBINLINE", SO_OOBINLINE);
#endif
diff --git a/debian/patches/installed-testsuite.diff b/debian/patches/installed-testsuite.diff
index 1cde18d..23f2e6e 100644
--- a/debian/patches/installed-testsuite.diff
+++ b/debian/patches/installed-testsuite.diff
@@ -7,7 +7,7 @@ Index: b/Lib/distutils/tests/test_build_ext.py
===================================================================
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
-@@ -83,27 +83,6 @@ class BuildExtTestCase(support.TempdirMa
+@@ -84,27 +84,6 @@ class BuildExtTestCase(support.TempdirMa
self.assertIsInstance(xx.Null(), xx.Null)
self.assertIsInstance(xx.Str(), xx.Str)
diff --git a/debian/patches/issue27239.diff b/debian/patches/issue27239.diff
new file mode 100644
index 0000000..fd29a54
--- /dev/null
+++ b/debian/patches/issue27239.diff
@@ -0,0 +1,13 @@
+Index: b/Lib/idlelib/macosxSupport.py
+===================================================================
+--- a/Lib/idlelib/macosxSupport.py
++++ b/Lib/idlelib/macosxSupport.py
+@@ -18,7 +18,7 @@ def isCarbonAquaTk(root):
+ DeprecationWarning, stacklevel=2)
+ return isCarbonTk()
+
+-_tk_type = None
++_tk_type = "other"
+
+ def _initializeTkVariantTests(root):
+ """
diff --git a/debian/patches/issue9189.diff b/debian/patches/issue9189.diff
index ff2f98c..cfa4916 100644
--- a/debian/patches/issue9189.diff
+++ b/debian/patches/issue9189.diff
@@ -1,8 +1,6 @@
-Index: b/Lib/sysconfig.py
-===================================================================
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
-@@ -231,11 +231,19 @@ def _parse_makefile(filename, vars=None)
+@@ -236,11 +236,19 @@ def _parse_makefile(filename, vars=None)
done[n] = v
# do variable interpolation here
@@ -25,7 +23,7 @@ Index: b/Lib/sysconfig.py
n = m.group(1)
found = True
if n in done:
-@@ -246,23 +254,48 @@ def _parse_makefile(filename, vars=None)
+@@ -251,23 +259,48 @@ def _parse_makefile(filename, vars=None)
elif n in os.environ:
# do it like make: fall back to environment
item = os.environ[n]
@@ -78,11 +76,9 @@ Index: b/Lib/sysconfig.py
# strip spurious spaces
for k, v in done.items():
if isinstance(v, str):
-Index: b/Makefile.pre.in
-===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -68,12 +68,18 @@ MAKESETUP= $(srcdir)/Modules/makese
+@@ -72,12 +72,18 @@ MAKESETUP= $(srcdir)/Modules/makese
# Compiler options
OPT= @OPT@
BASECFLAGS= @BASECFLAGS@
@@ -104,7 +100,7 @@ Index: b/Makefile.pre.in
LDLAST= @LDLAST@
SGI_ABI= @SGI_ABI@
CCSHARED= @CCSHARED@
-@@ -82,7 +88,7 @@ ARFLAGS= @ARFLAGS@
+@@ -86,7 +92,7 @@ ARFLAGS= @ARFLAGS@
# Extra C flags added for building the interpreter object files.
CFLAGSFORSHARED=@CFLAGSFORSHARED@
# C flags used for building the interpreter object files
@@ -113,7 +109,7 @@ Index: b/Makefile.pre.in
# Machine-dependent subdirectories
-@@ -437,7 +443,7 @@ coverage:
+@@ -487,7 +493,7 @@ coverage-report: regen-grammar
# Build the interpreter
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
@@ -122,7 +118,16 @@ Index: b/Makefile.pre.in
Modules/python.o \
$(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
-@@ -469,7 +475,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.tx
+@@ -512,7 +518,7 @@ pybuilddir.txt: $(BUILDPYTHON)
+
+ # This is shared by the math and cmath modules
+ Modules/_math.o: Modules/_math.c Modules/_math.h
+- $(CC) -c $(CCSHARED) $(PY_CFLAGS) -o $@ $<
++ $(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $<
+
+ # Build the shared modules
+ # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
+@@ -523,7 +529,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.tx
*\ -s*|s*) quiet="-q";; \
*) quiet="";; \
esac; \
@@ -131,16 +136,16 @@ Index: b/Makefile.pre.in
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
-@@ -487,18 +493,18 @@ $(LIBRARY): $(LIBRARY_OBJS)
+@@ -541,18 +547,18 @@ $(LIBRARY): $(LIBRARY_OBJS)
libpython$(VERSION).so: $(LIBRARY_OBJS)
if test $(INSTSONAME) != $(LDLIBRARY); then \
- $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
-+ $(BLDSHARED) $(PY_LDFLAGS) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
++ $(BLDSHARED) $(PY_LDFLAGS) $(CCSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
$(LN) -f $(INSTSONAME) $@; \
else \
- $(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
-+ $(BLDSHARED) $(PY_LDFLAGS) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
++ $(BLDSHARED) $(PY_LDFLAGS) $(CCSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
fi
libpython$(VERSION).dylib: $(LIBRARY_OBJS)
@@ -154,7 +159,7 @@ Index: b/Makefile.pre.in
# Copy up the gdb python hooks into a position where they can be automatically
# loaded by gdb during Lib/test/test_gdb.py
-@@ -537,7 +543,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION
+@@ -591,7 +597,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION
# for a shared core library; otherwise, this rule is a noop.
$(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS)
if test -n "$(DLLLIBRARY)"; then \
@@ -163,16 +168,15 @@ Index: b/Makefile.pre.in
$(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \
else true; \
fi
-@@ -581,7 +587,7 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+@@ -641,14 +647,14 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
$(SIGNAL_OBJS) \
$(MODOBJS) \
$(srcdir)/Modules/getbuildinfo.c
- $(CC) -c $(PY_CFLAGS) \
+ $(CC) -c $(PY_CORE_CFLAGS) \
- -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" \
- -DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \
- -DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \
-@@ -589,7 +595,7 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+ -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+ -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
-o $@ $(srcdir)/Modules/getbuildinfo.c
Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
@@ -181,7 +185,7 @@ Index: b/Makefile.pre.in
-DPREFIX='"$(prefix)"' \
-DEXEC_PREFIX='"$(exec_prefix)"' \
-DVERSION='"$(VERSION)"' \
-@@ -597,7 +603,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
+@@ -656,7 +662,7 @@ Modules/getpath.o: $(srcdir)/Modules/get
-o $@ $(srcdir)/Modules/getpath.c
Modules/python.o: $(srcdir)/Modules/python.c
@@ -190,17 +194,17 @@ Index: b/Makefile.pre.in
Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
-@@ -614,7 +620,7 @@ $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INP
- touch $(GRAMMAR_C)
+@@ -665,7 +671,7 @@ Modules/grpmodule.o: $(srcdir)/Modules/g
+ Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
$(PGEN): $(PGENOBJS)
- $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+ $(CC) $(OPT) $(PY_LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
- Parser/grammar.o: $(srcdir)/Parser/grammar.c \
- $(srcdir)/Include/token.h \
-@@ -636,10 +642,10 @@ $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
- Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
+ .PHONY: regen-grammar
+ regen-grammar: $(PGEN)
+@@ -701,10 +707,10 @@ regen-ast:
+ Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
Python/getplatform.o: $(srcdir)/Python/getplatform.c
- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
@@ -212,7 +216,7 @@ Index: b/Makefile.pre.in
Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \
$(srcdir)/Objects/unicodetype_db.h
-@@ -1244,7 +1250,7 @@ config.status: $(srcdir)/configure
+@@ -1362,7 +1368,7 @@ config.status: $(srcdir)/configure
# Some make's put the object file in the current directory
.c.o:
@@ -221,8 +225,6 @@ Index: b/Makefile.pre.in
# Run reindent on the library
reindent:
-Index: b/Modules/makesetup
-===================================================================
--- a/Modules/makesetup
+++ b/Modules/makesetup
@@ -219,7 +219,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
@@ -234,11 +236,9 @@ Index: b/Modules/makesetup
esac
rule="$obj: $src; $cc $cpps -c $src -o $obj"
echo "$rule" >>$rulesf
-Index: b/configure.ac
-===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -610,14 +610,13 @@ if test "$MACHDEP" = "irix6" && test "$C
+@@ -647,14 +647,13 @@ if test "$MACHDEP" = "irix6" && test "$C
fi
fi
@@ -259,11 +259,9 @@ Index: b/configure.ac
AC_SUBST(CXX)
AC_SUBST(MAINCC)
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -320,11 +320,19 @@ def parse_makefile(fn, g=None):
+@@ -330,11 +330,19 @@ def parse_makefile(fn, g=None):
done[n] = v
# do variable interpolation here
@@ -286,7 +284,7 @@ Index: b/Lib/distutils/sysconfig.py
n = m.group(1)
found = True
if n in done:
-@@ -335,25 +343,47 @@ def parse_makefile(fn, g=None):
+@@ -345,25 +353,47 @@ def parse_makefile(fn, g=None):
elif n in os.environ:
# do it like make: fall back to environment
item = os.environ[n]
diff --git a/debian/patches/langpack-gettext.diff b/debian/patches/langpack-gettext.diff
index 658000c..a5d1dfe 100644
--- a/debian/patches/langpack-gettext.diff
+++ b/debian/patches/langpack-gettext.diff
@@ -3,9 +3,11 @@
# DP: prefer the newer one
# DP: Upstream status: Ubuntu-Specific
+Index: b/Lib/gettext.py
+===================================================================
--- a/Lib/gettext.py
+++ b/Lib/gettext.py
-@@ -446,11 +446,26 @@
+@@ -522,11 +522,26 @@ def find(domain, localedir=None, languag
if lang == 'C':
break
mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain)
diff --git a/debian/patches/lib2to3-no-pickled-grammar.diff b/debian/patches/lib2to3-no-pickled-grammar.diff
index cdfc4ea..310f863 100644
--- a/debian/patches/lib2to3-no-pickled-grammar.diff
+++ b/debian/patches/lib2to3-no-pickled-grammar.diff
@@ -1,6 +1,8 @@
+Index: b/Lib/lib2to3/pgen2/driver.py
+===================================================================
--- a/Lib/lib2to3/pgen2/driver.py
+++ b/Lib/lib2to3/pgen2/driver.py
-@@ -119,7 +119,10 @@
+@@ -123,7 +123,10 @@ def load_grammar(gt="Grammar.txt", gp=No
if force or not _newer(gp, gt):
logger.info("Generating grammar tables from %s", gt)
g = pgen.generate_grammar(gt)
@@ -12,3 +14,146 @@
logger.info("Writing grammar tables to %s", gp)
try:
g.dump(gp)
+Index: b/Lib/lib2to3/tests/test_main.py
+===================================================================
+--- a/Lib/lib2to3/tests/test_main.py
++++ b/Lib/lib2to3/tests/test_main.py
+@@ -82,68 +82,6 @@ class TestMain(unittest.TestCase):
+ trivial.write("print 'I need a simple conversion.'")
+ self.setup_files.append("trivial.py")
+
+- def test_filename_changing_on_output_single_dir(self):
+- """2to3 a single directory with a new output dir and suffix."""
+- self.setup_test_source_trees()
+- out = StringIO.StringIO()
+- err = StringIO.StringIO()
+- suffix = "TEST"
+- ret = self.run_2to3_capture(
+- ["-n", "--add-suffix", suffix, "--write-unchanged-files",
+- "--no-diffs", "--output-dir",
+- self.py3_dest_dir, self.py2_src_dir],
+- StringIO.StringIO(""), out, err)
+- self.assertEqual(ret, 0)
+- stderr = err.getvalue()
+- self.assertIn(" implies -w.", stderr)
+- self.assertIn(
+- "Output in %r will mirror the input directory %r layout" % (
+- self.py3_dest_dir, self.py2_src_dir), stderr)
+- self.assertEqual(set(name+suffix for name in self.setup_files),
+- set(os.listdir(self.py3_dest_dir)))
+- for name in self.setup_files:
+- self.assertIn("Writing converted %s to %s" % (
+- os.path.join(self.py2_src_dir, name),
+- os.path.join(self.py3_dest_dir, name+suffix)), stderr)
+- sep = re.escape(os.sep)
+- self.assertRegexpMatches(
+- stderr, r"No changes to .*/__init__\.py".replace("/", sep))
+- self.assertNotRegex(
+- stderr, r"No changes to .*/trivial\.py".replace("/", sep))
+-
+- def test_filename_changing_on_output_two_files(self):
+- """2to3 two files in one directory with a new output dir."""
+- self.setup_test_source_trees()
+- err = StringIO.StringIO()
+- py2_files = [self.trivial_py2_file, self.init_py2_file]
+- expected_files = set(os.path.basename(name) for name in py2_files)
+- ret = self.run_2to3_capture(
+- ["-n", "-w", "--write-unchanged-files",
+- "--no-diffs", "--output-dir", self.py3_dest_dir] + py2_files,
+- StringIO.StringIO(""), StringIO.StringIO(), err)
+- self.assertEqual(ret, 0)
+- stderr = err.getvalue()
+- self.assertIn(
+- "Output in %r will mirror the input directory %r layout" % (
+- self.py3_dest_dir, self.py2_src_dir), stderr)
+- self.assertEqual(expected_files, set(os.listdir(self.py3_dest_dir)))
+-
+- def test_filename_changing_on_output_single_file(self):
+- """2to3 a single file with a new output dir."""
+- self.setup_test_source_trees()
+- err = StringIO.StringIO()
+- ret = self.run_2to3_capture(
+- ["-n", "-w", "--no-diffs", "--output-dir", self.py3_dest_dir,
+- self.trivial_py2_file],
+- StringIO.StringIO(""), StringIO.StringIO(), err)
+- self.assertEqual(ret, 0)
+- stderr = err.getvalue()
+- self.assertIn(
+- "Output in %r will mirror the input directory %r layout" % (
+- self.py3_dest_dir, self.py2_src_dir), stderr)
+- self.assertEqual(set([os.path.basename(self.trivial_py2_file)]),
+- set(os.listdir(self.py3_dest_dir)))
+-
+
+ if __name__ == '__main__':
+ unittest.main()
+Index: b/Lib/lib2to3/tests/test_parser.py
+===================================================================
+--- a/Lib/lib2to3/tests/test_parser.py
++++ b/Lib/lib2to3/tests/test_parser.py
+@@ -41,65 +41,6 @@ class TestPgen2Caching(support.TestCase)
+ def test_load_grammar_from_txt_file(self):
+ pgen2_driver.load_grammar(support.grammar_path, save=False, force=True)
+
+- def test_load_grammar_from_pickle(self):
+- # Make a copy of the grammar file in a temp directory we are
+- # guaranteed to be able to write to.
+- tmpdir = tempfile.mkdtemp()
+- try:
+- grammar_copy = os.path.join(
+- tmpdir, os.path.basename(support.grammar_path))
+- shutil.copy(support.grammar_path, grammar_copy)
+- pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
+-
+- pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
+- self.assertTrue(os.path.exists(pickle_name))
+-
+- os.unlink(grammar_copy) # Only the pickle remains...
+- pgen2_driver.load_grammar(grammar_copy, save=False, force=False)
+- finally:
+- shutil.rmtree(tmpdir)
+-
+- @unittest.skipIf(sys.executable is None, 'sys.executable required')
+- def test_load_grammar_from_subprocess(self):
+- tmpdir = tempfile.mkdtemp()
+- tmpsubdir = os.path.join(tmpdir, 'subdir')
+- try:
+- os.mkdir(tmpsubdir)
+- grammar_base = os.path.basename(support.grammar_path)
+- grammar_copy = os.path.join(tmpdir, grammar_base)
+- grammar_sub_copy = os.path.join(tmpsubdir, grammar_base)
+- shutil.copy(support.grammar_path, grammar_copy)
+- shutil.copy(support.grammar_path, grammar_sub_copy)
+- pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
+- pickle_sub_name = pgen2_driver._generate_pickle_name(
+- grammar_sub_copy)
+- self.assertNotEqual(pickle_name, pickle_sub_name)
+-
+- # Generate a pickle file from this process.
+- pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
+- self.assertTrue(os.path.exists(pickle_name))
+-
+- # Generate a new pickle file in a subprocess with a most likely
+- # different hash randomization seed.
+- sub_env = dict(os.environ)
+- sub_env['PYTHONHASHSEED'] = 'random'
+- subprocess.check_call(
+- [sys.executable, '-c', """
+-from lib2to3.pgen2 import driver as pgen2_driver
+-pgen2_driver.load_grammar(%r, save=True, force=True)
+- """ % (grammar_sub_copy,)],
+- env=sub_env)
+- self.assertTrue(os.path.exists(pickle_sub_name))
+-
+- with open(pickle_name, 'rb') as pickle_f_1, \
+- open(pickle_sub_name, 'rb') as pickle_f_2:
+- self.assertEqual(
+- pickle_f_1.read(), pickle_f_2.read(),
+- msg='Grammar caches generated using different hash seeds'
+- ' were not identical.')
+- finally:
+- shutil.rmtree(tmpdir)
+-
+ def test_load_packaged_grammar(self):
+ modname = __name__ + '.load_test'
+ class MyLoader:
diff --git a/debian/patches/libffi-shared.diff b/debian/patches/libffi-shared.diff
index 1bfeac7..2907d90 100644
--- a/debian/patches/libffi-shared.diff
+++ b/debian/patches/libffi-shared.diff
@@ -1,9 +1,7 @@
-Index: b/setup.py
-===================================================================
--- a/setup.py
+++ b/setup.py
-@@ -2131,7 +2131,7 @@ class PyBuildExt(build_ext):
- break
+@@ -2191,7 +2191,7 @@ class PyBuildExt(build_ext):
+ 'ffi_wrapper_h'.format(ffi_h))
ffi_lib = None
if ffi_inc is not None:
- for lib_name in ('ffi_convenience', 'ffi_pic', 'ffi'):
diff --git a/debian/patches/link-opt.diff b/debian/patches/link-opt.diff
index 9d0d6a9..bc277fb 100644
--- a/debian/patches/link-opt.diff
+++ b/debian/patches/link-opt.diff
@@ -4,7 +4,7 @@ Index: b/configure.ac
===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -2033,8 +2033,8 @@ then
+@@ -2240,8 +2240,8 @@ then
fi
;;
Linux*|GNU*|QNX*)
@@ -15,7 +15,7 @@ Index: b/configure.ac
BSD/OS*/4*)
LDSHARED="gcc -shared"
LDCXXSHARED="g++ -shared";;
-@@ -2136,7 +2136,7 @@ then
+@@ -2343,7 +2343,7 @@ then
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
diff --git a/debian/patches/link-system-expat.diff b/debian/patches/link-system-expat.diff
index b4c2928..57ff2b8 100644
--- a/debian/patches/link-system-expat.diff
+++ b/debian/patches/link-system-expat.diff
@@ -2,7 +2,7 @@
--- a/Modules/Setup.dist
+++ b/Modules/Setup.dist
-@@ -181,7 +181,7 @@
+@@ -181,7 +181,7 @@ GLHACK=-Dclear=__GLclear
#itertools itertoolsmodule.c # Functions creating iterators for efficient looping
#strop stropmodule.c # String manipulations
#_functools _functoolsmodule.c # Tools for working with functions and callable objects
@@ -11,11 +11,11 @@
#_pickle _pickle.c # pickle accelerator
#datetime datetimemodule.c # date/time type
#_bisect _bisectmodule.c # Bisection algorithms
-@@ -475,7 +475,7 @@
- #
+@@ -467,7 +467,7 @@ GLHACK=-Dclear=__GLclear
+ # Interface to the Expat XML parser
# More information on Expat can be found at www.libexpat.org.
#
--#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI
+-#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI
+#pyexpat pyexpat.c -lexpat
diff --git a/debian/patches/link-whole-archive.diff b/debian/patches/link-whole-archive.diff
index edf1d8a..965b71e 100644
--- a/debian/patches/link-whole-archive.diff
+++ b/debian/patches/link-whole-archive.diff
@@ -1,8 +1,10 @@
# DP: Link libpython with --whole-archive.
+Index: b/Makefile.pre.in
+===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -447,7 +447,7 @@
+@@ -497,7 +497,7 @@ coverage-report: regen-grammar
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ \
Modules/python.o \
diff --git a/debian/patches/local-doc-references.diff b/debian/patches/local-doc-references.diff
new file mode 100644
index 0000000..eb3978c
--- /dev/null
+++ b/debian/patches/local-doc-references.diff
@@ -0,0 +1,27 @@
+Index: b/Doc/tools/templates/layout.html
+===================================================================
+--- a/Doc/tools/templates/layout.html
++++ b/Doc/tools/templates/layout.html
+@@ -17,7 +17,7 @@
+ {% block relbar2 %} {% if builder != 'qthelp' %} {{ relbar() }} {% endif %} {% endblock %}
+ {% block extrahead %}
+ <link rel="shortcut icon" type="image/png" href="{{ pathto('_static/py.png', 1) }}" />
+- <link rel="canonical" href="https://docs.python.org/2/{{pagename}}.html" />
++ <link rel="canonical" href="file:///usr/share/doc/python2.7/html/{{pagename}}.html" />
+ {% if not embedded %}<script type="text/javascript" src="{{ pathto('_static/copybutton.js', 1) }}"></script>{% endif %}
+ {% if switchers is defined and not embedded %}<script type="text/javascript" src="{{ pathto('_static/switchers.js', 1) }}"></script>{% endif %}
+ {{ super() }}
+Index: b/Misc/python.man
+===================================================================
+--- a/Misc/python.man
++++ b/Misc/python.man
+@@ -456,7 +456,8 @@ The Python Software Foundation: https://
+ .SH INTERNET RESOURCES
+ Main website: https://www.python.org/
+ .br
+-Documentation: https://docs.python.org/2/
++Documentation: file:///usr/share/doc/python2.7/html/index.html (python-doc package)
++or https://docs.python.org/2/
+ .br
+ Developer resources: https://docs.python.org/devguide/
+ .br
diff --git a/debian/patches/locale-module.diff b/debian/patches/locale-module.diff
index 72c0cdc..a4966b6 100644
--- a/debian/patches/locale-module.diff
+++ b/debian/patches/locale-module.diff
@@ -6,7 +6,7 @@ Index: b/Lib/locale.py
===================================================================
--- a/Lib/locale.py
+++ b/Lib/locale.py
-@@ -1690,8 +1690,8 @@ locale_alias = {
+@@ -1761,8 +1761,8 @@ locale_alias = {
'uk_ua.iso88595': 'uk_UA.ISO8859-5',
'uk_ua.koi8u': 'uk_UA.KOI8-U',
'uk_ua.microsoftcp1251': 'uk_UA.CP1251',
diff --git a/debian/patches/lto-link-flags.diff b/debian/patches/lto-link-flags.diff
index 4fbd3c0..546d7fc 100644
--- a/debian/patches/lto-link-flags.diff
+++ b/debian/patches/lto-link-flags.diff
@@ -1,6 +1,8 @@
+Index: b/Makefile.pre.in
+===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -123,8 +123,8 @@
+@@ -127,8 +127,8 @@ LIBP= $(LIBDIR)/python$(VERSION)
# Symbols used for using shared libraries
SO= @SO@
@@ -11,7 +13,7 @@
LDCXXSHARED= @LDCXXSHARED@
DESTSHARED= $(BINLIBDEST)/lib-dynload
-@@ -445,7 +445,7 @@
+@@ -495,7 +495,7 @@ coverage-report: regen-grammar
# Build the interpreter
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
diff --git a/debian/patches/m-i-p-s-r6.diff b/debian/patches/m-i-p-s-r6.diff
new file mode 100644
index 0000000..d4c3f11
--- /dev/null
+++ b/debian/patches/m-i-p-s-r6.diff
@@ -0,0 +1,24 @@
+--- a/Modules/_ctypes/libffi/config.sub
++++ b/Modules/_ctypes/libffi/config.sub
+@@ -282,8 +282,10 @@ case $basic_machine in
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
++ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
++ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+@@ -400,8 +402,10 @@ case $basic_machine in
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
++ | mipsisa32r6-* | mipsisa32r6el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
++ | mipsisa64r6-* | mipsisa64r6el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
diff --git a/debian/patches/mangle-fstack-protector.diff b/debian/patches/mangle-fstack-protector.diff
new file mode 100644
index 0000000..be7c09f
--- /dev/null
+++ b/debian/patches/mangle-fstack-protector.diff
@@ -0,0 +1,24 @@
+# DP: When using GCC versions older than 4.9, automagically mangle
+# DP: -fstack-protector-strong to -fstack-protector
+
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -15,6 +15,7 @@ import os
+ import re
+ import string
+ import sys
++import fnmatch
+
+ from distutils.errors import DistutilsPlatformError
+
+@@ -207,6 +208,10 @@ def customize_compiler(compiler):
+ cc = newcc
+ if 'CXX' in os.environ:
+ cxx = os.environ['CXX']
++ if fnmatch.filter([cc, cxx], '*-4.[0-8]'):
++ configure_cflags = configure_cflags.replace('-fstack-protector-strong', '-fstack-protector')
++ ldshared = ldshared.replace('-fstack-protector-strong', '-fstack-protector')
++ cflags = cflags.replace('-fstack-protector-strong', '-fstack-protector')
+ if 'LDSHARED' in os.environ:
+ ldshared = os.environ['LDSHARED']
+ if 'CPP' in os.environ:
diff --git a/debian/patches/multiarch-libc.diff b/debian/patches/multiarch-libc.diff
new file mode 100644
index 0000000..c65c81a
--- /dev/null
+++ b/debian/patches/multiarch-libc.diff
@@ -0,0 +1,50 @@
+--- python2.7-2.7.15.orig/Tools/scripts/h2py.py
++++ python2.7-2.7.15/Tools/scripts/h2py.py
+@@ -78,7 +78,10 @@
+ sys.stdout.write('# Generated by h2py from stdin\n')
+ process(sys.stdin, sys.stdout)
+ else:
+- fp = open(filename, 'r')
++ fp = open_include(filename)
++ if not fp:
++ raise IOError("could not find %r on %r" %
++ (filename, searchdirs))
+ outfile = os.path.basename(filename)
+ i = outfile.rfind('.')
+ if i > 0: outfile = outfile[:i]
+@@ -162,13 +165,7 @@
+ outfp.write('from %s import *\n' % importable[filename])
+ elif not filedict.has_key(filename):
+ filedict[filename] = None
+- inclfp = None
+- for dir in searchdirs:
+- try:
+- inclfp = open(dir + '/' + filename)
+- break
+- except IOError:
+- pass
++ inclfp = open_include(filename)
+ if inclfp:
+ outfp.write(
+ '\n# Included from %s\n' % filename)
+@@ -177,5 +174,13 @@
+ sys.stderr.write('Warning - could not find file %s\n' %
+ filename)
+
++def open_include(filename):
++ for dir in searchdirs:
++ try:
++ return open(dir + '/' + filename, 'r')
++ except IOError:
++ pass
++ return None
++
+ if __name__ == '__main__':
+ main()
+--- python2.7-2.7.15.orig/Lib/plat-generic/regen
++++ python2.7-2.7.15/Lib/plat-generic/regen
+@@ -1,3 +1,3 @@
+ #! /bin/sh
+ set -v
+-eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" /usr/include/netinet/in.h
++eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" netinet/in.h
diff --git a/debian/patches/multiarch.diff b/debian/patches/multiarch.diff
index 865a5f2..643d5fc 100644
--- a/debian/patches/multiarch.diff
+++ b/debian/patches/multiarch.diff
@@ -1,8 +1,6 @@
-Index: b/Lib/sysconfig.py
-===================================================================
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
-@@ -333,7 +333,7 @@ def get_makefile_filename():
+@@ -338,7 +338,7 @@ def get_makefile_filename():
"""Return the path of the Makefile."""
if _PYTHON_BUILD:
return os.path.join(_PROJECT_BASE, "Makefile")
@@ -11,7 +9,7 @@ Index: b/Lib/sysconfig.py
# Issue #22199: retain undocumented private name for compatibility
_get_makefile_filename = get_makefile_filename
-@@ -532,6 +532,12 @@ def get_config_vars(*args):
+@@ -537,6 +537,12 @@ def get_config_vars(*args):
# the init-function.
_CONFIG_VARS['userbase'] = _getuserbase()
@@ -24,11 +22,9 @@ Index: b/Lib/sysconfig.py
if 'srcdir' not in _CONFIG_VARS:
_CONFIG_VARS['srcdir'] = _PROJECT_BASE
-Index: b/Makefile.pre.in
-===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -97,6 +97,9 @@ MACHDEP= @MACHDEP@
+@@ -101,6 +101,9 @@ MACHDEP= @MACHDEP@
# Multiarch directory (may be empty)
MULTIARCH= @MULTIARCH@
@@ -38,7 +34,7 @@ Index: b/Makefile.pre.in
# Install prefix for architecture-independent files
prefix= @prefix@
-@@ -568,6 +571,10 @@ Makefile Modules/config.c: Makefile.pre
+@@ -622,6 +625,10 @@ Makefile Modules/config.c: Makefile.pre
@mv config.c Modules
@echo "The Makefile was updated, you may need to re-run make."
@@ -49,16 +45,7 @@ Index: b/Makefile.pre.in
Modules/Setup: $(srcdir)/Modules/Setup.dist
@if test -f Modules/Setup; then \
-@@ -932,7 +939,7 @@ maninstall: altmaninstall
- (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1)
-
- # Install the library
--PLATDIR= plat-$(MACHDEP)
-+PLATDIR= plat-$(MULTIARCH)
- EXTRAPLATDIR= @EXTRAPLATDIR@
- EXTRAMACHDEPPATH=@EXTRAMACHDEPPATH@
- MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR)
-@@ -1093,10 +1100,10 @@ inclinstall:
+@@ -1210,10 +1217,10 @@ inclinstall:
# Install the library and miscellaneous stuff needed for extending/embedding
# This goes into $(exec_prefix)$(DEBUG_EXT)
@@ -69,9 +56,9 @@ Index: b/Makefile.pre.in
-LIBPC= $(LIBDIR)/pkgconfig
+LIBPC= $(LIBDIR)/$(MULTIARCH)/pkgconfig
- libainstall: all python-config
+ libainstall: @DEF_MAKE_RULE@ python-config
@for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \
-@@ -1372,6 +1379,11 @@ patchcheck:
+@@ -1493,6 +1500,11 @@ patchcheck:
Python/thread.o: @THREADHEADERS@
@@ -81,23 +68,8 @@ Index: b/Makefile.pre.in
+ -o $@ $(srcdir)/Python/sysmodule.c
+
# Declare targets that aren't real files
- .PHONY: all build_all sharedmods oldsharedmods test quicktest memtest
+ .PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest memtest
.PHONY: install altinstall oldsharedinstall bininstall altbininstall
-Index: b/Modules/Setup.dist
-===================================================================
---- a/Modules/Setup.dist
-+++ b/Modules/Setup.dist
-@@ -91,7 +91,7 @@ SITEPATH=
- TESTPATH=
-
- # Path components for machine- or system-dependent modules and shared libraries
--MACHDEPPATH=:plat-$(MACHDEP)
-+MACHDEPPATH=:plat-$(MULTIARCH)
- EXTRAMACHDEPPATH=
-
- # Path component for the Tkinter-related modules
-Index: b/Python/dynload_shlib.c
-===================================================================
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -49,6 +49,12 @@ const struct filedescr _PyImport_DynLoad
@@ -113,25 +85,29 @@ Index: b/Python/dynload_shlib.c
#endif
{".so", "rb", C_EXTENSION},
{"module.so", "rb", C_EXTENSION},
-Index: b/configure.ac
-===================================================================
--- a/configure.ac
+++ b/configure.ac
-@@ -675,6 +675,9 @@ fi
- MULTIARCH=$($CC --print-multiarch 2>/dev/null)
- AC_SUBST(MULTIARCH)
+@@ -511,8 +511,16 @@ then
+ fi
+ AC_MSG_RESULT($MACHDEP)
+MULTIARCH=$($CC --print-multiarch 2>/dev/null)
+AC_SUBST(MULTIARCH)
+
-
- # checks for UNIX variants that set C preprocessor variables
- AC_USE_SYSTEM_EXTENSIONS
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
++
+ AC_SUBST(PLATDIR)
+-PLATDIR=plat-$MACHDEP
++if test -n "$MULTIARCH"; then
++ PLATDIR=plat-$MULTIARCH
++else
++ PLATDIR=plat-$MACHDEP
++fi
+
+ # And add extra plat-mac for darwin
+ AC_SUBST(EXTRAPLATDIR)
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -74,8 +74,6 @@ def get_python_inc(plat_specific=0, pref
+@@ -79,8 +79,6 @@ def get_python_inc(plat_specific=0, pref
If 'prefix' is supplied, use it instead of sys.prefix or
sys.exec_prefix -- i.e., ignore 'plat_specific'.
"""
@@ -140,7 +116,7 @@ Index: b/Lib/distutils/sysconfig.py
if os.name == "posix":
if python_build:
-@@ -90,7 +88,14 @@ def get_python_inc(plat_specific=0, pref
+@@ -100,7 +98,14 @@ def get_python_inc(plat_specific=0, pref
# Include is located in the srcdir
inc_dir = os.path.join(srcdir, "Include")
return inc_dir
@@ -156,7 +132,7 @@ Index: b/Lib/distutils/sysconfig.py
elif os.name == "nt":
return os.path.join(prefix, "include")
elif os.name == "os2":
-@@ -263,7 +268,7 @@ def get_makefile_filename():
+@@ -270,7 +275,7 @@ def get_makefile_filename():
if python_build:
return os.path.join(project_base, "Makefile")
lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
@@ -165,8 +141,6 @@ Index: b/Lib/distutils/sysconfig.py
def parse_config_h(fp, g=None):
-Index: b/Python/sysmodule.c
-===================================================================
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1453,6 +1453,8 @@ _PySys_Init(void)
diff --git a/debian/patches/no-zip-on-sys.path.diff b/debian/patches/no-zip-on-sys.path.diff
index 3360856..a411e6e 100644
--- a/debian/patches/no-zip-on-sys.path.diff
+++ b/debian/patches/no-zip-on-sys.path.diff
@@ -1,8 +1,10 @@
# DP: Do not add /usr/lib/pythonXY.zip on sys.path.
+Index: b/Modules/getpath.c
+===================================================================
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
-@@ -395,7 +395,9 @@
+@@ -372,7 +372,9 @@ calculate_path(void)
char *path = getenv("PATH");
char *prog = Py_GetProgramName();
char argv0_path[MAXPATHLEN+1];
@@ -12,7 +14,7 @@
int pfound, efound; /* 1 if found; -1 if found build directory */
char *buf;
size_t bufsz;
-@@ -535,6 +537,7 @@
+@@ -512,6 +514,7 @@ calculate_path(void)
else
reduce(prefix);
@@ -20,7 +22,7 @@
strncpy(zip_path, prefix, MAXPATHLEN);
zip_path[MAXPATHLEN] = '\0';
if (pfound > 0) { /* Use the reduced prefix returned by Py_GetPrefix() */
-@@ -547,6 +550,7 @@
+@@ -524,6 +527,7 @@ calculate_path(void)
bufsz = strlen(zip_path); /* Replace "00" with version */
zip_path[bufsz - 6] = VERSION[0];
zip_path[bufsz - 5] = VERSION[2];
@@ -28,7 +30,7 @@
if (!(efound = search_for_exec_prefix(argv0_path, home))) {
if (!Py_FrozenFlag)
-@@ -586,7 +590,9 @@
+@@ -563,7 +567,9 @@ calculate_path(void)
defpath = delim + 1;
}
@@ -38,7 +40,7 @@
bufsz += strlen(exec_prefix) + 1;
/* This is the only malloc call in this file */
-@@ -607,9 +613,11 @@
+@@ -584,9 +590,11 @@ calculate_path(void)
else
buf[0] = '\0';
diff --git a/debian/patches/platform-lsbrelease.diff b/debian/patches/platform-lsbrelease.diff
index 4e67e4b..abaaf46 100644
--- a/debian/patches/platform-lsbrelease.diff
+++ b/debian/patches/platform-lsbrelease.diff
@@ -2,7 +2,7 @@
--- a/Lib/platform.py
+++ b/Lib/platform.py
-@@ -259,7 +259,7 @@
+@@ -293,7 +293,7 @@ _release_version = re.compile(r'([^0-9]+
_supported_dists = (
'SuSE', 'debian', 'fedora', 'redhat', 'centos',
'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo',
@@ -11,7 +11,7 @@
def _parse_release_file(firstline):
-@@ -288,6 +288,10 @@
+@@ -322,6 +322,10 @@ def _parse_release_file(firstline):
id = l[1]
return '', version, id
@@ -22,7 +22,7 @@
def linux_distribution(distname='', version='', id='',
supported_dists=_supported_dists,
-@@ -312,6 +316,25 @@
+@@ -346,6 +350,25 @@ def linux_distribution(distname='', vers
args given as parameters.
"""
diff --git a/debian/patches/profiled-build.diff b/debian/patches/profiled-build.diff
deleted file mode 100644
index c31d1cd..0000000
--- a/debian/patches/profiled-build.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-# DP: Fix profiled build; don't use Python/thread.gc*, gcc complains
-
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -428,19 +428,19 @@
- $(MAKE) build_all_use_profile
-
- build_all_generate_profile:
-- $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"
-+ $(MAKE) all PY_CFLAGS="$(PY_CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"
-
- run_profile_task:
- : # FIXME: can't run for a cross build
-- ./$(BUILDPYTHON) $(PROFILE_TASK)
-+ -./$(BUILDPYTHON) $(PROFILE_TASK)
-
- build_all_use_profile:
-- $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use"
-+ $(MAKE) all PY_CFLAGS="$(PY_CFLAGS) -fprofile-use -fprofile-correction"
-
- coverage:
- @echo "Building with support for coverage checking:"
- $(MAKE) clean
-- $(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
-+ $(MAKE) all PY_CFLAGS="$(PY_CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
-
-
- # Build the interpreter
diff --git a/debian/patches/pydoc-use-pager.diff b/debian/patches/pydoc-use-pager.diff
new file mode 100644
index 0000000..1ac216e
--- /dev/null
+++ b/debian/patches/pydoc-use-pager.diff
@@ -0,0 +1,15 @@
+# DP: pydoc: use the pager command if available.
+
+Index: b/Lib/pydoc.py
+===================================================================
+--- a/Lib/pydoc.py
++++ b/Lib/pydoc.py
+@@ -1395,6 +1395,8 @@ def getpager():
+ return plainpager
+ if sys.platform == 'win32' or sys.platform.startswith('os2'):
+ return lambda text: tempfilepager(plain(text), 'more <')
++ if hasattr(os, 'system') and os.system('(pager) 2>/dev/null') == 0:
++ return lambda text: pipepager(text, 'pager')
+ if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0:
+ return lambda text: pipepager(text, 'less')
+
diff --git a/debian/patches/rename-md5-init.diff b/debian/patches/rename-md5-init.diff
new file mode 100644
index 0000000..9ac7c46
--- /dev/null
+++ b/debian/patches/rename-md5-init.diff
@@ -0,0 +1,124 @@
+Index: b/Modules/md5.c
+===================================================================
+--- a/Modules/md5.c
++++ b/Modules/md5.c
+@@ -311,7 +311,7 @@ md5_process(md5_state_t *pms, const md5_
+ }
+
+ void
+-md5_init(md5_state_t *pms)
++_Py_md5_init(md5_state_t *pms)
+ {
+ pms->count[0] = pms->count[1] = 0;
+ pms->abcd[0] = 0x67452301;
+@@ -321,7 +321,7 @@ md5_init(md5_state_t *pms)
+ }
+
+ void
+-md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes)
++_Py_md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes)
+ {
+ const md5_byte_t *p = data;
+ unsigned int left = nbytes;
+@@ -338,8 +338,8 @@ md5_append(md5_state_t *pms, const md5_b
+ /* handle the append in two steps to prevent overflow */
+ overlap = 64 - offset;
+
+- md5_append(pms, data, overlap);
+- md5_append(pms, data + overlap, nbytes - overlap);
++ _Py_md5_append(pms, data, overlap);
++ _Py_md5_append(pms, data + overlap, nbytes - overlap);
+ return;
+ }
+
+@@ -371,7 +371,7 @@ md5_append(md5_state_t *pms, const md5_b
+ }
+
+ void
+-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
++_Py_md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+ {
+ static const md5_byte_t pad[64] = {
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+@@ -386,9 +386,9 @@ md5_finish(md5_state_t *pms, md5_byte_t
+ for (i = 0; i < 8; ++i)
+ data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+ /* Pad to 56 bytes mod 64. */
+- md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
++ _Py_md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+ /* Append the length. */
+- md5_append(pms, data, 8);
++ _Py_md5_append(pms, data, 8);
+ for (i = 0; i < 16; ++i)
+ digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+ }
+Index: b/Modules/md5.h
+===================================================================
+--- a/Modules/md5.h
++++ b/Modules/md5.h
+@@ -76,13 +76,13 @@ extern "C"
+ #endif
+
+ /* Initialize the algorithm. */
+-void md5_init(md5_state_t *pms);
++void _Py_md5_init(md5_state_t *pms);
+
+ /* Append a string to the message. */
+-void md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes);
++void _Py_md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes);
+
+ /* Finish the message and return the digest. */
+-void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
++void _Py_md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+
+ #ifdef __cplusplus
+ } /* end extern "C" */
+Index: b/Modules/md5module.c
+===================================================================
+--- a/Modules/md5module.c
++++ b/Modules/md5module.c
+@@ -31,7 +31,7 @@ newmd5object(void)
+ if (md5p == NULL)
+ return NULL;
+
+- md5_init(&md5p->md5); /* actual initialisation */
++ _Py_md5_init(&md5p->md5); /* actual initialisation */
+ return md5p;
+ }
+
+@@ -65,7 +65,7 @@ md5_update(md5object *self, PyObject *ar
+ nbytes = INT_MAX;
+ else
+ nbytes = n;
+- md5_append(&self->md5, buf,
++ _Py_md5_append(&self->md5, buf,
+ Py_SAFE_DOWNCAST(nbytes, Py_ssize_t, unsigned int));
+ buf += nbytes;
+ n -= nbytes;
+@@ -91,7 +91,7 @@ md5_digest(md5object *self)
+
+ /* make a temporary copy, and perform the final */
+ mdContext = self->md5;
+- md5_finish(&mdContext, aDigest);
++ _Py_md5_finish(&mdContext, aDigest);
+
+ return PyString_FromStringAndSize((char *)aDigest, 16);
+ }
+@@ -114,7 +114,7 @@ md5_hexdigest(md5object *self)
+
+ /* make a temporary copy, and perform the final */
+ mdContext = self->md5;
+- md5_finish(&mdContext, digest);
++ _Py_md5_finish(&mdContext, digest);
+
+ /* Make hex version of the digest */
+ for(i=j=0; i<16; i++) {
+@@ -294,7 +294,7 @@ MD5_new(PyObject *self, PyObject *args)
+ nbytes = INT_MAX;
+ else
+ nbytes = n;
+- md5_append(&md5p->md5, buf,
++ _Py_md5_append(&md5p->md5, buf,
+ Py_SAFE_DOWNCAST(nbytes, Py_ssize_t, unsigned int));
+ buf += nbytes;
+ n -= nbytes;
diff --git a/debian/patches/reproducible-buildinfo.diff b/debian/patches/reproducible-buildinfo.diff
new file mode 100644
index 0000000..dacb313
--- /dev/null
+++ b/debian/patches/reproducible-buildinfo.diff
@@ -0,0 +1,15 @@
+# DP: Build getbuildinfo.o with DATE/TIME values when defined
+
+Index: b/Makefile.pre.in
+===================================================================
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -660,6 +660,8 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+ -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+ -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
++ $(if $(BUILD_DATE),-DDATE='"$(BUILD_DATE)"') \
++ $(if $(BUILD_TIME),-DTIME='"$(BUILD_TIME)"') \
+ -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
diff --git a/debian/patches/series.in b/debian/patches/series.in
index 35987a7..5eab918 100644
--- a/debian/patches/series.in
+++ b/debian/patches/series.in
@@ -1,4 +1,4 @@
-// hg-updates.diff
+# git-updates.diff
issue9189.diff
build-libpython.diff
deb-setup.diff
@@ -13,7 +13,6 @@ tkinter-import.diff
link-opt.diff
debug-build.diff
hotshot-import.diff
-profiled-build.diff
no-zip-on-sys.path.diff
platform-lsbrelease.diff
bdist-wininst-notfound.diff
@@ -28,7 +27,8 @@ statvfs-f_flag-constants.diff
plat-linux2_alpha.diff
#elif defined (arch_hppa)
plat-linux2_hppa.diff
-#elif defined (arch_mips) || defined(arch_mipsel) || defined (arch_mips64) || defined(arch_mips64el)
+#elif defined (arch_mips) || defined(arch_mipsel) || defined(arch_mipsn32) || defined(arch_mipsn32el) || defined (arch_mips64) || defined(arch_mips64el) \
+ || defined(arch_mipsr6) || defined(arch_mipsr6el) || defined(arch_mipsn32r6) || defined(arch_mipsn32r6el) || defined(arch_mips64r6) || defined(arch_mips64r6el)
plat-linux2_mips.diff
#elif defined (arch_sparc) || defined (arch_sparc64)
plat-linux2_sparc.diff
@@ -51,7 +51,6 @@ bsddb-libpath.diff
disable-sem-check.diff
ctypes-arm.diff
lto-link-flags.diff
-do-not-italicize-punctuation.patch
multiarch.diff
lib2to3-no-pickled-grammar.diff
add-python-config-sh.diff
@@ -64,3 +63,11 @@ enable-sqlite-loadext.diff
installed-testsuite.diff
ensurepip-wheels.diff
ensurepip-disabled.diff
+mangle-fstack-protector.diff
+reproducible-buildinfo.diff
+pydoc-use-pager.diff
+issue27239.diff
+rename-md5-init.diff
+local-doc-references.diff
+m-i-p-s-r6.diff
+multiarch-libc.diff
diff --git a/debian/patches/statvfs-f_flag-constants.diff b/debian/patches/statvfs-f_flag-constants.diff
index e91d076..e790d49 100644
--- a/debian/patches/statvfs-f_flag-constants.diff
+++ b/debian/patches/statvfs-f_flag-constants.diff
@@ -13,7 +13,7 @@ Index: b/Modules/posixmodule.c
===================================================================
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
-@@ -9356,6 +9356,43 @@ all_ins(PyObject *d)
+@@ -9428,6 +9428,43 @@ all_ins(PyObject *d)
if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
#endif /* EX_NOTFOUND */
diff --git a/debian/patches/test-sundry.diff b/debian/patches/test-sundry.diff
index c353cae..17b63f4 100644
--- a/debian/patches/test-sundry.diff
+++ b/debian/patches/test-sundry.diff
@@ -4,7 +4,7 @@ Index: b/Lib/test/test_sundry.py
===================================================================
--- a/Lib/test/test_sundry.py
+++ b/Lib/test/test_sundry.py
-@@ -60,7 +60,11 @@ class TestUntestedModules(unittest.TestC
+@@ -59,7 +59,11 @@ class TestUntestedModules(unittest.TestC
import os2emxpath
import pdb
import posixfile
diff --git a/debian/patches/tkinter-import.diff b/debian/patches/tkinter-import.diff
index 910b72c..9ae5a87 100644
--- a/debian/patches/tkinter-import.diff
+++ b/debian/patches/tkinter-import.diff
@@ -14,3 +14,22 @@
tkinter = _tkinter # b/w compat for export
TclError = _tkinter.TclError
from types import *
+--- a/Demo/turtle/turtleDemo.py
++++ b/Demo/turtle/turtleDemo.py
+@@ -3,10 +3,12 @@
+ import os
+
+ from Tkinter import *
+-from idlelib.Percolator import Percolator
+-from idlelib.ColorDelegator import ColorDelegator
+-from idlelib.textView import view_file
+-
++try:
++ from idlelib.Percolator import Percolator
++ from idlelib.ColorDelegator import ColorDelegator
++ from idlelib.textView import view_file
++except ImportError, msg:
++ raise ImportError, str(msg) + ', please install the idle package'
+ import turtle
+ import time
+
diff --git a/debian/pyfpe-breaks.Debian b/debian/pyfpe-breaks.Debian
new file mode 100644
index 0000000..6967a6e
--- /dev/null
+++ b/debian/pyfpe-breaks.Debian
@@ -0,0 +1,70 @@
+cython (<< 0.26-2.1),
+python-lxml (<< 3.8.0-2),
+python-numpy (<< 1:1.12.1-3.1),
+python-tk (<< 2.7.14~rc1-1~),
+python-scipy (<< 0.18.1-2.1),
+epigrass (<= 2.4.7-1),
+invesalius-bin (<= 3.1.1-1),
+macs (<= 2.1.1.20160309-1),
+printrun (<= 0~20150310-5),
+pycorrfit (<= 1.0.0+dfsg-1),
+pyscanfcs (<= 0.2.3-3),
+python-acora (<= 2.0-2+b1),
+python-adios (<= 1.12.0-3),
+python-astroml-addons (<= 0.2.2-4),
+python-astropy (<= 2.0.1-2),
+python-astroscrappy (<= 1.0.5-1+b1),
+python-bcolz (<= 1.1.0+ds1-4+b1),
+python-breezy (<= 3.0.0~bzr6772-1),
+python-bzrlib (<= 2.7.0+bzr6622-7),
+python-cartopy (<= 0.14.2+dfsg1-2+b1),
+python-cogent (<= 1.9-11),
+python-cutadapt (<= 1.13-1+b1),
+python-cypari2 (<= 1.0.0-3),
+python-dipy-lib (<= 0.12.0-1),
+python-djvu (<= 0.8-2),
+python-fabio (<= 0.4.0+dfsg-2+b1),
+python-falcon (<= 1.0.0-2+b1),
+python-fiona (<= 1.7.9-1),
+python-fpylll (<= 0.2.4+ds-3),
+python-grib (<= 2.0.2-2),
+python-gssapi (<= 1.2.0-1+b1),
+python-h5py (<= 2.7.0-1+b1),
+python-healpy (<= 1.10.3-2+b1),
+python-htseq (<= 0.6.1p1-4),
+python-imobiledevice (<= 1.2.0+dfsg-3.1),
+python-kivy (<= 1.9.1-1+b1),
+python-libdiscid (<= 1.0-1+b1),
+python-liblo (<= 0.10.0-3+b1),
+python-llfuse (<= 1.2+dfsg-1+b1),
+python-meliae (<= 0.4.0+bzr199-3),
+python-netcdf4 (<= 1.2.9-1+b1),
+python-nipy-lib (<= 0.4.1-1),
+python-pandas-lib (<= 0.20.3-1),
+python-petsc4py (<= 3.7.0-3+b1),
+python-pybloomfiltermmap (<= 0.3.15-0.1+b1),
+python-pyfai (<= 0.13.0+dfsg-1+b1),
+python-pygame-sdl2 (<= 6.99.12.4-1),
+python-pygpu (<= 0.6.9-2),
+python-pymca5 (<= 5.1.3+dfsg-1+b1),
+python-pymssql (<= 2.1.3+dfsg-1+b1),
+python-pyresample (<= 1.5.0-3+b1),
+python-pysam (<= 0.11.2.2+ds-3),
+python-pysph (<= 0~20160514.git91867dc-4),
+python-pywt (<= 0.5.1-1.1+b1),
+python-rasterio (<= 0.36.0-2+b2),
+python-renpy (<= 6.99.12.4+dfsg-1),
+python-sfepy (<= 2016.2-2),
+python-sfml (<= 2.2~git20150611.196c88+dfsg-4),
+python-shapely (<= 1.6.1-1),
+python-skimage-lib (<= 0.12.3-9+b1),
+python-sklearn-lib (<= 0.19.0-1),
+python-specutils (<= 0.2.2-1+b1),
+python-statsmodels-lib (<= 0.8.0-3),
+python-stemmer (<= 1.3.0+dfsg-1+b7),
+python-tables-lib (<= 3.3.0-5+b1),
+python-tinycss (<= 0.4-1+b1),
+python-wheezy.template (<= 0.1.167-1.1+b1),
+python-yt (<= 3.3.3-2+b1),
+sagemath (<= 8.0-5),
+xpra (<= 0.17.6+dfsg-1),
diff --git a/debian/pyfpe-breaks.Ubuntu b/debian/pyfpe-breaks.Ubuntu
new file mode 100644
index 0000000..b9838b5
--- /dev/null
+++ b/debian/pyfpe-breaks.Ubuntu
@@ -0,0 +1,5 @@
+cython (<< 0.25.2-2build3),
+python-lxml (<< 3.8.0-2),
+python-numpy (<< 1:1.12.1-3.1ubuntu1),
+python-tk (<< 2.7.14~rc1-1~),
+python-scipy (<< 0.18.1-2ubuntu3),
diff --git a/debian/pyhtml2devhelp.py b/debian/pyhtml2devhelp.py
index 6f828cb..922089d 100644
--- a/debian/pyhtml2devhelp.py
+++ b/debian/pyhtml2devhelp.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python2.7
import formatter, htmllib
import os, sys, re
diff --git a/debian/pymindeps.py b/debian/pymindeps.py
index 0b610ca..4821428 100644
--- a/debian/pymindeps.py
+++ b/debian/pymindeps.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python2.7
# Matthias Klose
# Modified to only exclude module imports from a given module.
@@ -117,11 +117,11 @@ excluded_imports = {
'riscos', 'riscospath', 'riscosenviron')),
'optparse': set(('gettext',)),
'pickle': set(('doctest',)),
- 'platform': set(('plistlib', 'tempfile')),
+ 'platform': set(('ctypes', 'plistlib', 'tempfile', 'winreg')),
#'socket': set(('_ssl', 'ssl')),
'tempfile': set(('dummy_thread',)),
'subprocess': set(('threading',)),
- 'shutil': set(('distutils', 'tarfile', 'zipfile')),
+ 'shutil': set(('bz2', 'distutils', 'tarfile', 'zipfile')),
'sysconfig': set(('pprint', '_osx_support')),
}
diff --git a/debian/rules b/debian/rules
index 884f9d4..d7119eb 100755
--- a/debian/rules
+++ b/debian/rules
@@ -25,8 +25,18 @@ changelog_values := $(shell dpkg-parsechangelog \
PKGSOURCE := $(word 1, $(changelog_values))
PKGVERSION := $(word 2, $(changelog_values))
+LAST_CHANGE := $(shell dpkg-parsechangelog -S Date)
+export BUILD_DATE := $(shell LC_ALL=C date -u +'%b %e %Y' -d '$(LAST_CHANGE)')
+export BUILD_TIME := $(shell LC_ALL=C date -u +'%H:%M:%S' -d '$(LAST_CHANGE)')
+
+SPHINXOPTS := -D today='$(shell LC_ALL=C date -u +'%B %d, %Y' -d '$(LAST_CHANGE)')'
+SPHINXOPTS += -D html_last_updated_fmt='$(shell LC_ALL=C date -u +'%B %d, %Y' -d '$(LAST_CHANGE)')'
+export SPHINXOPTS
+
on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd -o "$$USER" = buildd ] && echo yes)
+dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 && echo DH_COMPAT=2)
+
ifneq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
WITHOUT_CHECK := yes
endif
@@ -38,7 +48,7 @@ ifneq (,$(filter $(DEB_HOST_ARCH), hurd-i386))
WITHOUT_BENCH := disabled on $(DEB_HOST_ARCH)
endif
ifeq ($(on_buildd),yes)
- ifneq (,$(findstring $(DEB_HOST_ARCH), hppa mips mipsel mipsn32 mipsn32el mips64 mips64el s390))
+ ifneq (,$(findstring $(DEB_HOST_ARCH), hppa mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390))
WITHOUT_CHECK := yes
endif
endif
@@ -57,6 +67,9 @@ endif
distribution := $(shell lsb_release -is)
distrelease := $(shell lsb_release -cs)
+derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \
+ elif dpkg-vendor --derives-from Debian; then echo Debian; \
+ else echo Unknown; fi)
VER=2.7
NVER=2.8
@@ -94,14 +107,20 @@ with_interp := static
PY_INTERPRETER = /usr/bin/python$(VER)
ifeq ($(DEFAULT_VERSION),yes)
- PY_PRIO = standard
+ ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid precise trusty xenial yakkety))
+ PY_PRIO = standard
+ else
+ PY_PRIO = optional
+ endif
#PYSTDDEP = , python (>= $(VER))
PY_MINPRIO = $(PY_PRIO)
else
PY_PRIO = optional
PY_MINPRIO = $(PY_PRIO)
endif
-with_fpectl = yes
+ifneq (,$(filter $(distrelease),stretch lenny squeeze wheezy precise xenial yakkety zesty))
+ with_fpectl = yes
+endif
ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty oneiric))
bd_qual = :any
@@ -111,12 +130,15 @@ ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty on
else
ma_filter = grep -v '^Multi-Arch:'
endif
-ifneq (,$(filter $(distrelease),jessie sid experimental))
- bd_gcc = gcc (>= 4:4.9.2-1~), gcc-4.9 (>= 4.9.2-7),
+ifneq (,$(filter $(distrelease),jessie experimental))
+ bd_gcc =
endif
ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty oneiric precise quantal raring saucy trusty))
bd_dpkgdev = dpkg-dev (>= 1.17.11),
endif
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid wily xenial))
+ pf_bluetooth = $(EMPTY) <!profile.nobluetooth>
+endif
CC = $(DEB_HOST_GNU_TYPE)-gcc
CXX=$(DEB_HOST_GNU_TYPE)-g++
@@ -125,6 +147,7 @@ AR=$(DEB_HOST_GNU_TYPE)-ar
RANLIB=$(DEB_HOST_GNU_TYPE)-ranlib
DPKG_CFLAGS := $(shell dpkg-buildflags --get CPPFLAGS; dpkg-buildflags --get CFLAGS)
+DPKG_CFLAGS := $(subst -fstack-protector-strong,-fstack-protector,$(DPKG_CFLAGS))
DPKG_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
OPT_CFLAGS := $(filter-out -O%,$(DPKG_CFLAGS)) # default is -O3
DEBUG_CFLAGS := $(filter-out -D_FORTIFY_SOURCE=%,$(patsubst -O%,-O0,$(DPKG_CFLAGS)))
@@ -140,29 +163,24 @@ ifeq ($(DEB_HOST_ARCH),m68k)
EXTRA_OPT_FLAGS += -O2
endif
+ifneq (,$(filter $(DEB_HOST_ARCH), ppc64 ppc64el))
+ OPT_CFLAGS += -fexceptions
+ DEBUG_CFLAGS += -fexceptions
+endif
+
ifeq ($(DEB_HOST_ARCH_OS),linux)
- ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 armel armhf i386 powerpc ppc64))
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 powerpc ppc64 ppc64el s390x x32))
with_pgo := yes
endif
endif
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
- with_pgo :=
-endif
-ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
with_pgo :=
endif
-ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 armel armhf i386))
+ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 powerpc ppc64 ppc64el s390x x32))
with_lto := yes
endif
-ifneq (,$(findstring noopt, $(DEB_BUILD_OPTIONS)))
- OPT_CFLAGS := $(filter-out -O%, $(OPT_CFLAGS))
- EXTRA_OPT_CFLAGS = -O0
- with_pgo =
- with_lto =
-endif
-
ifeq ($(with_lto),yes)
LTO_CFLAGS = -g -flto -fuse-linker-plugin
with_fat_lto := $(shell dpkg --compare-versions $$($(CC) --version \
@@ -175,6 +193,14 @@ ifeq ($(with_lto),yes)
RANLIB=$(DEB_HOST_GNU_TYPE)-gcc-ranlib
endif
+ifneq ($(with_fpectl),yes)
+ ifeq ($(derivative),Ubuntu)
+ arch_substvars = '-Vpyfpe:Breaks=$(shell tr '\n' ' ' < debian/pyfpe-breaks.$(derivative))'
+ else ifeq ($(derivative),Debian)
+ arch_substvars = '-Vpyfpe:Breaks=$(shell tr '\n' ' ' < debian/pyfpe-breaks.$(derivative))'
+ endif
+endif
+
make_build_target = $(if $(with_pgo),profile-opt)
buildd_static := $(CURDIR)/build-static
@@ -241,7 +267,7 @@ PROFILE_EXCLUDES = test_compiler test_distutils test_platform test_subprocess \
ifneq (,$(filter $(DEB_HOST_ARCH), arm armel))
PROFILE_EXCLUDES += test_float
endif
-ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386))
+ifneq (,$(filter $(DEB_HOST_ARCH), sparc kfreebsd-amd64 kfreebsd-i386))
PROFILE_EXCLUDES += test_io
endif
PROFILE_EXCLUDES += test_zipfile
@@ -297,7 +323,8 @@ common_configure_args = \
--enable-ipv6 \
--enable-unicode=ucs4 \
--with-dbmliborder=bdb:gdbm \
- --with-system-expat
+ --with-system-expat \
+ --with-computed-gotos
ifneq (,$(filter $(DEB_HOST_ARCH), avr32 or1k))
common_configure_args += --without-ffi
@@ -326,7 +353,7 @@ stamps/stamp-configure-shared: stamps/stamp-patch
rm -rf $(buildd_shared)
mkdir -p $(buildd_shared)
cd $(buildd_shared) && \
- CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" \
+ CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" \
CFLAGS="$(OPT_CFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
@@ -341,7 +368,7 @@ stamps/stamp-configure-static: stamps/stamp-patch
rm -rf $(buildd_static)
mkdir -p $(buildd_static)
cd $(buildd_static) && \
- CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" \
+ CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" \
CFLAGS="$(OPT_CFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
@@ -355,7 +382,7 @@ stamps/stamp-configure-debug: stamps/stamp-patch
rm -rf $(buildd_debug)
mkdir -p $(buildd_debug)
cd $(buildd_debug) && \
- CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" \
+ CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" \
CFLAGS="$(DEBUG_CFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
@@ -370,7 +397,7 @@ stamps/stamp-configure-shared-debug: stamps/stamp-patch
rm -rf $(buildd_shdebug)
mkdir -p $(buildd_shdebug)
cd $(buildd_shdebug) && \
- CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" \
+ CC="$(CC)" CXX="$(CXX)" AR="$(AR)" RANLIB="$(RANLIB)" \
CFLAGS="$(DEBUG_CFLAGS)" LDFLAGS="$(DPKG_LDFLAGS)" \
$(config_site) \
../configure \
@@ -403,6 +430,13 @@ define __post_configure
> $(1)/pyconfig.h.new
touch -r $(1)/pyconfig.h $(1)/pyconfig.h.new
mv -f $(1)/pyconfig.h.new $(1)/pyconfig.h
+
+ : # this second rule doesn't build with -fPIC, remove it for shared builds.
+ $(if $(findstring build-sh,$(1)), \
+ sed '/^Modules\/_math.o: .*PY_CORE_CFLAGS/d' $(1)/Makefile > $(1)/Makefile.fixed; \
+ touch -r $(1)/Makefile $(1)/Makefile.fixed; \
+ mv -f $(1)/Makefile.fixed $(1)/Makefile \
+ )
endef
stamps/stamp-mincheck: stamps/stamp-build-static debian/PVER-minimal.README.Debian.in
@@ -428,6 +462,7 @@ ifeq ($(on_buildd),yes)
TEST_RESOURCES := $(TEST_RESOURCES),-network,-urlfetch,-bsddb
endif
TESTOPTS = -w -l -u$(TEST_RESOURCES)
+#TESTOPTS = -v -l -u$(TEST_RESOURCES)
TEST_EXCLUDES =
ifeq ($(on_buildd),yes)
TEST_EXCLUDES += test_codecmaps_cn test_codecmaps_hk \
@@ -461,9 +496,12 @@ ifneq (,$(filter $(DEB_HOST_ARCH), arm armel avr32 m68k))
endif
TEST_EXCLUDES += test_gdb
# fails on some buildds
-ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armel armhf mips mipsel))
+ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armel armhf mips mipsel sparc))
TEST_EXCLUDES += test_io
endif
+ifneq (,$(filter $(DEB_HOST_ARCH), alpha))
+ TEST_EXCLUDES += test_signal
+endif
ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386))
TEST_EXCLUDES += test_io test_signal
endif
@@ -474,6 +512,8 @@ endif
ifneq (,$(filter $(DEB_HOST_ARCH), ia64))
TEST_EXCLUDES += test_threading test_subprocess
endif
+# see http://bugs.python.org/issue25698
+TEST_EXCLUDES += test_cpickle
ifneq (,$(TEST_EXCLUDES))
TESTOPTS += -x $(sort $(TEST_EXCLUDES))
ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel))
@@ -629,6 +669,7 @@ minimal-test:
stamps/stamp-doc-html:
dh_testdir
$(MAKE) -C Doc html
+ @mkdir -p stamps
touch stamps/stamp-doc-html
build-doc: stamps/stamp-patch stamps/stamp-build-doc
@@ -644,10 +685,11 @@ control-file:
-e "s/@bd_qual@/$(bd_qual)/g" \
-e "s/@bd_gcc@/$(bd_gcc)/g" \
-e "s/@bd_dpkgdev@/$(bd_dpkgdev)/g" \
+ -e "s/@pf_bluetooth@/$(pf_bluetooth)/g" \
debian/control.in \
| $(ma_filter) \
> debian/control.tmp
-ifeq ($(distribution),Ubuntu)
+ifeq ($(derivative),Ubuntu)
ifneq (,$(findstring ubuntu, $(PKGVERSION)))
m='Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>'; \
sed -i "/^Maintainer:/s/\(.*\)/Maintainer: $$m\nXSBC-Original-\1/" \
@@ -664,6 +706,7 @@ endif
clean: control-file
dh_testdir
dh_testroot
+ dh_autotools-dev_restoreconfig
$(MAKE) -f debian/rules unpatch
rm -rf stamps .pc
rm -f debian/test_results
@@ -684,7 +727,6 @@ clean: control-file
rm -f $$f2; \
fi; \
done
- dh_autotools-dev_restoreconfig
dh_clean
stamps/stamp-control:
@@ -715,22 +757,25 @@ install: build-arch stamps/stamp-install
stamps/stamp-install: stamps/stamp-build control-file stamps/stamp-control
dh_testdir
dh_testroot
- dh_clean -k
+ dh_prep
dh_installdirs
: # make install into tmp and subsequently move the files into
: # their packages' directories.
install -d $(d)/usr
ifeq ($(with_interp),static)
- $(MAKE) -C $(buildd_static) install prefix=$(CURDIR)/$(d)/usr
+ $(MAKE) -C $(buildd_static) install DESTDIR=$(CURDIR)/$(d)
else
- $(MAKE) -C $(buildd_shared) install prefix=$(CURDIR)/$(d)/usr
+ $(MAKE) -C $(buildd_shared) install DESTDIR=$(CURDIR)/$(d)
endif
mkdir -p $(d)/usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)
mv $(d)/usr/include/$(PVER)/pyconfig.h \
$(d)/usr/include/$(DEB_HOST_MULTIARCH)/$(PVER)/.
mv $(d)/usr/bin/python-config.sh $(d)/usr/bin/python$(VER)-config
- sed -i 's/-O3/-O2/g;s/$(LTO_CFLAGS)//g;s/-fprofile-use *-fprofile-correction//g' \
+ sed -i \
+ -e 's/-O3/-O2/g;s/$(LTO_CFLAGS)//g' \
+ -e 's/-fprofile-use *-fprofile-correction//g' \
+ -e 's/-fstack-protector /-fstack-protector-strong /g' \
$(d)/usr/bin/python$(VER)-config
: # fiddle around with the platform directory
@@ -747,7 +792,10 @@ endif
$(d)/$(scriptdir)/.
mv $(d)/$(scriptdir)/_sysconfigdata.py \
$(d)/$(scriptdir)/plat-$(DEB_HOST_MULTIARCH)/_sysconfigdata_nd.py
- sed -i 's/ -O3 / -O2 /g;s/$(LTO_CFLAGS)//g;s/-fprofile-use *-fprofile-correction//g' \
+ sed -i \
+ -e 's/-O3/-O2/g;s/$(LTO_CFLAGS)//g' \
+ -e 's/-fprofile-use *-fprofile-correction//g' \
+ -e 's/-fstack-protector /-fstack-protector-strong /g' \
$(d)/$(scriptdir)/plat-$(DEB_HOST_MULTIARCH)/_sysconfigdata_nd.py
cp -p debian/_sysconfigdata.py $(d)/$(scriptdir)
@@ -764,8 +812,10 @@ endif
mv $(d)/usr/lib/libpython*.a $(d)/usr/lib/$(DEB_HOST_MULTIARCH)/
- mv $(d)/usr/lib/python$(VER)/site-packages \
- $(d)/usr/lib/python$(VER)/dist-packages
+ if [ -d $(d)/usr/lib/python$(VER)/site-packages ]; then \
+ mv $(d)/usr/lib/python$(VER)/site-packages \
+ $(d)/usr/lib/python$(VER)/dist-packages; \
+ fi
: # remove files, which are not packaged
rm -f $(d)/usr/bin/smtpd.py
@@ -779,8 +829,8 @@ endif
rm -f $(d)/$(scriptdir)/lib2to3/*.pickle
if [ -d $(d)/$(scriptdir)/ensurepip/_bundled ]; then \
- echo "ensurepip/_bundled must not be included in the source package"; \
- exit 1; \
+ echo "don't ship the prebuilt ensurepip/_bundled wheels."; \
+ rm -rf $(d)/$(scriptdir)/ensurepip/_bundled; \
fi
: # cannot build it, zlib maintainer won't provide a mingw build
@@ -844,6 +894,7 @@ endif
: # install the Makefile of the shared python build
sed -e '/^OPT/s,-O3,-O2,' \
-e 's/$(LTO_CFLAGS)//g' \
+ -e 's/-fstack-protector /-fstack-protector-strong /g' \
-e 's,^RUNSHARED *=.*,RUNSHARED=,' \
-e '/BLDLIBRARY/s/-L\. //' \
build-shared/Makefile > $(d)/$(scriptdir)/config-$(DEB_HOST_MULTIARCH)/Makefile
@@ -855,7 +906,7 @@ endif
usr/include/$(PVER) \
usr/share/man/man1 \
$(scriptdir)/lib-dynload
- DH_COMPAT=2 dh_movefiles -p$(p_lmin) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_lmin) --sourcedir=$(d) \
$(foreach i,$(MIN_MODS),$(scriptdir)/$(i).py) \
$(foreach i,$(MIN_PACKAGES),$(scriptdir)/$(i)) \
$(foreach i,$(MIN_ENCODINGS),$(scriptdir)/$(i)) \
@@ -870,7 +921,7 @@ endif
dh_installdirs -p$(p_min) \
usr/bin \
usr/share/man/man1
- DH_COMPAT=2 dh_movefiles -p$(p_min) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_min) --sourcedir=$(d) \
usr/bin/python$(VER) \
usr/share/man/man1/python$(VER).1
@@ -890,7 +941,7 @@ endif
usr/include \
usr/share/man/man1
- DH_COMPAT=2 dh_movefiles -p$(p_ldev) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_ldev) --sourcedir=$(d) \
usr/bin/$(DEB_HOST_MULTIARCH)-python$(VER)-config \
usr/lib/python$(VER)/config-$(DEB_HOST_MULTIARCH) \
usr/include \
@@ -935,7 +986,7 @@ endif
cp -p debian/test_results $(buildd_static)/pybench.log \
$(d_dev)/usr/share/doc/python$(VER)/$(DEB_HOST_MULTIARCH)/
- DH_COMPAT=2 dh_movefiles -p$(p_dev) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_dev) --sourcedir=$(d) \
usr/bin/python$(VER)-config \
usr/lib/python$(VER)/distutils/command/wininst-*.exe
@@ -947,7 +998,7 @@ ifeq ($(with_tk),yes)
dh_installdirs -p$(p_tk) \
$(scriptdir) \
usr/lib/python$(VER)/lib-dynload
- DH_COMPAT=2 dh_movefiles -p$(p_tk) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_tk) --sourcedir=$(d) \
usr/lib/python$(VER)/lib-dynload/_tkinter.so
endif
@@ -955,16 +1006,17 @@ ifeq ($(with_gdbm),yes)
: # gdbm and dbm modules into $(p_gdbm).
dh_installdirs -p$(p_gdbm) \
usr/lib/python$(VER)/lib-dynload
- DH_COMPAT=2 dh_movefiles -p$(p_gdbm) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_gdbm) --sourcedir=$(d) \
usr/lib/python$(VER)/lib-dynload/gdbm.so
endif
: # The test framework into $(p_lbase)
- DH_COMPAT=2 dh_movefiles -p$(p_lbase) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_lbase) --sourcedir=$(d) \
+ $(scriptdir)/test/support \
$(scriptdir)/test/{regrtest.py,test_support.py,__init__.py,pystone.py}
- : # The complete testsuite into $(p_lbase)
- DH_COMPAT=2 dh_movefiles -p$(p_ltst) --sourcedir=$(d) \
+ : # The complete testsuite into $(p_ltst)
+ $(dh_compat2) dh_movefiles -p$(p_ltst) --sourcedir=$(d) \
$(scriptdir)/test \
$(scriptdir)/ctypes/test \
$(scriptdir)/bsddb/test \
@@ -987,7 +1039,7 @@ endif
dh_installdirs -p$(p_idle) \
usr/bin \
usr/share/man/man1
- DH_COMPAT=2 dh_movefiles -p$(p_idle) --sourcedir=$(d) \
+ $(dh_compat2) dh_movefiles -p$(p_idle) --sourcedir=$(d) \
usr/lib/python$(VER)/idlelib \
usr/bin/idle-python$(VER)
cp -p debian/idle-$(PVER).1 $(d_idle)/usr/share/man/man1/
@@ -1235,7 +1287,7 @@ binary-indep: build-indep install stamps/stamp-control
$(buildd_static)/python debian/pyhtml2devhelp.py \
$(d_doc)/usr/share/doc/$(p_base)/html index.html $(VER) \
> $(d_doc)/usr/share/doc/$(p_base)/html/$(PVER).devhelp
- gzip -9v $(d_doc)/usr/share/doc/$(p_base)/html/$(PVER).devhelp
+ gzip -9nv $(d_doc)/usr/share/doc/$(p_base)/html/$(PVER).devhelp
dh_link -p$(p_doc) \
/usr/share/doc/$(p_base)/html /usr/share/devhelp/books/$(PVER)
@@ -1246,7 +1298,6 @@ binary-indep: build-indep install stamps/stamp-control
dh_installdebconf -i $(dh_args)
dh_installexamples -i $(dh_args)
- dh_installmenu -i $(dh_args)
-dh_icons -i $(dh_args) || dh_iconcache -i $(dh_args)
dh_installchangelogs -i $(dh_args)
dh_link -i $(dh_args)
@@ -1273,7 +1324,6 @@ binary-arch: build-arch install
dh_testroot -a
# dh_installdebconf -a
dh_installexamples -a
- dh_installmenu -a
-dh_icons -a || dh_iconcache -a
# dh_installmime -a
dh_installchangelogs -a
@@ -1296,13 +1346,18 @@ endif
ifneq ($(with_gdbm),yes)
rm -f $(d_lbase)/$(scriptdir)/lib-dynload/gdbm.$(DEB_HOST_MULTIARCH).so
endif
- dh_strip -a -N$(p_dbg) -Xdebug -Xdbg --dbg-package=$(p_dbg)
- cp Tools/gdb/libpython.py $(d_dbg)/usr/lib/debug/usr/bin/$(PVER)-gdb.py
- ln -sf $(PVER)-gdb.py $(d_dbg)/usr/lib/debug/usr/bin/$(PVER)-dbg-gdb.py
- ln -sf ../bin/$(PVER)-gdb.py \
- $(d_dbg)/usr/lib/debug/usr/lib/lib$(PVER).so.1.0-gdb.py
- ln -sf ../bin/$(PVER)-gdb.py \
- $(d_dbg)/usr/lib/lib$(PVER)_d.so.1.0-gdb.py
+
+ find $(d_ldbg) $(d_ldev) -name '*.a' ! -type l \
+ | xargs -n 1 $(DEB_HOST_GNU_TYPE)-objcopy -p --remove-section=.gnu.lto_.*
+ dh_strip -a -N$(p_dbg) -N$(p_ldbg) -Xdebug -Xdbg --dbg-package=$(p_dbg)
+ mkdir -p $(d_dbg)/usr/share/gdb/auto-load/usr/bin
+ cp Tools/gdb/libpython.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)-gdb.py
+ ln -sf $(PVER)-gdb.py $(d_dbg)/usr/share/gdb/auto-load/usr/bin/$(PVER)-dbg-gdb.py
+ mkdir -p $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)
+ ln -sf ../../bin/$(PVER)-gdb.py \
+ $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)/lib$(PVER).so.1.0-gdb.py
+ ln -sf ../../bin/$(PVER)-gdb.py \
+ $(d_dbg)/usr/share/gdb/auto-load/usr/lib/$(DEB_HOST_MULTIARCH)/lib$(PVER)_d.so.1.0-gdb.py
dh_link -a
dh_compress -a -X.py
dh_fixperms -a
@@ -1321,12 +1376,10 @@ endif
# which either can be built as builtin or extension.
sed -ri '/^ (_check_|asdl_|fast_save_|init)/d' \
$(d_lib)/DEBIAN/symbols $(d_ldbg)/DEBIAN/symbols
- dh_shlibdeps -a
- dep=`sed -n '/^shlibs:Depends/s/.*\(libc6[^,]*\).*/\1/p' $(d_min).substvars`; \
- echo "shlibs:Pre-Depends=$$dep" >> $(d_min).substvars
- sed -i '/^shlibs:Depends/s/libc6[^,]*[, ]*//' $(d_min).substvars
+ dh_shlibdeps -p$(p_min) -- -dPre-Depends
+ dh_shlibdeps -a -N$(p_min)
dh_installdeb -a
- dh_gencontrol -a
+ dh_gencontrol -a -- $(arch_substvars)
dh_md5sums -a
dh_builddeb -a
@@ -1343,7 +1396,7 @@ broken_utimes := $(shell dpkg --compare-versions $(glibc_version) lt 2.3.5 && ec
$(patchdir)/series: $(patchdir)/series.in
cpp -E \
- -D$(distribution) \
+ -D$(derivative) \
$(if $(filter $(broken_utimes),yes),-DBROKEN_UTIMES) \
$(if $(filter $(with_fpectl),yes),-DWITH_FPECTL) \
-Darch_os_$(DEB_HOST_ARCH_OS) -Darch_$(DEB_HOST_ARCH) \
@@ -1398,6 +1451,7 @@ update-patches: $(patchdir)/series
binary: binary-indep binary-arch
+.NOTPARALLEL:
.PHONY: control-file configure build clean binary-indep binary-arch binary install
# Local Variables:
diff --git a/debian/script.py b/debian/script.py
index 333f249..4e0f723 100644
--- a/debian/script.py
+++ b/debian/script.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python2.7
# Copyright (C) 2012 Colin Watson <cjwatson@ubuntu.com>.
#
diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides
index 54f566c..3142af4 100644
--- a/debian/source.lintian-overrides
+++ b/debian/source.lintian-overrides
@@ -9,3 +9,6 @@ python2.7 source: build-depends-on-versioned-berkeley-db
# using the system libffi
python2.7 source: outdated-autotools-helper-file
+
+# patches are applied conditionally
+python2.7 source: patch-file-present-but-not-mentioned-in-series
diff --git a/debian/source.lintian-overrides.in b/debian/source.lintian-overrides.in
index 212098c..a547565 100644
--- a/debian/source.lintian-overrides.in
+++ b/debian/source.lintian-overrides.in
@@ -9,3 +9,6 @@
# using the system libffi
@PVER@ source: outdated-autotools-helper-file
+
+# patches are applied conditionally
+@PVER@ source: patch-file-present-but-not-mentioned-in-series
diff --git a/debian/tests/failing-tests b/debian/tests/failing-tests
index 0af8709..7b33625 100644
--- a/debian/tests/failing-tests
+++ b/debian/tests/failing-tests
@@ -11,13 +11,8 @@ if [ "$(whoami)" = root ]; then
if [ -e /etc/default/apport ]; then
# stop apport
- stop apport 2>/dev/null || true
+ service apport stop 2>/dev/null || true
sed -i '/^enabled=/s/=.*/=0/' /etc/default/apport 2>/dev/null
-
- if status apport | grep -q start; then
- echo >&2 "apport is running. needs to be disabled before running the tests"
- exit 1
- fi
fi
fi
@@ -45,6 +40,9 @@ TESTPYTHON="python2.7 -E -Wd -3 -tt /usr/lib/python2.7/test/regrtest.py"
TESTOPTS="-w -uall,-network,-urlfetch,-gui,-xpickle"
TESTEXCLUSIONS=
+# test_cpickle: starts to fail with 2.7.11, see http://bugs.python.org/issue25698
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_cpickle"
+
# test_curses: error: copywin() returned ERR
TESTEXCLUSIONS="$TESTEXCLUSIONS test_curses"
@@ -64,6 +62,19 @@ esac
# test_zipfile: Issue 17753, requires write access to test and email.test
TESTEXCLUSIONS="$TESTEXCLUSIONS test_zipfile"
+# for some reason, this fails on s390x only, starting in 2.7.14rc1 ...
+case "$(uname -m)" in s390*)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_regrtest"
+esac
+
+# testsuite not ready for OpenSSL 1.2 ...
+case "$vendor" in Debian)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ftplib test_ssl"
+esac
+
+# test_site: site-/dist-packages mismatches
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_site"
+
if [ "$su_user" = nobody ]; then
log=/dev/null
else
diff --git a/debian/tests/failing-tests-dbg b/debian/tests/failing-tests-dbg
index ab13ebe..87e3cd3 100644
--- a/debian/tests/failing-tests-dbg
+++ b/debian/tests/failing-tests-dbg
@@ -11,13 +11,8 @@ if [ "$(whoami)" = root ]; then
if [ -e /etc/default/apport ]; then
# stop apport
- stop apport 2>/dev/null || true
+ service apport stop 2>/dev/null || true
sed -i '/^enabled=/s/=.*/=0/' /etc/default/apport 2>/dev/null
-
- if status apport | grep -q start; then
- echo >&2 "apport is running. needs to be disabled before running the tests"
- exit 1
- fi
fi
fi
@@ -51,6 +46,9 @@ TESTPYTHON="python2.7-dbg -E -Wd -3 -tt /usr/lib/python2.7/test/regrtest.py"
TESTOPTS="-w -uall,-network,-urlfetch,-gui,-xpickle"
TESTEXCLUSIONS=
+# test_cpickle: starts to fail with 2.7.11, see http://bugs.python.org/issue25698
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_cpickle"
+
# test_curses: error: copywin() returned ERR
TESTEXCLUSIONS="$TESTEXCLUSIONS test_curses"
@@ -67,6 +65,20 @@ esac
# test_zipfile: Issue 17753, requires write access to test and email.test
TESTEXCLUSIONS="$TESTEXCLUSIONS test_zipfile"
+# testsuite not ready for OpenSSL 1.2 ...
+case "$vendor" in Debian)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ftplib test_ssl"
+esac
+
+# test_site: site-/dist-packages mismatches
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_site"
+
+# TODO: test_ctypes fails on arm64 on the debug build
+echo "uname: $(uname -a)"
+case "$(uname -m)" in armv8*|aarch64*)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ctypes"
+esac
+
if [ "$su_user" = nobody ]; then
log=/dev/null
else
diff --git a/debian/tests/testsuite b/debian/tests/testsuite
index 2f746d0..7174b87 100644
--- a/debian/tests/testsuite
+++ b/debian/tests/testsuite
@@ -2,6 +2,8 @@
set -e
+env
+
if [ "$(whoami)" = root ]; then
if [ -n "$SUDO_USER" ] && getent passwd "$SUDO_USER" > /dev/null; then
su_user="$SUDO_USER"
@@ -11,13 +13,8 @@ if [ "$(whoami)" = root ]; then
if [ -e /etc/default/apport ]; then
# stop apport
- stop apport 2>/dev/null || true
+ service apport stop 2>/dev/null || true
sed -i '/^enabled=/s/=.*/=0/' /etc/default/apport 2>/dev/null
-
- if status apport | grep -q start; then
- echo >&2 "apport is running. needs to be disabled before running the tests"
- exit 1
- fi
fi
fi
@@ -45,6 +42,9 @@ TESTPYTHON="python2.7 -E -Wd -3 -tt /usr/lib/python2.7/test/regrtest.py"
TESTOPTS="-w -uall,-network,-urlfetch,-gui,-xpickle"
TESTEXCLUSIONS="-x"
+# test_cpickle: starts to fail with 2.7.11, see http://bugs.python.org/issue25698
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_cpickle"
+
# test_curses: error: copywin() returned ERR
TESTEXCLUSIONS="$TESTEXCLUSIONS test_curses"
@@ -67,6 +67,19 @@ esac
# test_zipfile: Issue 17753, requires write access to test and email.test
TESTEXCLUSIONS="$TESTEXCLUSIONS test_zipfile"
+# for some reason, this fails on s390x only, starting in 2.7.14rc1 ...
+case "$(uname -m)" in s390*)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_regrtest"
+esac
+
+# testsuite not ready for OpenSSL 1.2 ...
+case "$vendor" in Debian)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ftplib test_ssl"
+esac
+
+# test_site: site-/dist-packages mismatches
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_site"
+
if [ "$su_user" = nobody ]; then
log=/dev/null
else
diff --git a/debian/tests/testsuite-dbg b/debian/tests/testsuite-dbg
index 9215bb9..a6145b3 100644
--- a/debian/tests/testsuite-dbg
+++ b/debian/tests/testsuite-dbg
@@ -11,13 +11,8 @@ if [ "$(whoami)" = root ]; then
if [ -e /etc/default/apport ]; then
# stop apport
- stop apport 2>/dev/null || true
+ service apport stop 2>/dev/null || true
sed -i '/^enabled=/s/=.*/=0/' /etc/default/apport 2>/dev/null
-
- if status apport | grep -q start; then
- echo >&2 "apport is running. needs to be disabled before running the tests"
- exit 1
- fi
fi
fi
@@ -45,6 +40,9 @@ TESTPYTHON="python2.7-dbg -E -Wd -3 -tt /usr/lib/python2.7/test/regrtest.py"
TESTOPTS="-w -uall,-network,-urlfetch,-gui,-xpickle"
TESTEXCLUSIONS="-x"
+# test_cpickle: starts to fail with 2.7.11, see http://bugs.python.org/issue25698
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_cpickle"
+
# test_curses: error: copywin() returned ERR
TESTEXCLUSIONS="$TESTEXCLUSIONS test_curses"
@@ -64,6 +62,20 @@ esac
# test_zipfile: Issue 17753, requires write access to test and email.test
TESTEXCLUSIONS="$TESTEXCLUSIONS test_zipfile"
+# testsuite not ready for OpenSSL 1.2 ...
+case "$vendor" in Debian)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ftplib test_ssl"
+esac
+
+# test_site: site-/dist-packages mismatches
+TESTEXCLUSIONS="$TESTEXCLUSIONS test_site"
+
+# TODO: test_ctypes fails on arm64 on the debug build
+echo "uname: $(uname -a)"
+case "$(uname -m)" in armv8*|aarch64*)
+ TESTEXCLUSIONS="$TESTEXCLUSIONS test_ctypes"
+esac
+
if [ "$su_user" = nobody ]; then
log=/dev/null
else
diff --git a/debian/watch b/debian/watch
index 28e3fa7..7a5d4ba 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,3 +1,3 @@
version=3
opts=dversionmangle=s/.*\+//,uversionmangle=s/([abcr]+[1-9])$/~$1/ \
- http://www.python.org/ftp/python/2\.7(\.\d)?/Python-(2\.7[.\dabcr]*)\.tgz
+ http://www.python.org/ftp/python/(2\.7\.\d*)/Python-(2\.7[.\dabcr]*)\.tgz