1 Commits

Author SHA1 Message Date
Helmut Grohne
13d3a4882c Import Debian changes 2.7.18-8+deb11u1
python2.7 (2.7.18-8+deb11u1) bullseye; urgency=medium
.
  * Non-maintainer upload by the LTS Team.
  * Add testsuite-fix-with-expat.diff: Fix autopkgtests with updated expat.
  * Fix issue9189.diff: Update test suite to match behaviour change.
  * Add CVE-2021-23336.diff: Only use '&' as query string separator
  * Add CVE-2022-0391.diff: Make urlsplit robust against newlines
  * Add CVE-2022-48560.diff: Fix use-after-free in heapq module.
  * Add CVE-2022-48565.diff: Reject entities declarations while parsing XML
    plists.
  * Add CVE-2022-48566.diff: Make constant time comparison more constant-time.
  * Add CVE-2023-24329.diff: More WHATWG-compatible URL parsing
  * Add CVE-2023-40217.diff: Prevent reading unauthenticated data on a
    SSLSocket
.
python2.7 (2.7.18-8) unstable; urgency=medium
.
  [ Andreas Beckmann ]
  * python2.7, libpython2.7-minimal: Add Breaks: python-dev (<< 2.7.18),
    libpython-dev (<< 2.7.18), python-dbg (<< 2.7.18),
    libpython-dbg (<< 2.7.18) to remove more unversioned python packages.
    Add Breaks: libgcj-common (<< 1:7), libvolk1-bin (<< 2),
    pysycache (<< 3.1-4~), python-catkin-pkg (<< 0.4.14-2~),
    python-chardet (<< 3.0.4-6~), python-extras (<< 1.0.0-4~),
    python-fixtures (<< 3.0.0-3~), python-genpy (<< 0.6.9-2~),
    python-iso8601 (<< 0.1.12-2~), python-linecache2 (<< 1.0.0-4~),
    python-pbr (<< 5.4.5), python-pyasn1 (<< 0.4.2-4~),
    python-pygame (<< 1.9.6+dfsg-3~), python-pyicu (<< 2.2-3~),
    python-rospkg (1.1.10-2~), python-std-msgs (<< 0.5.12-2~),
    python-testtools (<< 2.3.0-7~), python-traceback2 (<< 1.4.0-6~),
    python-traitlets (<< 4.3.3-3~), python-urllib3 (<< 1.25.8-2~),
    python-yaml (<< 5.3.1-2~) to remove some persisting obsolete module
    packages along the unversioned python packages on upgrades from buster.
    Closes: #990520.
  * libpython2.7-stdlib: Breaks: ${python27:Breaks}, too.
.
python2.7 (2.7.18-7) unstable; urgency=medium
.
  [ Andreas Beckmann ]
  * python2.7, libpython2.7-minimal: Add Breaks: python (<< 2.7.18) to ensure
    removal of the unversioned python packages on upgrades from buster. The
    previously added (transitive) Breaks are not sufficient in a few upgrade
    scenarios. Closes: #987661.
.
python2.7 (2.7.18-6) unstable; urgency=medium
.
  * python2.7, libpython2.7-minimal: Add Breaks: python-minimal (<< 2.7.18),
    libpython-stdlib (<< 2.7.18) to ensure removal of the unversioned python
    packages on upgrades from buster (Andreas Beckmann). Closes: #984777.
.
python2.7 (2.7.18-5) unstable; urgency=medium
.
  * Use the posix_prefix layout when inside a virtualenv (Stefano Rivera).
    Closes: #983552.
.
python2.7 (2.7.18-4) unstable; urgency=medium
.
  * Update the patch for issue #42938 (Marc Deslauriers). Closes: #983516.
.
python2.7 (2.7.18-2) unstable; urgency=medium
.
  * Fix issue #39017: Avoid infinite loop when reading specially crafted TAR
    files using the tarfile module (CVE-2019-20907).
  * Backport of 0b297d4ff1c0e4480ad33acae793fbaf4bf015b4, trimmed down to the
    fix for CVE-2020-8492. Closes: #970099.
  * Fix FTCBFS: Add back a dependency on python2.7:any (Helmut Grohne).
    Closes: #939514.
  * Fix issue #42938: Replace snprintf with Python unicode formatting in
    ctypes param reprs (CVE-2021-3177) (Saif Hakim). LP: #1916117.
.
python2.7 (2.7.18-1) unstable; urgency=medium
.
  * Python 2.7.18 release.
  * Let the Python2 end-of-life banner point to the python3 packages, not to
    the online documentation.
.
python2.7 (2.7.18~rc1-2) unstable; urgency=medium
.
  * Ignore some autopkg tests:
    - test_ssl: Fails with OPENSSL_TLS_SECURITY_LEVEL=2.
    - tst_io: Fails on Ubuntu's autopkg test infrastructure.
  * Lower OpenSSL security level from 2 to 1 during testing as test_ssl
    assumes that.
  * Add XB-Cnf-Visible-Pkgname header on the python*-minimal package to
    point command-not-found at the full one. LP: #1867157
.
python2.7 (2.7.18~rc1-1) unstable; urgency=medium
.
  * Python 2.7.18 release candidate 1.
    - bpo-38576: Disallow control characters in hostnames in http.client,
      addressing CVE-2019-18348.
  * Make autopkgtests cross-test-friendly (Steve Langasek).
.
python2.7 (2.7.17-1) unstable; urgency=medium
.
  * Python 2.7.17 release.
.
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.
.
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.
.
python2.7 (2.7.16-3) unstable; urgency=medium
.
  * Update to 20190708 from the 2.7 branch.
  * Bump standards version.
.
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
.
python2.7 (2.7.16-1) unstable; urgency=medium
.
  * Python 2.7.16 release.
    - Now has a version without a trailing '+'. Closes: #914072.
.
python2.7 (2.7.16~rc1-1) unstable; urgency=medium
.
  * Python 2.7.16 release candidate 1.
.
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.
.
python2.7 (2.7.15-8) unstable; urgency=medium
.
  * Fix typo in autopkg test.
.
python2.7 (2.7.15-7) unstable; urgency=medium
.
  * Expect the test_site test failing as in 3.7.
.
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.
.
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.
.
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.
.
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.
.
python2.7 (2.7.15-1) unstable; urgency=medium
.
  * Python 2.7.15 release.
.
python2.7 (2.7.15~rc1-1) unstable; urgency=medium
.
  * Python 2.7.15 release candidate 1.
.
python2.7 (2.7.14-8) unstable; urgency=medium
.
  * Update to 20180402 from the 2.7 branch.
.
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.
.
python2.7 (2.7.14-6) unstable; urgency=medium
.
  * Don't run lib2to3 tests which rely on the pickled grammar files.
.
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.
.
python2.7 (2.7.14-4) unstable; urgency=medium
.
  * Fix applying the m-i-p-s-r6 patch.
.
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.
.
python2.7 (2.7.14-2) unstable; urgency=medium
.
  * Really rename the md5_* functions.
.
python2.7 (2.7.14-1) unstable; urgency=medium
.
  * Python 2.7.14 release.
.
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.
.
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.
.
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.
.
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.
.
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.
.
python2.7 (2.7.13-2) unstable; urgency=medium
.
  * Lower priority of interpreter packages to optional.
.
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.
.
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.
.
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.
.
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.
.
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.
.
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.
.
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.
.
python2.7 (2.7.12-1) unstable; urgency=medium
.
  * Python 2.7.12 release.
.
python2.7 (2.7.12~rc1-2) unstable; urgency=medium
.
  * Extend debian/copyright to the files shipped in the wheel files.
.
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.
.
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.
.
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.
.
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.
.
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.
.
python2.7 (2.7.11-7) unstable; urgency=medium
.
  * Update to 20160330 from the 2.7 branch.
.
python2.7 (2.7.11-6) unstable; urgency=medium
.
  * Update to 20160323 from the 2.7 branch.
  * Always build _math.o with -fPIC.
.
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.
.
python2.7 (2.7.11-4) unstable; urgency=medium
.
  * Update to 20160222, taken from the 2.7 release branch.
.
python2.7 (2.7.11-3) unstable; urgency=medium
.
  * Revert patches concerning issue #22995.
.
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.
.
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.
.
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.
.
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.
.
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.
.
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.
.
python2.7 (2.7.10-1) unstable; urgency=medium
.
  * Python 2.7.10 release.
.
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.
.
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.
.
python2.7 (2.7.9-4) unstable; urgency=medium
.
  * Fix installation of the optimized interpreter. Closes: #766877.
.
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.
.
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.
.
python2.7 (2.7.9-1) unstable; urgency=medium
.
  * Python 2.7.9 release.
.
python2.7 (2.7.9~rc1-2) unstable; urgency=medium
.
  * Update to 20141209, taken from the 2.7 release repository.
    - Issue #22959: Remove the *check_hostname* parameter of
      httplib.HTTPSConnection. The *context* parameter should be used instead.
    - Issue #16043: Add a default limit for the amount of data
      xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.
      Closes: #742929.
    - Issue #16042: CVE-2013-1752: smtplib: Limit amount of data read by
      limiting the call to readline(). Closes: #742929.
    - Issue #16041: In poplib, limit maximum line length read from the server
      to prevent CVE-2013-1752. Closes: #742929.
    - Issue #22960: Add a context argument to xmlrpclib.ServerProxy.
    - Issue #22935: Allow the ssl module to be compiled if openssl
      doesn't support SSL 3.
  * Add locales to autopkg test dependencies as in 3.4.
  * Remove Demo/scripts/newslist.* from the examples package, not
    distributable, will get removed in 2.7.9~rc2 sources. See issue #12987.
  * Let ensurepip always use a temporary directory for installations.
.
python2.7 (2.7.9~rc1-1) unstable; urgency=medium
.
  * Python 2.7.9 release candidate 1.
    - Testsuite updates.
    - Issue #16056: Rename test methods to avoid conflict.
    - Issue #20351: Add examples for csv.DictReader and csv.DictWriter.
    - PEP 476: verify certificates by default (#22417).
    - Give urllib.urlopen a context parameter (closes #22927).
    - Allow hostname to be passed to SSLContext even if OpenSSL doesn't
      support SNI (closes #22921).
    - Allow passing cert/ssl information to urllib2.urlopen and
      httplib.HTTPSConnection (backport of issues #9003 and #22366).
  * Let libpython2.7-stdlib break python-urllib3 (<< 1.9.1-3). Closes: #770157.
  * Ignore the test_threading_local test failure in the Debian CI environment.
    Succeeds even there when repeated.
  * Don't pass default compiler search directories in the pkgconfig file.
    Closes: #770935.
.
python2.7 (2.7.8-12) unstable; urgency=medium
.
  * Update to 20141118, taken from the 2.7 branch.
    - Issue #12728: Different Unicode characters having the same uppercase
      but different lowercase are now matched in case-insensitive regular
      expressions.
    - Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian
      platforms.
    - Issues #814253, #9179: Group references and conditional group references
      now work in lookbehind assertions in regular expressions.
    - Issue #22769: Fixed ttk.Treeview.tag_has() when called without arguments.
    - Issue #22787: Allow the keyfile argument of SSLContext.load_cert_chain
      to be None.
    - Issue #22775: Fixed unpickling of Cookie.SimpleCookie with protocol 2.
    - Issue #22776: Brought excluded code into the scope of a try block in
      SysLogHandler.emit().
    - Issue #17381: Fixed ranges handling in case-insensitive regular
      expressions.
    - Issue #19329: Optimized compiling charsets in regular expressions.
    - Issue #22410: Module level functions in the re module now cache compiled
      locale-dependent regular expressions taking into account the locale.
    - Issue #8876: distutils now falls back to copying files when hard linking
      doesn't work.  This allows use with special filesystems such as
      VirtualBox shared folders.
    - Issue #22193: Fixed integer overflow error in sys.getsizeof().
  * Backport the ensurepip patch from 3.4.
  * Disable ensurepip in Debian, at least for the upcoming release.
  * Fix maintainer scripts for byte-code removal. Closes: #769078.
  * Allow building and testing without SSLv3 support (Kurt Roeckx).
    Closes: #768611.
  * Let distutils.sysconfig.get_python_inc() honor the "prefix" argument.
    Closes: #769720.
.
python2.7 (2.7.8-11) unstable; urgency=medium
.
  * Update to 20141018, taken from the 2.7 branch.
    - Issue #9351: Defaults set with set_defaults on an argparse subparser
      are no longer ignored when also set on the parent parser.
    - Issue #20421: Add a .version() method to SSL sockets exposing the actual
      protocol version in use.
    - Issue #22435: Fix a file descriptor leak when SocketServer bind fails.
    - Issue #13664: GzipFile now supports non-ascii Unicode filenames.
    - Issue #13096: Fixed segfault in CTypes POINTER handling of large
      values.
    - Issue #11694: Raise ConversionError in xdrlib as documented.
    - Issue #10712: 2to3 has a new "asserts" fixer that replaces deprecated names
      of unittest methods (e.g. failUnlessEqual -> assertEqual).
  * Pass -ffat-lto-objects for LTO enabled builds with GCC 4.9.
.
python2.7 (2.7.8-10) unstable; urgency=medium
.
  * Update to 20141007, taken from the 2.7 branch.
.
python2.7 (2.7.8-9) unstable; urgency=medium
.
  * Fix refcounting error in the fix for issue #22523. Closes: #762010.
.
python2.7 (2.7.8-8) unstable; urgency=medium
.
  * Update to 20141002, taken from the 2.7 branch.
  * Refresh patches.
  * Apply proposed patch for issue #22523. Closes: #762010.
.
python2.7 (2.7.8-7) unstable; urgency=medium
.
  * Update to 20140909, taken from the 2.7 branch.
  * debian/tests/testsuite{,-dbg}: Several tests fail with configured proxy
    and disabled network test resources. Explicitly unset proxy variables.
    See issue #22371.
.
python2.7 (2.7.8-6) unstable; urgency=medium
.
  * distuils: For extension builds, always pass BASECFLAGS.
.
python2.7 (2.7.8-5) unstable; urgency=medium
.
  * Build-depend on dpkg-dev (>= 1.17.11).
.
python2.7 (2.7.8-4) unstable; urgency=medium
.
  * distutils: For extension builds pass the CPPFLAGS, CFLAGS, LDFLAGS
    used for the python build when these flags cannot be found in the
    environment.
  * Don't use the system python during the build.
  * Build using autotools-dev. Closes: #756772.
  * Pass AR and RANLIB for lto enabled builds.
.
python2.7 (2.7.8-3) unstable; urgency=medium
.
  * Call dpkg -L in the maintainer scripts with an architecture qualifier
    for M-A: same packages. Closes: #736385.
  * Apply the plat-linux2_mips patch for mips64 and mips64el. Closes: #755578.
.
python2.7 (2.7.8-2) unstable; urgency=medium
.
  * Revert the backport of issue #1856 (avoid daemon thread problems
    at shutdown). Issue #21963. Apparently ceph has issues with it.
    Closes: #754341.
.
python2.7 (2.7.8-1) unstable; urgency=medium
.
  * Python 2.7.8 release.
.
python2.7 (2.7.7-2) unstable; urgency=medium
.
  * Re-enable the test_pydoc, test_tools, test_subprocess and test_uuid
    autopkg tests.
  * In the autopkg tests, make $ADTTMP accessible to the su user.
.
python2.7 (2.7.7-1) unstable; urgency=medium
.
  * Python 2.7.7 release.
  * Refresh patches.
  * In the autopkg tests, set HOME to the temporary home directory after
    the su call.
  * Expect test failures in the distutils autopkg tests.
  * Disable the test_solaris_enable_shared test.
.
python2.7 (2.7.7~rc1-1) unstable; urgency=medium
.
  * Python 2.7.7 release candidate 1.
  * Run the testsuite in a temporary home directory.
.
python2.7 (2.7.6-8) unstable; urgency=medium
.
  * Set a temporary home directory for the build and the autopkg tests.
.
python2.7 (2.7.6-8) unstable; urgency=medium
.
  * Update to 20140322, taken from the 2.7 branch.
  * Install updated idle icons. LP: #1295969.
  * Update the ssl.match_hostname backport: Change behavior of
    ``ssl.match_hostname()`` to follow RFC 6125, for security reasons.
    It now doesn't match multiple wildcards nor wildcards inside IDN fragments.
    Closes: #740255.
.
python2.7 (2.7.6-7) unstable; urgency=medium
.
  * Include test data for test_imghdr test.
.
python2.7 (2.7.6-6) unstable; urgency=high
.
  * Update to 20140225, taken from the 2.7 branch.
    - CVE-2014-1912. Fix issue 20246, buffer overflow in socket.recvfrom_into.
  * Build without ffi on or1k. Closes: #738519.
  * Allow loading of extensions in the sqlite module. Closes: #739555.
  * Update autopkg tests (Martin Pitt):
    - Don't fail if apport is not installed.
    - Call su with explicit shell, as nobody has nologin as default shell now.
    - Only use $SUDO_USER if that user actually exists in the testbed.
    - Drop obsolete chowning of $TMPDIR and $ADTTMP; with current autopkgtest
      $TMPDIR has appropriate permissions, and $ADTTMP is not being used.
.
python2.7 (2.7.6-5) unstable; urgency=medium
.
  * Update to 20140111, taken from the 2.7 branch.
  * Build-depend on net-tools, required for the test_uuid test.
  * Build-depend on the default Tcl/Tk.
  * Add two new autopkg tests to run the failing tests.
.
python2.7 (2.7.6-4) unstable; urgency=medium
.
  * Update to 20131230, taken from the 2.7 branch.
  * Disable sphinx refcounting extension, removed in sphinx-1.2.
    Closes: #733404.
.
python2.7 (2.7.6-3) unstable; urgency=low
.
  * Update to 20131206, taken from the 2.7 branch.
  * Disable the test_uuid autopkg test, hanging, missing entropy?
  * Drop python dependency in libpython2.7-dbg.
  * Revert patch from http://bugs.python.org/issue19352 as it completely breaks
    unittest discovery on Debian/Ubuntu. LP: #1255505.
.
python2.7 (2.7.6-2) unstable; urgency=low
.
  * Update to 20131121, taken from the 2.7 branch.
  * Fix test support when the running kernel doesn't handle port reuse.
  * Build-depend on libdb-dev (<< 1:6.0) instead of a specific db version.
.
python2.7 (2.7.6-1) unstable; urgency=low
.
  * Python 2.7.6 release.
  * Update to 20131119, taken from the 2.7 branch.
  * For autopkg tests, only run the separate tests when defined.
  * Don't run the curses autopkg test.
  * Disable running the testsuite on mipsn32(el) and mips64(el),
    requested by YunQiang Su. Closes: #719057.
.
python2.7 (2.7.5-8) unstable; urgency=medium
.
  * Update to 20130917, taken from the 2.7 branch.
    - Fix SSL module to handle NULL bytes inside subjectAltNames general
      names (CVE-2013-4238). Closes: #719566.
  * Don't run the curses autopkg test.
  * Set Multi-Arch attributes for binary packages.
  * Fix multiarch include header for sparc64. Closes: #714802, #715063.
.
python2.7 (2.7.5-7) unstable; urgency=low
.
  * Update to 20130803, taken from the 2.7 branch.
  * Update package descriptions (Filipus Klutiero). Closes: #715801.
  * Fix multiarch include header for sparc64. Closes: #715063.
  * Move removal of the sitecustomize.py file into the libpython-minimal
    postrm. Closes: #709964.
.
python2.7 (2.7.5-6) unstable; urgency=low
.
  * Update to 20130613, taken from the 2.7 branch.
  * Refresh patches.
  * Don't run consistency check for cross builds.
  * Really skip byte compile of non-existing sitecustomize.py.
  * Fix the multiarch header file for mips64 (YunQiang Su). Closes: #710374.
.
python2.7 (2.7.5-5) unstable; urgency=low
.
  * Update to 20130602, taken from the 2.7 branch.
  * Fix possible abuse of ssl.match_hostname() for denial of service
    using certificates with many wildcards (CVE-2013-2099). Closes: #709066.
  * Don't try to byte-compile sitecustomize.py if the target of the
    symlink doesn't exist anymore. Closes: #709157.
  * Handle byte compilation in python2.7{-minimal,}, byte removal in
    libpython2.7{-minimal,-stdlib}. Closes: #709964.
  * Backport patch to fix issue #13146, possible race conditions when writing
    .pyc/.pyo files in py_compile.py (Barry Warsaw). LP: #1058884.
  * Fix issue #17988, internal error in regular expression engine on 32bit
    targets (closes: #710315).
.
python2.7 (2.7.5-4) unstable; urgency=low
.
  * Move the libc dependency of -minimal from Depends to Pre-Depends.
    Closes: #708831.
  * Disable the test_io test on armel, armhf, mips, mipsel. Hangs the
    buildds.
.
python2.7 (2.7.5-3) unstable; urgency=high
.
  * Fix the multiarch header file for ppc64. Closes: #708641.
.
python2.7 (2.7.5-2) unstable; urgency=low
.
  * Only run the _multiprocessing build check on linux targets.
.
python2.7 (2.7.5-1) unstable; urgency=low
.
  * Python 2.7.5 release.
  * Set the platinclude dir back to the non-multiarch include path,
    where the multiarch pyconfig.h compatibility header is found.
  * Fix issue #17703: Fix a regression where an illegal use of Py_DECREF()
    after interpreter finalization can cause a crash.
  * Issue #17754, setting LANG and LC_ALL for the compiler call in ctypes/util.
  * Issue #17761, platform._parse_release_file doesn't close the
    /etc/lsb-release file, and doesn't know about 'Ubuntu'.
  * Fix autopkg tests.
  * Re-enable lto and pgo optimized builds, accidentally disabled for the
    last upload.
  * more autopkg test fixes.
  * Link the ctypes extension with the shared libffi library.
  * Fix a distutils test with the deb install layout.
  * Move lib2to3 library into libpython2.7-stdlib. Closes: #705078.
  * Don't set yet any Multi-Arch: attributes in Debian.
.
python2.7 (2.7.4-2) experimental; urgency=low
.
  * Idle updates:
    - Issue #17657: Show full Tk version in IDLE's about dialog.
    - Issue #17613: Prevent traceback when removing syntax colorizer.
    - Issue #1207589: Backwards-compatibility patch for right-click menu.
    - Issue #16887: Now accepts Cancel in tabify/untabify dialog box.
    - Issue #14254: Now handles readline correctly across shell restarts.
    - Issue #17614: No longer raises exception when quickly closing a file.
    - Issue #6698: Now opens just an editor window when configured to do so.
    - Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer
      raises an exception.
    - Issue #6649: Fixed missing exit status.
  * Build a libpython2.7-testsuite package. LP: #301629.
  * Add autopkg tests to run the installed testsuite in normal and debug
    mode.
  * Re-enable running the tests during the build.
  * Add the io and _io modules to libpython2.7-minimal.
  * Backport ssl.CertificateError as well. Closes: #626539. LP: #1166344.
  * Don't ship an uncompress python man page. Closes: #705079.
.
python2.7 (2.7.4-1ubuntu4) raring; urgency=low
.
  * Build a libpython2.7-testsuite package. LP: #301629.
  * Add autopkg tests to run the installed testsuite in normal and debug
    mode.
  * Re-enable running the tests during the build.
  * Idle updates:
    - Issue #17657: Show full Tk version in IDLE's about dialog.
    - Issue #17613: Prevent traceback when removing syntax colorizer.
    - Issue #1207589: Backwards-compatibility patch for right-click menu.
    - Issue #16887: Now accepts Cancel in tabify/untabify dialog box.
    - Issue #14254: Now handles readline correctly across shell restarts.
    - Issue #17614: No longer raises exception when quickly closing a file.
    - Issue #6698: Now opens just an editor window when configured to do so.
    - Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer
      raises an exception.
    - Issue #6649: Fixed missing exit status.
.
python2.7 (2.7.4-1ubuntu3) raring; urgency=low
.
  * Add the io and _io modules to libpython2.7-minimal. LP: #1165172.
  * Add missing import for the ssl module. LP: #1166644.
.
python2.7 (2.7.4-1ubuntu2) raring; urgency=low
.
  * Backport ssl.CertificateError as well. Closes: #626539. LP: #1166344.
.
python2.7 (2.7.4-1ubuntu1) raring; urgency=low
.
  * Merge with Debian; remaining changes:
    - Build-depend on python:any instead of python.
.
python2.7 (2.7.4-1) experimental; urgency=low
.
  * Python 2.7.4 release.
    - Issue #17550: Fix the --enable-profiling configure switch.
    - Issue #15801 (again): With string % formatting, relax the type check
      for a mapping such that any type with a __getitem__ can be used on the
      right hand side.
    - Issue #17625: In IDLE, close the replace dialog after it is used.
    - Issue #17531: Fix tests that thought group and user ids were always
      the int type. Also, always allow -1 as a valid group and user id.
    - Issue 17538: Document XML vulnerabilties
  * Byte-compile files in libpython2.7-dbg.
  * libpython2.7-minimal: Break earlier python2.7-minimal versions.
    Closes: #704084. LP: #1157687.
  * Call python with -E -S for the byte compilation.
.
python2.7 (2.7.4~rc1-4) experimental; urgency=low
.
  * Fix byte-compiliation/-removal for the split-out library packages.
    LP: #1160944.
.
python2.7 (2.7.4~rc1-3) experimental; urgency=low
.
  * Fix webbrowser update. Closes: #703872. LP: #1159636.
.
python2.7 (2.7.4~rc1-2) experimental; urgency=low
.
  * Backport webbrowser updates from 3.3. Closes: #700429.
  * Build again using db-5.1 instead of db-5.3.
.
python2.7 (2.7.4~rc1-1) experimental; urgency=low
.
  * Python 2.7.4 release candidate 1.
    - Issue #10211: Buffer objects expose the new buffer interface internally.
    - Issue #10212: cStringIO and struct.unpack support new buffer objects.
    - Issue #12098: multiprocessing on Windows now starts child processes
      using the same sys.flags as the current process.
    - Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.
    - Issue #9090: When a socket with a timeout fails with EWOULDBLOCK or
      EAGAIN, retry the select() loop instead of bailing out.
    - Issue #1285086: Get rid of the refcounting hack and speed up
      urllib.unquote().
    - Issue #17368: Fix an off-by-one error in the Python JSON decoder
      that caused a failure while decoding empty object literals when
      object_pairs_hook was specified.
    - Issue #17477: Update the bsddb module to pybsddb 5.3.0, supporting
      db-5.x, and dropping support for db-4.1 and db-4.2.
    - Issue #17192: Update the ctypes module's libffi to v3.0.13.  This
      specifically addresses a stack misalignment issue on x86 and issues on
      some more recent platforms.
    - Issue #11420: make test suite pass with -B/DONTWRITEBYTECODE set.
    - Issue #17299: Add test coverage for cPickle with file objects
      and general IO objects.
    - Issue #11963: remove human verification from test_parser and
      test_subprocess.
    - Issue #16004: Add `make touch`.
    - Issue #17047: remove doubled words in docs and docstrings
  * Rework the sysconfigdata patch into something upstreamable.
.
python2.7 (2.7.3-16ubuntu2) raring; urgency=low
.
  * Update to 20130315, taken from the 2.7 branch.
    - Issue #1285086: Get rid of the refcounting hack and speed
      up urllib.unquote().
    - Issue #17368: Fix an off-by-one error in the Python JSON decoder
      that caused a failure while decoding empty object literals when
      object_pairs_hook was specified.
    - Issue #17299: Add test coverage for cPickle with file objects and general
      IO objects.
    - Issue #11963: Remove human verification from test_parser and
      test_subprocess.
    - Issue #16004: Add `make touch`.
    - Issue #17412: Update 2.7 Doc/make.bat to also use sphinx-1.0.7.
    - Issue #17047: Remove doubled words in docs and docstrings.
  * Revert the patch for Issue #1159051, handling corrupted gzip files
    with unexpected EOF. LP: #1116079.
.
python2.7 (2.7.3-16ubuntu1) raring; urgency=low
.
  * Merge with Debian; remaining changes:
    - Build-depend on python:any instead of python.
  * Update symbols files.
.
python2.7 (2.7.3-16) experimental; urgency=low
.
  * Update to 20130308, taken from the 2.7 branch.
    - Issue #10156: In the interpreter's initialization phase, unicode globals
      are now initialized dynamically as needed.
    - Issue #16975: Fix error handling bug in the escape-decode decoder.
    - Issue #9290: In IDLE the sys.std* streams now implement io.TextIOBase
      interface and support all mandatory methods and properties.
    - Issue #13454: Fix a crash when deleting an iterator created by
      itertools.tee() if all other iterators were very advanced before.
    - Issue #3754: fix typo in pthread AC_CACHE_VAL.
    - Issue #17029: Let h2py search the multiarch system include directory.
    - Issue #16445: Fixed potential segmentation fault when deleting an
      exception message.
    - Issue #17275: Corrected class name in init error messages of the
      C version of BufferedWriter and BufferedRandom.
    - Issue #7963: Fixed misleading error message that issued when object is
      called without arguments.
    - Issue #5308: Raise ValueError when marshalling too large object (a
      sequence with size >= 2**31), instead of producing illegal marshal data.
    - Issue #17043: The unicode-internal decoder no longer read past the end of
      input buffer.
    - Issue #16979: Fix error handling bugs in the unicode-escape-decode
      decoder.
    - Issue #17278: Fix a crash in heapq.heappush() and heapq.heappop() when
      the list is being resized concurrently.
    - Issue #17018: Make Process.join() retry if os.waitpid() fails with EINTR.
    - Issue #14720: sqlite3: Convert datetime microseconds correctly.
    - Issue #17225: JSON decoder now counts columns in the first line starting
      with 1, as in other lines.
    - Issue #7842: backported fix for py_compile.compile() syntax error
      handling.
    - Issue #13153: Tkinter functions now raise TclError instead of ValueError
      when a unicode argument contains non-BMP character.
    - Issue #9669: Protect re against infinite loops on zero-width matching in
      non-greedy repeat.
    - Issue #13169: The maximal repetition number in a regular expression
      has been increased from 65534 to 2147483647 (on 32-bit platform) or
      4294967294 (on 64-bit).
    - Issue #11311: StringIO.readline(0) now returns an empty string
      as all other file-like objects.
    - Issue #16800: tempfile.gettempdir() no longer left temporary files when
      the disk is full.  Original patch by Amir Szekely.
    - Issue #13555: cPickle now supports files larger than 2 GiB.
    - Issue #17052: unittest discovery should use self.testLoader.
    - Issue #4591: Uid and gid values larger than 2**31 are supported now.
    - Issue #17141: random.vonmisesvariate() no more hangs for large kappas.
    - Issue #17149: Fix random.vonmisesvariate to always return results in
      the range [0, 2*math.pi].
    - Issue #1470548: XMLGenerator now works with UTF-16 and UTF-32 encodings.
    - Issue #6975: os.path.realpath() now correctly resolves multiple nested
      symlinks on POSIX platforms.
    - Issue #17156: pygettext.py now correctly escapes non-ascii characters.
    - Issue #7358: cStringIO.StringIO now supports writing to and reading from
      a stream larger than 2 GiB on 64-bit systems.
    - IDLE was displaying spurious SystemExit tracebacks when running scripts
      that terminated by raising SystemExit (i.e. unittest and turtledemo).
    - Issue #10355: In SpooledTemporaryFile class mode and name properties and
      xreadlines method now work for unrolled files.  encoding and newlines
    - Issue #16686: Fixed a lot of bugs in audioop module.
    - Issue #17073: Fix some integer overflows in sqlite3 module.
    - Issue #6083: Fix multiple segmentation faults occured when
      PyArg_ParseTuple parses nested mutating sequence.
    - Issue #5289: Fix ctypes.util.find_library on Solaris.
    - Issue #17106: Fix a segmentation fault in io.TextIOWrapper when an
      underlying stream or a decoder produces data of an unexpected type (i.e.
      when io.TextIOWrapper initialized with text stream or use bytes-to-bytes
      codec).
    - Issue #13994: Add compatibility alias in distutils.ccompiler for
      distutils.sysconfig.customize_compiler.
    - Issue #15633: httplib.HTTPResponse is now mark closed when the server
      sends less than the advertised Content-Length.
    - Issue #15881: Fixed atexit hook in multiprocessing.
    - Issue #14340: Upgrade the embedded expat library to version 2.1.0.
    - Issue #11159: SAX parser now supports unicode file names.
    - Issue #6972: The zipfile module no longer overwrites files outside of
      its destination path when extracting malicious zip files.
    - Issue #17049: Localized calendar methods now return unicode if a locale
      includes an encoding and the result string contains month or weekday (was
      regression from Python 2.6).
    - Issue #4844: ZipFile now raises BadZipfile when opens a ZIP file with an
      incomplete "End of Central Directory" record.
    - Issue #15505: `unittest.installHandler` no longer assumes SIGINT handler
      is set to a callable object.
    - Issue #17051: Fix a memory leak in os.path.isdir() on Windows.
    - Issue #12268: The io module file object write methods no longer abort
      early when a write system calls is interrupted (EINTR).
    - Issue #17249: convert a test in test_capi to use unittest and reap
      threads.
    - We now run both test_email.py and test_email_renamed.py when running the
      test_email regression test.  test_email_renamed contains some tests that
      test_email does not.
    - Issue #17041: Fix testing when Python is configured with the
      --without-doc-strings option.
    - Issue #5033: Fix building of the sqlite3 extension module when the
      SQLite library version has "beta" in it.
    - Issue #17228: Fix building without pymalloc.
    - Issue #17086: Backport the patches from the 3.3 branch to cross-build
      the package.
    - Issue #16406: combine the pages for uploading and registering to PyPI.
    - Issue #16403: Document how distutils uses the maintainer field in
      PKG-INFO.
    - Issue #16695: Document how glob handles filenames starting with a dot.
    - Issue #8890: Stop advertising an insecure practice by replacing uses
      of the /tmp directory with better alternatives in the documentation.
    - Issue #17203: add long option names to unittest discovery docs.
  * python2.7-dbg, libpython2.7-dbg: Drop dependency on python.
  * python2.7-dbg: Make gdb (not gdb-minimal) a recommendation.
  * python2.7: Replace python2.7-minimal (<< 2.7.3-7). Closes: #702005.
  * Build the _md5, _sha1, _sha256 and _sha512 extension modules.
  * Fix multiarch include for AArch64.
.
python2.7 (2.7.3-15) experimental; urgency=low
.
  * Update to 20130124, taken from the 2.7 branch.
    - Issue #14850: Now a charmap decoder treats U+FFFE as "undefined mapping"
      in any mapping, not only in a Unicode string.
    - Issue #11461: Fix the incremental UTF-16 decoder.
    - Issue #1159051: GzipFile now raises EOFError when reading a corrupted
      file with truncated header or footer.
    - Issue #16992: On Windows in signal.set_wakeup_fd, validate the file
      descriptor argument.
    - Issue #15861: tkinter now correctly works with lists and tuples
      containing strings with whitespaces, backslashes or unbalanced braces.
    - Issue #10527: Use poll() instead of select() for multiprocessing pipes.
    - Issue #9720: zipfile now writes correct local headers for files larger
      than 4 GiB.
    - Issue #16829: IDLE printing no longer fails if there are spaces or other
      special characters in the file path.
    - Issue #13899: \A, \Z, and \B now correctly match the A, Z, and B literals
      when used inside character classes (e.g. '[\A]').
    - Issue #16398: Optimize deque.rotate() so that it only moves pointers
      and doesn't touch the underlying data with increfs and decrefs.
    - Issue #15109: Fix regression in sqlite3's iterdump method where it would
      die with an encoding error if the database contained string values
      containing non-ASCII.
    - Issue #15545: Fix regression in sqlite3's iterdump method where it was
      failing if the connection used a row factory (such as sqlite3.Row) that
      produced unsortable objects.
    - Issue #16953: Fix socket module compilation on platforms with
      HAVE_BROKEN_POLL.
    - Issue #16836: Enable IPv6 support even if IPv6 is disabled on the
      build host.
    - Issue #15539: Fix a number of bugs in Tools/scripts/pindent.py.
  * Backport cross-build support from python3.3. LP: #873007.
  * Add pyconfig.h compatibility headers. Closes: #695667. LP: #1094246.
.
python2.7 (2.7.3-14) experimental; urgency=low
.
  * Update to 20130105, taken from the 2.7 branch.
    - Issue #16367: Fix FileIO.readall() on Windows for files larger than 2 GB.
    - Issue #15516: Fix a bug in PyString_FromFormat where it failed
      to properly ignore errors from a __int__() method.
    - Issue #16839: Fix a segfault when calling unicode() on a classic class
      early in interpreter initialization.
    - Issue #16761: Calling ``int()`` and ``long()`` with *base* argument only
      now raises TypeError.
    - Issue #16828: Fix error incorrectly raised by bz2.compress('').
      LP: #1090043.
    - Issue #16819: IDLE method completion now correctly works for unicode
      literals.
    - Issue 10527: make multiprocessing use poll() instead of select()
      if available.
    - Issue #16485: Now file descriptors are closed if file header patching
      failed on closing an aifc file.
    - Issue #12065: connect_ex() on an SSL socket now returns the original
      errno when the socket's timeout expires (it used to return None).
    - Issue #16504: IDLE now catches SyntaxErrors raised by tokenizer.
    - Issue #16702: test_urllib2_localnet tests now correctly ignores proxies
      for localhost tests.
    - Issue #16713: Fix the parsing of tel url with params using urlparse
      module.
    - Issue #16443: Add docstrings to regular expression match objects.
    - Issue #8853: Allow port to be of type long for socket.getaddrinfo().
    - Issue #16597: In buffered and text IO, call close() on the underlying
      stream if invoking flush() fails.
    - Issue #15701: Fix HTTPError info method call to return the headers
      information.
    - Issue #14958: Change IDLE systax highlighting to recognize all string
      and byte literals currently supported in Python 2.7.
    - Issue #15324: Fix regrtest parsing of --fromfile and --randomize options.
    - Issue #16618: Add more regression tests for glob.
    - Issue #13094: add "Why do lambdas defined in a loop with different values
      all return the same result?" programming FAQ.
  * python-config --help returns with an exit value 0. LP: #1093860.
  * Update package description for the -dbg packages. Closes: #696616.
.
python2.7 (2.7.3-13) experimental; urgency=low
.
  * Update to 20121220, taken from the 2.7 branch.
    - Issue #16646: ftplib.FTP.makeport() might lose socket error details.
    - Issue #16298: In HTTPResponse.read(), close the socket when there is no
      Content-Length and the incoming stream is finished.
  * Filter out -D_FORTIFY_SOURCE for the debug builds. Meaningless.
  * Install the _sysconfigdata.py and python-config.sh from both shared
    builds, but don't link extensions against the shared python library.
    Closes: #695979.
  * Fix python2.7-dbg-config symlink. LP: #1091615.
  * During purge, check for existance of /etc/python2.7 before trying
    to remove it. Closes: #696023.
  * python2.7-dev, libpython2.7-dev: Drop the dependency on libssl-dev.
  * debian/patches/sys-multiarch.diff: Expose multiarch tuple as
    sys._multiarch (Barry Warsaw). Closes: #695958.
    Note: Usage of sysconfig.get_config_var('MULTIARCH') is preferred.
.
python2.7 (2.7.3-12) experimental; urgency=low
.
  * Fix typo in pkgconfig file. Closes: #695671, LP: #1088988.
.
python2.7 (2.7.3-11) experimental; urgency=low
.
  * Update to 20121210, taken from the 2.7 branch.
    - Issue #16602: When a weakref's target was part of a long deallocation
      chain, the object could remain reachable through its weakref even though
      its refcount had dropped to zero.
    - Issue #16588: Silence unused-but-set warnings in Python/thread_pthread.
    - Issue #16248: Disable code execution from the user's home directory by
      tkinter when the -E flag is passed to Python.  Patch by Zachary Ware.
    - Issue #16628: Fix a memory leak in ctypes.resize().
    - Issue #13614: Fix setup.py register failure with invalid rst in
      description.
    - Issue #10182: The re module doesn't truncate indices to 32 bits anymore.
    - Issue #16573: In 2to3, treat enumerate() like a consuming call, so
      superfluous list() calls aren't added to filter(), map(), and zip()
      which are directly passed enumerate().
    - Issue #16476: Fix json.tool to avoid including trailing whitespace.
    - Issue #16549: Add tests for json.tools.
    - Issue #15990: Improve argument/parameter documentation.
  * Use _sysconfigdata.py in distutils.sysconfig.
  * Fix distutils.sysconfig.get_{config_h,makefile}_filename for multiarch.
  * Backport ssl.match_hostname from Python3. Closes: #626539.
.
python2.7 (2.7.3-10) experimental; urgency=low
.
  * Update to 20121128, taken from the 2.7 branch.
    - Issue #9011: Fix hacky AST code that modified the CST when compiling
      a negated numeric literal.
    - Issue #16306: Fix multiple error messages when unknown command line
      parameters where passed to the interpreter.
    - Issue #15379: Fix passing of non-BMP characters as integers for the
      charmap decoder (already working as unicode strings).
    - Issue #16453: Fix equality testing of dead weakref objects.
    - Issue #9535: Fix pending signals that have been received but not yet
      handled by Python to not persist after os.fork() in the child process.
    - Issue #15001: fix segfault on "del sys.modules['__main__']".
    - Issue #5057: the peepholer no longer optimizes subscription on unicode
      literals (e.g. u'foo'[0]) in order to produce compatible pyc files
      between narrow and wide builds.
    - Issue #8401: assigning an int to a bytearray slice (e.g. b[3:4] = 5)
      now raises an error.
    - Issue #14700: Fix buggy overflow checks for large width and precision
      in string formatting operations.
    - Issue #16345: Fix an infinite loop when ``fromkeys`` on a dict subclass
      received a nonempty dict from the constructor.
    - Issue #6074: Ensure cached bytecode files can always be updated by the
      user that created them, even when the source file is read-only.
    - Issue #14783: Improve int() and long() docstrings and switch docstrings
      for unicode(), slice(), range(), and xrange() to use multi-line
      signatures.
    - Issue #16030: Fix overflow bug in computing the `repr` of an xrange
      object with large start, step or length.
    - Issue #16029: Fix overflow bug occurring when pickling xranges with large
      start, step or length.
    - Issue #16037: Limit httplib's _read_status() function to work around
      broken HTTP servers and reduce memory usage (backport of a 3.2 fix).
    - Issue #13992: The trashcan mechanism is now thread-safe.  This eliminates
      sporadic crashes in multi-thread programs when several long deallocator
      chains ran concurrently and involved subclasses of built-in container
      types.
    - Issue #15801: Make sure mappings passed to '%' formatting are actually
      subscriptable.
    - Issue #15604: Update uses of PyObject_IsTrue() to check for and handle
      errors correctly.
    - Issue #15897: zipimport.c doesn't check return value of fseek().
    - Issue #16369: Global PyTypeObjects not initialized with PyType_Ready(...).
    - Issue #15033: Fix the exit status bug when modules invoked using
      -m switch, return the proper failure return value (1).
    - Issue #1160: Fix compiling large regular expressions on UCS2 builds.
    - Issue #14313: zipfile now raises NotImplementedError when the compression
      type is unknown.
    - Issue #16408: Fix file descriptors not being closed in error conditions
      in the zipfile module.
    - Issue #16327: The subprocess module no longer leaks file descriptors
      used for stdin/stdout/stderr pipes to the child when fork() fails.
    - Issue #14396: Handle the odd rare case of waitpid returning 0 when not
      expected in subprocess.Popen.wait().
    - Issue #16411: Fix a bug where zlib.decompressobj().flush() might try
      to access previously-freed memory.
    - Issue #16350: zlib.decompressobj().decompress() now accumulates data from
      successive calls after EOF in unused_data, instead of only saving the
      argument to the last call. decompressobj().flush() now correctly sets
      unused_data and unconsumed_tail. A bug in the handling of MemoryError
      when setting the unconsumed_tail attribute has also been fixed.
    - Issue #12759: sre_parse now raises a proper error when the name
      of the group is missing.
    - Issue #16152: fix tokenize to ignore whitespace at the end of the code
      when no newline is found.
    - Issue #1207589: Add Cut/Copy/Paste items to IDLE right click
      Context Menu.
    - Issue #16230: Fix a crash in select.select() when one the lists changes
      size while iterated on.
    - Issue #16228: Fix a crash in the json module where a list changes size
      while it is being encoded.
    - Issue #14897: Enhance error messages of struct.pack and struct.pack_into.
    - Issue #12890: cgitb no longer prints spurious <p> tags in text
      mode when the logdir option is specified.
    - Issue #14398: Fix size truncation and overflow bugs in the bz2 module.
    - Issue #5148: Ignore 'U' in mode given to gzip.open() and gzip.GzipFile().
    - Issue #16220: wsgiref now always calls close() on an iterable response.
    - Issue #16461: Wave library should be able to deal with 4GB wav files,
      and sample rate of 44100 Hz.
    - Issue #16176: Properly identify Windows 8 via platform.platform().
    - Issue #15756: subprocess.poll() now properly handles errno.ECHILD to
      return a returncode of 0 when the child has already exited or cannot
      be waited on.
    - Issue #12376: Pass on parameters in TextTestResult.__init__ super call.
    - Issue #15222: Insert blank line after each message in mbox mailboxes.
    - Issue #16013: Fix CSV Reader parsing issue with ending quote characters.
    - Issue #15421: fix an OverflowError in Calendar.itermonthdates() after
      datetime.MAXYEAR.
    - Issue #15970: xml.etree.ElementTree now serializes correctly the
      empty HTML elements 'meta' and 'param'.
    - Issue #15676: Now "mmap" check for empty files before doing the
      offset check.
    - Issue #15340: Fix importing the random module when /dev/urandom cannot
      be opened.  This was a regression caused by the hash randomization patch.
    - Issue #15841: The readable(), writable() and seekable() methods of
      io.BytesIO and io.StringIO objects now raise ValueError when the object
      has been closed.
    - Issue #16112: platform.architecture does not correctly escape argument to
      /usr/bin/file.
    - Issue #12776,#11839: call argparse type function (specified by
      add_argument) only once. Before, the type function was called twice in
      the case where the default was specified and the argument was given as
      well.  This was especially problematic for the FileType type, as a
      default file would always be opened, even if a file argument was
      specified on the command line.
    - Issue #15906: Fix a regression in argparse caused by the preceding change,
      when action='append', type='str' and default=[].
    - Issue #13370: Ensure that ctypes works on Mac OS X when Python is
      compiled using the clang compiler
    - Issue #15544: Fix Decimal.__float__ to work with payload-carrying NaNs.
    - Issue #15199: Fix JavaScript's default MIME type to
      application/javascript.
    - Issue #15477: In cmath and math modules, add workaround for platforms
      whose system-supplied log1p function doesn't respect signs of zeros.
    - Issue #15908: Fix misbehaviour of the sha1 module when called on data
      larger than 2**32 bytes.
    - Issue #15910: Fix misbehaviour of _md5 and sha1 modules when "updating"
      on data larger than 2**32 bytes.
    - Fix the leak of a dict in the time module when used in an embedded
      interpreter that is repeatedly initialized and shutdown and reinitialized.
    - Issue #12268: File readline, readlines and read or readall methods
      no longer lose data when an underlying read system call is interrupted
      within an io module object.  IOError is no longer raised due to a read
      system call returning EINTR from within these methods.
    - Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
      method doesn't require an argument again.
    - Issue #16559: Add more tests for the json module, including some from the
      official test suite at json.org.
    - Issue #16274: Fix test_asyncore on Solaris.
    - Issue #15040: Close files in mailbox tests for PyPy compatibility.
    - Issue #15802: Fix test logic in TestMaildir.test_create_tmp.
    - Issue #15765: Extend a previous fix to Solaris and OpenBSD for quirky
      getcwd() behaviour (issue #9185) to NetBSD as well.
    - Issue #15615: Add some tests for the json module's handling of invalid
      input data.
    - Issue #15923: fix a mistake in asdl_c.py that resulted in a TypeError
      after 2801bf875a24 (see #15801).
    - Issue #11715: Fix multiarch detection without having Debian development
      tools (dpkg-dev) installed.
    - Issue #15819: Make sure we can build Python out-of-tree from a readonly
      source directory.  (Somewhat related to Issue #9860.)
    - Issue #15822: Ensure 2to3 grammar pickles are properly installed.
    - Issue #13301: use ast.literal_eval() instead of eval()
      in Tools/i18n/msgfmt.py.
    - Issue #16400: Update the description of which versions of a given package
      PyPI displays.
    - Issue #15677: Document that zlib and gzip accept a compression level
      of 0 to mean 'no compression'.
    - Issue #8040: added a version switcher to the documentation.
    - Issue #16115: Improve subprocess.Popen() documentation around args,
      shell, and executable arguments.
    - Issue #15979: Improve timeit documentation.
    - Issue #16036: Improve documentation of built-in int()'s signature and
      arguments.
    - Issue #15935: Clarification of argparse docs, re: add_argument() type and
      default arguments.
    - Issue #13769: Document the effect of ensure_ascii to the return type
      of JSON decoding functions.
    - Issue #14880: Fix kwargs notation in csv.reader,
      .writer & .register_dialect.
    - Issue #14674: Add a discussion of the json module's standard compliance.
  * Clarify location of the gdbinit file. LP: #975676.
  * Fix traceback for missing distutils wininst .exe files. LP: #1081155.
  * Backport python3.3 multiarch packaging changes (Riku Voipio), and fix
    multiarch issues discovered after the backport.
    Closes: #683755.
  * Use a shell implementation for the python-config script.
.
python2.7 (2.7.3-5) unstable; urgency=low
.
  * Enable verbose build for the sharedmods target.
  * Fix issue #15847: allow args to be a tuple in parse_args. Closes: #686583.
  * Fix issue #15340: Fix importing the random module when /dev/urandom cannot
    be opened.  Regression caused by the hash randomization patch.
  * Don't use `-n' anymore to start idle in the desktop/menu files, not
    needed anymore for multiseat installations.
.
python2.7 (2.7.3-4) unstable; urgency=low
.
  * Follwup for issue #9374. Restore the removed attributes in the
    urlparse module.
  * Update symbols files.
  * Disable test_subprocess on the Hurd buildds.
  * Call dh_movefiles with --srcdir. Closes: #685543.
.
python2.7 (2.7.3-3) unstable; urgency=low
.
  * Update to 20120814, taken from the 2.7 branch. Posix relevant patches:
    - Issue #15041: Update "see also" list in tkinter documentation.
    - Issue #14579: Fix error handling bug in the utf-16 decoder.
    - Issue #15368: An issue that caused bytecode generation to be
      non-deterministic when using randomized hashing (-R) has been fixed.
    - Issue #15567: Fix NameError when running threading._test
    - Issue #15424: Add a __sizeof__ implementation for array objects.
    - Issue #13052: Fix IDLE crashing when replace string in Search/Replace
      dialog ended with '\'.
    - Issue #15538: Fix compilation of the getnameinfo() / getaddrinfo()
      emulation code.
    - Issue #9803: Don't close IDLE on saving if breakpoint is open.
    - Issue #12288: Consider '0' and '0.0' as valid initialvalue
      for tkinter SimpleDialog.
    - Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
    - Issue #15469: Add a __sizeof__ implementation for deque objects.
    - Issue #15487: Add a __sizeof__ implementation for buffered I/O objects.
    - Issue #15512: Add a __sizeof__ implementation for parser.
    - Issue #15402: An issue in the struct module that caused sys.getsizeof to
      return incorrect results for struct.Struct instances has been fixed.
    - Issue #15232: when mangle_from is True, email.Generator now correctly
      mangles lines that start with 'From ' that occur in a MIME preamble
      or epilog.
    - Issue #13922: argparse no longer incorrectly strips '--'s that appear
      after the first one.
    - Issue #12353: argparse now correctly handles null argument values.
    - Issue #14635: telnetlib will use poll() rather than select() when possible
      to avoid failing due to the select() file descriptor limit.
    - Issue #6056: Make multiprocessing use setblocking(True) on the
      sockets it uses.
    - Issue #15630: Add an example for "continue" stmt in the tutorial.
    - Issue #15250: Document that filecmp.dircmp compares files shallowly.
  * Fortified build.
  * Python/import.c: Don't export isdir().
  * Modules/socketmodule.c: Don't export netdb_lock.
  * Add breaks for vim-{nox,gtk,gnome,athena}. Closes: #682034.
  * Don't ship python2.pc, should be shipped with python-dev instead.
    Closes: #684612.
.
python2.7 (2.7.3-2) unstable; urgency=low
.
  * Update to 20120713, taken from the 2.7 branch.
    - Issue #15033: Fix the exit status bug when modules invoked using -m swith,
      return the proper failure return value (1).
    - Issue #12268: File readline, readlines and read() methods no longer lose
      data when an underlying read system call is interrupted.  IOError is no
      longer raised due to a read system call returning EINTR from within these
      methods.
    - Issue #13512: Create ~/.pypirc securely (CVE-2011-4944).
    - Issue #7719: Make distutils ignore ``.nfs*`` files instead of choking
      later on.
    - Issue #10053: Don't close FDs when FileIO.__init__ fails.
    - Issue #15247: FileIO now raises an error when given a file descriptor
      pointing to a directory.
    - Issue #14591: Fix bug in Random.jumpahead that could produce an invalid
      Mersenne Twister state on 64-bit machines.
    - Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox
      files on flush().
    - Issue #15219: Fix a reference leak when hashlib.new() is called with
      invalid parameters.
    - Issue #9559: If messages were only added, a new file is no longer
      created and renamed over the old file when flush() is called on an
      mbox, MMDF or Babyl mailbox.
    - Issue #14653: email.utils.mktime_tz() no longer relies on system
      mktime() when timezone offest is supplied.
    - Issue #15101: Make pool finalizer avoid joining current thread.
    - Issue #15054: A bug in tokenize.tokenize that caused string literals
      with 'b' and 'br' prefixes to be incorrectly tokenized has been fixed.
    - Issue #15036: Mailbox no longer throws an error if a flush is done
      between operations when removing or changing multiple items in mbox,
      MMDF, or Babyl mailboxes.
    - Issue #15043: test_gdb is now skipped entirely if gdb security settings
      block loading of the gdb hooks
    - Issue #13557: Clarify effect of giving two different namespaces to exec or
      execfile().
  * Don't build the _hashlib and _ssl extensions as a builtin, but as
    extensions. Closes: #680930.
  * Backport issue #13150: sysconfig no longer parses the Makefile and config.h
    files when imported, instead doing it at build time.  This makes importing
    sysconfig faster and reduces Python startup time by 20%.
  * python2.7: Add a break for python-virtualenv (<< 1.7.1.2-2~).
  * Don't run the test_gdb test on mips/mipsel, not even in debug mode.
  * For lto builds, use -g instead of -g1; filter out lto flags in the
    installed Makefile. Closes: #681348.
.
python2.7 (2.7.3-1) unstable; urgency=low
.
  * Python 2.7.3 release.
  * Update to 20120615, taken from the 2.7 branch.
  * The wininst-* files cannot be built within Debian from the included
    sources, needing a zlib mingw build, which the zlib maintainer isn't
    going to provide. Closes: #639407.
  * Let pydoc handle dist-packages the same as site-packages.
    Closes: #671021.
  * python2.7-doc: Fix underscore.js symlink. Closes: #671795, #676339.
  * Do not italicize punctuation in python(1) manual page (Matt Kraai).
    Closes: #579269.
  * Build _heapq as a builtin (and move it to -minimal).
.
python2.7 (2.7.3~rc2-2.1) unstable; urgency=low
.
  * Non-maintainer upload (with maintainer's permission).
  * Disable testsuite on GNU/kFreeBSD.  (Closes: #669281)
.
python2.7 (2.7.3~rc2-2) unstable; urgency=low
.
  * Use xdg-open/gvfs-open in Lib/webbrowser.py (Michael Vogt).
    LP: #971311.
  * Add a paragraph about python-foo-dbg packages to README.debug.
    LP: #872050.
  * Disable some tests (no feedback from porters):
    - test_socket on hurd-i386.
    - test_io on amd64.
    - test_signal on kfreebsd-*. Closes: #654783.
    - test_threading on sparc.
  * Tighten build dependency on libexpat-dev. Closes: #665346.
  * Build-depend on db-5.1, don't care about testsuite regressions on
    some esoteric ports.  If packages rely on threaded applications or
    transactions, please use the python-bsddb3 package.
    Closes: #621374.
  * Don't ship the python2 and python2-config symlinks, move these
    to the python-minimal and python-dev packages. Closes: #663874.
  * Remove PVER-doc.doc-base.PVER-doc.in. Closes: #656763.
  * Update symbols files.
  * Avoid runtime path for the sqlite extension.
  * CVE-2011-4944, distutils creates ~/.pypirc insecurely. Closes: #650555.
  * Fix issue #14505, file descriptor leak when deallocating file objects
    created with PyFile_FromString(). Closes: #664529.
.
python2.7 (2.7.3~rc2-1) unstable; urgency=low
.
  * Python 2.7.3 release candidate 2.
  * Build-depend on expat >= 2.1~.
.
python2.7 (2.7.3~rc1-1) unstable; urgency=low
.
  * Python 2.7.3 release candidate 1.
  * Update to 20120309, taken from the 2.7 branch.
  * Fix dangling libpython.a symlink. Closes: #660231.
.
python2.7 (2.7.2-13) unstable; urgency=low
.
  * Update to 20120120, taken from the 2.7 branch.
  * Remove patch integrated upstream (issue9054.diff).
  * Backport Issue #9189 to distutils/sysconfig.py as well.
    Closes: #656118.
  * Disable test_io on kfreebsd again. Closes: #654783.
  * Disable test_bsddb3 tests on kfreebsd again.
.
python2.7 (2.7.2-12) unstable; urgency=low
.
  * Run the tests with a script command which doesn't exit immediatly
    when stdin is /dev/null (Colin Watson).
.
python2.7 (2.7.2-11) unstable; urgency=low
.
  * Don't run the test_site tests when $HOME doesn't exist.
.
python2.7 (2.7.2-10) unstable; urgency=low
.
  * Update to 20120110, taken from the 2.7 branch.
  * Overwrite some lintian warnings:
    - The -dbg interpreters are not unusual.
    - The -gdb.py files don't need a python dependency.
    - lintian can't handle a whatis entry starting with one word on the line.
  * Fix test failures related to distutils debian installation layout.
  * Add build-arch/build-indep targets.
  * Regenerate Setup and Makefiles after correcting Setup.local.
  * profiled-build.diff: Pass PY_CFLAGS instead of CFLAGS for the profiled
    build.
  * Pass dpkg-buildflags to the build process, and build third party
    extensions with these flags.
  * Add support to build using -flto (and -g1) on some architectures.
  * Disable pgo builds for some architectures (for now, keep just
    amd64 armel armhf i386 powerpc ppc64).
  * Build-depend on libgdbm-dev to build and run the gdbm tests.
  * Build-depend on xvfb to run the tkinter tests.
  * python2.7: Provide python2.7-argparse and python-argparse.
  * Don't run test_threading on mips/mipsel.
  * Run the test_gdb test for the debug build only.
  * Add build conflict to python-cxx-dev (pydoc test failures).
  * Disable test_ssl certificate check, certificate expired on python.org.
.
python2.7 (2.7.2-9) unstable; urgency=low
.
  * Update to 20111217, taken from the 2.7 branch.
.
python2.7 (2.7.2-8) unstable; urgency=low
.
  * Update to 20111130, taken from the 2.7 branch.
  * New patch, ctypes-arm, allow for ",hard-float" after libc6 in ldconfig -p
    output (Loic Minier). LP: #898172.
  * debian/rules: Define DPKG_VARS (Alban Browaeys). Closes: #647419).
  * Add python-config man page (Johann Felix Soden). Closes: #650181).
.
python2.7 (2.7.2-7) unstable; urgency=low
.
  * Adjust patches for removed Lib/plat-linux3.
  * Add build conflict to libncurses5-dev, let configure search for
    ncurses headers in /usr/include/ncursesw too.
.
python2.7 (2.7.2-6) unstable; urgency=low
.
  * Update to 20111004, taken from the 2.7 branch.
  * Use the ncursesw include directory when linking with ncursesw.
  * Rebuild with libreadline not linked with libncurses*. Closes: #643816.
  * Fix typos in the multiprocessing module. Closes: #643856.
.
python2.7 (2.7.2-5) unstable; urgency=low
.
  * Update to 20110816, taken from the 2.7 branch.
    - Fix issue#12752. LP: #824734.
  * Don't run test_threading on the kfreebsd-i386 buildd.
.
python2.7 (2.7.2-4) unstable; urgency=low
.
  * Update to 20110803, taken from the 2.7 branch.
  * Fix build on s390x. Closes: #636033.
  * Use linux-any for some build dependencies. Closes: #634809.
  * Revert previous change to treat Linux 3.x as Linux 2. Use the
    plat-linux3 directory instead.
.
python2.7 (2.7.2-3) unstable; urgency=low
.
  * Update to 20110709, taken from the 2.7 branch.
  * Make the conflict against python-profiler a versioned conflict.
  * Don't run the bsddb3 tests on kfreebsd-i386.
  * Don't add the bsddb multilib path, if already in the standard lib path.
  * Treat Linux 3.x as Linux 2. Closes: #633015.
  * Assume working semaphores on Linux, don't rely on running kernel
    for the check. Closes: #631188.
.
python2.7 (2.7.2-2) unstable; urgency=low
.
  * Update to 20110628, taken from the 2.7 branch.
  * Add profile/pstats to the python2.7 package, update debian copyright.
  * Don't run the bsddb3 tests on kfreebsd-amd64.
  * Don't run the benchmark on hurd-i386.
.
python2.7 (2.7.2-1) unstable; urgency=low
.
  * Python 2.7.2 release.
.
python2.7 (2.7.2~rc1-2) unstable; urgency=medium
.
  * Set pyexpat dummy version string.
.
python2.7 (2.7.2~rc1-1) unstable; urgency=low
.
  * Python 2.7.2 release candidate 1.
  * Update libpython symbols file for m68k (Thorsten Glaser). Closes: #627458.
  * Apply proposed patch for issue #670664. LP: #357067.
.
python2.7 (2.7.1-9) unstable; urgency=low
.
  * Update to 20110520, taken from the 2.7 branch.
.
python2.7 (2.7.1-8) unstable; urgency=low
.
  * Keep the ssl.PROTOCOL_SSLv2 module constant , just raise an exception
    when trying to create a PySSL object. Closes: #623423.
.
python2.7 (2.7.1-7) unstable; urgency=low
.
  * Update to 20110419, taken from the 2.7 branch.
  * Build without OpenSSL v2 support. Closes: #620581.
  * Force linking the curses module against libncursesw. Closes: #622064.
  * Link libpython with --whole-archive. Closes: #614711.
  * Re-enable running the testsuite during the build.
.
python2.7 (2.7.1-6) unstable; urgency=low
.
  * Update to 20110307, taken from the 2.7 branch.
  * Disable the profile guided build on ia64, sparc.
.
python2.7 (2.7.1-5) experimental; urgency=low
.
  * Update to 20110224, taken from the 2.7 branch.
  * Update patches.
  * Re-enable profile guided build.
.
python2.7 (2.7.1-4) experimental; urgency=low
.
  * Update to 20110119, taken from the 2.7 branch.
.
python2.7 (2.7.1-3) experimental; urgency=low
.
  * Do not run test_multiprocessing when running the testsuite.
    Fails on armel and powerpc on some buildds.
.
python2.7 (2.7.1-2) experimental; urgency=low
.
  * Update to 20101222, taken from the 2.7 branch.
  * Re-enable the distutils-sysconfig.diff patch, apparently
    lost when updating the patches for 2.7.
  * Disable the profiled builds on all architectures.
.
python2.7 (2.7.1-1) experimental; urgency=low
.
  * Python 2.7.1 release.
.
python2.7 (2.7.1~rc1-2) experimental; urgency=low
.
  * Move the pyconfig.h file into the -min package, required by sysconfig.
    Closes: #603237.
.
python2.7 (2.7.1~rc1-1) experimental; urgency=low
.
  * Python 2.7.1 release candidate 1.
  * Move the Makefile into the -min package, required by sysconfig.
    Closes: #603237.
.
python2.7 (2.7-9) experimental; urgency=low
.
  * Update to 20101016, taken from the 2.7 branch.
.
python2.7 (2.7-8) experimental; urgency=low
.
  * Disabled the profiled build on armel.
.
python2.7 (2.7-7) experimental; urgency=low
.
  * Update to 20100922, taken from the 2.7 branch.
  * Update GNU/Hurd patches (Pino Toscano). Closes: #597419.
.
python2.7 (2.7-6) experimental; urgency=low
.
  * Update to 20100915, taken from the 2.7 branch.
    - Fix issue #9729, Unconnected SSLSocket.{send,recv} raises TypeError
      (Andrew Bennetts). LP: #637821.
  * Add copyright information for expat, libffi and zlib. Addresses: #596276.
  * Apply proposed fix for issue 9054, configure --with-system-expat.
  * Provide Lib/plat-gnukfreebsd[78] (Jakub Wilk). Addresses: #593818.
.
python2.7 (2.7-5) experimental; urgency=low
.
  * Update to 20100829, taken from the 2.7 branch.
  * Don't configure --with-system-expat, segfaults the interpreter in the
    testsuite.
  * Disable more tests on hppa and hurd-i386, which fail on the buildds.
.
python2.7 (2.7-4) experimental; urgency=low
.
  * Update to 20100822, taken from the 2.7 branch.
  * Fixed in previous 2.7 uploads: Multiple integer overflows in audioop.c
    in the audioop module (CVE-2010-1634).
  * Fix some lintian warnings.
  * Configure --with-system-expat.
.
python2.7 (2.7-3) experimental; urgency=low
.
  * Update to 20100807, taken from the 2.7 branch.
  * Move '/usr/local/.../dist-packages' before '/usr/lib/.../dist-packages'
    in sys.path. Adresses: #588342.
  * Fix detection of ffi.h header file. Closes: #591408.
  * python2-7-dev: Depend on libssl-dev. LP: #611845.
.
python2.7 (2.7-2) experimental; urgency=low
.
  * Complete debug-build.diff, some parts lost in quilt conversion.
  * Move the pkgconfig file into the -dev package.
.
python2.7 (2.7-1) experimental; urgency=low
.
  * Python 2.7 release.
  * Update to 20100706, taken from the trunk.
  * Update symbols files.
.
python2.7 (2.7~rc2-3) experimental; urgency=low
.
  * Update to 20100703, taken from the trunk.
  * Move the _weakrefset module, not extension to -minimal. Closes: #587568.
  * Move the sysconfig module to -minimal. Closes: #586113.
  * Move the shutil module to python2.6-minimal. Addresses: #587628.
.
python2.7 (2.7~rc2-2) experimental; urgency=low
.
  * Fix applying plat-linux2* patches.
  * Use the profiled build on armel, sparc and sparc64.
.
python2.7 (2.7~rc2-1) experimental; urgency=low
.
  * Python 2.7 release candidate 2.
  * Update to 20100628, taken from the trunk.
  * Merge packaging changes from python2.6 (2.6.5+20100628-1).
.
python2.7 (2.7~b1-2) experimental; urgency=low
.
  * Update to 20100508, taken from the trunk.
.
python2.7 (2.7~b1-1) experimental; urgency=low
.
  * Python 2.7 beta1.
  * Update to 20100420, taken from the trunk.
  * Update libpython symbols files.
  * Apply proposed patch for issue #7332, segfaults in
    PyMarshal_ReadLastObjectFromFile in import_submodule.
  * Don't build-depend on locales on avr32. Closes: #575144.
.
python2.7 (2.7~a4-1) experimental; urgency=low
.
  * Python 2.7 alpha4.
  * Update to 20100316, taken from the trunk.
  * Point distutils.sysconfig to the system installation. Closes: #573363.
.
python2.7 (2.7~a3-1) experimental; urgency=low
.
  * Python 2.7 alpha3.
.
python2.7 (2.7~a2-1) experimental; urgency=low
.
  * Python 2.7 alpha2.
.
python2.6 (2.6.5+20100628-1) unstable; urgency=low
.
  * Update to 20100614, taken from the 2.6 release branch (r82337).
  * Apply plat-linux2-<arch> patch for alpha, hppa, mips, mipsel, sparc
    and sparc64.
.
python2.6 (2.6.5+20100626-1) unstable; urgency=low
.
  * Update to 20100614, taken from the 2.6 release branch (r82245).
  * Update libpython symbols files. Closes: #587012.
  * Move the logging package and the runpy module to python2.6-minimal.
.
python2.6 (2.6.5+20100616-1) unstable; urgency=medium
.
  * Update to 20100614, taken from the 2.6 release branch (r81601).
  * Reapply the backport for issue #8233, lost in the conversion to
    quilt.
  * Disable the profiled build on alpha.
  * Make pydoc more robust not to fail on exceptions other than import
    exceptions.
  * posixmodule: Add flags for statvfs.f_flag to constant list.
.
python2.6 (2.6.5+20100529-1) unstable; urgency=low
.
  * Update to 20100529, taken from the 2.6 release branch (r81601).
    - Fix issue #5753, CVE-2008-5983 python: untrusted python modules
      search path. Closes: #572010.
  * Convert internal dpatch system to quilt.
  * Build the ossaudio extension on GNU/kFreeBSD. Closes: #574696.
.
python2.6 (2.6.5-2) unstable; urgency=low
.
  * Update libpython symbols files.
  * debian/patches/issue8032.dpatch: Update to version from the
    trunk.
  * Fix issue #8329: Don't return the same lists from select.select
    when no fds are changed.
  * Fix issue #8310: Allow dis to examine new style classes.
  * Fix issues #8279: Fix test_gdb failures.
  * Fix issue #8233: When run as a script, py_compile.py optionally
    takes a single argument `-`.
  * Apply proposed patch for issue #7332, segfaults in
    PyMarshal_ReadLastObjectFromFile in import_submodule.
  * Don't build-depend on locales on avr32. Closes: #575144.
.
python2.6 (2.6.5-1ubuntu6) lucid; urgency=low
.
  * Fix applying patch for issue #8310.
.
python2.6 (2.6.5-1ubuntu5) lucid; urgency=low
.
  * Fix issue #8329: Don't return the same lists from select.select
    when no fds are changed.
  * Fix issue #8310: Allow dis to examine new style classes.
.
python2.6 (2.6.5-1ubuntu4) lucid; urgency=low
.
  * debian/patches/issue8032.dpatch: Update to version from the
    trunk. Upload for beta2 to avoid apport errors.
    - Handle PyFrameObject's: LP: #543624, #548723.
    - Detect cycles in object reference graph and add extra
      protection: LP: #544823, LP: #552356.
.
python2.6 (2.6.5-1ubuntu3) lucid; urgency=low
.
  * debian/patches/issue8140.dpatch: Incomplete patch; regenerate.
  * debian/patches/issue8032.dpatch: Update to v4:
    - Add support for PySetObject (set/frozenset).
    - Add support for PyBaseExceptionObject (BaseException).
    - Fix a signed vs unsigned char issue that led to exceptions
      in gdb for PyStringObject instances.
    - Handle the case of loops in the object reference graph.
    - Unit tests for all of the above.
.
python2.6 (2.6.5-1ubuntu2) lucid; urgency=low
.
  * Disable profiled build on powerpc.
.
python2.6 (2.6.5-1ubuntu1) lucid; urgency=low
.
  * Merge with Debian (2.6.5-1).
.
python2.6 (2.6.5-1) unstable; urgency=low
.
  * Python 2.6.5 final release.
  * Fix issue #4961: Inconsistent/wrong result of askyesno function in
    tkMessageBox with Tcl8.5. LP: #462950.
  * Issue #8154, fix segfault with os.execlp('true'). LP: #418848.
  * Apply proposed patch for issue #8032, gdb7 hooks for debugging.
.
python2.6 (2.6.5~rc2-2) unstable; urgency=low
.
  * Add copyright notices for the readline and _ssl extensions.
    Closes: #573866.
  * Backport issue #8140: Extend compileall to compile single files.
    Add -i option.
  * Backport issue #6949, build _bsddb extension with db-4.8.x.
.
python2.6 (2.6.5~rc2-1) unstable; urgency=low
.
  * Python 2.6.5 release candidate 2.
    - Replace the Monty Python audio test file. Closes: #568674.
  * Fix build failure on sparc64. Closes: #570845.
.
python2.6 (2.6.5~rc2-0ubuntu1) lucid; urgency=low
.
  * Python 2.6.5 release candidate 2.
.
python2.6 (2.6.4-6ubuntu1) lucid; urgency=low
.
  * Merge with Debian (2.6.4-6).
.
python2.6 (2.6.4-6) unstable; urgency=low
.
  * Update to 20100215, taken from the 2.6 release branch.
  * python2.6-minimal: Skip moving syssite contents to new location, if
    /usr/local/lib/python2.6 cannot be written. Closes: #569532. LP: #338227.
  * libpython2.6: Fix symlink in /usr/lib/python2.6/config. LP: #521050.
.
python2.6 (2.6.4-5ubuntu1) lucid; urgency=low
.
  * Merge with Debian (2.6.4-5).
.
python2.6 (2.6.4-5) unstable; urgency=low
.
  * Update to 20100131, taken from the 2.6 release branch.
    - Fix typo in os.execvp docstring. Closes: #558764.
  * distutils.sysconfig.get_python_lib(): Only return ".../dist-packages" if
    prefix is the default prefix and if PYTHONUSERBASE is not set in the
    environment and if --user option is not present. LP: #476005.
  * distutils install: Don't install into /usr/local/local, if option
    --prefix=/usr/local is present, without changing the install prefix.
    LP: #510211.
.
python2.6 (2.6.4-4ubuntu1) lucid; urgency=low
.
  * Update to 20100122, taken from the 2.6 release branch.
    - Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560).
      Closes: #566233.
    - Fix typo in os.execvp docstring. Closes: #558764.
  * python2.6-doc: Fix searching in local documentation. LP: #456025.
  * Update locale module from the trunk. LP: #223281.
  * Merge with Debian (2.6.4-4).
.
python2.6 (2.6.4-4) unstable; urgency=low
.
  * Update to 20100122, taken from the 2.6 release branch.
    - Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560).
      Closes: #566233.
  * Hurd fixes (Pino Toscano). Closes: #565693:
    - hurd-broken-poll.dpatch: ported from 2.5.
    - hurd-disable-nonworking-constants.dpatch: disable a few constants from
      the public API whose C counterparts are not implemented, so using them
      either always blocks or always fails (caused issues in the test suite).
    - Exclude the profiled build for hurd.
    - Disable four blocking tests from the test suite.
.
python2.6 (2.6.4-3) unstable; urgency=low
.
  * Disable the profiled build on s390, mips, mipsel.
  * Fix symbol files for kfreebsd-amd64 and sparc64.
.
python2.6 (2.6.4-2) unstable; urgency=low
.
  * Update to 20100116, taken from the 2.6 release branch.
  * Fix bashism in makesetup shell script. Closes: #530170, #530171.
  * Fix build issues on avr (Bradley Smith). Closes: #528439.
    - Configure --without-ffi.
    - Don't run lengthly tests.
  * locale.py: Update locale aliases from the 2.7 branch.
.
python2.6 (2.6.4-1) experimental; urgency=low
.
  * Python 2.6.4 final release.
    - Issue #7120: logging: Removed import of multiprocessing which is causing
      crash in GAE.
    - Issue #7149: fix exception in urllib when detecting proxy settings
      on OSX.
    - Issue #7115: Fixed the extension module builds that is failing when
      using paths in the extension name instead of dotted names. LP: #449734.
    - Issue #6894: Fixed the issue urllib2 doesn't respect "no_proxy"
      environment.
    - Issue #7052: Removed nonexisting NullHandler from logging.__all__.
    - Issue #7039: Fixed distutils.tests.test_sysconfig when running on
      installation with no build.
    - Issue #7019: Raise ValueError when unmarshalling bad long data, instead
      of producing internally inconsistent Python longs.
  * distutils install: Don't install into /usr/local/local, if option
    --prefix=/usr/local is present.
.
python2.6 (2.6.4~rc1-1) experimental; urgency=low
.
  * Python 2.6.4 release candidate 1.
    - Issue #7052: Removed nonexisting NullHandler from logging.__all__.
    - Issue #7039: Fixed distutils.tests.test_sysconfig when running on
      installation with no build.
    - Issue #7019: Raise ValueError when unmarshalling bad long data, instead
      of producing internally inconsistent Python longs.
    - Issue #7068: Fixed the partial renaming that occured in r72594.
    - Issue #7042: Fix test_signal (test_itimer_virtual) failure on OS X 10.6.
  * Remove the conflict with python-setuptools (fixed in issue #7068).
  * Build _hashlib as a builtin.
  * python2.6-doc: Don't compress the sphinx inventory.
  * python2.6-doc: Fix jquery.js symlink.
.
python2.6 (2.6.3-1) experimental; urgency=low
.
  * Final Python 2.6.3 release.
    - Issue #5329: Fix os.popen* regression from 2.5 with commands as a
      sequence running through the shell.
    - Issue #6990: Fix threading.local subclasses leaving old state around
      after a reference cycle GC which could be recycled by new locals.
    - Issue #6790: Make it possible again to pass an `array.array` to
      `httplib.HTTPConnection.send`.
    - Issue #6922: Fix an infinite loop when trying to decode an invalid
      UTF-32 stream with a non-raising error handler like "replace" or
      "ignore".
    - Issue #1590864: Fix potential deadlock when mixing threads and fork().
    - Issue #6844: Do not emit DeprecationWarnings when accessing a "message"
      attribute on exceptions that was set explicitly.
    - Issue #6236, #6348: Fix various failures in the `io` module under AIX
      and other platforms, when using a non-gcc compiler. Patch by egreen.
    - Issue #6851: Fix urllib.urlopen crash on secondairy threads on OSX 10.6
    - Issue #6947: Fix distutils test on windows. Patch by Hirokazu Yamamoto.
    - Issue #4606: Passing 'None' if ctypes argtype is set to POINTER(...)
      does now always result in NULL.
    - Issue #5042: ctypes Structure sub-subclass does now initialize
      correctly with base class positional arguments.
    - Issue #6938: Fix a TypeError in string formatting of a multiprocessing
      debug message.
    - Issue #6944: Fix a SystemError when socket.getnameinfo() was called
      with something other than a tuple as first argument.
    - Issue #6980: Fix ctypes build failure on armel-linux-gnueabi with
      -mfloat-abi=softfp.
  * python2.6-dbg: Don't create debug subdirectory in /usr/local. No
    separate debug directory needed anymore.
  * Run the benchmark with -C 2 -n 5 -w 4 on all architectures.
  * Build-depend on the versioned db4.x-dev to avoid unexpected updates
    for anydbm databases.
.
python2.6 (2.6.2-3) experimental; urgency=low
.
  * Update to 20090919, taken from the 2.6 release branch.
  * Add a conflict to python-setuptools (<< 0.6c9-3), C extension
    builds broken.
  * Add new symbols for update from the branch.
.
python2.6 (2.6.2-2) experimental; urgency=low
.
  * Symbol _Py_force_double@Base is i386 only. Closes: #534208.
.
python2.6 (2.6.2-1) experimental; urgency=low
.
  * Final Python 2.6.2 release.
    - Update Doc/tools/sphinxext/download.html. Closes: #526797.
  * Update to 20090621, taken from the 2.6 release branch.
.
  * Address issues when working with PYTHONUSERBASE and non standard prefix
    (pointed out by Larry Hastings):
    - distutils.sysconfig.get_python_lib(): Only return ".../dist-packages" if
      prefix is the default prefix and if PYTHONUSERBASE is not set in the
      environment.
    - site.addusersitepackages(): Add USER_BASE/.../dist-packages to sys.path.
  * Always use the `unix_prefix' scheme for setup.py install in a virtualenv
    setup. LP: #339904.
  * Don't make the setup.py install options --install-layout=deb and --prefix
    conflict with each other.
  * distutils: Always install into `/usr/local/lib/python2.6/dist-packages'
    if an option `--prefix=/usr/local' is present (except for virtualenv
    and PYTHONUSERBASE installations). LP: #362570.
  * Always use `site-packages' as site directory name in virtualenv.
.
  * Do not add /usr/lib/pythonXY.zip on sys.path.
  * Add symbols files for libpython2.6 and python2.6-dbg, don't include symbols
    from builtins, which can either be built as builtins or extensions.
  * Keep an empty lib-dynload in python2.6-minimal to avoid a warning on
    startup.
  * Build a shared library configured --with-pydebug. LP: #322580.
  * Fix some lintian warnings.
  * Use the information in /etc/lsb-release for platform.dist(). LP: #196526.
  * Move the bdist_wininst files into the -dev package (only needed to build
    windows installers).
  * Document changes to the site directory name in the installation manual.
  * Fix issue #1113244: Py_XINCREF, Py_DECREF, Py_XDECREF: Add
   `do { ... } while (0)' to avoid compiler warnings. Closes: #516956.
  * debian/pyhtml2devhelp.py: update for python 2.6 (Marc Deslauriers).
  * debian/rules: re-enable documentation files for devhelp. LP: #338791.
  * python2.6-doc: Depend on libjs-jquery, use jquery.js from this package.
    Closes: #523482.
.
python2.6 (2.6.1-3) experimental; urgency=low
.
  * Update to 20090318, taken from the 2.6 release branch.
  * Use the information in /etc/lsb-release for platform.dist().
  * Update installation schemes: LP: #338395. Closes: #520278.
    - When the --prefix option is used for setup.py install, Use the
      `unix_prefix' scheme.
    - Use the `deb_system' scheme if --install-layout=deb is specified.
    - Use the the `unix_local' scheme if neither --install-layout=deb
      nor --prefix is specified.
    - The options --install-layout=deb and --prefix are exclusive.
  * Don't fail installation/removal if directories in /usr/local cannot
    be created. LP: #338227.
  * Don't try to move away the site-packages directory. There never was a
    python2.6 upload using site-packages. Closes: #518780.
  * Fix build failure on mips/mipsel. Closes: #519386.
.
python2.6 (2.6.1-2) experimental; urgency=low
.
  * Move libpython2.6.a into the python2.6-dev package.
  * Move idlelib into the idle-python2.6 package.
.
python2.6 (2.6.1-1) experimental; urgency=low
.
  * New upstream version, upload to experimental.
  * Update to 20090225, taken from the 2.6 release branch.
  * Don't build-depend on locales on armel, hppa, ia64 and mipsel; package is
    currently not installable.
.
python2.6 (2.6.1-0ubuntu9) jaunty; urgency=low
.
  * Don't build pyexpat, _elementtree and _ctypes as builtin extensions,
    third party packages make too many assumptions about these not built
    as builtins.
.
python2.6 (2.6.1-0ubuntu8) jaunty; urgency=low
.
  * Link the shared libpython with $(MODLIBS).
.
python2.6 (2.6.1-0ubuntu7) jaunty; urgency=low
.
  * Update to 20090222, taken from the 2.6 release branch.
.
python2.6 (2.6.1-0ubuntu6) jaunty; urgency=low
.
  * Don't build the gdbm extension from the python2.6 source.
  * Build the dbm extension using libdb.
  * Don't build-depend on locales on sparc (currently not installable), only
    needed by the testsuite.
  * Update to 20090219, taken from the 2.6 release branch.
.
python2.6 (2.6.1-0ubuntu5) jaunty; urgency=low
.
  * Add build dependency on libdb-dev.
.
python2.6 (2.6.1-0ubuntu4) jaunty; urgency=low
.
  * Disable the profiled build on all architectures.
.
python2.6 (2.6.1-0ubuntu3) jaunty; urgency=low
.
  * Disable the profiled build on armel as well.
.
python2.6 (2.6.1-0ubuntu2) jaunty; urgency=low
.
  * Don't use the profiled build on amd64, lpia and sparc (GCC
    PR profile/38292).
.
python2.6 (2.6.1-0ubuntu1) jaunty; urgency=low
.
  * Update to 20090211, taken from the 2.6 release branch.
.
python2.6 (2.6.1-0ubuntu1~ppa1) jaunty; urgency=low
.
  * Python 2.6.1 release.
  * Update to 20081206, taken from the 2.6 release branch.
  * Ensure that all extensions from the -minimal package are statically
    linked into the interpreter.
  * Include expat, _elementtree, datetime, bisect, _bytesio, _locale,
    _fileio in -minimal to link these extensions statically.
.
python2.6 (2.6-0ubuntu1~ppa5) intrepid; urgency=low
.
  * Test build
.
python2.6 (2.6-0ubuntu1~ppa4) intrepid; urgency=low
.
  * Do not build the bsddb3 module from this source, but recommend the
    python-bsddb3 package (will be a dependency after python-bsddb3 is in
    the archive).
   * For locally installed packages, create a directory
    /usr/local/lib/python2.6/dist-packages. This is the default for
    installations done with distutils and setuptools. Third party stuff
    packaged within the distribution goes to /usr/lib/python2.6/dist-packages.
    There is no /usr/lib/python2.6/site-packages in the file system and
    on sys.path. No package within the distribution must not install
    anything in this location.
  * Place the gdbm extension into the python2.6 package.
  * distutils: Add an option --install-layout=deb, which
    - installs into $prefix/dist-packages instead of $prefix/site-packages.
    - doesn't encode the python version into the egg name.
.
python2.6 (2.6-0ubuntu1~ppa3) intrepid; urgency=low
.
  * Build-depend on libdb4.6-dev, instead of libdb-dev (4.7). Test suite
    hangs in the bsddb tests.
.
python2.6 (2.6-0ubuntu1~ppa2) intrepid; urgency=low
.
  * Update to 20081021, taken from the 2.6 release branch.
  * Fix typos and section names in doc-base files. LP: #273344.
  * Build a new package libpython2.6.
  * For locally installed packages, create a directory
    /usr/local/lib/python2.6/system-site-packages, which is symlinked
    from /usr/lib/python2.6/site-packages. Third party stuff packaged
    within the distribution goes to /usr/lib/python2.6/dist-packages.
.
python2.6 (2.6-0ubuntu1~ppa1) intrepid; urgency=low
.
  * Python 2.6 release.
  * Update to current branch 20081009.
.
python2.6 (2.6~b3-0ubuntu1~ppa1) intrepid; urgency=low
.
  * Python 2.6 beta3 release.
.
python2.6 (2.6~b2-0ubuntu1~ppa1) intrepid; urgency=low
.
  * Python 2.6 beta2 release.
.
python2.6 (2.6~b1-0ubuntu1~ppa1) intrepid; urgency=low
.
  * Python 2.6 beta1 release.
.
python2.6 (2.6~a3-0ubuntu1~ppa2) hardy; urgency=low
.
  * Test build
.
python2.6 (2.6~a3-0ubuntu1~ppa1) hardy; urgency=low
.
  * Python 2.6 alpha3 release.
  * Update to current trunk 20080523.
.
python2.5 (2.5.2-5) unstable; urgency=low
.
  * Backport new function signal.set_wakeup_fd from the trunk.
    Background: http://bugzilla.gnome.org/show_bug.cgi?id=481569
.
python2.5 (2.5.2-4) unstable; urgency=low
.
  * Update to 20080427, taken from the 2.5 release branch.
    - Fix issues #2670, #2682.
  * Disable running pybench on the hppa buildd (ftbfs).
  * Allow setting BASECFLAGS, OPT and EXTRA_LDFLAGS (like, CC, CXX, CPP,
    CFLAGS, CPPFLAGS, CCSHARED, LDSHARED) from the environment.
  * Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008).
.
python2.5 (2.5.2-3) unstable; urgency=medium
.
  * Update to 20080416, taken from the 2.5 release branch.
    - Fix CVE-2008-1721, integer signedness error in the zlib extension module.
    - Fix urllib2 file descriptor happens byte-at-a-time, reverting
      a fix for excessively large memory allocations when calling .read()
      on a socket object wrapped with makefile().
  * Disable some regression tests on some architectures:
    - arm: test_compiler, test_ctypes.
    - armel: test_compiler.
    - hppa: test_fork1, test_wait3.
    - m68k: test_bsddb3, test_compiler.
  * Build-depend on libffi-dev instead of libffi4-dev.
  * Fix CVE-2008-1679, integer overflows in the imageop module.
.
python2.5 (2.5.2-2) unstable; urgency=low
.
  * Use site.addsitedir() to add directories in /usr/local to sys.path.
    Addresses: #469157, #469818.
.
python2.5 (2.5.2-1) unstable; urgency=low
.
  * Python 2.5.2 release.
  * Merge from Ubuntu:
    - Move site customization into sitecustomize.py, don't make site.py
      a config file. Addresses: #309719, #413172, #457361.
    - Move site.py to python2.4-minimal, remove `addbuilddir' from site.py,
      which is unnecessary for installed builds.
    - python2.5-dev: Recommend libc-dev instead of suggesting it. LP: #164909.
    - Fix issue 961805, Tk Text.edit_modified() fails. LP: #84720.
.
python2.5 (2.5.1-7) unstable; urgency=low
.
  * Update to 20080209, taken from the 2.5 release branch.
  * Build the _bsddb extension with db-4.5 again; 4.6 is seriously
    broken when used with the _bsddb extension.
  * Do not run pybench on arm and armel.
  * python2.5: Provide python2.5-wsgiref.
  * Fix a pseudo RC report with duplicated attributes in the control
    file. Closes: #464307.
.
python2.5 (2.5.1-6) unstable; urgency=low
.
  * Update to 20080102, taken from the 2.5 release branch.
    - Only define _BSD_SOURCE on OpenBSD systems. Closes: #455400.
  * Fix handling of packages in linecache.py (Kevin Goodsell). LP: #70902.
  * Bump debhelper to v5.
  * Register binfmt for .py[co] files.
  * Use absolute paths when byte-compiling files. Addresses: #453346.
    Closes: #413566, LP: #177722.
  * CVE-2007-4965, http://bugs.python.org/issue1179:
    Multiple integer overflows in the imageop module in Python 2.5.1 and
    earlier allow context-dependent attackers to cause a denial of service
    (application crash) and possibly obtain sensitive information (memory
    contents) via crafted arguments to (1) the tovideo method, and unspecified
    other vectors related to (2) imageop.c, (3) rbgimgmodule.c, and other
    files, which trigger heap-based buffer overflows.
    Patch prepared by Stephan Herrmann. Closes: #443333, LP: #163845.
  * Register info docs when doing source only uploads. LP: #174786.
  * Remove deprecated value from categories in desktop file. LP: #172874.
  * python2.5-dbg: Don't include the gdbm and _tkinter extensions, now provided
    in separate packages.
  * Provide a symlink changelog -> NEWS. Closes: #439271.
  * Fix build failure on hurd, working around poll() on systems on which it
    returns an error on invalid FDs. Closes: #438914.
  * Configure --with-system-ffi on all architectures. Closes: #448520.
  * Fix version numbers in copyright and README files (Dan O'Huiginn).
    Closes: #446682.
  * Move some documents from python2.5 to python2.5-dev.
.
python2.5 (2.5.1-5) unstable; urgency=low
.
  * Build the _bsddb extension with db-4.6.
.
python2.5 (2.5.1-4) unstable; urgency=low
.
  * Update to 20070813, taken from the 2.5 release branch.
  * Include plat-mac/plistlib.py (plat-mac is not in sys.path by default.
    Closes: #435826.
  * Use emacs22 to build the documentation in info format. Closes: #434969.
  * Build-depend on db-dev (>= 4.6). Closes: #434965.
.
python2.5 (2.5.1-3) unstable; urgency=high
.
  * Support mixed-endian IEEE floating point, as found in the ARM old-ABI
    (Aurelien Jarno). Closes: #434905.
.
python2.5 (2.5.1-2) unstable; urgency=low
.
  * Update to 20070717, taken from the 2.5 release branch.
  * Fix reference count for sys.pydebug variable. Addresses: #431393.
  * Build depend on libbluetooth-dev instead of libbluetooth2-dev.
.
python2.5 (2.5.1-1) unstable; urgency=low
.
  * Python-2.5.1 release.
  * Build-depend on gcc-4.1 (>= 4.1.2-4) on alpha, powerpc, s390, sparc.
  * Merge from Ubuntu:
    - Add debian/patches/subprocess-eintr-safety.dpatch (LP: #87292):
      - Create and use wrappers around read(), write(), and os.waitpid() in the
        subprocess module which retry the operation on an EINTR (which happens
        if e. g. an alarm was raised while the system call was in progress).
        It is incredibly hard and inconvenient to sensibly handle this in
        applications, so let's fix this at the right level.
      - Patch based on original proposal of Peter <C3><85>strand
        in http://python.org/sf/1068268.
      - Add two test cases.
    - Change the interpreter to build and install python extensions
      built with the python-dbg interpreter with a different name into
      the same path (by appending `_d' to the extension name). The debug build
      of the interpreter tries to first load a foo_d.so or foomodule_d.so
      extension, then tries again with the normal name.
    - When trying to import the profile and pstats modules, don't
      exit, add a hint to the exception pointing to the python-profiler
      package, don't exit.
    - Keep the module version in the .egg-info name, only remove the
      python version.
    - python2.5-dbg: Install Misc/SpecialBuilds.txt, document the
      debug changes in README.debug.
  * Update to 20070425, taken from the 2.5 release branch.
.
python2.5 (2.5-6) unstable; urgency=medium
.
  * webbrowser.py: Recognize other browsers: www-browser, x-www-browser,
    iceweasel, iceape.
  * Move pyconfig.h from the python2.5-dev into the python2.5 package;
    required by builds for pure python modules without having python2.5-dev
    installed (matching the functionality in python2.4).
  * Move the unicodedata module into python2.5-minimal; allows byte compilation
    of UTF8 encoded files.
  * Do not install anymore outdated debhelper sample scripts.
  * Install Misc/SpecialBuilds.txt as python2.5-dbg document.
.
python2.5 (2.5-5) unstable; urgency=high
.
  * Do not run the python benchmark on m68k. Timer problems.
    Fixes FTBFS on m68k.
  * Update to 20061209, taken from the 2.5 release branch.
    -  Fixes building the library reference in info format.
.
python2.5 (2.5-4) unstable; urgency=medium
.
  * Update to 20061203, taken from the 2.5 release branch.
    - Fixes build failures on knetfreebsd and the hurd. Closes: #397000.
  * Clarify README about distutils. Closes: #396394.
  * Move python2.5-config to python2.5-dev. Closes: #401451.
  * Cleanup build-conflicts. Addresses: #394512.
.
python2.5 (2.5-3.1) unstable; urgency=low
.
  * Non-maintainer upload.
  * python2.5-minimal depends on python-minimal (>= 2.4.4-1) because it's the
    first version which lists python2.5 as an unsupported runtime (ie a
    runtime that is available but for which modules are not auto-compiled).
    And being listed there is required for python-central to accept the
    installation of python2.5-minimal. Closes: #397006
.
python2.5 (2.5-3) unstable; urgency=medium
.
  * Update to 20061029 (2.4.4 was released on 20061019), taken from
    the 2.5 release branch. We do not want to have regressions in
    2.5 compared to the 2.4.4 release.
  * Don't run pybench on m68k, fails in the calibration loop. Closes: #391030.
  * Run the installation/removal hooks. Closes: #383292, #391036.
.
python2.5 (2.5-2) unstable; urgency=medium
.
  * Update to 20061003, taken from the 2.5 release branch.
  * On arm and m68k, don't run the pybench in debug mode.
  * Fix building the source within exec_prefix (Alexander Wirt).
    Closes: #385336.
.
python2.5 (2.5-1) unstable; urgency=low
.
  * Python 2.5 release.
  * Update to 20060926, taken from the 2.5 release branch.
  * Run the Python benchmark during the build, compare the results
    of the static and shared builds.
  * Fix invalid html in python2.5.devhelp.gz.
  * Add a python2.5 console entry to the menu (hidden by default).
  * python2.5: Suggest python-profiler.
.
python2.5 (2.5~c1-1) unstable; urgency=low
.
  * Python 2.5 release candidate 1.
  * Update to trunk 20060818.
.
python2.5 (2.5~b3-1) unstable; urgency=low
.
  * Build the _ctypes module for m68k-linux.
.
python2.5 (2.5~b3-0ubuntu1) edgy; urgency=low
.
  * Python 2.5 beta3 release.
  * Update to trunk 20060811.
  * Rebuild the documentation.
  * Fix value of sys.exec_prefix in the debug build.
  * Do not build the library reference in info format; fails to build.
  * Link the interpreter against the shared runtime library. With
    gcc-4.1 the difference in the pystones benchmark dropped from about
    12% to about 6%.
  * Install the statically linked version of the interpreter as
    python2.5-static for now.
  * Link the shared libpython with -O1.
.
python2.5 (2.4.3+2.5b2-3) unstable; urgency=low
.
  * Disable the testsuite on s390; don't care about "minimally configured"
    buildd's.
.
python2.5 (2.4.3+2.5b2-2) unstable; urgency=low
.
  * Update to trunk 20060722.
  * Merge idle-lib from idle-python2.5 into python2.5.
  * Merge lib-tk from python-tk into python2.5.
  * Tkinter.py: Suggest installation of python-tk package on failed
    import of the _tkinter extension.
  * Don't run the testsuite for the debug build on alpha.
  * Don't run the test_compiler test on m68k. Just takes too long.
  * Disable building ctypes on m68k (requires support for closures).
.
python2.5 (2.4.3+2.5b2-1) unstable; urgency=low
.
  * Python 2.5 beta2 release.
  * Update to trunk 20060716.
  * When built on a buildd, do not run the following test which try to
    access the network: test_codecmaps_cn, test_codecmaps_hk, test_codecmaps_jp,
    test_codecmaps_kr, test_codecmaps_tw, test_normalization.
  * When built on a buildd, do not run tests requiring missing write permissions:
    test_ossaudiodev.
.
python2.5 (2.4.3+2.5b2-0ubuntu1) edgy; urgency=low
.
  * Python 2.5 beta2 release.
.
python2.5 (2.4.3+2.5b1-1ubuntu2) edgy; urgency=low
.
  * Fix python-dev dependencies.
  * Update to trunk 20060709.
.
python2.5 (2.4.3+2.5b1-1ubuntu1) edgy; urgency=low
.
  * Python 2.5 beta1 release.
  * Update to trunk 20060623.
  * Merge changes from the python2.4 packages.
  * python2.5-minimal: Add _struct.
.
python2.5 (2.4.3+2.5a1-1) experimental; urgency=low
.
  * Update to trunk 20060409.
  * Run testsuite for debug build as well.
  * Build-depend on gcc-4.1.
.
python2.5 (2.4.3+2.5a1-0ubuntu1) dapper; urgency=low
.
  * Python 2.5 alpha1 release.
  * Drop integrated patches.
  * Add build dependencies on libsqlite3-dev and libffi4-dev.
  * Add (build-)dependency on mime-support, libgpmg1 (test suite).
  * Build using the system FFI.
  * python2.5 provides python2.5-ctypes and python2.5-pysqlite2,
    python2.5-elementtree.
  * Move hashlib.py to python-minimal.
  * Lib/hotshot/pstats.py: Error out on missing profile/pstats modules.
.
python2.4 (2.4.3-8ubuntu1) edgy; urgency=low
.
  * Resynchronize with Debian unstable. Remaining changes:
    - Apply langpack-gettext patch.
    - diff.gz contains pregenerated html and info docs.
    - Build the -doc package from this source.
.
python2.4 (2.4.3-8) unstable; urgency=low
.
  * Remove python2.4's dependency on python-central. On installation of
    the runtime, call hooks /usr/share/python/runtime.d/*.rtinstall.
    On removal, call hooks /usr/share/python/runtime.d/*.rtremove.
    Addresses: #372658.
  * Call the rtinstall hooks only, if it's a new installation, or the first
    installation using the hooks. Adresses: #373677.
.
python2.4 (2.4.3-7) unstable; urgency=medium
.
  * Reupload, depend on python-central (>= 0.4.15).
  * Add build-conflict on python-xml.
.
python2.4 (2.4.3-6) medium; urgency=low
.
  * idle-python2.4: Remove the old postinst and prerm scripts.
  * Name the runtime correctly in python2.4-minimal's installation
    scripts.
.
python2.4 (2.4.3-5) unstable; urgency=low
.
  * python2.4-prerm: Handle the case, when python-central is not installed.
  * idle-python2.4: Depend on python-tk instead of python2.4-tk.
.
python2.4 (2.4.3-4) unstable; urgency=low
.
  * SVN update up to 2006-06-07
  * Use python-central.
  * Don't build the -tk and -gdbm packages from this source; now built
    from the python-stdlib-extensions source.
  * Remove leftover build dependency on libgmp3-dev.
  * Do not build-depend on libbluetooth1-dev and libgpmg1-dev on
    hurd-i386, kfreebsd-i386, kfreebsd-amd64. Closes: #365830.
  * Do not run the test_tcl test; hangs for unknown reasons on at least
    the following buildds: vivaldi(m68k), goedel (alpha), mayer (mipsel).
    And no virtual package to file bug reports for the buildds ...
    Closes: #364419.
  * Move the Makefile from python2.4-dev to python2.4. Closes: #366473.
  * Fix typo in pdb(1). Closes: #365772.
  * New autoconf likes the mandir in /usr/share instead of /usr; work
    with both locations. Closes: #367618.
.
python2.4 (2.4.3-3) unstable; urgency=low
.
  * SVN update up to 2006-04-21
  * Update locale aliases from /usr/share/X11/locale/locale.alias.
  * Start idle with option -n from the desktop menu, so that the program
    can be started in parallel.
  * Testsuite related changes only:
    - Add build dependencies mime-support, libgpmg1 (needed by test cases).
    - Run the testsuite with bsddb, audio and curses resources enabled.
    - Re-run the failed tests in verbose mode.
    - Run the test suite for the debug build as well.
    - Build depend on netbase, needed by test_socketmodule.
    - Build depend on libgpmg1, needed by test_curses.
    - On the buildds do not run the tests needing the network resource.
  * Update python logo.
  * Check for the availability of the profile and pstats modules when
    importing hotshot.pstats. Closes: #334067.
  * Don't build the -doc package from the python2.4 source.
  * Set OPT in the installed Makefile to -O2.
.
python2.4 (2.4.3-2) unstable; urgency=low
.
  * Add (build-)dependency on mime-support.
.
python2.4 (2.4.3-1) unstable; urgency=low
.
  * Python 2.4.3 release.
.
python2.4 (2.4.3-0ubuntu1) dapper; urgency=low
.
  * Python 2.4.3 release.
    - Fixed a bug that the gb18030 codec raises RuntimeError on encoding
      surrogate pair area on UCS4 build. Ubuntu: #29289.
.
python2.4 (2.4.2+2.4.3c1-0ubuntu1) dapper; urgency=low
.
  * SVN update up to 2006-03-25 (2.4.3 candidate 1).
    - Regenerate the documentation.
.
python2.4 (2.4.2-1ubuntu3) dapper; urgency=low
.
  * SVN update up to 2006-03-04
    - Regenerate the documentation.
    - map.mmap(-1, size, ...) can return anonymous memory again on Unix.
      Ubuntu #26201.
  * Build-depend on libncursesw5-dev, ncursesw5 is preferred for linking.
    Provides UTF-8 compliant curses bindings.
  * Fix difflib where certain patterns of differences were making difflib
    touch the recursion limit.
.
python2.4 (2.4.2-1ubuntu2) dapper; urgency=low
.
  * SVN update up to 2006-01-17
    - pwd is now a builtin module, remove it from python-minimal.
    - Regenerate the documentation.
  * python2.4-tk: Suggest tix instead of tix8.1.
  * Move config/Makefile from the -dev package into the runtime package
    to be able to use the bdist_wininst distutils command. Closes: #348335.
.
python2.4 (2.4.2-1ubuntu1) dapper; urgency=low
.
  * Temporarily remove build dependency on lsb-release.
.
python2.4 (2.4.2-1build1) dapper; urgency=low
.
  * Rebuild (openssl-0.9.8).
.
python2.4 (2.4.2-1) unstable; urgency=low
.
  * Python 2.4.2 release.
.
python2.4 (2.4.1+2.4.2rc1-1) unstable; urgency=low
.
  * Python 2.4.2 release candidate 1.
  * Fix "Fatal Python error" from cStringIO's writelines.
    Patch by Andrew Bennetts.
.
python2.4 (2.4.1-5) unstable; urgency=low
.
  * CVS update up to 2005-09-14
    - Regenerate the html and info docs.
  * Add some more locale aliases.
  * Fix substitution pf python version in README.python2.4-minimal.
    Closes: #327487.
  * On m68k, build using -O2 (closes: #326903).
  * On Debian, don't configure --with-fpectl, which stopped working with
    glibc-2.3.5.
.
python2.4 (2.4.1-4) unstable; urgency=low
.
  * CVS update up to 2005-09-04
    - teTeX 3.0 related fixes (closes: #322407).
    - Regenerate the html and info docs.
  * Add entry for IDLE in the Gnome menus.
  * Don't build-depend on libbluetooth-dev on the Hurd (closes: #307037).
  * Reenable the cthreads patch for the Hurd (closes: #307052).
.
python2.4 (2.4.1-3) unstable; urgency=low
.
  * Synchronise with Ubuntu:
    - Build a python2.4-minimal package.
.
python2.4 (2.4.1-2ubuntu3) breezy; urgency=low
.
  * CVS update up to 2005-07-07
  * Regenerate the documentation.
.
python2.4 (2.4.1-2ubuntu2) breezy; urgency=low
.
  * CVS update up to 2005-06-15
  * Regenerate the documentation.
  * Synchronize with Debian. Ubuntu 10485.
  * idle-python2.4 enhances python2.4. Ubuntu 11562.
  * README.Debian: Fix reference to the doc directory (closes: #311677).
.
python2.4 (2.4.1-2ubuntu1) breezy; urgency=low
.
  * Update build dependencies:
      db4.2-dev -> db4.3-dev,
      libreadline4-dev -> libreadline5-dev.
  * python2.4-dev: Add missing templates to generate HTML docs. Ubuntu 11531.
.
python2.4 (2.4.1-2) unstable; urgency=low
.
  * Add the debug symbols for the python2.4, python2.4-gdbm
    and python2.4-tk packages to the python2.4-dbg package.
  * Add gdbinit example to doc directory.
.
python2.4 (2.4.1-1ubuntu2) breezy; urgency=low
.
  * Add the debug symbols for the python2.4, python2.4-minimal, python2.4-gdbm
    and python2.4-tk packages to the python2.4-dbg package. Ubuntu 10261,
  * Add gdbinit example to doc directory.
  * For os.utime, use utimes(2), correctly working with glibc-2.3.5.
    Ubuntu 10294.
.
python2.4 (2.4.1-1ubuntu1) breezy; urgency=low
.
  * Reupload as 2.4.1-1ubuntu1.
.
python2.4 (2.4.1-1) unstable; urgency=low
.
  * Python 2.4.1 release.
  * Fix noise in python-doc installation/removal.
  * New Python section for the info docs.
.
python2.4 (2.4.1-0) hoary; urgency=low
.
  * Python 2.4.1 release.
  * Fix noise in python-doc installation/removal.
  * New Python section for the info docs.
.
python2.4 (2.4+2.4.1rc2-2) unstable; urgency=low
.
  * Add the valgrind support file to /etc/python2.4
  * Build the -dbg package with -DPy_USING_MEMORY_DEBUGGER.
  * Lib/locale.py:
    - correctly parse LANGUAGE as a colon separated list of languages.
    - prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE to get the correct
      encoding.
    - Don't map 'utf8', 'utf-8' to 'utf', which is not a known encoding
      for glibc.
  * Fix two typos in python(1). Addresses: #300124.
.
python2.4 (2.4+2.4.1rc2-1) unstable; urgency=low
.
  * Python 2.4.1 release candidate 2.
  * Build-depend on libbluetooth1-dev.
.
python2.4 (2.4dfsg-2) unstable; urgency=low
.
  * CVS update up to 2005-03-03
.
python2.4 (2.4dfsg-1ubuntu4) hoary; urgency=medium
.
  * Move exception finalisation later in the shutdown process - this
    fixes the crash seen in bug #1165761, taken from CVS.
  * codecs.StreamReader: Reset codec when seeking. Ubuntu #6972.
  * Apply fix for SF1124295, fixing an obscure bit of Zope's security machinery.
  * distutils: Don't add standard library dirs to library_dirs
    and runtime_library_dirs. On amd64, runtime paths pointing to /usr/lib64
    aren't recognized by dpkg-shlibdeps, and the packages containing these
    libraries aren't added to ${shlibs:Depends}.
  * Lib/locale.py:
    - correctly parse LANGUAGE as a colon separated list of languages.
    - prefer LC_ALL, LC_CTYPE and LANG over LANGUAGE to get the correct
      encoding.
    - Don't map 'utf8', 'utf-8' to 'utf', which is not a known encoding
      for glibc.
  * os.py: Avoid using items() in environ.update(). Fixes #1124513.
  * Python/pythonrun.c:
  * Build depend on locales, generate the locales needed for the
    testsuite.
  * Add build dependency on libbluetooth1-dev, adding some bluetooth
    functionality to the socket module.
  * Lib/test/test_sundry.py: Don't fail on import of profile & pstats,
    which are separated out to the python-profiler package.
  * Fix typos in manpage.
.
python2.4 (2.4dfsg-1ubuntu3) hoary; urgency=low
.
  * debian/patches/langpack-gettext.dpatch:
    - langpack support for python-gettext added
.
python2.4 (2.4dfsg-1ubuntu2) hoary; urgency=low
.
  * Revert 'essential' status on python2.4-minimal. This status on
    on python-minimal is sufficient (Ubuntu #6392).
.
python2.4 (2.4dfsg-1ubuntu1) hoary; urgency=low
.
  * Resyncronise with Debian.
  * Mark the python2.4-minimal package as 'essential'.
.
python2.4 (2.4dfsg-1) unstable; urgency=medium
.
  * Add licenses and acknowledgements for incorporated software in the
    debian/copyright file (addresses: #293932).
  * Replace md5 implementation with one having a DFSG conforming license.
  * Remove the profile.py and pstats.py modules from the source package,
    not having a DFSG conforming license. The modules can be found in
    the python2.x-profile package in the non-free section.
    Addresses: #293932.
  * Add missing norwegian locales (Tollef Fog Heen).
  * CVS updates of the release24-maint branch upto 2005-02-08 (date of
    the Python 2.3.5 release).
.
python2.4 (2.4-7ubuntu1) hoary; urgency=low
.
  * Fix the name of the python-dbg man page.
  * Resyncronise with Debian.
  * Move more modules to -minimal (new code in copy.py requires these):
    dis, inspect, opcode, token, tokenize.
.
python2.4 (2.4-7) unstable; urgency=medium
.
  * Add licenses and acknowledgements for incorporated software in the
    debian/copyright file (addresses: #293932).
  * Replace md5 implementation with one having a DFSG conforming license.
  * Add missing norwegian locales (Tollef Fog Heen).
  * CVS updates of the release24-maint branch upto 2005-02-08 (date of
    the Python 2.3.5 release).
.
python2.4 (2.4-6) unstable; urgency=low
.
  * Build a python2.4-dbg package using --with-pydebug. Add a debug
    directory <prefix>/lib-dynload/debug to sys.path instead of
    <prefix>/lib-dynload und install the extension modules of the
    debug build in this directory.
    Change the module load path to load extension modules from other
    site-packages/debug directories (for further details see the
    README in the python2.4-dbg package).  Closes: #5415.
  * Apply the pydebug-path patch. The package was already built in -5.
.
python2.4 (2.4-5) unstable; urgency=high
.
  * Fix a flaw in SimpleXMLRPCServerthat can affect any XML-RPC servers.
    This affects any programs have been written that allow remote
    untrusted users to do unrestricted traversal and can allow them to
    access or change function internals using the im_* and func_* attributes.
    References: CAN-2005-0089.
  * CVS updates of the release24-maint branch upto 2005-02-04.
.
python2.4 (2.4-4) unstable; urgency=medium
.
  * Update debian/copyright to the 2.4 license text (closes: #290898).
  * Remove /usr/bin/smtpd.py (closes: #291049).
.
python2.4 (2.4-3ubuntu6) hoary; urgency=low
.
  * Use old-style dpatches instead of dpatch-run.
.
python2.4 (2.4-3ubuntu5) hoary; urgency=low
.
  * Actually apply the patch as well (add to list of patches in
    debian/rules)
.
python2.4 (2.4-3ubuntu4) hoary; urgency=low
.
  * Add nb_NO and nn_NO locales to Lib/locale.py
.
python2.4 (2.4-3ubuntu3) hoary; urgency=low
.
  * Fix a flaw in SimpleXMLRPCServerthat can affect any XML-RPC servers.
    This affects any programs have been written that allow remote
    untrusted users to do unrestricted traversal and can allow them to
    access or change function internals using the im_* and func_* attributes.
    References: CAN-2005-0089.
.
python2.4 (2.4-3ubuntu2) hoary; urgency=low
.
  * Build a python2.4-dbg package using --with-pydebug. Add a debug
    directory <prefix>/lib-dynload/debug to sys.path instead of
    <prefix>/lib-dynload und install the extension modules of the
    debug build in this directory.
    Change the module load path to load extension modules from other
    site-packages/debug directories (for further details see the
    README in the python2.4-dbg package).  Closes: #5415.
  * Update debian/copyright to the 2.4 license text (closes: #290898).
  * Add operator and copy to the -minimal package.
.
python2.4 (2.4-3ubuntu1) hoary; urgency=low
.
  * Resynchronise with Debian.
  * python2.4: Depend on the very same version of python2.4-minimal.
  * Docment, that time.strptime currently cannot be used, if the
    python-minimal package is installed without the python package.
.
python2.4 (2.4-3) unstable; urgency=medium
.
  * Build the fpectl module.
  * Updated to CVS release24-maint 20050107.
.
python2.4 (2.4-2ubuntu5) hoary; urgency=low
.
  * Updated to CVS release24-maint 20050102.
  * python-minimal:
    - os.py: Use dict instead of UserDict, remove UserDict from -minimal.
    - add pickle, threading, needed for subprocess module.
    - optparse.py: conditionally import gettext, if not available,
      define _ as the identity function. Patch taken from the trunk.
      Avoids import of _locale, locale, gettext, copy, repr, itertools,
      collections, token, tokenize.
    - Add a build check to make sure that the minimal module list is
      closed under dependency.
  * Fix lintian warnings.
.
python2.4 (2.4-2ubuntu4) hoary; urgency=low
.
  * Add UserDict.py to the -minimal package, since os.py needs it.
.
python2.4 (2.4-2ubuntu3) hoary; urgency=low
.
  * Add os.py and traceback.py to the -minimal package, get the list
    of modules from the README.
.
python2.4 (2.4-2ubuntu2) hoary; urgency=low
.
  * Add compileall.py and py_compile.py to the -minimal package, not
    just to the README ...
.
python2.4 (2.4-2ubuntu1) hoary; urgency=low
.
  * Separate the interpreter and a minimal subset of modules into
    a python2.4-minimal package. See the README.Debian.gz in this
    package.
  * Move site.py to python2.4-minimal as well.
  * Add documentation files for devhelp.
.
python2.4 (2.4-2) unstable; urgency=medium
.
  * Updated patch for #283108. Thanks to Jim Meyering.
.
python2.4 (2.4-1) unstable; urgency=low
.
  * Final 2.4 release.
  * Flush stdout/stderr if closed (SF #1074011).
.
python2.4 (2.3.97-2) unstable; urgency=low
.
  * Don't run test_tcl, hanging on the buildds.
.
python2.4 (2.3.97-1) unstable; urgency=low
.
  * Python 2.4 Release Candidate 1.
.
python2.4 (2.3.96-1) experimental; urgency=low
.
  * Updated to CVS release24-maint 20041113.
  * Build the docs in info format again.
.
python2.4 (2.3.95-2) experimental; urgency=low
.
  * Move distutils package from the python2.4-dev into the python2.4
    package.
.
python2.4 (2.3.95-1) experimental; urgency=low
.
  * Python 2.4 beta2 release.
.
python2.4 (2.3.94-1) experimental; urgency=low
.
  * Python 2.4 beta1 release.
.
python2.4 (2.3.93-1) experimental; urgency=low
.
  * Python 2.4 alpha3 release.
.
python2.4 (2.3.92-1) experimental; urgency=low
.
  * Python 2.4 alpha2 release.
.
python2.4 (2.3.91-1) experimental; urgency=low
.
  * Python 2.4 alpha1 release.
    Highlights: http://www.python.org/2.4/highlights.html
.
python2.4 (2.3.90-1) experimental; urgency=low
.
  * Package HEAD branch (pre alpha ..).
.
python2.3 (2.3.4-1) unstable; urgency=medium
.
  * Final Python 2.3.4 Release.
  * In the API docs, fix signature of PyModule_AddIntConstant (closes: #250826).
  * locale.getdefaultlocale: don't fail with empty environment variables.
    Closes: #249816.
  * Include distutils/command/wininst.exe in -dev package (closes: #249006).
  * Disable cthreads on the Hurd (Michael Banck). Closes: #247211.
  * Add a note to pygettext(1), that this program is deprecated in favour
    of xgettext, which now includes support for Python as well.
    Closes: #246332.
.
python2.3 (2.3.3.91-1) unstable; urgency=low
.
  * Python 2.3.4 Release Candidate 1.
  * Do not use the default namespace for attributes. Patch taken from the
    2.3 maintenance branch.
    The xmllib module is obsolete.  Use xml.sax instead.
  * http://python.org/sf/945642 - fix nonblocking i/o with ssl socket.
.
python2.3 (2.3.3-7) unstable; urgency=low
.
  * Add a workaround for GNU libc nl_langinfo()'s returning NULL.
    Closes: #239237.
    Patch taken from 2.3 maintenance branch.
  * threading.py: Remove calls to currentThread() in _Condition methods that
    were side-effect. Side-effects were deemed unnecessary and were causing
    problems at shutdown time when threads were catching exceptions at start
    time and then triggering exceptions trying to call currentThread() after
    gc'ed.  Masked the initial exception which was deemed bad.
    Closes: #195812.
  * Properly support normalization of empty unicode strings. Closes: #239986.
    Patch taken from 2.3 maintenance branch.
  * README.maintainers: Add section where to find the documentation tools.
  * Fix crash in pyexpat module (closes: #229281).
  * For the Hurd, set the interpreters recursion limit to 930.
  * Do not try to byte-compile the test files on installation; this
    currently breaks the Hurd install.
.
python2.3 (2.3.3-6) unstable; urgency=low
.
  * Don't build the unversioned python{,-*} packages anymore. Now
    built from the python-defaults package.
  * Update to the proposed python-policy: byte-compile using -E.
  * Remove python-elisp's dependency on emacs20 (closes: #232785).
  * Don't build python-elisp from the python2.3 source anymore,
    get it from python-mode.sf.net as a separate source package.
  * python2.3-dev suggests libc-dev (closes: #231091).
  * get LDSHARED and CCSHARED (like, CC, CXX, CPP, CFLAGS) from
    the environment
  * Set CXX in installed config/Makefile (closes: #230273).
.
python2.3 (2.3.3-5) unstable; urgency=low
.
  * Build-depend on libdb4.2-dev, instead of libdb4.1-dev. According
    to the docs the file format is compatible.
.
python2.3 (2.3.3-4) unstable; urgency=low
.
  * Fix broken _bsddb module. setup.py picked up the wrong library.
.
python2.3 (2.3.3-3) unstable; urgency=low
.
  * Fix typo in patch (closes: #224797, #226064).
.
python2.3 (2.3.3-2) unstable; urgency=medium
.
  * Lib/email/Charset: use locale unaware function to lower case of locale
    name (closes: #224797).
  * Update python-mode to version from python-mode.sf.net. Fixes highlighting
    problems (closes: #223520).
  * Backport from mainline: Add IPV6_ socket options from RFCs 3493 and 3542.
.
python2.3 (2.3.3-1) unstable; urgency=low
.
  * New upstream release.
  * Copy the templates, tools and scripts from the Doc dir in the source
    to /usr/share/lib/python2.3/doc in the python2.3-dev package. Needed
    for packages building documentation like python does (closes: #207337).
.
python2.3 (2.3.2.91-1) unstable; urgency=low
.
  * New upstream version (2.3.3 release candidate).
  * Update python-mode.el (closes: #158811, #159630).
    Closing unreproducible report (closes: #159628).
.
python2.3 (2.3.2-7) unstable; urgency=low
.
  * Put the conflict in the correct direction. python2.3 (2.3.2-6) doesn't
    conflict with python (<= 2.3.2-5) but python (2.3.2-6) conflicts with
    python2.3 (<= 2.3.2-5) (thanks to Brian May). Really closes #221791.
.
python2.3 (2.3.2-6) unstable; urgency=low
.
  * Add conflicts with older python{,2.3} packages to fix overwrite
    errors (closes: #221791).
.
python2.3 (2.3.2-5) unstable; urgency=low
.
  * Updated to CVS release23-maint 20031119.
  * Re-upgrade the dependency of python2.3 on python (>= 2.3) to
    a dependency (closes: #221523).
.
python2.3 (2.3.2-4) unstable; urgency=low
.
  * Don't build-depend on latex2html (moved to non-free), but keep
    the prebuilt docs in debian/patches (closes: #221347).
  * Fix typos in the library reference (closes: #220510, #220954).
  * Fix typo in python-elisp's autoloading code (closes: #220308).
  * Update proposed python policy: private modules can be installed
    into /usr/lib/<module> (arch dependent) and into /usr/share/<module>
    (arch independent).
.
python2.3 (2.3.2-3) unstable; urgency=low
.
  * Downgrade the dependency of python2.3 on python (>= 2.3) to
    a recommendation.
  * Fix path to interpreter in binfmt file.
  * Fix segfault in unicodedata module (closes: #218697).
  * Adjust python-elisp autoload code (closes: #219821).
.
python2.3 (2.3.2-2) unstable; urgency=medium
.
  * Fix broken doc link (closes: #214217).
  * Disable wrongly detected large file support for GNU/Hurd.
  * Really fix the  FTBFS for the binary-indep target (closes: #214303).
.
python2.3 (2.3.2-1) unstable; urgency=low
.
  * New upstream version.
  * Fix a FTBFS for the binary-indep target.
.
python2.3 (2.3.1-3) unstable; urgency=low
.
  * Fix names of codec packages in recommends.
  * On alpha compile using -mieee (see #212912).
.
python2.3 (2.3.1-2) unstable; urgency=low
.
  * Update python policy draft (closes: #128911, #163785).
  * Re-add os.fsync function (closes: #212672).
  * Let python2.3-doc conflict with older python2.3 versions (closes: #211882).
  * Add recommends for pythonX.Y-japanese-codecs, pythonX.Y-iconvcodec,
    pythonX.Y-cjkcodecs, pythonX.Y-korean-codecs (closes: #207161).
  * Generate binfmt file (closes: #208005).
  * Add IPPROTO_IPV6 option to the socketmodule (closes: #206569).
  * Bugs reported against python2.2 and fixed in python2.3:
    - Crashes in idle (closes: #186887, #200084).
.
python2.3 (2.3.1-1) unstable; urgency=low
.
  * New upstream version (bug fix release).
.
python2.3 (2.3-4) unstable; urgency=high
.
  * Disable check for utimes function, which is broken in glibc-2.3.2.
    Packages using distutils had '1970/01/01-01:00:01' timestamps in files.
  * Bugs fixed by making python2.3 the default python version:
    - Canvas.scan_dragto() takes a 3rd optional parmeter "gain".
      Closes: #158168.
    - New command line parsing module (closes: #38628).
    - compileall.py allows compiling single files (closes: #139971).
  * Bugs reported for 2.2 and fixed in 2.3:
    - Idle does save files with ASCII characters (closes: #179313).
    - imaplib support for prefix-quoted strings (closes: #150485).
    - posixpath includes getctime (closes: #173827).
    - pydoc has support for keywords (closes: #186775).
  * Bugs reported for 2.1 and fixed in 2.3:
    - Fix handling of "#anchor" URLs in urlparse (closes: #147844).
    - Fix readline if C stdin is not a tty, even if sys.stdin is.
      Closes: #131810.
  * Updated to CVS release23-maint 20030810 (fixing memory leaks in
    array and socket modules).
  * pydoc's usage output uses the basename of the script.
  * Don't explicitely remove /etc/python2.3 on purge (closes: #202864).
  * python conflicts with python-xmlbase (closes: #204773).
  * Add dependency python (>= 2.3) to python2.3, so make sure the
    unversioned names can be used.
.
python2.3 (2.3-3) unstable; urgency=medium
.
  * Fix shlibs file.
.
python2.3 (2.3-2) unstable; urgency=medium
.
  * Make python2.3 the default python version.
.
python2.3 (2.3-1) unstable; urgency=low
.
  * Python 2.3 final release.
.
python2.3 (2.2.107-1rc2) unstable; urgency=medium
.
  * Python 2.3 release candidate 2.
  * Don't compress .txt files referenced by the html docs (closes: #200298).
  * Include the email/_compat* files (closes: #200349).
.
python2.3 (2.2.106-2beta2) unstable; urgency=medium
.
  * Python 2.3 beta2 release, updated to CVS 20030704.
    - Fixes AssertionError in httplib (closed: #192452).
    - Fixes uncaught division by zero in difflib.py (closed: #199287).
  * Detect presence of setgroups(2) at configure time (closes: #199839).
  * Use default gcc on arm as well.
.
python2.3 (2.2.105-1beta2) unstable; urgency=low
.
  * Python 2.3 beta2 release.
    - Includes merged idle fork.
    - Fixed socket.setdefaulttimeout(). Closes: #189380.
    - socket.ssl works with _socketobj. Closes: #196082.
  * Do not link libtix to the _tkinter module. It's loaded via
   'package require tix' at runtime. python2.3-tkinter now
    suggests tix8.1 instead.
  * On arm, use gcc-3.2 to build.
  * Add -fno-strict-aliasing rules to OPT to avoid warnings
    "dereferencing type-punned pointer will break strict-aliasing rules",
    when building with gcc-3.3.
.
python2.3 (2.2.104-1beta1.1) unstable; urgency=low
.
  * Non-maintainer upload with maintainer consent.
  * debian/control (Build-Depends): s/libgdbmg1-dev/libgdbm-dev/.
.
python2.3 (2.2.104-1beta1) unstable; urgency=low
.
  * Python 2.3 beta1 release, updated to CVS 20030514.
    - build the current documentation.
  * Reenable Tix support.
.
python2.3 (2.2.103-1beta1) unstable; urgency=low
.
  * Python 2.3 beta1 release, updated to CVS 20030506.
    - updated due to build problems on mips/mipsel.
    - keep the 2.3b1 documentation (doc build problems with cvs).
.
python2.3 (2.2.102-1beta1) unstable; urgency=low
.
  * Python 2.3 beta1 release.
.
python2.3 (2.2.101-1exp1) unstable; urgency=medium
.
  * Python 2.3 alpha2 release, updated to CVS 20030321.
  * Tkinter: Catch exceptions thrown for undefined substitutions in
    events (needed for tk 8.4.2).
.
python2.3 (2.2.100-1exp1) unstable; urgency=low
.
  * Python 2.3 alpha2 release, updated to CVS 20030221.
.
python2.3 (2.2.99-1exp1) unstable; urgency=low
.
  * Python 2.3 alpha1 release updated to CVS 20030123.
    - should fix the testsuite (and package build) failure on alpha.
  * Remove build dependency on libexpat1-dev. Merge the python2.3-xmlbase
    package into python2.3 (closes: #177739).
.
python2.3 (2.2.98-1exp1) unstable; urgency=low
.
  * Python 2.3 alpha1 release updated to CVS 20030117.
  * Build using libdb4.1.
.
python2.3 (2.2.97-1exp1) unstable; urgency=low
.
  * Python 2.3 alpha1 release updated to CVS 20030109.
  * Build-Depend on g++ (>= 3:3.2).
  * Python package maintainers: please wait uploading python dependent
    packages until python2.2 and python2.1 are compiled using gcc-3.2.
.
python2.3 (2.2.96-1exp1) unstable; urgency=low
.
  * Python 2.3 alpha1 release (not exactly the tarball, but taken from
    CVS 20030101).
    - Includes support for linking with threaded tk8.4 (closes: #172714).
  * Install and register whatsnew document (closes: #173859).
  * Properly unregister info documentation.
.
python2.3 (2.2.95-1exp1) unstable; urgency=low
.
  * Experimental packages from CVS 021212.
    - data in unicodedate module is up to date (closes: #171061).
  * Fix idle packaging (closes: #170394).
  * Configure using unicode UCS-4 (closes: #171062).
    This change breaks compatibility with binary modules, but what do you
    expect from experimental packages ... Please recompile dependent packages.
  * Don't strip binaries for now.
.
python2.3 (2.2.94-1exp1) unstable; urgency=low
.
  * Experimental packages from CVS 021120.
  * Remove outdated README.dbm.
  * Depend on tk8.4.
  * python-elisp: Install emacsen install file with mode 644 (closes: #167718).
.
python2.3 (2.2.93-1exp1) unstable; urgency=medium
.
  * Experimental packages from CVS 021015.
  * Build a static library libpython2.3-pic.a.
  * Enable large file support for the Hurd (closes: #164602).
.
python2.3 (2.2.92-1exp1) unstable; urgency=low
.
  * Experimental packages from CVS 020922.
  * Fix build error on ia64 (closes: #161234).
  * Build depend on gcc-3.2-3.2.1-0pre2 to fix build error on arm.
.
python2.3 (2.2.91-1exp1) unstable; urgency=low
.
  * Experimental packages from CVS 020906.
  * idle-python2.3: Fix conflict (closes: #159267).
  * Fix location of python-mode.el (closes: #159564, #159619).
  * Use tix8.1.
  * Apply fix for distutils/ccompiler problem (closes: #159288).
.
python2.3 (2.2.90-1exp1) unstable; urgency=low
.
  * Experimental packages from CVS 020820.
  * Don't build python2.3-elisp, but put the latest version into
    python-elisp.
.
python2.2 (2.2.1-6) unstable; urgency=low
.
  * CVS updates of the release22-maint branch upto 2002-07-23.
  * Enable IPv6 support (closes: #152543).
  * Add python2.2-tk suggestion for python2.2 (pydoc -g).
  * Fix from SF patch #527518: proxy config with user+pass authentication.
  * Point pydoc to the correct location of the docs (closes: #147579).
  * Remove '*.py[co]' files, when removing the python package,
    not when purging (closes: #147130).
  * Update to new py2texi.el version (Milan Zamazal).
.
python2.2 (2.2.1-5) unstable; urgency=low
.
  * CVS updates of the release22-maint branch upto 2002-05-03.
  * Build the info docs (closes: #145653).
.
python2.2 (2.2.1-4) unstable; urgency=high
.
  * Fix indentation errors introduced in last upload (closes: #143809).
.
python2.2 (2.2.1-3) unstable; urgency=high
.
  * Add Build-Conflicts: tcl8.0-dev, tk8.0-dev, tcl8.2-dev, tk8.2-dev.
    Closes: #143534 (build a working _tkinter module, on machines, where
    8.0's tk.h gets included).
  * CVS updates of the release22-maint branch upto 2002-04-20.
.
python2.2 (2.2.1-2) unstable; urgency=low
.
  * Forgot to copy the dlmodule patch from the 2.1.3 package. Really
    closes: #141681.
.
python2.2 (2.2.1-1) unstable; urgency=high
.
  * Final 2.2.1 release.
  * According to report #131813, the python interpreter is much faster on some
    architectures, when beeing linked statically with the python library (25%).
    Gregor and me tested on i386, m68k and alpha, but we could not reproduce
    such a speedup (generally between 5% and 10%). But we are linking the
    python executable now statically ...
  * Build info docs from the tex source, merge the python-doc-info
    package into the python-doc package.
  * Always build the dl module. Failure in case of
        sizeof(int)!=sizeof(long)!=sizeof(void*)
    is delayed until dl.open is called. Closes: #141681.
.
python2.2 (2.2.0.92-0) unstable; urgency=low
.
  * Package CVS sources, omit cvs-updates.dpatch (closes: #140977).
.
python2.2 (2.2-6) unstable; urgency=medium
.
  * Update to python-2.2.1 release candidate 2 (final release scheduled
    for April 10).
  * Enable dl module (closes: #138992).
  * Build doc files with python binary from package (closes: #139657).
  * Build _tkinter module with BLT and Tix support.
  * python2.2-elisp: Conflict with python2-elisp (closes: #138970).
  * string.split docs updated in python-2.2.1 (closes: #129272).
.
python2.2 (2.2-5) unstable; urgency=low
.
  * CVS updates of the release22-maint branch upto 20020310 (aproaching
    the first 2.2.1 release candidate).
  * Stolen from HEAD: check argument of locale.nl_langinfo (closes: #137371).
.
python2.2 (2.2-4) unstable; urgency=medium
.
  * Include test/{__init__.py,README,pystone.py} in package (closes: #129013).
  * Fix python-elisp conflict (closes: #129046).
  * Don't compress stylesheets (closes: #133179).
  * CVS updates of the release22-maint branch upto 20020310.
.
python2.2 (2.2-3) unstable; urgency=medium
.
  * Updates from the CVS python22-maint branch up to 20020107.
    webbrowser.py: properly escape url's.
  * The Hurd does not have large file support: disabled.
.
python2.2 (2.2-2) unstable; urgency=medium
.
  * CVS updates of the release22-maint branch upto 20011229. Fixes:
    - Include TCP_CORK flag in plat-linux2 headers (fixes: #84340).
    - Update CDROM.py module (fixes: #125785).
  * Add missing chunk of the GNU/Hurd patch (therefore urgency medium).
  * Send anonymous password when using anonftp (closes: #126814).
.
python2.2 (2.2-1) unstable; urgency=low
.
  * New upstream version: 2.2.
  * Bugs fixed upstream:
    - Docs for os.kill reference the signal module for constants.
    - Documentation strings in the tutorial end with a period (closes: #94770).
    - Tk: grid_location method moved from Grid to Misc (closes: #98338).
    - mhlib.SubMessage.getbodytext takes decode parameter (closes: #31876).
    - Strings in modules are locale aware (closes: #51444).
    - Printable 8-bit characters in strings are correctly printed
      (closes: #64354).
    - Dictionary can be updated with abstract mapping object (closes: #46566).
  * Make site.py a config files.
.
python2.2 (2.1.99c1-1) unstable; urgency=low
.
  * New upstream version: 2.2c1 (release candidate).
  * Do not provide python2.2-base anymore.
  * Install correct README.Debian for python2.2 package. Include hint
    where to find Makefile.pre.in.
  * Suggest installation of python-ssl.
  * Remove idle config files on purge.
  * Remove empty /usr/lib/python2.2 directory on purge.
.
python2.2 (2.1.99beta2-1) unstable; urgency=high
.
  * debian/rules: Reflect removal of regrtest package (closes: #122278).
    Resulted in build failures on all architectures.
  * Build -doc package from source.
.
python2.2 (2.1.99beta2-0.1) unstable; urgency=low
.
  * Non maintainer upload.
  * New upstream version (this is 2.2beta2).
  * Do not build the python-regrtest package anymore; keep the test framework
    components test/regrtest.py and test/test_support.py in the python
    package (closes: #119408).
.
python2.2 (2.1.99beta1-4) unstable; urgency=low
.
  * Configure with --with-fpectl (closes: #118125).
  * setup.py: Remove broken check for _curses_panel module (#116081).
  * idle: Move config-* files to /etc and mark as conffiles (#106390).
  * Move idle packages to section `devel'.
.
python2.2 (2.1.99beta1-3) unstable; urgency=low
.
  * Fix shlibs file (was still referring to 2.1). Closes: #116810.
  * README.Debian: point to draft of python-policy in the python package.
.
python2.2 (2.1.99beta1-2) unstable; urgency=medium
.
  * Fix shlibs file (was still referring to 2.1). Closes: #116810.
  * Rename package python2.2-base to python2.2.
.
python2.2 (2.1.99beta1-1) unstable; urgency=low
.
  * New upstream version (beta). Call the package version 2.1.99beta1-1.
  * New maintainer until the final 2.2 release.
  * Updated the debian patches.
.
python2.1 (2.1.1-1.2) unstable; urgency=low
.
  * Really remove the python alternative.
.
python2.1 (2.1.1-1.1) unstable; urgency=low
.
  * README FOR PACKAGE MAINTAINERS: It is planned to remove the python2-XXX
    packages from unstable and move on to python2.1.
    If you repackage/adapt your modules for python2.1, don't build
    python2-XXX and python2.1-XXX packages from the same source package,
    so that the python2-XXX package can be removed without influencing the
    python2.1-XXX package.
.
    See the debian-python mailing list at http://lists.debian.org/devel.html
    for details and the current discussion and a draft for a debian-python
    policy (August to October 2001).
.
  * Remove alternative for /usr/bin/python. The python-base package now
    provides the default python version.
.
  * Regenerate control file to fix build dependencies (closes: #116190).
  * Remove alternative for /usr/bin/{python,pydoc}.
  * Provide a libpython2.1.so symlink in /usr/lib/python2.1/config,
    so that the shared library is found when -L/usr/lib/python2.1/config
    is specified.
  * Conflict with old package versions, where /usr/bin/python is a real
    program (closes: #115943).
  * python2.1-elisp conflicts with python-elisp (closes: #115895).
  * We now have 2.1 (closes: #96851, #107849, #110243).
.
python2.1 (2.1.1-1) unstable; urgency=low
.
  * Incorporated Matthias' modifications.
.
python2.1 (2.1.1-0.2) unstable; urgency=low
.
  * New upstream 2.1.1.
  * GPL compatible licence (fixes #84080, #102949, #110643).
  * Fixed upstream (closes: #99692, #111340).
  * Build in separate build directory.
  * Split Debian patches into debian/patches directory.
  * Build dependencies: Add libgmp3-dev, libexpat1-dev, tighten
    debhelper dependency.
  * debian/rules: Updated a "bit".
  * python-elisp: Remove custom dependency (closes: #87783),
    fix emacs path (closes: #89712), remove emacs19 dependency (#82694).
  * Mention distutils in python-dev package description (closes: #108170).
  * Update README.Debian (closes: #85430).
  * Run versioned python in postinsts (closes: #113349).
  * debian/sample.{postinst,prerm}: Change to version independent scripts.
  * Use '/usr/bin/env python2.1' as interpreter for all python scripts.
  * Add libssl-dev to Build-Conflicts.
  * python-elisp: Add support for emacs21 (closes: #98635).
  * Do not compress .py files in doc directories.
  * Don't link explicitely with libc.
.
python2.1 (2.1.1-0.1) unstable; urgency=low
.
  * New upstream version (CVS branch release21-maint, will become 2.1.1):
    This CVS branch will be released as 2.1.1 under a GPL compatible
    license.
.
python2 (2.1-0.1) unstable; urgency=low
.
  * Fixed Makefile.pre.in.
  * Fixed the postinst files in order to use 2.1 (instead of 2.0).
  * Mention the immanent release of 2.0.1 and 2.1.1, with a GPL
    compatible license.
.
python2 (2.1-0) unstable; urgency=low
.
  * New upstream version.
  * Experimental packages.
.
python2 (2.0-7) unstable; urgency=low
.
  * Rebuilt with recent tcl8.3-dev/tk8.3-dev in order to fix a
    dependency problem with python2-tk (closes: #87793, #92962).
  * Change postinst to create and update /usr/local/lib/python2.0 and
    site-python with permissions and owner as mandated by policy:
    2775 and root:staff (closes: #89047).
  * Fix to compileall.py: A superfluous argument made compileall without
    options fail (cf. #92990 for python).
  * Move the distutils module into python2-dev. It needs Makefile.pre.in
    in order to work (closes: #89900).
  * Remove build-dependency on libgdbm2-dev (which isn't built anyway).
  * Add a build-dependency on libdb2-dev (cf. #90220 for python).
.
python2 (2.0-6) unstable; urgency=low
.
  * Remove python-zlib package; merge it into python-base.
  * Mark that README.python2 is not yet updated.
.
python2 (2.0-5) unstable; urgency=low
.
  * Recompile with tcl/tk8.3 (closes: #82088).
  * Modifications to README.why-python2 (closes: #82116).
  * Add menu hint to idle2 menu entry.
  * idle2 is renamed idle-python2 and now build correctly (closes: #82218).
  * Add build-dependency on autoconf (closes: #85339).
  * Build bsddbmodule as shared module (Modules/Setup.config.in),
    and link libpython2.so with -lm in Makefile (closes: #86027).
  * various cleanups in debian/rules, e.g. removing dh_suidregister.
  * Make pdb available as /usr/bin/pdb-python2 in python2-dev
    (cf. #79870 in python-base).
  * Remove libgmp3 from build-dependencies, since we currently can't
    build the mpzmodule for Python2 due to license problems.
.
python2 (2.0-4) unstable; urgency=low
.
  * control: make python2-elisp conflict with python-elisp (it doesn't
    make sense to have both of them installed, does it ?)
  * include build-depend on libxmltok1-dev.
  * again, build with tcl/tk8.0.
.
python2 (2.0-3) unstable; urgency=low
.
  * Modules/Setup.in: Added a missing \ that made _tkinter be built
    incorrectly.
  * rules: on the fly, change all '#!' python scripts to use python2.
.
python2 (2.0-2) unstable; urgency=low
.
  * Aaargh. Remove conflicts/provides/replaces on python-base to make
    parallel installation of python-base and python2-base possible.
  * Install examples into /usr/share/doc/python2 (not python) and fix
    symlink to python2.0 (thanks to Rick Younie <younie@home.com> for
    pointing out this).
  * Rename man page to python2.1.
.
python2 (2.0-1) unstable; urgency=low
.
  * New upstream version. Initial release for python2.
2025-08-15 16:28:07 +02:00
173 changed files with 29647 additions and 0 deletions

41
debian/2to3-2.7.1 vendored Normal file
View File

@@ -0,0 +1,41 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.4.
.TH 2TO3-2.7 "1" "January 2012" "2to3-2.7 2.7" "User Commands"
.SH NAME
2to3-2.7 \- Python2 to Python3 converter
.SH SYNOPSIS
.B 2to3
[\fIoptions\fR] \fIfile|dir \fR...
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
show this help message and exit
.TP
\fB\-d\fR, \fB\-\-doctests_only\fR
Fix up doctests only
.TP
\fB\-f\fR FIX, \fB\-\-fix\fR=\fIFIX\fR
Each FIX specifies a transformation; default: all
.TP
\fB\-j\fR PROCESSES, \fB\-\-processes\fR=\fIPROCESSES\fR
Run 2to3 concurrently
.TP
\fB\-x\fR NOFIX, \fB\-\-nofix\fR=\fINOFIX\fR
Prevent a transformation from being run
.TP
\fB\-l\fR, \fB\-\-list\-fixes\fR
List available transformations
.TP
\fB\-p\fR, \fB\-\-print\-function\fR
Modify the grammar so that print() is a function
.TP
\fB\-v\fR, \fB\-\-verbose\fR
More verbose logging
.TP
\fB\-\-no\-diffs\fR
Don't show diffs of the refactoring
.TP
\fB\-w\fR, \fB\-\-write\fR
Write back modified files
.TP
\fB\-n\fR, \fB\-\-nobackups\fR
Don't write backups for modified files

8997
debian/FAQ.html vendored Normal file

File diff suppressed because it is too large Load Diff

58
debian/PVER-dbg.README.Debian.in vendored Normal file
View File

@@ -0,0 +1,58 @@
Contents of the @PVER@-dbg package
-------------------------------------
For debugging python and extension modules, you may want to add the contents
of /usr/share/doc/@PVER@/gdbinit (found in the @PVER@-dev package) to your
~/.gdbinit file.
@PVER@-dbg contains two sets of packages:
- debugging symbols for the standard @PVER@ build. When this package
is installed, gdb will automatically load up the debugging symbols
from it when debugging @PVER@ or one of the included extension
modules.
- a separate @PVER@-dbg binary, configured --with-pydebug, enabling the
additional debugging code to help debug memory management problems.
For the latter, all extension modules have to be recompiled to
correctly load with an pydebug enabled build.
Debian and Ubuntu specific changes to the debug interpreter
-----------------------------------------------------------
The python2.4 and python2.5 packages in Ubuntu feisty are modified to
first look for extension modules under a different name.
normal build: foo.so
debug build: foo_d.so foo.so
This naming schema allows installation of the extension modules into
the same path (The naming is directly taken from the Windows builds
which already uses this naming scheme).
See https://wiki.ubuntu.com/PyDbgBuilds for more information.
Using the python-dbg builds
---------------------------
* Call the python-dbg or the pythonX.Y-dbg binaries instead of the
python or pythonX.Y binaries.
* Debugging a third party extension requires the availabilty of the
extension built for the debug interpreter. For an extension `foo'
make sure that the `python-foo-dbg' package is installed, or else
the interpreter falls back to the extension for the normal build.
The error on fallback is expected.
* Properties of the debug build are described in
/usr/share/doc/@PVER@/SpecialBuilds.txt.gz.
The debug interpreter is built with Py_DEBUG defined.
* From SpecialBuilds.txt: This is what is generally meant by "a debug
build" of Python. Py_DEBUG implies LLTRACE, Py_REF_DEBUG,
Py_TRACE_REFS, and PYMALLOC_DEBUG (if WITH_PYMALLOC is enabled).
In addition, C assert()s are enabled (via the C way: by not defining
NDEBUG), and some routines do additional sanity checks inside
"#ifdef Py_DEBUG" blocks.

13
debian/PVER-dbg.overrides.in vendored Normal file
View File

@@ -0,0 +1,13 @@
@PVER@-dbg binary: package-name-doesnt-match-sonames
@PVER@-dbg binary: non-dev-pkg-with-shlib-symlink
# no, it's not unusual
@PVER@-dbg binary: unusual-interpreter
# just the gdb debug file
@PVER@-dbg binary: python-script-but-no-python-dep
# pointless lintian ...
@PVER@-dbg binary: hardening-no-fortify-functions
@PVER@-dbg binary: command-with-path-in-maintainer-script

19
debian/PVER-dbg.postinst.in vendored Normal file
View File

@@ -0,0 +1,19 @@
#! /bin/sh
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
/usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
/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"
fi
fi
#DEBHELPER#
exit 0

28
debian/PVER-dbg.prerm.in vendored Normal file
View File

@@ -0,0 +1,28 @@
#! /bin/sh
set -e
case "$1" in
remove)
rm -f /usr/lib/debug/usr/bin/@PVER@-gdb.py[co]
rm -f /usr/lib/debug/usr/lib/lib@PVER@.so.1.0-gdb.py[co]
dpkg -L lib@PVER@-dbg@HOST_QUAL@ \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
;;
upgrade)
dpkg -L lib@PVER@-dbg@HOST_QUAL@ \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

13
debian/PVER-doc.doc-base.PVER-api.in vendored Normal file
View File

@@ -0,0 +1,13 @@
Document: @PVER@-api
Title: Python/C API Reference Manual (v@VER@)
Author: Guido van Rossum
Abstract: This manual documents the API used by C (or C++) programmers who
want to write extension modules or embed Python. It is a
companion to *Extending and Embedding the Python Interpreter*,
which describes the general principles of extension writing but
does not document the API functions in detail.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/c-api/index.html
Files: /usr/share/doc/@PVER@/html/c-api/*.html

13
debian/PVER-doc.doc-base.PVER-dist.in vendored Normal file
View File

@@ -0,0 +1,13 @@
Document: @PVER@-dist
Title: Distributing Python Modules (v@VER@)
Author: Greg Ward
Abstract: This document describes the Python Distribution Utilities
(``Distutils'') from the module developer's point-of-view, describing
how to use the Distutils to make Python modules and extensions easily
available to a wider audience with very little overhead for
build/release/install mechanics.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/distutils/index.html
Files: /usr/share/doc/@PVER@/html/distutils/*.html

16
debian/PVER-doc.doc-base.PVER-ext.in vendored Normal file
View File

@@ -0,0 +1,16 @@
Document: @PVER@-ext
Title: Extending and Embedding the Python Interpreter (v@VER@)
Author: Guido van Rossum
Abstract: This document describes how to write modules in C or C++ to extend
the Python interpreter with new modules. Those modules can define
new functions but also new object types and their methods. The
document also describes how to embed the Python interpreter in
another application, for use as an extension language. Finally,
it shows how to compile and link extension modules so that they
can be loaded dynamically (at run time) into the interpreter, if
the underlying operating system supports this feature.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/extending/index.html
Files: /usr/share/doc/@PVER@/html/extending/*.html

12
debian/PVER-doc.doc-base.PVER-inst.in vendored Normal file
View File

@@ -0,0 +1,12 @@
Document: @PVER@-inst
Title: Installing Python Modules (v@VER@)
Author: Greg Ward
Abstract: This document describes the Python Distribution Utilities
(``Distutils'') from the end-user's point-of-view, describing how to
extend the capabilities of a standard Python installation by building
and installing third-party Python modules and extensions.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/install/index.html
Files: /usr/share/doc/@PVER@/html/install/*.html

15
debian/PVER-doc.doc-base.PVER-lib.in vendored Normal file
View File

@@ -0,0 +1,15 @@
Document: @PVER@-lib
Title: Python Library Reference (v@VER@)
Author: Guido van Rossum
Abstract: This library reference manual documents Python's standard library,
as well as many optional library modules (which may or may not be
available, depending on whether the underlying platform supports
them and on the configuration choices made at compile time). It
also documents the standard types of the language and its built-in
functions and exceptions, many of which are not or incompletely
documented in the Reference Manual.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/library/index.html
Files: /usr/share/doc/@PVER@/html/library/*.html

10
debian/PVER-doc.doc-base.PVER-new.in vendored Normal file
View File

@@ -0,0 +1,10 @@
Document: @PVER@-new
Title: What's new in Python @VER@
Author: A.M. Kuchling
Abstract: This documents lists new features and changes worth mentioning
in Python @VER@.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/whatsnew/@VER@.html
Files: /usr/share/doc/@PVER@/html/whatsnew/@VER@.html

18
debian/PVER-doc.doc-base.PVER-ref.in vendored Normal file
View File

@@ -0,0 +1,18 @@
Document: @PVER@-ref
Title: Python Reference Manual (v@VER@)
Author: Guido van Rossum
Abstract: This reference manual describes the syntax and "core semantics" of
the language. It is terse, but attempts to be exact and complete.
The semantics of non-essential built-in object types and of the
built-in functions and modules are described in the *Python
Library Reference*. For an informal introduction to the language,
see the *Python Tutorial*. For C or C++ programmers, two
additional manuals exist: *Extending and Embedding the Python
Interpreter* describes the high-level picture of how to write a
Python extension module, and the *Python/C API Reference Manual*
describes the interfaces available to C/C++ programmers in detail.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/reference/index.html
Files: /usr/share/doc/@PVER@/html/reference/*.html

13
debian/PVER-doc.doc-base.PVER-tut.in vendored Normal file
View File

@@ -0,0 +1,13 @@
Document: @PVER@-tut
Title: Python Tutorial (v@VER@)
Author: Guido van Rossum, Fred L. Drake, Jr., editor
Abstract: This tutorial introduces the reader informally to the basic
concepts and features of the Python language and system. It helps
to have a Python interpreter handy for hands-on experience, but
all examples are self-contained, so the tutorial can be read
off-line as well.
Section: Programming/Python
Format: HTML
Index: /usr/share/doc/@PVER@/html/tutorial/index.html
Files: /usr/share/doc/@PVER@/html/tutorial/*.html

2
debian/PVER-doc.overrides.in vendored Normal file
View File

@@ -0,0 +1,2 @@
# this is referenced by the html docs
@PVER@-doc binary: extra-license-file

2
debian/PVER-examples.overrides.in vendored Normal file
View File

@@ -0,0 +1,2 @@
# don't care about permissions of the example files
@PVER@-examples binary: executable-not-elf-or-script

157
debian/PVER-minimal.README.Debian.in vendored Normal file
View File

@@ -0,0 +1,157 @@
Contents of the @PVER@-minimal package
-----------------------------------------
@PVER@-minimal consists of a minimum set of modules which may be needed
for python scripts used during the boot process. If other packages
are needed in these scripts, don't work around the missing module, but
file a bug report against this package. The modules in this package
are:
__builtin__ builtin
__future__ module
_abcoll module
_bisect extension
_bytesio extension
_codecs builtin
_collections extension
_fileio extension
_functools extension
_hashlib extensionx
_heapq extension
_io extension
_locale extension
_md5 extension
_random extension
_sha extension
_sha256 extension
_sha512 extension
_socket extension
_sre builtin
_ssl extensionx
_struct extension
_symtable builtin
_sysconfigdata module
_types builtin
_warnings builtin
_weakref extension
_weakrefset module
abc module
atexit module
ConfigParser module
StringIO module
UserDict module
cPickle extension
cStringIO extension
array extension
base64 module
binascii extension
bisect module
cmath extension
calendar module
codecs module
collections module
compileall module
contextlib module
copy module
copy_reg module
datetime extension
dis module
encodings package
errno builtin
exceptions builtin
fcntl extension
fnmatch module
functools module
gc builtin
genericpath module
getopt module
glob module
grp extension
hashlib module
heapq module
imp builtin
inspect module
io module
itertools extension
keyword module
linecache module
locale module
logging package
marshal builtin
math extension
md5 module
opcode module
operator extension
optparse module
os module
pickle module
platform module
popen2 module
posix builtin
posixpath module
pkgutil module
pwd builtin
py_compile module
random module
re module
repr module
runpy module
select extension
sha module
shutil module
signal builtin
socket module
spwd extension
sre module
sre_compile module
sre_constants module
sre_parse module
ssl module
stat module
string module
strop extension
struct module
subprocess module
sys builtin
syslog extension
sysconfig module
tempfile module
textwrap module
time extension
token module
thread builtin
token module
tokenize module
traceback module
types module
unicodedata extension
weakref module
warnings module
zipimport extension
zlib extension
Included are as well the codecs and stringprep modules, and the encodings
modules for all encodings except the multibyte encodings and the bz2 codec.
The following modules are excluded, their import is guarded from the
importing module:
Used in Excluded
------------ ------------------------------------
os nt ntpath os2 os2emxpath mac macpath
riscos riscospath riscosenviron
optparse gettext
pickle doctest
subprocess threading
This list was derived by looking at the modules in the perl-base package,
then adding python specific "core modules".
TODO's
------
- time.strptime cannot be used. The required _strptime module is not
included in the -minimal package yet. _strptime, locale, _locale and
calendar have to be added.
- modules used very often in the testsuite: copy, cPickle, operator.

1
debian/PVER-minimal.overrides.in vendored Normal file
View File

@@ -0,0 +1 @@
@PVER@-minimal binary: command-with-path-in-maintainer-script

78
debian/PVER-minimal.postinst.in vendored Normal file
View File

@@ -0,0 +1,78 @@
#! /bin/sh
set -e
if [ ! -f /etc/@PVER@/sitecustomize.py ]; then
cat <<-EOF
# Empty sitecustomize.py to avoid a dangling symlink
EOF
fi
case "$1" in
configure)
# Create empty directories in /usr/local
if [ ! -e /usr/local/lib/@PVER@ ]; then
mkdir -p /usr/local/lib/@PVER@ 2> /dev/null || true
chmod 2775 /usr/local/lib/@PVER@ 2> /dev/null || true
chown root:staff /usr/local/lib/@PVER@ 2> /dev/null || true
fi
localsite=/usr/local/lib/@PVER@/dist-packages
if [ ! -e $localsite ]; then
mkdir -p $localsite 2> /dev/null || true
chmod 2775 $localsite 2> /dev/null || true
chown root:staff $localsite 2> /dev/null || true
fi
if which update-binfmts >/dev/null; then
update-binfmts --import @PVER@
fi
;;
esac
if [ "$1" = configure ]; then
if ls -L /usr/lib/@PVER@/sitecustomize.py >/dev/null 2>&1; then
filt='cat'
else
filt='fgrep -v sitecustomize.py'
fi
files=$(dpkg -L lib@PVER@-minimal@HOST_QUAL@ \
| sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p' | $filt)
if [ -n "$files" ]; then
/usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
/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"
fi
bc=no
if [ -z "$2" ] || dpkg --compare-versions "$2" lt 2.7-9 \
|| [ -f /var/lib/python/@PVER@_installed ]; then
bc=yes
fi
if grep -sq '^unsupported-versions[^#]*@PVER@' /usr/share/python/debian_defaults
then
# FIXME: byte compile anyway?
bc=no
fi
if [ "$bc" = yes ]; then
# new installation or installation of first version with hook support
if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
echo "Linking and byte-compiling packages for runtime @PVER@..."
fi
version=$(dpkg -s @PVER@-minimal | awk '/^Version:/ {print $2}')
for hook in /usr/share/python/runtime.d/*.rtinstall; do
[ -x $hook ] || continue
$hook rtinstall @PVER@ "$2" "$version"
done
if [ -f /var/lib/python/@PVER@_installed ]; then
rm -f /var/lib/python/@PVER@_installed
rmdir --ignore-fail-on-non-empty /var/lib/python 2>/dev/null
fi
fi
fi
#DEBHELPER#
exit 0

21
debian/PVER-minimal.postrm.in vendored Normal file
View File

@@ -0,0 +1,21 @@
#! /bin/sh
set -e
if [ "$1" = "remove" ]; then
if [ -f /var/lib/python/@PVER@_installed ]; then
rm -f /var/lib/python/@PVER@_installed
rmdir --ignore-fail-on-non-empty /var/lib/python 2>/dev/null
fi
fi
if [ "$1" = "purge" ]; then
for d in `find /usr/lib/@PVER@ -depth -type d -empty 2> /dev/null`; do \
while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \
done
fi
#DEBHELPER#
exit 0

39
debian/PVER-minimal.preinst.in vendored Normal file
View File

@@ -0,0 +1,39 @@
#!/bin/sh
set -e
syssite=/usr/lib/@PVER@/site-packages
oldsite=/usr/lib/@PVER@/old-site-packages
localsite=/usr/local/lib/@PVER@/dist-packages
syslink=../../${localsite#/usr/*}
case "$1" in
install)
if [ -z "$2" ] && [ -d $syssite ] && [ ! -h $syssite ]; then
echo "new installation of @PVER@-minimal; $syssite is a directory"
echo "which is expected a symlink to $localsite."
echo "please find the package shipping files in $syssite and"
echo "file a bug report to ship these in /usr/lib/@PVER@/dist-packages instead"
echo "aborting installation of @PVER@-minimal"
exit 1
fi
# remember newly installed runtime
mkdir -p /var/lib/python
touch /var/lib/python/@PVER@_installed
;;
upgrade)
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

36
debian/PVER-minimal.prerm.in vendored Normal file
View File

@@ -0,0 +1,36 @@
#! /bin/sh
set -e
case "$1" in
remove)
if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
echo "Unlinking and removing bytecode for runtime @PVER@"
fi
for hook in /usr/share/python/runtime.d/*.rtremove; do
[ -x $hook ] || continue
$hook rtremove @PVER@ || continue
done
if which update-binfmts >/dev/null; then
update-binfmts --package @PVER@ --remove @PVER@ /usr/bin/@PVER@
fi
localsite=/usr/local/lib/@PVER@/dist-packages
[ -d $localsite ] && rmdir $localsite 2>/dev/null || true
[ -d $(dirname $localsite) ] \
&& rmdir $(dirname $localsite) 2>/dev/null || true
;;
upgrade)
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

10
debian/PVER.desktop.in vendored Normal file
View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Python (v@VER@)
Comment=Python Interpreter (v@VER@)
Exec=/usr/bin/@PVER@
Icon=/usr/share/pixmaps/@PVER@.xpm
Terminal=true
Type=Application
Categories=Development;
StartupNotify=true
NoDisplay=true

16
debian/PVER.overrides.in vendored Normal file
View File

@@ -0,0 +1,16 @@
# idlelib images
@PVER@ binary: image-file-in-usr-lib
# yes, we have to
@PVER@ binary: depends-on-python-minimal
@PVER@ binary: desktop-command-not-in-package
@PVER@ binary: menu-command-not-in-package
# license file referred by the standard library
@PVER@ binary: extra-license-file
# no, not useless
@PVER@ binary: manpage-has-useless-whatis-entry
@PVER@ binary: command-with-path-in-maintainer-script

41
debian/PVER.postinst.in vendored Normal file
View File

@@ -0,0 +1,41 @@
#! /bin/sh
set -e
case "$1" in
configure)
files=$(dpkg -L lib@PVER@-stdlib@HOST_QUAL@ | sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p')
if [ -n "$files" ]; then
/usr/bin/@PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
/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"
fi
# Create empty directories in /usr/local
if [ ! -e /usr/local/lib/python@VER@ ]; then
mkdir -p /usr/local/lib/python@VER@ 2> /dev/null || true
chmod 2775 /usr/local/lib/python@VER@ 2> /dev/null || true
chown root:staff /usr/local/lib/python@VER@ 2> /dev/null || true
fi
if [ ! -e /usr/local/lib/python@VER@/site-packages ]; then
mkdir -p /usr/local/lib/python@VER@/site-packages 2> /dev/null || true
chmod 2775 /usr/local/lib/python@VER@/site-packages 2> /dev/null || true
chown root:staff /usr/local/lib/python@VER@/site-packages 2> /dev/null || true
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

22
debian/PVER.prerm.in vendored Normal file
View File

@@ -0,0 +1,22 @@
#! /bin/sh
set -e
case "$1" in
remove|upgrade)
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
rmdir /usr/local/lib/python@VER@/site-packages 2>/dev/null && \
rmdir /usr/local/lib/python@VER@ 2>/dev/null || \
true
#DEBHELPER#

8
debian/README.Debian.in vendored Normal file
View File

@@ -0,0 +1,8 @@
The documentation for this package is in /usr/share/doc/@PVER@/.
A draft of the "Debian Python Policy" can be found in
/usr/share/doc/python
Sometime it will be moved to /usr/share/doc/debian-policy in the
debian-policy package.

95
debian/README.PVER.in vendored Normal file
View File

@@ -0,0 +1,95 @@
Python @VER@ for Debian
---------------------
This is Python @VER@ packaged for Debian.
This document contains information specific to the Debian packages of
Python @VER@.
[TODO: This document is not yet up-to-date with the packages.]
Currently, it features those two main topics:
1. Release notes for the Debian packages:
2. Notes for developers using the Debian Python packages:
Release notes and documentation from the upstream package are installed
in /usr/share/doc/@PVER@/.
There's a mailing list for discussion of issues related to Python on Debian
systems: debian-python@lists.debian.org. The list is not intended for
general Python problems, but as a forum for maintainers of Python-related
packages and interested third parties.
1. Release notes for the Debian packages:
Results of the regression test:
------------------------------
The package does successfully run the regression tests for all included
modules. Seven packages are skipped since they are platform-dependent and
can't be used with Linux.
2. Notes for developers using the Debian python packages:
See the draft of the Debian Python policy in /usr/share/doc/python.
distutils can be found in the @PVER@-dev package. Development files
like the python library or Makefiles can be found in the @PVER@-dev
package in /usr/lib/@PVER@/config. Therefore, if you need to install
a pure python extension, you only need @PVER@. On the other hand, to
install a C extension, you need @PVER@-dev.
a) Locally installed Python add-ons
/usr/local/lib/@PVER@/site-packages/
/usr/local/lib/site-python/ (version-independent modules)
b) Python add-ons packaged for Debian
/usr/lib/@PVER@/site-packages/
/usr/lib/site-python/ (version-independent modules)
Note that no package must install files directly into /usr/lib/@PVER@/
or /usr/local/lib/@PVER@/. Only the site-packages directory is allowed
for third-party extensions.
Use of the new `package' scheme is strongly encouraged. The `ni' interface
is obsolete in python 1.5.
Header files for extensions go into /usr/include/@PVER@/.
Installing extensions for local use only:
----------------------------------------
Consider using distutils ...
Most extensions use Python's Makefile.pre.in. Note that Makefile.pre.in
by default will install files into /usr/lib/, not into /usr/local/lib/,
which is not allowed for local extensions. You'll have to change the
Makefile accordingly. Most times, "make prefix=/usr/local install" will
work.
Packaging python extensions for Debian:
--------------------------------------
Maintainers of Python extension packages should read
/usr/share/doc/python/python-policy.txt.gz
03/09/98
Gregor Hoffleit <flight@debian.org>
Last change: 2001-12-14

8
debian/README.Tk vendored Normal file
View File

@@ -0,0 +1,8 @@
Tkinter documentation can be found at
http://www.pythonware.com/library/index.htm
more specific:
http://www.pythonware.com/library/tkinter/introduction/index.htm
http://www.pythonware.com/library/tkinter/an-introduction-to-tkinter.pdf

72
debian/README.dbm vendored Normal file
View File

@@ -0,0 +1,72 @@
Python and dbm modules on Debian
--------------------------------
This file documents the configuration of the dbm modules for Debian. It
gives hints at the preferred use of the dbm modules.
The preferred way to access dbm databases in Python is the anydbm module.
dbm databases behave like mappings (dictionaries).
Since there exist several dbm database formats, we choose the following
layout for Python on Debian:
* creating a new database with anydbm will create a Berkeley DB 2.X Hash
database file. This is the standard format used by libdb starting
with glibc 2.1.
* opening an existing database with anydbm will try to guess the format
of the file (using whichdb) and then load it using one of the bsddb,
bsddb1, gdbm or dbm (only if the python-gdbm package is installed)
or dumbdbm modules.
* The modules use the following database formats:
- bsddb: Berkeley DB 2.X Hash (as in libc6 >=2.1 or libdb2)
- bsddb1: Berkeley DB 1.85 Hash (as in libc6 >=2.1 or libdb2)
- gdbm: GNU dbm 1.x or ndbm
- dbm: " (nearly the same as the gdbm module for us)
- dumbdbm: a hand-crafted format only used in this module
That means that all usual formats should be readable with anydbm.
* If you want to create a database in a format different from DB 2.X,
you can still directly use the specified module.
* I.e. bsddb is the preferred module, and DB 2.X is the preferred format.
* Note that the db1hash and bsddb1 modules are Debian specific. anydbm
and whichdb have been modified to support DB 2.X Hash files (see
below for details).
For experts only:
----------------
Although bsddb employs the new DB 2.X format and uses the new Sleepycat
DB 2 library as included with glibc >= 2.1, it's still using the old
DB 1.85 API (which is still supported by DB 2).
A more recent version 1.1 of the BSD DB module (available from
http://starship.skyport.net/robind/python/) directly uses the DB 2.X API.
It has a richer set of features.
On a glibc 2.1 system, bsddb is linked with -ldb, bsddb1 is linked with
-ldb1 and gdbm as well as dbm are linked with -lgdbm.
On a glibc 2.0 system (e.g. potato for m68k or slink), bsddb will be
linked with -ldb2 while bsddb1 will be linked with -ldb (therefore
python-base here depends on libdb2).
db1hash and bsddb1 nearly completely identical to dbhash and bsddb. The
only difference is that bsddb is linked with the real DB 2 library, while
bsddb1 is linked with an library which provides compatibility with legacy
DB 1.85 databases.
July 16, 1999
Gregor Hoffleit <flight@debian.org>

14
debian/README.idle-PVER.in vendored Normal file
View File

@@ -0,0 +1,14 @@
The Python IDLE package for Debian
----------------------------------
This package contains Python @VER@'s Integrated DeveLopment Environment, IDLE.
IDLE is included in the Python @VER@ upstream distribution (Tools/idle) and
depends on Tkinter (available as @PVER@-tk package).
I have written a simple man page.
06/16/1999
Gregor Hoffleit <flight@debian.org>

88
debian/README.maintainers.in vendored Normal file
View File

@@ -0,0 +1,88 @@
Hints for maintainers of Debian packages of Python extensions
-------------------------------------------------------------
Most of the content of this README can be found in the Debian Python policy.
See /usr/share/doc/python/python-policy.txt.gz.
Documentation Tools
-------------------
If your package ships documentation produced in the Python
documentation format, you can generate it at build-time by
build-depending on @PVER@-dev, and you will find the
templates, tools and scripts in /usr/lib/@PVER@/doc/tools --
adjust your build scripts accordingly.
Makefile.pre.in issues
----------------------
Python comes with a `universal Unix Makefile for Python extensions' in
/usr/lib/@PVER@/config/Makefile.pre.in (with Debian, this is included
in the python-dev package), which is used by most Python extensions.
In general, packages using the Makefile.pre.in approach can be packaged
simply by running dh_make or by using one of debhelper's rules' templates
(see /usr/doc/debhelper/examples/). Makefile.pre.in works fine with e.g.
"make prefix=debian/tmp/usr install".
One glitch: You may be running into the problem that Makefile.pre.in
doesn't try to create all the directories when they don't exist. Therefore,
you may have to create them manually before "make install". In most cases,
the following should work:
...
dh_installdirs /usr/lib/@PVER@
$(MAKE) prefix=debian/tmp/usr install
...
Byte-compilation
----------------
For speed reasons, Python internally compiles source files into a byte-code.
To speed up subsequent imports, it tries to save the byte-code along with
the source with an extension .pyc (resp. pyo). This will fail if the
libraries are installed in a non-writable directory, which may be the
case for /usr/lib/@PVER@/.
Not that .pyc and .pyo files should not be relocated, since for debugging
purposes the path of the source for is hard-coded into them.
To precompile files in batches after installation, Python has a script
compileall.py, which compiles all files in a given directory tree. The
Debian version of compileall has been enhanced to support incremental
compilation and to feature a ddir (destination dir) option. ddir is
used to compile files in debian/usr/lib/python/ when they will be
installed into /usr/lib/python/.
Currently, there are two ways to use compileall for Debian packages. The
first has a speed penalty, the second has a space penalty in the package.
1.) Compiling and removing .pyc files in postinst/prerm:
Use dh_python(1) from the debhelper packages to add commands to byte-
compile on installation and to remove the byte-compiled files on removal.
Your package has to build-depend on: debhelper (>= 4.1.67), python.
In /usr/share/doc/@PVER@, you'll find sample.postinst and sample.prerm.
If you set the directory where the .py files are installed, these
scripts will install and remove the .pyc and .pyo files for your
package after unpacking resp. before removing the package.
2.) Compiling the .pyc files `out of place' during installation:
As of 1.5.1, compileall.py allows you to specify a faked installation
directory using the "-d destdir" option, so that you can precompile
the files in their temporary directory
(e.g. debian/tmp/usr/lib/python2.1/site-packages/PACKAGE).
11/02/98
Gregor Hoffleit <flight@debian.org>
Last modified: 2007-10-14

153
debian/README.python vendored Normal file
View File

@@ -0,0 +1,153 @@
Python 2.x for Debian
---------------------
This is Python 2.x packaged for Debian.
This document contains information specific to the Debian packages of
Python 2.x.
[TODO: This document is not yet up-to-date with the packages.]
Currently, it features those two main topics:
1. Release notes for the Debian packages:
2. Notes for developers using the Debian Python packages:
Release notes and documentation from the upstream package are installed
in /usr/share/doc/python/.
Up-to-date information regarding Python on Debian systems is also
available as http://www.debian.org/~flight/python/.
There's a mailing list for discussion of issues related to Python on Debian
systems: debian-python@lists.debian.org. The list is not intended for
general Python problems, but as a forum for maintainers of Python-related
packages and interested third parties.
1. Release notes for the Debian packages:
Results of the regression test:
------------------------------
The package does successfully run the regression tests for all included
modules. Seven packages are skipped since they are platform-dependent and
can't be used with Linux.
Noteworthy changes since the 1.4 packages:
-----------------------------------------
- Threading support enabled.
- Tkinter for Tcl/Tk 8.x.
- New package python-zlib.
- The dbmmodule was dropped. Use bsddb instead. gdbmmodule is provided
for compatibility's sake.
- python-elisp adheres to the new emacs add-on policy; it now depends
on emacsen. python-elisp probably won't work correctly with emacs19.
Refer to /usr/doc/python-elisp/ for more information.
- Remember that 1.5 has dropped the `ni' interface in favor of a generic
`packages' concept.
- Python 1.5 regression test as additional package python-regrtest. You
don't need to install this package unless you don't trust the
maintainer ;-).
- once again, modified upstream's compileall.py and py_compile.py.
Now they support compilation of optimized byte-code (.pyo) for use
with "python -O", removal of .pyc and .pyo files where the .py source
files are missing (-d) and finally the fake of a installation directory
when .py files have to be compiled out of place for later installation
in a different directory (-i destdir, used in ./debian/rules).
- The Debian packages for python 1.4 do call
/usr/lib/python1.4/compileall.py in their postrm script. Therefore
I had to provide a link from /usr/lib/python1.5/compileall.py, otherwise
the old packages won't be removed completely. THIS IS A SILLY HACK!
2. Notes for developers using the Debian python packages:
Embedding python:
----------------
The files for embedding python resp. extending the python interpreter
are included in the python-dev package. With the configuration in the
Debian GNU/Linux packages of python 1.5, you will want to use something
like
-I/usr/include/python1.5 (e.g. for config.h)
-L/usr/lib/python1.5/config -lpython1.5 (... -lpthread)
(also for Makefile.pre.in, Setup etc.)
Makefile.pre.in automatically gets that right. Note that unlike 1.4,
python 1.5 has only one library, libpython1.5.a.
Currently, there's no shared version of libpython. Future version of
the Debian python packages will support this.
Python extension packages:
-------------------------
According to www.python.org/doc/essays/packages.html, extension packages
should only install into /usr/lib/python1.5/site-packages/ (resp.
/usr/lib/site-python/ for packages that are definitely version independent).
No extension package should install files directly into /usr/lib/python1.5/.
But according to the FSSTND, only Debian packages are allowed to use
/usr/lib/python1.5/. Therefore Debian Python additionally by default
searches a second hierarchy in /usr/local/lib/. These directories take
precedence over their equivalents in /usr/lib/.
a) Locally installed Python add-ons
/usr/local/lib/python1.5/site-packages/
/usr/local/lib/site-python/ (version-independent modules)
b) Python add-ons packaged for Debian
/usr/lib/python1.5/site-packages/
/usr/lib/site-python/ (version-independent modules)
Note that no package must install files directly into /usr/lib/python1.5/
or /usr/local/lib/python1.5/. Only the site-packages directory is allowed
for third-party extensions.
Use of the new `package' scheme is strongly encouraged. The `ni' interface
is obsolete in python 1.5.
Header files for extensions go into /usr/include/python1.5/.
Installing extensions for local use only:
----------------------------------------
Most extensions use Python's Makefile.pre.in. Note that Makefile.pre.in
by default will install files into /usr/lib/, not into /usr/local/lib/,
which is not allowed for local extensions. You'll have to change the
Makefile accordingly. Most times, "make prefix=/usr/local install" will
work.
Packaging python extensions for Debian:
--------------------------------------
Maintainers of Python extension packages should read README.maintainers.
03/09/98
Gregor Hoffleit <flight@debian.org>
Last change: 07/16/1999

7
debian/README.source vendored Normal file
View File

@@ -0,0 +1,7 @@
The source tarball is lacking the files Lib/profile.py and Lib/pstats.py,
which Debian considers to have a license non-suitable for main (the use
of these modules limited to python).
The package uses quilt to apply / unapply patches.
See /usr/share/doc/quilt/README.source. The series file is generated
during the build.

6
debian/_sysconfigdata.py vendored Normal file
View File

@@ -0,0 +1,6 @@
import sys
if hasattr(sys, 'gettotalrefcount'):
from _sysconfigdata_d import *
else:
from _sysconfigdata_nd import *

8
debian/argparse.egg-info vendored Normal file
View File

@@ -0,0 +1,8 @@
Metadata-Version: 1.0
Name: argparse
Version: 1.2.1
Summary: Python command-line parsing library
Author: Steven Bethard
Author-email: steven.bethard@gmail.com
License: Python Software Foundation License
Platform: any

4826
debian/changelog vendored Normal file

File diff suppressed because it is too large Load Diff

3
debian/changelog.shared vendored Normal file
View File

@@ -0,0 +1,3 @@
* Link the interpreter against the shared runtime library. With
gcc-4.1 the difference in the pystones benchmark dropped from about
12% to about 5%.

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
9

219
debian/control vendored Normal file
View File

@@ -0,0 +1,219 @@
Source: python2.7
Section: python
Priority: optional
Maintainer: Matthias Klose <doko@debian.org>
Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.17.11),
quilt, autoconf, autotools-dev,
lsb-release, sharutils,
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] <!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, time,
libdb-dev (<< 1:6.0), libgdbm-dev, help2man,
xvfb <!nocheck>, xauth <!nocheck>, python2.7:any <cross>
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: 4.5.0
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: 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)
Breaks: python-virtualenv (<< 1.7.1.2-2~), vim-nox (<< 2:7.3.547-4), vim-gtk (<< 2:7.3.547-4), vim-gnome (<< 2:7.3.547-4), vim-athena (<< 2:7.3.547-4), ${python27:Breaks}
Replaces: python-profiler (<= 2.7.1-2), python2.7-minimal (<< 2.7.3-7~)
Description: Interactive high-level object-oriented language (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
network programming, system administration, sounds and graphics.
Package: libpython2.7-stdlib
Architecture: any
Multi-Arch: same
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~), libpython2.7-testsuite (<< 2.7.13-4)
Breaks: python-urllib3 (<< 1.9.1-3), ${pyfpe:Breaks}, ${python27: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
network programming, system administration, sounds and graphics.
.
This package contains Python 2.7's standard library. It is normally not
used on its own, but as a dependency of python2.7.
Package: python2.7-minimal
Architecture: any
Multi-Arch: allowed
Priority: optional
Pre-Depends: ${shlibs:Pre-Depends}
Depends: libpython2.7-minimal (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Recommends: python2.7
Suggests: binfmt-support
Replaces: python2.7 (<< 2.7.8-7~)
Conflicts: binfmt-support (<< 1.1.2)
Breaks: ${python27:Breaks}
Description: Minimal subset of the Python language (version 2.7)
This package contains the interpreter and some essential modules. It can
be used in the boot process for some basic tasks.
See /usr/share/doc/python2.7-minimal/README.Debian for a list of the modules
contained in this package.
XB-Cnf-Visible-Pkgname: python2.7
Package: libpython2.7-minimal
Architecture: any
Multi-Arch: same
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)
Breaks: python2.7-minimal (<< 2.7.4~rc1-1~), ${python27:Breaks}
Conflicts: binfmt-support (<< 1.1.2)
Description: Minimal subset of the Python language (version 2.7)
This package contains some essential modules. It is normally not
used on it's own, but as a dependency of python2.7-minimal.
Package: libpython2.7
Architecture: any
Multi-Arch: same
Section: libs
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)
Python is a high-level, interactive, object-oriented language. Its 2.7 version
includes an extensive class library with lots of goodies for
network programming, system administration, sounds and graphics.
.
This package contains the shared runtime library, normally not needed
for programs using the statically linked interpreter.
Package: python2.7-examples
Architecture: all
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).
Package: python2.7-dev
Architecture: any
Multi-Arch: allowed
Depends: python2.7 (= ${binary:Version}), libpython2.7-dev (= ${binary:Version}), libpython2.7 (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
Recommends: libc6-dev | libc-dev
Replaces: python2.7 (<< 2.7-3)
Description: Header files and a static library for Python (v2.7)
Header files, a static library and development tools for building
Python (v2.7) modules, extending the Python interpreter or embedding
Python (v2.7) in applications.
.
Maintainers of Python packages should read README.maintainers.
Package: libpython2.7-dev
Section: libdevel
Architecture: any
Multi-Arch: same
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
Description: Header files and a static library for Python (v2.7)
Header files, a static library and development tools for building
Python (v2.7) modules, extending the Python interpreter or embedding
Python (v2.7) in applications.
.
Maintainers of Python packages should read README.maintainers.
.
This package contains development files. It is normally not
used on it's own, but as a dependency of python2.7-dev.
Package: libpython2.7-testsuite
Section: libdevel
Architecture: all
Depends: libpython2.7-stdlib (>= ${binary:Version}), ${misc:Depends}
Suggests: python-gdbm, python-tk
Description: Testsuite for the Python standard library (v2.7)
The complete testsuite for the Python standard library. Note that
a subset is found in the libpython2.7-stdlib package, which should
be enough for other packages to use (please do not build-depend
on this package, but file a bug report to include additional
testsuite files in the libpython2.7-stdlib package).
Package: idle-python2.7
Architecture: all
Depends: python2.7, python-tk (>= 2.6~a3), python2.7-tk, ${misc:Depends}
Enhances: python2.7
Replaces: python2.7 (<< 2.6.1-2)
Description: IDE for Python (v2.7) using Tkinter
IDLE is an Integrated Development Environment for Python (v2.7).
IDLE is written using Tkinter and therefore quite platform-independent.
Package: python2.7-doc
Section: doc
Architecture: all
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
object-oriented language Python (v2.7). All documents are provided
in HTML format. The package consists of ten documents:
.
* What's New in Python2.7
* Tutorial
* Python Library Reference
* Macintosh Module Reference
* Python Language Reference
* Extending and Embedding Python
* Python/C API Reference
* Installing Python Modules
* Documenting Python
* Distributing Python Modules
Package: python2.7-dbg
Section: debug
Architecture: any
Multi-Arch: allowed
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)
The package holds two things:
.
- A Python interpreter configured with --pydebug. Dynamically loaded modules
are searched as <foo>_d.so first. Third party extensions need a separate
build to be used by this interpreter.
- Debug information for standard python interpreter and extensions.
.
See the README.debug for more information.
Package: libpython2.7-dbg
Section: debug
Architecture: any
Multi-Arch: same
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)
Description: Debug Build of the Python Interpreter (version 2.7)
The package holds two things:
.
- Extensions for a Python interpreter configured with --pydebug.
- Debug information for standard python extensions.
.
See the README.debug for more information.

219
debian/control.in vendored Normal file
View File

@@ -0,0 +1,219 @@
Source: @PVER@
Section: python
Priority: optional
Maintainer: Matthias Klose <doko@debian.org>
Build-Depends: debhelper (>= 9), @bd_dpkgdev@ @bd_gcc@
quilt, autoconf, autotools-dev,
lsb-release, sharutils,
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]@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, time,
libdb-dev (<< 1:6.0), libgdbm-dev, help2man,
xvfb <!nocheck>, xauth <!nocheck>, python2.7:any <cross>
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: 4.5.0
Vcs-Browser: https://salsa.debian.org/cpython-team/python2
Vcs-Git: https://salsa.debian.org/cpython-team/python2.git
XS-Testsuite: autopkgtest
Package: @PVER@
Architecture: any
Multi-Arch: allowed
Priority: @PRIO@
Depends: @PVER@-minimal (= ${binary:Version}), lib@PVER@-stdlib (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
Suggests: @PVER@-doc, binutils
Conflicts: python-profiler (<= 2.7.1-2)
Breaks: python-virtualenv (<< 1.7.1.2-2~), vim-nox (<< 2:7.3.547-4), vim-gtk (<< 2:7.3.547-4), vim-gnome (<< 2:7.3.547-4), vim-athena (<< 2:7.3.547-4), ${python27:Breaks}
Replaces: python-profiler (<= 2.7.1-2), @PVER@-minimal (<< 2.7.3-7~)
Description: Interactive high-level object-oriented language (version @VER@)
Python is a high-level, interactive, object-oriented language. Its @VER@ version
includes an extensive class library with lots of goodies for
network programming, system administration, sounds and graphics.
Package: lib@PVER@-stdlib
Architecture: any
Multi-Arch: same
Priority: @PRIO@
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~), lib@PVER@-testsuite (<< 2.7.13-4)
Breaks: python-urllib3 (<< 1.9.1-3), ${pyfpe:Breaks}, ${python27: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
network programming, system administration, sounds and graphics.
.
This package contains Python @VER@'s standard library. It is normally not
used on its own, but as a dependency of python@VER@.
Package: @PVER@-minimal
Architecture: any
Multi-Arch: allowed
Priority: @MINPRIO@
Pre-Depends: ${shlibs:Pre-Depends}
Depends: lib@PVER@-minimal (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Recommends: @PVER@
Suggests: binfmt-support
Replaces: @PVER@ (<< 2.7.8-7~)
Conflicts: binfmt-support (<< 1.1.2)
Breaks: ${python27:Breaks}
Description: Minimal subset of the Python language (version @VER@)
This package contains the interpreter and some essential modules. It can
be used in the boot process for some basic tasks.
See /usr/share/doc/@PVER@-minimal/README.Debian for a list of the modules
contained in this package.
XB-Cnf-Visible-Pkgname: python2.7
Package: lib@PVER@-minimal
Architecture: any
Multi-Arch: same
Priority: @MINPRIO@
Depends: ${shlibs:Depends}, ${misc:Depends}
Recommends: lib@PVER@-stdlib
Replaces: @PVER@ (<< 2.7.4-2), @PVER@-minimal (<< 2.7.3-10), lib@PVER@-stdlib (<< 2.7.8-7)
Breaks: @PVER@-minimal (<< 2.7.4~rc1-1~), ${python27:Breaks}
Conflicts: binfmt-support (<< 1.1.2)
Description: Minimal subset of the Python language (version @VER@)
This package contains some essential modules. It is normally not
used on it's own, but as a dependency of @PVER@-minimal.
Package: lib@PVER@
Architecture: any
Multi-Arch: same
Section: libs
Priority: @PRIO@
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@)
Python is a high-level, interactive, object-oriented language. Its @VER@ version
includes an extensive class library with lots of goodies for
network programming, system administration, sounds and graphics.
.
This package contains the shared runtime library, normally not needed
for programs using the statically linked interpreter.
Package: @PVER@-examples
Architecture: all
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@).
Package: @PVER@-dev
Architecture: any
Multi-Arch: allowed
Depends: @PVER@ (= ${binary:Version}), lib@PVER@-dev (= ${binary:Version}), lib@PVER@ (= ${binary:Version}), libexpat1-dev, ${shlibs:Depends}, ${misc:Depends}
Recommends: libc6-dev | libc-dev
Replaces: @PVER@ (<< 2.7-3)
Description: Header files and a static library for Python (v@VER@)
Header files, a static library and development tools for building
Python (v@VER@) modules, extending the Python interpreter or embedding
Python (v@VER@) in applications.
.
Maintainers of Python packages should read README.maintainers.
Package: lib@PVER@-dev
Section: libdevel
Architecture: any
Multi-Arch: same
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
Description: Header files and a static library for Python (v@VER@)
Header files, a static library and development tools for building
Python (v@VER@) modules, extending the Python interpreter or embedding
Python (v@VER@) in applications.
.
Maintainers of Python packages should read README.maintainers.
.
This package contains development files. It is normally not
used on it's own, but as a dependency of @PVER@-dev.
Package: lib@PVER@-testsuite
Section: libdevel
Architecture: all
Depends: lib@PVER@-stdlib (>= ${binary:Version}), ${misc:Depends}
Suggests: python-gdbm, python-tk
Description: Testsuite for the Python standard library (v@VER@)
The complete testsuite for the Python standard library. Note that
a subset is found in the lib@PVER@-stdlib package, which should
be enough for other packages to use (please do not build-depend
on this package, but file a bug report to include additional
testsuite files in the lib@PVER@-stdlib package).
Package: idle-@PVER@
Architecture: all
Depends: @PVER@, python-tk (>= 2.6~a3), @PVER@-tk, ${misc:Depends}
Enhances: @PVER@
Replaces: @PVER@ (<< 2.6.1-2)
Description: IDE for Python (v@VER@) using Tkinter
IDLE is an Integrated Development Environment for Python (v@VER@).
IDLE is written using Tkinter and therefore quite platform-independent.
Package: @PVER@-doc
Section: doc
Architecture: all
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
object-oriented language Python (v@VER@). All documents are provided
in HTML format. The package consists of ten documents:
.
* What's New in Python@VER@
* Tutorial
* Python Library Reference
* Macintosh Module Reference
* Python Language Reference
* Extending and Embedding Python
* Python/C API Reference
* Installing Python Modules
* Documenting Python
* Distributing Python Modules
Package: @PVER@-dbg
Section: debug
Architecture: any
Multi-Arch: allowed
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@)
The package holds two things:
.
- A Python interpreter configured with --pydebug. Dynamically loaded modules
are searched as <foo>_d.so first. Third party extensions need a separate
build to be used by this interpreter.
- Debug information for standard python interpreter and extensions.
.
See the README.debug for more information.
Package: lib@PVER@-dbg
Section: debug
Architecture: any
Multi-Arch: same
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)
Description: Debug Build of the Python Interpreter (version @VER@)
The package holds two things:
.
- Extensions for a Python interpreter configured with --pydebug.
- Debug information for standard python extensions.
.
See the README.debug for more information.

16
debian/control.stdlib vendored Normal file
View File

@@ -0,0 +1,16 @@
Package: @PVER@-tk
Architecture: any
Depends: @PVER@ (= ${Source-Version}), ${shlibs:Depends}
Suggests: tix
XB-Python-Version: @VER@
Description: Tkinter - Writing Tk applications with Python (v@VER@)
A module for writing portable GUI applications with Python (v@VER@) using Tk.
Also known as Tkinter.
Package: @PVER@-gdbm
Architecture: any
Depends: @PVER@ (= ${Source-Version}), ${shlibs:Depends}
Description: GNU dbm database support for Python (v@VER@)
GNU dbm database module for Python. Install this if you want to
create or read GNU dbm database files with Python.

958
debian/copyright vendored Normal file
View File

@@ -0,0 +1,958 @@
This package was put together by Klee Dienes <klee@debian.org> from
sources from ftp.python.org:/pub/python, based on the Debianization by
the previous maintainers Bernd S. Brentrup <bsb@uni-muenster.de> and
Bruce Perens. Current maintainer is Matthias Klose <doko@debian.org>.
It was downloaded from http://python.org/
Copyright:
Upstream Author: Guido van Rossum <guido@cwi.nl> and others.
License:
The following text includes the Python license and licenses and
acknowledgements for incorporated software. The licenses can be read
in the HTML and texinfo versions of the documentation as well, after
installing the pythonx.y-doc package. Licenses for files not licensed
under the Python Licenses are found at the end of this file.
Python License
==============
A. HISTORY OF THE SOFTWARE
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
as a successor of a language called ABC. Guido remains Python's
principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for
National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
in Reston, Virginia where he released several versions of the
software.
In May 2000, Guido and the Python core development team moved to
BeOpen.com to form the BeOpen PythonLabs team. In October of the same
year, the PythonLabs team moved to Digital Creations (now Zope
Corporation, see http://www.zope.com). In 2001, the Python Software
Foundation (PSF, see http://www.python.org/psf/) was formed, a
non-profit organization created specifically to own Python-related
Intellectual Property. Zope Corporation is a sponsoring member of
the PSF.
All Python releases are Open Source (see http://www.opensource.org for
the Open Source Definition). Historically, most, but not all, Python
releases have also been GPL-compatible; the table below summarizes
the various releases.
Release Derived Year Owner GPL-
from compatible? (1)
0.9.0 thru 1.2 1991-1995 CWI yes
1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
1.6 1.5.2 2000 CNRI no
2.0 1.6 2000 BeOpen.com no
1.6.1 1.6 2001 CNRI yes (2)
2.1 2.0+1.6.1 2001 PSF no
2.0.1 2.0+1.6.1 2001 PSF yes
2.1.1 2.1+2.0.1 2001 PSF yes
2.2 2.1.1 2001 PSF yes
2.1.2 2.1.1 2002 PSF yes
2.1.3 2.1.2 2002 PSF yes
2.2.1 2.2 2002 PSF yes
2.2.2 2.2.1 2002 PSF yes
2.2.3 2.2.2 2003 PSF yes
2.3 2.2.2 2002-2003 PSF yes
2.3.1 2.3 2002-2003 PSF yes
2.3.2 2.3.1 2002-2003 PSF yes
2.3.3 2.3.2 2002-2003 PSF yes
2.3.4 2.3.3 2004 PSF yes
2.3.5 2.3.4 2005 PSF yes
2.4 2.3 2004 PSF yes
2.4.1 2.4 2005 PSF yes
2.4.2 2.4.1 2005 PSF yes
2.4.3 2.4.2 2006 PSF yes
2.5 2.4 2006 PSF yes
2.5.1 2.5 2007 PSF yes
2.5.2 2.5.1 2008 PSF yes
2.5.3 2.5.2 2008 PSF yes
2.6 2.5 2008 PSF yes
2.6.1 2.6 2008 PSF yes
2.6.2 2.6.1 2009 PSF yes
2.6.3 2.6.2 2009 PSF yes
2.6.4 2.6.3 2009 PSF yes
2.6.5 2.6.4 2010 PSF yes
2.7 2.6 2010 PSF yes
Footnotes:
(1) GPL-compatible doesn't mean that we're distributing Python under
the GPL. All Python licenses, unlike the GPL, let you distribute
a modified version without making your changes open source. The
GPL-compatible licenses make it possible to combine Python with
other software that is released under the GPL; the others don't.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
because its license has a choice of law clause. According to
CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
is "not incompatible" with the GPL.
Thanks to the many outside volunteers who have worked under Guido's
direction to make these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
===============================================================
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python
alone or in any derivative version, provided, however, that PSF's
License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation;
All Rights Reserved" are retained in Python alone or in any derivative
version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
-------------------------------------------
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
Individual or Organization ("Licensee") accessing and otherwise using
this software in source or binary form and its associated
documentation ("the Software").
2. Subject to the terms and conditions of this BeOpen Python License
Agreement, BeOpen hereby grants Licensee a non-exclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform
and/or display publicly, prepare derivative works, distribute, and
otherwise use the Software alone or in any derivative version,
provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an "AS IS"
basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all
respects by the law of the State of California, excluding conflict of
law provisions. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture
between BeOpen and Licensee. This License Agreement does not grant
permission to use BeOpen trademarks or trade names in a trademark
sense to endorse or promote products or services of Licensee, or any
third party. As an exception, the "BeOpen Python" logos available at
http://www.pythonlabs.com/logos.html may be used according to the
permissions granted on that web page.
7. By copying, installing or otherwise using the software, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
---------------------------------------
1. This LICENSE AGREEMENT is between the Corporation for National
Research Initiatives, having an office at 1895 Preston White Drive,
Reston, VA 20191 ("CNRI"), and the Individual or Organization
("Licensee") accessing and otherwise using Python 1.6.1 software in
source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python 1.6.1
alone or in any derivative version, provided, however, that CNRI's
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
1995-2001 Corporation for National Research Initiatives; All Rights
Reserved" are retained in Python 1.6.1 alone or in any derivative
version prepared by Licensee. Alternately, in lieu of CNRI's License
Agreement, Licensee may substitute the following text (omitting the
quotes): "Python 1.6.1 is made available subject to the terms and
conditions in CNRI's License Agreement. This Agreement together with
Python 1.6.1 may be located on the Internet using the following
unique, persistent identifier (known as a handle): 1895.22/1013. This
Agreement may also be obtained from a proxy server on the Internet
using the following URL: http://hdl.handle.net/1895.22/1013".
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python 1.6.1 or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. This License Agreement shall be governed by the federal
intellectual property law of the United States, including without
limitation the federal copyright law, and, to the extent such
U.S. federal law does not apply, by the law of the Commonwealth of
Virginia, excluding Virginia's conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based
on Python 1.6.1 that incorporate non-separable material that was
previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License
Agreement only as to issues arising under or with respect to
Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
License Agreement shall be deemed to create any relationship of
agency, partnership, or joint venture between CNRI and Licensee. This
License Agreement does not grant permission to use CNRI trademarks or
trade name in a trademark sense to endorse or promote products or
services of Licensee, or any third party.
8. By clicking on the "ACCEPT" button where indicated, or by copying,
installing or otherwise using Python 1.6.1, Licensee agrees to be
bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
--------------------------------------------------
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Licenses and Acknowledgements for Incorporated Software
=======================================================
Mersenne Twister
----------------
The `_random' module includes code based on a download from
`http://www.math.keio.ac.jp/~matumoto/MT2002/emt19937ar.html'. The
following are the verbatim comments from the original code:
A C-program for MT19937, with initialization improved 2002/1/26.
Coded by Takuji Nishimura and Makoto Matsumoto.
Before using, initialize the state by using init_genrand(seed)
or init_by_array(init_key, key_length).
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Any feedback is very welcome.
http://www.math.keio.ac.jp/matumoto/emt.html
email: matumoto@math.keio.ac.jp
Sockets
-------
The `socket' module uses the functions, `getaddrinfo', and
`getnameinfo', which are coded in separate source files from the WIDE
Project, `http://www.wide.ad.jp/about/index.html'.
Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
GAI_ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
FOR GAI_ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON GAI_ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN GAI_ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
Floating point exception control
--------------------------------
The source for the `fpectl' module includes the following notice:
---------------------------------------------------------------------
/ Copyright (c) 1996. \
| The Regents of the University of California. |
| All rights reserved. |
| |
| Permission to use, copy, modify, and distribute this software for |
| any purpose without fee is hereby granted, provided that this en- |
| tire notice is included in all copies of any software which is or |
| includes a copy or modification of this software and in all |
| copies of the supporting documentation for such software. |
| |
| This work was produced at the University of California, Lawrence |
| Livermore National Laboratory under contract no. W-7405-ENG-48 |
| between the U.S. Department of Energy and The Regents of the |
| University of California for the operation of UC LLNL. |
| |
| DISCLAIMER |
| |
| This software was prepared as an account of work sponsored by an |
| agency of the United States Government. Neither the United States |
| Government nor the University of California nor any of their em- |
| ployees, makes any warranty, express or implied, or assumes any |
| liability or responsibility for the accuracy, completeness, or |
| usefulness of any information, apparatus, product, or process |
| disclosed, or represents that its use would not infringe |
| privately-owned rights. Reference herein to any specific commer- |
| cial products, process, or service by trade name, trademark, |
| manufacturer, or otherwise, does not necessarily constitute or |
| imply its endorsement, recommendation, or favoring by the United |
| States Government or the University of California. The views and |
| opinions of authors expressed herein do not necessarily state or |
| reflect those of the United States Government or the University |
| of California, and shall not be used for advertising or product |
\ endorsement purposes. /
---------------------------------------------------------------------
Cookie management
-----------------
The `Cookie' module contains the following notice:
Copyright 2000 by Timothy O'Malley <timo@alum.mit.edu>
All Rights Reserved
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that copyright notice and this permission
notice appear in supporting documentation, and that the name of
Timothy O'Malley not be used in advertising or publicity
pertaining to distribution of the software without specific, written
prior permission.
Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR
ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
Execution tracing
-----------------
The `trace' module contains the following notice:
portions copyright 2001, Autonomous Zones Industries, Inc., all rights...
err... reserved and offered to the public under the terms of the
Python 2.2 license.
Author: Zooko O'Whielacronx
http://zooko.com/
mailto:zooko@zooko.com
Copyright 2000, Mojam Media, Inc., all rights reserved.
Author: Skip Montanaro
Copyright 1999, Bioreason, Inc., all rights reserved.
Author: Andrew Dalke
Copyright 1995-1997, Automatrix, Inc., all rights reserved.
Author: Skip Montanaro
Copyright 1991-1995, Stichting Mathematisch Centrum, all rights reserved.
Permission to use, copy, modify, and distribute this Python software and
its associated documentation for any purpose without fee is hereby
granted, provided that the above copyright notice appears in all copies,
and that both that copyright notice and this permission notice appear in
supporting documentation, and that the name of neither Automatrix,
Bioreason or Mojam Media be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
UUencode and UUdecode functions
-------------------------------
The `uu' module contains the following notice:
Copyright 1994 by Lance Ellinghouse
Cathedral City, California Republic, United States of America.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Lance Ellinghouse
not be used in advertising or publicity pertaining to distribution
of the software without specific, written prior permission.
LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Modified by Jack Jansen, CWI, July 1995:
- Use binascii module to do the actual line-by-line conversion
between ascii and binary. This results in a 1000-fold speedup. The C
version is still 5 times faster, though.
- Arguments more compliant with python standard
XML Remote Procedure Calls
--------------------------
The `xmlrpclib' module contains the following notice:
The XML-RPC client interface is
Copyright (c) 1999-2002 by Secret Labs AB
Copyright (c) 1999-2002 by Fredrik Lundh
By obtaining, using, and/or copying this software and/or its
associated documentation, you agree that you have read, understood,
and will comply with the following terms and conditions:
Permission to use, copy, modify, and distribute this software and
its associated documentation for any purpose and without fee is
hereby granted, provided that the above copyright notice appears in
all copies, and that both that copyright notice and this permission
notice appear in supporting documentation, and that the name of
Secret Labs AB or the author not be used in advertising or publicity
pertaining to distribution of the software without specific, written
prior permission.
SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.
Licenses for Software linked to
===============================
Note that the choice of GPL compatibility outlined above doesn't extend
to modules linked to particular libraries, since they change the
effective License of the module binary.
GNU Readline
------------
The 'readline' module makes use of GNU Readline.
The GNU Readline Library is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2, or (at
your option) any later version.
On Debian systems, you can find the complete statement in
/usr/share/doc/readline-common/copyright'. A copy of the GNU General
Public License is available in /usr/share/common-licenses/GPL-2'.
OpenSSL
-------
The '_ssl' module makes use of OpenSSL.
The OpenSSL toolkit stays under a dual license, i.e. both the
conditions of the OpenSSL License and the original SSLeay license
apply to the toolkit. Actually both licenses are BSD-style Open
Source licenses. Note that both licenses are incompatible with
the GPL.
On Debian systems, you can find the complete license text in
/usr/share/doc/openssl/copyright'.
Files with other licenses than the Python License
-------------------------------------------------
Files: Lib/profile.py Lib/pstats.py
Copyright: Disney Enterprises, Inc. All Rights Reserved.
License: # Licensed to PSF under a Contributor Agreement
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
overning permissions and limitations under the License.
On Debian systems, the Apache 2.0 license can be found in
/usr/share/common-licenses/Apache-2.0.
Files: Modules/zlib/*
Copyright: (C) 1995-2010 Jean-loup Gailly and Mark Adler
License: This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not* receiving
lengthy legal documents to sign. The sources are provided for free but without
warranty of any kind. The library has been entirely written by Jean-loup
Gailly and Mark Adler; it does not include third-party code.
Files: Modules/_ctypes/libffi/*
Copyright: Copyright (C) 1996-2009 Red Hat, Inc and others.
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.
Documentation:
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version. A copy of the license is included in the
section entitled ``GNU General Public License''.
Files: Modules/expat/*
Copyright: Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
and Clark Cooper
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers
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: Misc/python-mode.el
Copyright: Copyright (C) 1992,1993,1994 Tim Peters
License: This software is provided as-is, without express or implied
warranty. Permission to use, copy, modify, distribute or sell this
software, without fee, for any purpose and by any individual or
organization, is hereby granted, provided that the above copyright
notice and this paragraph appear in all copies.
Files: PC/_subprocess.c
Copyright: Copyright (c) 2004 by Fredrik Lundh <fredrik@pythonware.com>
Copyright (c) 2004 by Secret Labs AB, http://www.pythonware.com
Copyright (c) 2004 by Peter Astrand <astrand@lysator.liu.se>
License:
* Permission to use, copy, modify, and distribute this software and
* its associated documentation for any purpose and without fee is
* hereby granted, provided that the above copyright notice appears in
* all copies, and that both that copyright notice and this permission
* notice appear in supporting documentation, and that the name of the
* authors not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission.
*
* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Files: PC/winsound.c
Copyright: Copyright (c) 1999 Toby Dickenson
License: * Permission to use this software in any way is granted without
* fee, provided that the copyright notice above appears in all
* copies. This software is provided "as is" without any warranty.
*/
/* 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:
© 20142015 OpenStack Foundation <openstack-dev@lists.openstack.org>
© 20072012 Skip Montanaro <skip@pobox.com>
© 20082014 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+

199
debian/depgraph.py vendored Normal file
View File

@@ -0,0 +1,199 @@
#! /usr/bin/python2.7
# Copyright 2004 Toby Dickenson
#
# 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.
import sys, getopt, colorsys, imp, md5
class pydepgraphdot:
def main(self,argv):
opts,args = getopt.getopt(argv,'',['mono'])
self.colored = 1
for o,v in opts:
if o=='--mono':
self.colored = 0
self.render()
def fix(self,s):
# Convert a module name to a syntactically correct node name
return s.replace('.','_')
def render(self):
p,t = self.get_data()
# normalise our input data
for k,d in p.items():
for v in d.keys():
if not p.has_key(v):
p[v] = {}
f = self.get_output_file()
f.write('digraph G {\n')
#f.write('concentrate = true;\n')
#f.write('ordering = out;\n')
f.write('ranksep=1.0;\n')
f.write('node [style=filled,fontname=Helvetica,fontsize=10];\n')
allkd = p.items()
allkd.sort()
for k,d in allkd:
tk = t.get(k)
if self.use(k,tk):
allv = d.keys()
allv.sort()
for v in allv:
tv = t.get(v)
if self.use(v,tv) and not self.toocommon(v,tv):
f.write('%s -> %s' % ( self.fix(k),self.fix(v) ) )
self.write_attributes(f,self.edge_attributes(k,v))
f.write(';\n')
f.write(self.fix(k))
self.write_attributes(f,self.node_attributes(k,tk))
f.write(';\n')
f.write('}\n')
def write_attributes(self,f,a):
if a:
f.write(' [')
f.write(','.join(a))
f.write(']')
def node_attributes(self,k,type):
a = []
a.append('label="%s"' % self.label(k))
if self.colored:
a.append('fillcolor="%s"' % self.color(k,type))
else:
a.append('fillcolor=white')
if self.toocommon(k,type):
a.append('peripheries=2')
return a
def edge_attributes(self,k,v):
a = []
weight = self.weight(k,v)
if weight!=1:
a.append('weight=%d' % weight)
length = self.alien(k,v)
if length:
a.append('minlen=%d' % length)
return a
def get_data(self):
t = eval(sys.stdin.read())
return t['depgraph'],t['types']
def get_output_file(self):
return sys.stdout
def use(self,s,type):
# Return true if this module is interesting and should be drawn. Return false
# if it should be completely omitted. This is a default policy - please override.
if s=='__main__':
return 0
#if s in ('os','sys','time','__future__','types','re','string'):
if s in ('sys'):
# nearly all modules use all of these... more or less. They add nothing to
# our diagram.
return 0
if s.startswith('encodings.'):
return 0
if self.toocommon(s,type):
# A module where we dont want to draw references _to_. Dot doesnt handle these
# well, so it is probably best to not draw them at all.
return 0
return 1
def toocommon(self,s,type):
# Return true if references to this module are uninteresting. Such references
# do not get drawn. This is a default policy - please override.
#
if s=='__main__':
# references *to* __main__ are never interesting. omitting them means
# that main floats to the top of the page
return 1
#if type==imp.PKG_DIRECTORY:
# # dont draw references to packages.
# return 1
return 0
def weight(self,a,b):
# Return the weight of the dependency from a to b. Higher weights
# usually have shorter straighter edges. Return 1 if it has normal weight.
# A value of 4 is usually good for ensuring that a related pair of modules
# are drawn next to each other. This is a default policy - please override.
#
if b.split('.')[-1].startswith('_'):
# A module that starts with an underscore. You need a special reason to
# import these (for example random imports _random), so draw them close
# together
return 4
return 1
def alien(self,a,b):
# Return non-zero if references to this module are strange, and should be drawn
# extra-long. the value defines the length, in rank. This is also good for putting some
# vertical space between seperate subsystems. This is a default policy - please override.
#
return 0
def label(self,s):
# Convert a module name to a formatted node label. This is a default policy - please override.
#
return '\\.\\n'.join(s.split('.'))
def color(self,s,type):
# Return the node color for this module name. This is a default policy - please override.
#
# Calculate a color systematically based on the hash of the module name. Modules in the
# same package have the same color. Unpackaged modules are grey
t = self.normalise_module_name_for_hash_coloring(s,type)
return self.color_from_name(t)
def normalise_module_name_for_hash_coloring(self,s,type):
if type==imp.PKG_DIRECTORY:
return s
else:
i = s.rfind('.')
if i<0:
return ''
else:
return s[:i]
def color_from_name(self,name):
n = md5.md5(name).digest()
hf = float(ord(n[0])+ord(n[1])*0xff)/0xffff
sf = float(ord(n[2]))/0xff
vf = float(ord(n[3]))/0xff
r,g,b = colorsys.hsv_to_rgb(hf, 0.3+0.6*sf, 0.8+0.2*vf)
return '#%02x%02x%02x' % (r*256,g*256,b*256)
def main():
pydepgraphdot().main(sys.argv[1:])
if __name__=='__main__':
main()

28
debian/dh_doclink vendored Normal file
View File

@@ -0,0 +1,28 @@
#! /bin/sh
pkg=`echo $1 | sed 's/^-p//'`
target=$2
ln -sf $target debian/$pkg/usr/share/doc/$pkg
f=debian/$pkg.postinst.debhelper
if [ ! -e $f ] || [ "`grep -c '^# dh_doclink' $f`" -eq 0 ]; then
cat >> $f <<EOF
# dh_doclink
if [ "\$1" = "configure" ]; then
if [ -d /usr/doc -a ! -e /usr/doc/$pkg -a -d /usr/share/doc/$pkg ]; then
ln -sf ../share/doc/$pkg /usr/doc/$pkg
fi
fi
EOF
fi
f=debian/$pkg.prerm.debhelper
if [ ! -e $f ] || [ "`grep -c '^# dh_doclink' $f`" -eq 0 ]; then
cat >> $f <<EOF
# dh_doclink
if [ \( "\$1" = "upgrade" -o "\$1" = "remove" \) -a -L /usr/doc/$pkg ]; then
rm -f /usr/doc/$pkg
fi
EOF
fi

10
debian/dh_rmemptydirs vendored Normal file
View File

@@ -0,0 +1,10 @@
#! /bin/sh -e
pkg=`echo $1 | sed 's/^-p//'`
: # remove empty directories, when all components are in place
for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \
while rmdir $$d 2> /dev/null; do d=`dirname $$d`; done; \
done
exit 0

104
debian/idle-PVER.1.in vendored Normal file
View File

@@ -0,0 +1,104 @@
.TH IDLE 1 "21 September 2004"
.SH NAME
\fBIDLE\fP \- An Integrated DeveLopment Environment for Python
.SH SYNTAX
.B idle [ \fI-dins\fP ] [ \fI-t title\fP ] [ \fIfile\fP ...]
.PP
.B idle [ \fI-dins\fP ] [ \fI-t title\fP ] ( \fI-c cmd\fP | \fI-r file\fP ) [ \fIarg\fP ...]
.PP
.B idle [ \fI-dins\fP ] [ \fI-t title\fP ] - [ \fIarg\fP ...]
.SH DESCRIPTION
This manual page documents briefly the
.BR idle
command.
This manual page was written for Debian
because the original program does not have a manual page.
For more information, refer to IDLE's help menu.
.PP
.B IDLE
is an Integrated DeveLopment Environment for Python. IDLE is based on
Tkinter, Python's bindings to the Tk widget set. Features are 100% pure
Python, multi-windows with multiple undo and Python colorizing, a Python
shell window subclass, a debugger. IDLE is cross-platform, i.e. it works
on all platforms where Tk is installed.
.LP
.SH OPTIONS
.TP
.B \-h
.PD
Print this help message and exit.
.TP
.B \-n
.PD
Run IDLE without a subprocess (see Help/IDLE Help for details).
.PP
The following options will override the IDLE 'settings' configuration:
.TP
.B \-e
.PD
Open an edit window.
.TP
.B \-i
.PD
Open a shell window.
.PP
The following options imply -i and will open a shell:
.TP
.B \-c cmd
.PD
Run the command in a shell, or
.TP
.B \-r file
.PD
Run script from file.
.PP
.TP
.B \-d
.PD
Enable the debugger.
.TP
.B \-s
.PD
Run $IDLESTARTUP or $PYTHONSTARTUP before anything else.
.TP
.B \-t title
.PD
Set title of shell window.
.PP
A default edit window will be bypassed when -c, -r, or - are used.
.PP
[arg]* and [file]* are passed to the command (-c) or script (-r) in sys.argv[1:].
.SH EXAMPLES
.TP
idle
.PD
Open an edit window or shell depending on IDLE's configuration.
.TP
idle foo.py foobar.py
.PD
Edit the files, also open a shell if configured to start with shell.
.TP
idle -est "Baz" foo.py
.PD
Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell
window with the title "Baz".
.TP
idle -c "import sys; print sys.argv" "foo"
.PD
Open a shell window and run the command, passing "-c" in sys.argv[0]
and "foo" in sys.argv[1].
.TP
idle -d -s -r foo.py "Hello World"
.PD
Open a shell window, run a startup script, enable the debugger, and
run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in
sys.argv[1].
.TP
echo "import sys; print sys.argv" | idle - "foobar"
.PD
Open a shell window, run the script piped in, passing '' in sys.argv[0]
and "foobar" in sys.argv[1].
.SH SEE ALSO
python(1).
.SH AUTHORS
Various.

5
debian/idle-PVER.overrides.in vendored Normal file
View File

@@ -0,0 +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

32
debian/idle-PVER.postinst.in vendored Normal file
View File

@@ -0,0 +1,32 @@
#! /bin/sh
#
# postinst script for the Debian idle-@PVER@ package.
# Written 1998 by Gregor Hoffleit <flight@debian.org>.
#
set -e
DIRLIST="/usr/lib/python@VER@/idlelib"
case "$1" in
configure|abort-upgrade|abort-remove|abort-deconfigure)
for i in $DIRLIST ; do
/usr/bin/@PVER@ /usr/lib/@PVER@/compileall.py -q $i
if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config
then
/usr/bin/@PVER@ -O /usr/lib/@PVER@/compileall.py -q $i
fi
done
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

11
debian/idle-PVER.postrm.in vendored Normal file
View File

@@ -0,0 +1,11 @@
#! /bin/sh
set -e
if [ "$1" = "purge" ]; then
rm -rf /etc/idle-@PVER@
fi
#DEBHELPER#
exit 0

17
debian/idle-PVER.prerm.in vendored Normal file
View File

@@ -0,0 +1,17 @@
#! /bin/sh
#
# sample prerm script for the Debian idle-@PVER@ package.
# Written 1998 by Gregor Hoffleit <flight@debian.org>.
#
set -e
PACKAGE=`basename $0 .prerm`
dpkg --listfiles $PACKAGE |
awk '$0~/\.py$/ {print $0"c\n" $0"o"}' |
xargs rm -f >&2
#DEBHELPER#
exit 0

9
debian/idle.desktop.in vendored Normal file
View File

@@ -0,0 +1,9 @@
[Desktop Entry]
Name=IDLE (using Python-@VER@)
Comment=Integrated Development Environment for Python (using Python-@VER@)
Exec=/usr/bin/idle-@PVER@
Icon=/usr/share/pixmaps/@PVER@.xpm
Terminal=false
Type=Application
Categories=Application;Development;
StartupNotify=true

7
debian/libPVER-dbg.overrides.in vendored Normal file
View File

@@ -0,0 +1,7 @@
lib@PVER@-dbg binary: package-name-doesnt-match-sonames
lib@PVER@-dbg binary: non-dev-pkg-with-shlib-symlink
lib@PVER@-dbg binary: arch-dependent-file-not-in-arch-specific-directory
# pointless lintian ...
lib@PVER@-dbg binary: hardening-no-fortify-functions

12
debian/libPVER-dbg.postinst.in vendored Normal file
View File

@@ -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

23
debian/libPVER-dbg.prerm.in vendored Normal file
View File

@@ -0,0 +1,23 @@
#! /bin/sh
set -e
case "$1" in
remove)
dpkg -L lib@PVER@-dbg@HOST_QUAL@ \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
;;
upgrade)
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

33
debian/libPVER-dbg.symbols.in vendored Normal file
View File

@@ -0,0 +1,33 @@
libpython@VER@_d.so.1.0 libpython@VER@-dbg #MINVER#
Py_InitModule4TraceRefs@Base @VER@
#include "libpython.symbols"
_PyDict_Dummy@Base @VER@
_PyMem_DebugFree@Base @VER@
_PyMem_DebugMalloc@Base @VER@
_PyMem_DebugRealloc@Base @VER@
_PyObject_DebugCheckAddress@Base @VER@
_PyObject_DebugCheckAddressApi@Base @VER@
_PyObject_DebugDumpAddress@Base @VER@
_PyObject_DebugFree@Base @VER@
_PyObject_DebugFreeApi@Base @VER@
_PyObject_DebugMalloc@Base @VER@
_PyObject_DebugMallocApi@Base @VER@
_PyObject_DebugMallocStats@Base @VER@
_PyObject_DebugRealloc@Base @VER@
_PyObject_DebugReallocApi@Base @VER@
_PySet_Dummy@Base @VER@
_Py_AddToAllObjects@Base @VER@
_Py_Dealloc@Base @VER@
_Py_ForgetReference@Base @VER@
_Py_GetObjects@Base @VER@
_Py_GetRefTotal@Base @VER@
_Py_HashSecret_Initialized@Base @VER@
_Py_NegativeRefcount@Base @VER@
_Py_NewReference@Base @VER@
_Py_PrintReferenceAddresses@Base @VER@
_Py_PrintReferences@Base @VER@
_Py_RefTotal@Base @VER@
_Py_dumptree@Base @VER@
_Py_printtree@Base @VER@
_Py_showtree@Base @VER@
_Py_tok_dump@Base @VER@

3
debian/libPVER-dev.overrides.in vendored Normal file
View File

@@ -0,0 +1,3 @@
lib@PVER@-dev binary: python-script-but-no-python-dep
lib@PVER@-dev binary: arch-dependent-file-not-in-arch-specific-directory

1
debian/libPVER-minimal.overrides.in vendored Normal file
View File

@@ -0,0 +1 @@
lib@PVER@-minimal binary: python-script-but-no-python-dep

17
debian/libPVER-minimal.postinst.in vendored Normal file
View File

@@ -0,0 +1,17 @@
#! /bin/sh
set -e
if [ ! -f /etc/@PVER@/sitecustomize.py ]; then
cat <<-EOF
# Empty sitecustomize.py to avoid a dangling symlink
EOF
fi
if [ "$1" = configure ]; then
rm -f /etc/@PVER@/cert-verification.conf
fi
#DEBHELPER#
exit 0

27
debian/libPVER-minimal.postrm.in vendored Normal file
View File

@@ -0,0 +1,27 @@
#! /bin/sh
set -e
if [ "$1" = "remove" ]; then
pc=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' -W lib@PVER@-minimal \
| grep -v '^.n' | wc -l)
if [ "$pc" -le 1 ]; then
find /usr/lib/@PVER@ -name '*.py[co]' -print0 | xargs -r0 rm -f
fi
fi
if [ "$1" = "purge" ]; then
pc=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' -W lib@PVER@-minimal \
| grep -v '^.n' | wc -l)
if [ "$pc" -le 1 ]; then
rm -f /etc/@PVER@/site.py /etc/@PVER@/sitecustomize.py
if [ -d /etc/@PVER@ ]; then
rmdir --ignore-fail-on-non-empty /etc/@PVER@ 2>/dev/null
fi
fi
rm -f /etc/@PVER@/cert-verification.conf
fi
#DEBHELPER#
exit 0

35
debian/libPVER-minimal.prerm.in vendored Normal file
View File

@@ -0,0 +1,35 @@
#! /bin/sh
set -e
remove_bytecode()
{
pkg=$1
dpkg -L $1 \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
}
case "$1" in
remove)
pc=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' -W lib@PVER@-minimal \
| grep -v '^.n' | wc -l)
if [ "$pc" -le 1 ]; then
remove_bytecode lib@PVER@-minimal@HOST_QUAL@
fi
;;
upgrade)
remove_bytecode lib@PVER@-minimal@HOST_QUAL@
# byte compilation in @PVER@-minimal postinst, strict dependency
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

14
debian/libPVER-stdlib.overrides.in vendored Normal file
View File

@@ -0,0 +1,14 @@
# idlelib images
lib@PVER@-stdlib binary: image-file-in-usr-lib
# license file referred by the standard library
lib@PVER@-stdlib binary: extra-license-file
# template files
lib@PVER@-stdlib binary: interpreter-not-absolute usr/lib/python3.3/venv/scripts/posix/pydoc #!__VENV_PYTHON__
lib@PVER@-stdlib binary: unusual-interpreter usr/lib/python3.3/venv/scripts/posix/pydoc #!__VENV_PYTHON__
# the split is the reason for that
lib@PVER@-stdlib binary: python-script-but-no-python-dep
lib@PVER@-stdlib binary: arch-dependent-file-not-in-arch-specific-directory

35
debian/libPVER-stdlib.prerm.in vendored Normal file
View File

@@ -0,0 +1,35 @@
#! /bin/sh
set -e
remove_bytecode()
{
pkg=$1
dpkg -L $1 \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
}
case "$1" in
remove)
pc=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' -W lib@PVER@-stdlib \
| grep -v '^.n' | wc -l)
if [ "$pc" -le 1 ]; then
remove_bytecode lib@PVER@-stdlib@HOST_QUAL@
fi
;;
upgrade)
remove_bytecode lib@PVER@-stdlib@HOST_QUAL@
# byte compilation in @PVER@ postinst, strict dependency
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

4
debian/libPVER-testsuite.overrides.in vendored Normal file
View File

@@ -0,0 +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

30
debian/libPVER-testsuite.prerm.in vendored Normal file
View File

@@ -0,0 +1,30 @@
#! /bin/sh
set -e
remove_bytecode()
{
pkg=$1
dpkg -L $1 \
| awk '/\.py$/ {print $0"c\n" $0"o"}' \
| xargs -r rm -f >&2
}
case "$1" in
remove)
remove_bytecode lib@PVER@-testsuite
;;
upgrade)
remove_bytecode lib@PVER@-testsuite
;;
deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

1
debian/libPVER.overrides.in vendored Normal file
View File

@@ -0,0 +1 @@
lib@PVER@ binary: package-name-doesnt-match-sonames

3
debian/libPVER.symbols.in vendored Normal file
View File

@@ -0,0 +1,3 @@
libpython@VER@.so.1.0 libpython@VER@ #MINVER#
Py_InitModule4@Base @VER@
#include "libpython.symbols"

1352
debian/libpython.symbols.in vendored Normal file

File diff suppressed because it is too large Load Diff

31
debian/locale-gen vendored Normal file
View File

@@ -0,0 +1,31 @@
#!/bin/sh
LOCPATH=`pwd`/locales
export LOCPATH
[ -d $LOCPATH ] || mkdir -p $LOCPATH
umask 022
echo "Generating locales..."
while read locale charset; do
case $locale in \#*) continue;; esac
[ -n "$locale" -a -n "$charset" ] || continue
echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"
echo -n ".$charset"
echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`
echo -n '...'
if [ -f $LOCPATH/$locale ]; then
input=$locale
else
input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`
fi
localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias
echo ' done'; \
done <<EOF
# This file lists locales that the python testsuite depends on
en_US ISO-8859-1
en_US.UTF-8 UTF-8
EOF
echo "Generation complete."

41
debian/mincheck.py vendored Normal file
View File

@@ -0,0 +1,41 @@
import sys
def get_listed(fn):
modules = set()
for line in file(fn).readlines():
modules.add(line.split()[1])
return modules
def get_dependencies(fn):
t = eval(file(fn).read())
modules = set()
depgraph = t['depgraph']
for mod, deps in depgraph.iteritems():
if mod != '__main__':
modules.add(mod)
modules.update(deps.keys())
return depgraph, modules
def main():
mods = get_listed(sys.argv[1])
depgraph, deps = get_dependencies(sys.argv[2])
print "Listed modules:", sorted(mods)
print
print "Dependent modules:", sorted(deps)
print
missing = deps.difference(mods)
if missing:
print "Missing modules in python-minimal:"
print missing
for m in missing:
users = []
for caller, callees in depgraph.iteritems():
if m in callees:
users.append(caller)
print m, "used in: ", users
sys.exit(len(missing))
main()

17
debian/mkbinfmt.py vendored Normal file
View File

@@ -0,0 +1,17 @@
# mkbinfmt.py
import imp, sys, string, os.path
magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"")
name = sys.argv[1]
binfmt = '''\
package %s
interpreter /usr/bin/%s
magic %s\
''' % (name, name, magic)
#filename = '/usr/share/binfmts/' + name
#open(filename,'w+').write(binfmt)
print binfmt

123
debian/multiarch.h.in vendored Normal file
View File

@@ -0,0 +1,123 @@
#if defined(__linux__)
# if defined(__x86_64__) && defined(__LP64__)
# include <x86_64-linux-gnu/@subdir@/@header@>
# elif defined(__x86_64__) && defined(__ILP32__)
# include <x86_64-linux-gnux32/@subdir@/@header@>
# 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@>
# elif _MIPS_SIM == _ABIN32
# include <mips64el-linux-gnuabin32/@subdir@/@header@>
# elif _MIPS_SIM == _ABI64
# include <mips64el-linux-gnuabi64/@subdir@/@header@>
# else
# error unknown multiarch location for @header@
# endif
# elif defined(__mips_hard_float)
# if _MIPS_SIM == _ABIO32
# include <mips-linux-gnu/@subdir@/@header@>
# elif _MIPS_SIM == _ABIN32
# include <mips64-linux-gnuabin32/@subdir@/@header@>
# elif _MIPS_SIM == _ABI64
# include <mips64-linux-gnuabi64/@subdir@/@header@>
# else
# error unknown multiarch location for @header@
# endif
# elif defined(__or1k__)
# include <or1k-linux-gnu/@subdir@/@header@>
# elif defined(__powerpc__) && defined(__SPE__)
# include <powerpc-linux-gnuspe/@subdir@/@header@>
# elif defined(__powerpc64__)
# if defined(__LITTLE_ENDIAN__)
# include <powerpc64le-linux-gnu/@subdir@/@header@>
# else
# include <powerpc64-linux-gnu/@subdir@/@header@>
# endif
# elif defined(__powerpc__)
# include <powerpc-linux-gnu/@subdir@/@header@>
# elif defined(__s390x__)
# include <s390x-linux-gnu/@subdir@/@header@>
# elif defined(__s390__)
# include <s390-linux-gnu/@subdir@/@header@>
# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
# include <sh4-linux-gnu/@subdir@/@header@>
# elif defined(__sparc__) && defined(__arch64__)
# 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
#elif defined(__FreeBSD_kernel__)
# if defined(__LP64__)
# include <x86_64-kfreebsd-gnu/@subdir@/@header@>
# elif defined(__i386__)
# include <i386-kfreebsd-gnu/@subdir@/@header@>
# else
# error unknown multiarch location for @header@
# endif
#elif defined(__gnu_hurd__)
# include <i386-gnu/@subdir@/@header@>
#else
# error unknown multiarch location for @header@
#endif

7
debian/openssl.cnf vendored Normal file
View File

@@ -0,0 +1,7 @@
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=1

26
debian/patches/CVE-2019-20907.diff vendored Normal file
View File

@@ -0,0 +1,26 @@
From 47a2955589bdb1a114d271496ff803ad73f954b8 Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Wed, 15 Jul 2020 05:36:36 -0700
Subject: [PATCH] bpo-39017: Avoid infinite loop in the tarfile module
(GH-21454) (#21485)
Avoid infinite loop when reading specially crafted TAR files using the tarfile module
(CVE-2019-20907).
(cherry picked from commit 5a8d121a1f3ef5ad7c105ee378cc79a3eac0c7d4)
Co-authored-by: Rishi <rishi_devan@mail.com>
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index adf91d5..574a6bb 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1400,6 +1400,8 @@ class TarInfo(object):
length, keyword = match.groups()
length = int(length)
+ if length == 0:
+ raise InvalidHeaderError("invalid header")
value = buf[match.end(2) + 1:match.start(1) + length - 1]
keyword = keyword.decode("utf8")

26
debian/patches/CVE-2020-8492.diff vendored Normal file
View File

@@ -0,0 +1,26 @@
Backport of 0b297d4ff1c0e4480ad33acae793fbaf4bf015b4, trimmed down to the
fix for CVE-2020-8492
Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 8b634ad..11a62a4 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -856,8 +856,15 @@ class AbstractBasicAuthHandler:
# allow for double- and single-quoted realm values
# (single quotes are a violation of the RFC, but appear in the wild)
- rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
- 'realm=(["\']?)([^"\']*)\\2', re.I)
+ rx = re.compile('(?:^|,)' # start of the string or ','
+ '[ \t]*' # optional whitespaces
+ '([^ \t]+)' # scheme like "Basic"
+ '[ \t]+' # mandatory whitespaces
+ # realm=xxx
+ # realm='xxx'
+ # realm="xxx"
+ 'realm=(["\']?)([^"\']*)\\2',
+ re.I)
# XXX could pre-emptively send auth info already accepted (RFC 2617,
# end of section 2, and section 1.2 immediately after "credentials"

472
debian/patches/CVE-2021-23336.diff vendored Normal file
View File

@@ -0,0 +1,472 @@
From fcbe0cb04d35189401c0c880ebfb4311e952d776 Mon Sep 17 00:00:00 2001
From: Adam Goldschmidt <adamgold7@gmail.com>
Date: Mon, 15 Feb 2021 00:41:57 +0200
Subject: [PATCH] bpo-42967: only use '&' as a query string separator (#24297)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
bpo-42967: [security] Address a web cache-poisoning issue reported in urllib.parse.parse_qsl().
urllib.parse will only us "&" as query string separator by default instead of both ";" and "&" as allowed in earlier versions. An optional argument seperator with default value "&" is added to specify the separator.
Co-authored-by: Éric Araujo <merwok@netwok.org>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Co-authored-by: Éric Araujo <merwok@netwok.org>
---
Doc/library/cgi.rst | 9 ++-
Doc/library/urllib.parse.rst | 16 ++++-
Doc/whatsnew/3.10.rst | 13 ++++
Doc/whatsnew/3.6.rst | 13 ++++
Doc/whatsnew/3.7.rst | 13 ++++
Doc/whatsnew/3.8.rst | 13 ++++
Doc/whatsnew/3.9.rst | 15 +++-
Lib/cgi.py | 23 ++++---
Lib/test/test_cgi.py | 29 ++++++--
Lib/test/test_urlparse.py | 68 +++++++++++++------
Lib/urllib/parse.py | 20 ++++--
.../2021-02-14-15-59-16.bpo-42967.YApqDS.rst | 1 +
12 files changed, 186 insertions(+), 47 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2021-02-14-15-59-16.bpo-42967.YApqDS.rst
Backport:
* Drop Doc/whatsnew and Misc/NEWS.d
* urllib.parse.urlencode -> urllib.urlencode
* urllib.parse -> urlparse
* Significant refactoring due to differences in arguments
* Avoid using TestCase.subTest
diff --git a/Doc/library/cgi.rst b/Doc/library/cgi.rst
index 4048592e73..05d9cdf424 100644
--- a/Doc/library/cgi.rst
+++ b/Doc/library/cgi.rst
@@ -277,24 +277,25 @@ These are useful if you want more control, or if you want to employ some of the
algorithms implemented in this module in other circumstances.
-.. function:: parse(fp[, environ[, keep_blank_values[, strict_parsing]]])
+.. function:: parse(fp[, environ[, keep_blank_values[, strict_parsing[, separator="&"]]]])
Parse a query in the environment or from a file (the file defaults to
- ``sys.stdin`` and environment defaults to ``os.environ``). The *keep_blank_values* and *strict_parsing* parameters are
+ ``sys.stdin`` and environment defaults to ``os.environ``). The
+ *keep_blank_values*, *strict_parsing* and *separator* parameters are
passed to :func:`urlparse.parse_qs` unchanged.
-.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
+.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields[, separator]]]])
This function is deprecated in this module. Use :func:`urlparse.parse_qs`
instead. It is maintained here only for backward compatibility.
-.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
+.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields[, separator]]]])
This function is deprecated in this module. Use :func:`urlparse.parse_qsl`
instead. It is maintained here only for backward compatibility.
-.. function:: parse_multipart(fp, pdict)
+.. function:: parse_multipart(fp, pdict, separator="&")
Parse input of type :mimetype:`multipart/form-data` (for file uploads).
Arguments are *fp* for the input file and *pdict* for a dictionary containing
@@ -303,6 +303,9 @@ algorithms implemented in this module in other circumstances.
Note that this does not parse nested multipart parts --- use
:class:`FieldStorage` for that.
+ .. versionchanged:: 2.7 security update
+ Added the *separator* parameter.
+
.. function:: parse_header(string)
diff --git a/Doc/library/urllib.parse.rst b/Doc/library/urllib.parse.rst
index f9c8ba7398..1a79078239 100644
--- a/Doc/library/urlparse.rst
+++ b/Doc/library/urlparse.rst
@@ -165,7 +165,7 @@ or on combining URL components into a URL string.
Added IPv6 URL parsing capabilities.
-.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
+.. function:: parse_qs(qs[, keep_blank_values[, strict_parsing[, max_num_fields[, separator='&']]]])
Parse a query string given as a string argument (data of type
:mimetype:`application/x-www-form-urlencoded`). Data are returned as a
@@ -190,6 +190,8 @@ or on combining URL components into a URL string.
read. If set, then throws a :exc:`ValueError` if there are more than
*max_num_fields* fields read.
+ The optional argument *separator* is the symbol to use for separating the query arguments. It defaults to `&`.
+
Use the :func:`urllib.urlencode` function to convert such dictionaries into
query strings.
@@ -201,7 +203,12 @@ or on combining URL components into a URL string.
.. versionchanged:: 2.7.16
Added *max_num_fields* parameter.
-.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields]]])
+ .. versionchanged:: 2.7 security update
+ Added *separator* parameter with the default value of `&`. Python versions earlier than Python 3.10 allowed using both ";" and "&" as
+ query parameter separator. This has been changed to allow only a single separator key, with "&" as the default separator.
+
+
+.. function:: parse_qsl(qs[, keep_blank_values[, strict_parsing[, max_num_fields[, separator='&']]]])
Parse a query string given as a string argument (data of type
:mimetype:`application/x-www-form-urlencoded`). Data are returned as a list of
@@ -226,6 +232,8 @@ or on combining URL components into a URL string.
read. If set, then throws a :exc:`ValueError` if there are more than
*max_num_fields* fields read.
+ The optional argument *separator* is the symbol to use for separating the query arguments. It defaults to `&`.
+
Use the :func:`urllib.urlencode` function to convert such lists of pairs into
query strings.
@@ -235,6 +243,11 @@ or on combining URL components into a URL string.
.. versionchanged:: 2.7.16
Added *max_num_fields* parameter.
+ .. versionchanged:: 2.7 security update
+ Added *separator* parameter with the default value of `&`. Python versions earlier than Python 3.10 allowed using both ";" and "&" as
+ query parameter separator. This has been changed to allow only a single separator key, with "&" as the default separator.
+
+
.. function:: urlunparse(parts)
Construct a URL from a tuple as returned by ``urlparse()``. The *parts* argument
diff --git a/Lib/cgi.py b/Lib/cgi.py
index 6018c36086..6c72507c20 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -115,7 +115,8 @@ def closelog():
# 0 ==> unlimited input
maxlen = 0
-def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
+def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0,
+ separator='&'):
"""Parse a query in the environment or from a file (default stdin)
Arguments, all optional:
@@ -134,6 +135,9 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
strict_parsing: flag indicating what to do with parsing errors.
If false (the default), errors are silently ignored.
If true, errors raise a ValueError exception.
+
+ separator: str. The symbol to use for separating the query arguments.
+ Defaults to &.
"""
if fp is None:
fp = sys.stdin
@@ -154,7 +158,7 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
if environ['REQUEST_METHOD'] == 'POST':
ctype, pdict = parse_header(environ['CONTENT_TYPE'])
if ctype == 'multipart/form-data':
- return parse_multipart(fp, pdict)
+ return parse_multipart(fp, pdict, separator=separator)
elif ctype == 'application/x-www-form-urlencoded':
clength = int(environ['CONTENT_LENGTH'])
if maxlen and clength > maxlen:
@@ -178,27 +182,30 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
else:
qs = ""
environ['QUERY_STRING'] = qs # XXX Shouldn't, really
- return urlparse.parse_qs(qs, keep_blank_values, strict_parsing)
+ return urlparse.parse_qs(qs, keep_blank_values, strict_parsing,
+ separator=separator)
# parse query string function called from urlparse,
# this is done in order to maintain backward compatibility.
-def parse_qs(qs, keep_blank_values=0, strict_parsing=0):
+def parse_qs(qs, keep_blank_values=0, strict_parsing=0, separator='&'):
"""Parse a query given as a string argument."""
warn("cgi.parse_qs is deprecated, use urlparse.parse_qs instead",
PendingDeprecationWarning, 2)
- return urlparse.parse_qs(qs, keep_blank_values, strict_parsing)
+ return urlparse.parse_qs(qs, keep_blank_values, strict_parsing,
+ separator=separator)
-def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
+def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None,
+ separator='&'):
"""Parse a query given as a string argument."""
warn("cgi.parse_qsl is deprecated, use urlparse.parse_qsl instead",
PendingDeprecationWarning, 2)
return urlparse.parse_qsl(qs, keep_blank_values, strict_parsing,
- max_num_fields)
+ max_num_fields, separator=separator)
-def parse_multipart(fp, pdict):
+def parse_multipart(fp, pdict, separator='&'):
"""Parse multipart input.
Arguments:
@@ -315,7 +319,7 @@ class FieldStorage:
def __init__(self, fp=None, headers=None, outerboundary="",
environ=os.environ, keep_blank_values=0, strict_parsing=0,
- max_num_fields=None):
+ max_num_fields=None, separator='&'):
"""Constructor. Read multipart/* until last part.
Arguments, all optional:
@@ -363,6 +367,7 @@ def __init__(self, fp=None, headers=None, outerboundary=b'',
self.keep_blank_values = keep_blank_values
self.strict_parsing = strict_parsing
self.max_num_fields = max_num_fields
+ self.separator = separator
if 'REQUEST_METHOD' in environ:
method = environ['REQUEST_METHOD'].upper()
self.qs_on_post = None
@@ -589,7 +594,8 @@ def read_urlencoded(self):
if self.qs_on_post:
qs += '&' + self.qs_on_post
query = urlparse.parse_qsl(qs, self.keep_blank_values,
- self.strict_parsing, self.max_num_fields)
+ self.strict_parsing, self.max_num_fields,
+ separator=self.separator)
self.list = [MiniFieldStorage(key, value) for key, value in query]
self.skip_lines()
@@ -605,7 +610,8 @@ def read_multi(self, environ, keep_blank_values, strict_parsing):
query = urlparse.parse_qsl(self.qs_on_post,
self.keep_blank_values,
self.strict_parsing,
- self.max_num_fields)
+ self.max_num_fields,
+ separator=self.separator)
self.list.extend(MiniFieldStorage(key, value)
for key, value in query)
FieldStorageClass = None
@@ -649,7 +654,7 @@ def read_multi(self, environ, keep_blank_values, strict_parsing):
klass = self.FieldStorageClass or self.__class__
part = klass(self.fp, {}, ib,
environ, keep_blank_values, strict_parsing,
- max_num_fields)
+ max_num_fields, separator=self.separator)
# Throw first part away
while not part.done:
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
index 6b29759da4..239d97589c 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -53,12 +53,9 @@ def do_test(buf, method):
("", ValueError("bad query field: ''")),
("&", ValueError("bad query field: ''")),
("&&", ValueError("bad query field: ''")),
- (";", ValueError("bad query field: ''")),
- (";&;", ValueError("bad query field: ''")),
# Should the next few really be valid?
("=", {}),
("=&=", {}),
- ("=;=", {}),
# This rest seem to make sense
("=a", {'': ['a']}),
("&=a", ValueError("bad query field: ''")),
@@ -73,8 +70,6 @@ def do_test(buf, method):
("a=a+b&b=b+c", {'a': ['a b'], 'b': ['b c']}),
("a=a+b&a=b+a", {'a': ['a b', 'b a']}),
("x=1&y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
- ("x=1;y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
- ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
("Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env",
{'Hbc5161168c542333633315dee1182227:key_store_seqid': ['400006'],
'cuyer': ['r'],
@@ -201,6 +196,30 @@ def test_strict(self):
self.assertEqual(expect[k], v)
self.assertItemsEqual(expect.values(), d.values())
+ def test_separator(self):
+ parse_semicolon = [
+ ("x=1;y=2.0", {'x': ['1'], 'y': ['2.0']}),
+ ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
+ (";", ValueError("bad query field: ''")),
+ (";;", ValueError("bad query field: ''")),
+ ("=;a", ValueError("bad query field: 'a'")),
+ (";b=a", ValueError("bad query field: ''")),
+ ("b;=a", ValueError("bad query field: 'b'")),
+ ("a=a+b;b=b+c", {'a': ['a b'], 'b': ['b c']}),
+ ("a=a+b;a=b+a", {'a': ['a b', 'b a']}),
+ ]
+ for orig, expect in parse_semicolon:
+ env = {'QUERY_STRING': orig}
+ fs = cgi.FieldStorage(separator=';', environ=env)
+ if isinstance(expect, dict):
+ for key in expect.keys():
+ expect_val = expect[key]
+ self.assertIn(key, fs)
+ if len(expect_val) > 1:
+ self.assertEqual(fs.getvalue(key), expect_val)
+ else:
+ self.assertEqual(fs.getvalue(key), expect_val[0])
+
def test_log(self):
cgi.log("Testing")
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index 762500789f..3b1c360625 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -32,16 +32,10 @@
("&a=b", [('a', 'b')]),
("a=a+b&b=b+c", [('a', 'a b'), ('b', 'b c')]),
("a=1&a=2", [('a', '1'), ('a', '2')]),
- (";", []),
- (";;", []),
- (";a=b", [('a', 'b')]),
- ("a=a+b;b=b+c", [('a', 'a b'), ('b', 'b c')]),
- ("a=1;a=2", [('a', '1'), ('a', '2')]),
- (b";", []),
- (b";;", []),
- (b";a=b", [(b'a', b'b')]),
- (b"a=a+b;b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
- (b"a=1;a=2", [(b'a', b'1'), (b'a', b'2')]),
+ (";a=b", [(';a', 'b')]),
+ ("a=a+b;b=b+c", [('a', 'a b;b=b c')]),
+ (b";a=b", [(b';a', b'b')]),
+ (b"a=a+b;b=b+c", [(b'a', b'a b;b=b c')]),
]
parse_qs_test_cases = [
@@ -68,16 +62,10 @@
(b"&a=b", {b'a': [b'b']}),
(b"a=a+b&b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
(b"a=1&a=2", {b'a': [b'1', b'2']}),
- (";", {}),
- (";;", {}),
- (";a=b", {'a': ['b']}),
- ("a=a+b;b=b+c", {'a': ['a b'], 'b': ['b c']}),
- ("a=1;a=2", {'a': ['1', '2']}),
- (b";", {}),
- (b";;", {}),
- (b";a=b", {b'a': [b'b']}),
- (b"a=a+b;b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
- (b"a=1;a=2", {b'a': [b'1', b'2']}),
+ (";a=b", {';a': ['b']}),
+ ("a=a+b;b=b+c", {'a': ['a b;b=b c']}),
+ (b";a=b", {b';a': [b'b']}),
+ (b"a=a+b;b=b+c", {b'a':[ b'a b;b=b c']}),
]
class UrlParseTestCase(unittest.TestCase):
@@ -886,6 +874,42 @@ def test_parse_qsl_encoding(self):
self.assertEqual(urlparse.urlparse("http://www.python.org:80"),
('http','www.python.org:80','','','',''))
+ def test_parse_qs_separator(self):
+ parse_qs_semicolon_cases = [
+ (";", {}),
+ (";;", {}),
+ (";a=b", {'a': ['b']}),
+ ("a=a+b;b=b+c", {'a': ['a b'], 'b': ['b c']}),
+ ("a=1;a=2", {'a': ['1', '2']}),
+ (b";", {}),
+ (b";;", {}),
+ (b";a=b", {b'a': [b'b']}),
+ (b"a=a+b;b=b+c", {b'a': [b'a b'], b'b': [b'b c']}),
+ (b"a=1;a=2", {b'a': [b'1', b'2']}),
+ ]
+ for orig, expect in parse_qs_semicolon_cases:
+ result = urlparse.parse_qs(orig, separator=';')
+ self.assertEqual(result, expect, "Error parsing %r" % orig)
+
+
+ def test_parse_qsl_separator(self):
+ parse_qsl_semicolon_cases = [
+ (";", []),
+ (";;", []),
+ (";a=b", [('a', 'b')]),
+ ("a=a+b;b=b+c", [('a', 'a b'), ('b', 'b c')]),
+ ("a=1;a=2", [('a', '1'), ('a', '2')]),
+ (b";", []),
+ (b";;", []),
+ (b";a=b", [(b'a', b'b')]),
+ (b"a=a+b;b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
+ (b"a=1;a=2", [(b'a', b'1'), (b'a', b'2')]),
+ ]
+ for orig, expect in parse_qsl_semicolon_cases:
+ result = urlparse.parse_qsl(orig, separator=';')
+ self.assertEqual(result, expect, "Error parsing %r" % orig)
+
+
def test_main():
test_support.run_unittest(UrlParseTestCase)
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index ea897c3032..5bd067895b 100644
--- a/Lib/urlparse.py
+++ b/Lib/urlparse.py
@@ -662,7 +662,8 @@ def unquote(string, encoding='utf-8', errors='replace'):
append(item)
return ''.join(res)
-def parse_qs(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
+def parse_qs(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None,
+ separator='&'):
"""Parse a query given as a string argument.
Arguments:
@@ -686,10 +686,13 @@ def parse_qs(qs, keep_blank_values=False, strict_parsing=False,
max_num_fields: int. If set, then throws a ValueError if there
are more than n fields read by parse_qsl().
+
+ separator: str. The symbol to use for separating the query arguments.
+ Defaults to &.
"""
dict = {}
for name, value in parse_qsl(qs, keep_blank_values, strict_parsing,
- max_num_fields):
+ max_num_fields, separator=separator):
if name in dict:
dict[name].append(value)
else:
@@ -701,7 +704,8 @@ def parse_qs(qs, keep_blank_values=False, strict_parsing=False,
dict[name] = [value]
return dict
-def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None):
+def parse_qsl(qs, keep_blank_values=0, strict_parsing=0, max_num_fields=None,
+ separator='&'):
"""Parse a query given as a string argument.
Arguments:
@@ -724,17 +727,23 @@ def parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
max_num_fields: int. If set, then throws a ValueError if there
are more than n fields read by parse_qsl().
+ separator: str. The symbol to use for separating the query arguments.
+ Defaults to &.
+
Returns a list, as G-d intended.
"""
+ if not separator or not isinstance(separator, str):
+ raise ValueError("Separator must be of type str.")
+
# If max_num_fields is defined then check that the number of fields
# is less than max_num_fields. This prevents a memory exhaustion DOS
# attack via post bodies with many fields.
if max_num_fields is not None:
- num_fields = 1 + qs.count('&') + qs.count(';')
+ num_fields = 1 + qs.count(separator)
if max_num_fields < num_fields:
raise ValueError('Max number of fields exceeded')
- pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
+ pairs = [s1 for s1 in qs.split(separator)]
r = []
for name_value in pairs:
if not name_value and not strict_parsing:
--
2.40.1

149
debian/patches/CVE-2021-3177.diff vendored Normal file
View File

@@ -0,0 +1,149 @@
bpo-42938: Replace snprintf with Python unicode formatting in ctypes param reprs.
--- a/Lib/ctypes/test/test_parameters.py
+++ b/Lib/ctypes/test/test_parameters.py
@@ -206,6 +206,49 @@ class SimpleTypesTestCase(unittest.TestC
with self.assertRaises(ZeroDivisionError):
WorseStruct().__setstate__({}, b'foo')
+ def test_parameter_repr(self):
+ from ctypes import (
+ c_bool,
+ c_char,
+ c_wchar,
+ c_byte,
+ c_ubyte,
+ c_short,
+ c_ushort,
+ c_int,
+ c_uint,
+ c_long,
+ c_ulong,
+ c_longlong,
+ c_ulonglong,
+ c_float,
+ c_double,
+ c_longdouble,
+ c_char_p,
+ c_wchar_p,
+ c_void_p,
+ )
+ self.assertRegexpMatches(repr(c_bool.from_param(True)), r"^<cparam '\?' at 0x[A-Fa-f0-9]+>$")
+ self.assertEqual(repr(c_char.from_param('a')), "<cparam 'c' (a)>")
+ self.assertRegexpMatches(repr(c_wchar.from_param('a')), r"^<cparam 'u' at 0x[A-Fa-f0-9]+>$")
+ self.assertEqual(repr(c_byte.from_param(98)), "<cparam 'b' (98)>")
+ self.assertEqual(repr(c_ubyte.from_param(98)), "<cparam 'B' (98)>")
+ self.assertEqual(repr(c_short.from_param(511)), "<cparam 'h' (511)>")
+ self.assertEqual(repr(c_ushort.from_param(511)), "<cparam 'H' (511)>")
+ self.assertRegexpMatches(repr(c_int.from_param(20000)), r"^<cparam '[li]' \(20000\)>$")
+ self.assertRegexpMatches(repr(c_uint.from_param(20000)), r"^<cparam '[LI]' \(20000\)>$")
+ self.assertRegexpMatches(repr(c_long.from_param(20000)), r"^<cparam '[li]' \(20000\)>$")
+ self.assertRegexpMatches(repr(c_ulong.from_param(20000)), r"^<cparam '[LI]' \(20000\)>$")
+ self.assertRegexpMatches(repr(c_longlong.from_param(20000)), r"^<cparam '[liq]' \(20000\)>$")
+ self.assertRegexpMatches(repr(c_ulonglong.from_param(20000)), r"^<cparam '[LIQ]' \(20000\)>$")
+ self.assertEqual(repr(c_float.from_param(1.5)), "<cparam 'f' (1.5)>")
+ self.assertEqual(repr(c_double.from_param(1.5)), "<cparam 'd' (1.5)>")
+ self.assertEqual(repr(c_double.from_param(1e300)), "<cparam 'd' (1e+300)>")
+ self.assertRegexpMatches(repr(c_longdouble.from_param(1.5)), r"^<cparam ('d' \(1.5\)|'g' at 0x[A-Fa-f0-9]+)>$")
+ self.assertRegexpMatches(repr(c_char_p.from_param(b'hihi')), "^<cparam 'z' \(0x[A-Fa-f0-9]+\)>$")
+ self.assertRegexpMatches(repr(c_wchar_p.from_param('hihi')), "^<cparam 'Z' \(0x[A-Fa-f0-9]+\)>$")
+ self.assertRegexpMatches(repr(c_void_p.from_param(0x12)), r"^<cparam 'P' \(0x0*12\)>$")
+
################################################################
if __name__ == '__main__':
--- a/Modules/_ctypes/callproc.c
+++ b/Modules/_ctypes/callproc.c
@@ -460,50 +460,53 @@ PyCArg_dealloc(PyCArgObject *self)
static PyObject *
PyCArg_repr(PyCArgObject *self)
{
- char buffer[256];
switch(self->tag) {
case 'b':
case 'B':
- sprintf(buffer, "<cparam '%c' (%d)>",
+ return PyString_FromFormat("<cparam '%c' (%d)>",
self->tag, self->value.b);
- break;
case 'h':
case 'H':
- sprintf(buffer, "<cparam '%c' (%d)>",
+ return PyString_FromFormat("<cparam '%c' (%d)>",
self->tag, self->value.h);
- break;
case 'i':
case 'I':
- sprintf(buffer, "<cparam '%c' (%d)>",
+ return PyString_FromFormat("<cparam '%c' (%d)>",
self->tag, self->value.i);
- break;
case 'l':
case 'L':
- sprintf(buffer, "<cparam '%c' (%ld)>",
+ return PyString_FromFormat("<cparam '%c' (%ld)>",
self->tag, self->value.l);
- break;
#ifdef HAVE_LONG_LONG
case 'q':
case 'Q':
- sprintf(buffer,
- "<cparam '%c' (%" PY_FORMAT_LONG_LONG "d)>",
+ return PyString_FromFormat("<cparam '%c' (%" PY_FORMAT_LONG_LONG "d)>",
self->tag, self->value.q);
- break;
#endif
case 'd':
- sprintf(buffer, "<cparam '%c' (%f)>",
- self->tag, self->value.d);
- break;
- case 'f':
- sprintf(buffer, "<cparam '%c' (%f)>",
- self->tag, self->value.f);
- break;
+ case 'f': {
+ PyObject *f = PyFloat_FromDouble((self->tag == 'f') ? self->value.f : self->value.d);
+ if (f == NULL) {
+ return NULL;
+ }
+ PyObject *r = PyObject_Repr(f);
+ Py_DECREF(f);
+ if (r == NULL) {
+ return NULL;
+ }
+ char *value = PyString_AsString(r);
+ if (value == NULL) {
+ return NULL;
+ }
+ PyObject *result = PyString_FromFormat("<cparam '%c' (%s)>", self->tag, value);
+ Py_DECREF(r);
+ return result;
+ }
case 'c':
- sprintf(buffer, "<cparam '%c' (%c)>",
+ return PyString_FromFormat("<cparam '%c' (%c)>",
self->tag, self->value.c);
- break;
/* Hm, are these 'z' and 'Z' codes useful at all?
Shouldn't they be replaced by the functionality of c_string
@@ -512,16 +515,13 @@ PyCArg_repr(PyCArgObject *self)
case 'z':
case 'Z':
case 'P':
- sprintf(buffer, "<cparam '%c' (%p)>",
+ return PyString_FromFormat("<cparam '%c' (%p)>",
self->tag, self->value.p);
- break;
default:
- sprintf(buffer, "<cparam '%c' at %p>",
+ return PyString_FromFormat("<cparam '%c' at %p>",
self->tag, self);
- break;
}
- return PyString_FromString(buffer);
}
static PyMemberDef PyCArgType_members[] = {

151
debian/patches/CVE-2022-0391.diff vendored Normal file
View File

@@ -0,0 +1,151 @@
From 76cd81d60310d65d01f9d7b48a8985d8ab89c8b4 Mon Sep 17 00:00:00 2001
From: Senthil Kumaran <senthil@uthcode.com>
Date: Thu, 29 Apr 2021 10:16:50 -0700
Subject: [PATCH] bpo-43882 - urllib.parse should sanitize urls containing
ASCII newline and tabs. (GH-25595)
* issue43882 - urllib.parse should sanitize urls containing ASCII newline and tabs.
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
---
Doc/library/urllib.parse.rst | 13 +++++++++
Lib/test/test_urlparse.py | 29 +++++++++++++++++++
Lib/urllib/parse.py | 6 ++++
.../2021-04-25-07-46-37.bpo-43882.Jpwx85.rst | 6 ++++
4 files changed, 54 insertions(+)
create mode 100644 Misc/NEWS.d/next/Security/2021-04-25-07-46-37.bpo-43882.Jpwx85.rst
From 985ac016373403e8ad41f8d563c4355ffa8d49ff Mon Sep 17 00:00:00 2001
From: Senthil Kumaran <senthil@uthcode.com>
Date: Wed, 5 May 2021 15:50:05 -0700
Subject: [PATCH] bpo-43882 Remove the newline, and tab early. From query and
fragments. (GH-25921)
---
Lib/test/test_urlparse.py | 24 ++++++++++++++++--------
Lib/urllib/parse.py | 8 +++++---
2 files changed, 21 insertions(+), 11 deletions(-)
Backport:
* Drop Misc/NEWS.d
* urllib.parse -> urlparse
* Update hunk context
diff --git a/Doc/library/urllib.parse.rst b/Doc/library/urllib.parse.rst
index 67c2120819..0aaac56288 100644
--- a/Doc/library/urlparse.rst
+++ b/Doc/library/urlparse.rst
@@ -312,6 +312,9 @@ or on combining URL components into a URL string.
decomposed before parsing, or is not a Unicode string, no error will be
raised.
+ Following the `WHATWG spec`_ that updates RFC 3986, ASCII newline
+ ``\n``, ``\r`` and tab ``\t`` characters are stripped from the URL.
+
.. versionadded:: 2.2
.. versionchanged:: 2.5
@@ -320,6 +323,10 @@ or on combining URL components into a URL string.
Characters that affect netloc parsing under NFKC normalization will
now raise :exc:`ValueError`.
+ .. versionchanged:: 2.7 security update
+ ASCII newline and tab characters are stripped from the URL.
+
+.. _WHATWG spec: https://url.spec.whatwg.org/#concept-basic-url-parser
.. function:: urlunsplit(parts)
@@ -674,6 +681,10 @@ task isn't already covered by the URL parsing functions above.
.. seealso::
+ `WHATWG`_ - URL Living standard
+ Working Group for the URL Standard that defines URLs, domains, IP addresses, the
+ application/x-www-form-urlencoded format, and their API.
+
:rfc:`3986` - Uniform Resource Identifiers
This is the current standard (STD66). Any changes to urlparse module
should conform to this. Certain deviations could be observed, which are
@@ -697,6 +708,8 @@ task isn't already covered by the URL parsing functions above.
:rfc:`1738` - Uniform Resource Locators (URL)
This specifies the formal syntax and semantics of absolute URLs.
+
+.. _WHATWG: https://url.spec.whatwg.org/
.. _urlparse-result-object:
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -612,6 +612,43 @@
self.assertEqual(p1.params, 'phone-context=+1-914-555')
+ def test_urlsplit_remove_unsafe_bytes(self):
+ # Remove ASCII tabs and newlines from input
+ url = "http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
+ p = urlparse.urlsplit(url)
+ self.assertEqual(p.scheme, "http")
+ self.assertEqual(p.netloc, "www.python.org")
+ self.assertEqual(p.path, "/javascript:alert('msg')/")
+ self.assertEqual(p.query, "query=something")
+ self.assertEqual(p.fragment, "fragment")
+ self.assertEqual(p.username, None)
+ self.assertEqual(p.password, None)
+ self.assertEqual(p.hostname, "www.python.org")
+ self.assertEqual(p.port, None)
+ self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
+
+ # Remove ASCII tabs and newlines from input as bytes.
+ url = b"http\t://www.python\n.org\t/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
+ p = urlparse.urlsplit(url)
+ self.assertEqual(p.scheme, b"http")
+ self.assertEqual(p.netloc, b"www.python.org")
+ self.assertEqual(p.path, b"/javascript:alert('msg')/")
+ self.assertEqual(p.query, b"query=something")
+ self.assertEqual(p.fragment, b"fragment")
+ self.assertEqual(p.username, None)
+ self.assertEqual(p.password, None)
+ self.assertEqual(p.hostname, b"www.python.org")
+ self.assertEqual(p.port, None)
+ self.assertEqual(p.geturl(), b"http://www.python.org/javascript:alert('msg')/?query=something#fragment")
+
+ # with scheme as cache-key
+ url = "http://www.python.org/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
+ scheme = "ht\ntp"
+ for _ in range(2):
+ p = urlparse.urlsplit(url, scheme=scheme)
+ self.assertEqual(p.scheme, "http")
+ self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
+
def test_attributes_bad_port(self):
"""Check handling of non-integer ports."""
p = urlparse.urlsplit("http://www.example.net:foo")
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
--- a/Lib/urlparse.py
+++ b/Lib/urlparse.py
@@ -78,6 +78,9 @@
'0123456789'
'+-.')
+# Unsafe bytes to be removed per WHATWG spec
+_UNSAFE_URL_BYTES_TO_REMOVE = ['\t', '\r', '\n']
+
MAX_CACHE_SIZE = 20
_parse_cache = {}
@@ -456,6 +456,11 @@ def urlsplit(url, scheme='', allow_fragments=True):
Return a 5-tuple: (scheme, netloc, path, query, fragment).
Note that we don't break the components up in smaller bits
(e.g. netloc is a single string) and we don't expand % escapes."""
+
+ for b in _UNSAFE_URL_BYTES_TO_REMOVE:
+ url = url.replace(b, "")
+ scheme = scheme.replace(b, "")
+
allow_fragments = bool(allow_fragments)
key = url, scheme, allow_fragments, type(url), type(scheme)
cached = _parse_cache.get(key, None)

155
debian/patches/CVE-2022-48560.diff vendored Normal file
View File

@@ -0,0 +1,155 @@
From 79f89e6e5a659846d1068e8b1bd8e491ccdef861 Mon Sep 17 00:00:00 2001
From: Pablo Galindo <Pablogsal@gmail.com>
Date: Thu, 23 Jan 2020 14:07:05 +0000
Subject: [PATCH] bpo-39421: Fix posible crash in heapq with custom comparison
operators (GH-18118)
* bpo-39421: Fix posible crash in heapq with custom comparison operators
* fixup! bpo-39421: Fix posible crash in heapq with custom comparison operators
* fixup! fixup! bpo-39421: Fix posible crash in heapq with custom comparison operators
---
Lib/test/test_heapq.py | 31 ++++++++++++++++
.../2020-01-22-15-53-37.bpo-39421.O3nG7u.rst | 2 ++
Modules/_heapqmodule.c | 35 ++++++++++++++-----
3 files changed, 59 insertions(+), 9 deletions(-)
create mode 100644 Misc/NEWS.d/next/Core and Builtins/2020-01-22-15-53-37.bpo-39421.O3nG7u.rst
Backport:
* Drop Misc/NEWS.d
* test_heapq.py:
+ Update hunk context
+ list.clear() -> del list[:]
* _heapqmodule.c: Port the patch with significant changes
+ PyObject_RichCompareBool -> cmp_lt
+ X[Y] -> PyList_GET_ITEM(X, Y)
+ 4th hunk: newitem refcount is already incremented, parent refcount extended
diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py
index 861ba7540d..6902573e8f 100644
--- a/Lib/test/test_heapq.py
+++ b/Lib/test/test_heapq.py
@@ -432,6 +432,37 @@ def test_heappop_mutating_heap(self):
with self.assertRaises((IndexError, RuntimeError)):
self.module.heappop(heap)
+ def test_comparison_operator_modifiying_heap(self):
+ # See bpo-39421: Strong references need to be taken
+ # when comparing objects as they can alter the heap
+ class EvilClass(int):
+ def __lt__(self, o):
+ del heap[:]
+ return NotImplemented
+
+ heap = []
+ self.module.heappush(heap, EvilClass(0))
+ self.assertRaises(IndexError, self.module.heappushpop, heap, 1)
+
+ def test_comparison_operator_modifiying_heap_two_heaps(self):
+
+ class h(int):
+ def __lt__(self, o):
+ del list2[:]
+ return NotImplemented
+
+ class g(int):
+ def __lt__(self, o):
+ del list1[:]
+ return NotImplemented
+
+ list1, list2 = [], []
+
+ self.module.heappush(list1, h(0))
+ self.module.heappush(list2, g(0))
+
+ self.assertRaises((IndexError, RuntimeError), self.module.heappush, list1, g(1))
+ self.assertRaises((IndexError, RuntimeError), self.module.heappush, list2, h(1))
class TestErrorHandlingPython(TestErrorHandling):
module = py_heapq
diff --git a/Modules/_heapqmodule.c b/Modules/_heapqmodule.c
index a84cade3aa..6bc18b5f82 100644
--- a/Modules/_heapqmodule.c
+++ b/Modules/_heapqmodule.c
@@ -36,7 +36,11 @@ siftdown(PyListObject *heap, Py_ssize_t startpos, Py_ssize_t pos)
while (pos > startpos) {
parentpos = (pos - 1) >> 1;
parent = PyList_GET_ITEM(heap, parentpos);
+ Py_INCREF(newitem);
+ Py_INCREF(parent);
cmp = cmp_lt(newitem, parent);
+ Py_DECREF(parent);
+ Py_DECREF(newitem);
if (cmp == -1)
return -1;
if (size != PyList_GET_SIZE(heap)) {
@@ -78,9 +82,13 @@ siftup(PyListObject *heap, Py_ssize_t pos)
childpos = 2*pos + 1; /* leftmost child position */
rightpos = childpos + 1;
if (rightpos < endpos) {
- cmp = cmp_lt(
- PyList_GET_ITEM(heap, childpos),
- PyList_GET_ITEM(heap, rightpos));
+ PyObject* a = PyList_GET_ITEM(heap, childpos);
+ PyObject* b = PyList_GET_ITEM(heap, rightpos);
+ Py_INCREF(a);
+ Py_INCREF(b);
+ cmp = cmp_lt(a, b);
+ Py_DECREF(a);
+ Py_DECREF(b);
if (cmp == -1)
return -1;
if (cmp == 0)
@@ -264,7 +271,10 @@ _heapq_heappushpop_impl(PyObject *module, PyObject *heap, PyObject *item)
return item;
}
- cmp = cmp_lt(PyList_GET_ITEM(heap, 0), item);
+ PyObject* top = PyList_GET_ITEM(heap, 0);
+ Py_INCREF(top);
+ cmp = cmp_lt(top, item);
+ Py_DECREF(top);
if (cmp == -1)
return NULL;
if (cmp == 0) {
@@ -420,14 +430,17 @@ siftdown_max(PyListObject *heap, Py_ssize_t startpos, Py_ssize_t pos)
while (pos > startpos){
parentpos = (pos - 1) >> 1;
parent = PyList_GET_ITEM(heap, parentpos);
+ Py_INCREF(parent);
cmp = cmp_lt(parent, newitem);
if (cmp == -1) {
+ Py_DECREF(parent);
Py_DECREF(newitem);
return -1;
}
- if (cmp == 0)
+ if (cmp == 0) {
+ Py_DECREF(parent);
break;
+ }
- Py_INCREF(parent);
Py_DECREF(PyList_GET_ITEM(heap, pos));
PyList_SET_ITEM(heap, pos, parent);
pos = parentpos;
@@ -462,9 +476,13 @@ siftup_max(PyListObject *heap, Py_ssize_t pos)
childpos = 2*pos + 1; /* leftmost child position */
rightpos = childpos + 1;
if (rightpos < endpos) {
- cmp = cmp_lt(
- PyList_GET_ITEM(heap, rightpos),
- PyList_GET_ITEM(heap, childpos));
+ PyObject* a = PyList_GET_ITEM(heap, rightpos);
+ PyObject* b = PyList_GET_ITEM(heap, childpos);
+ Py_INCREF(a);
+ Py_INCREF(b);
+ cmp = cmp_lt(a, b);
+ Py_DECREF(a);
+ Py_DECREF(b);
if (cmp == -1) {
Py_DECREF(newitem);
return -1;
--
2.40.1

90
debian/patches/CVE-2022-48565.diff vendored Normal file
View File

@@ -0,0 +1,90 @@
From 05ee790f4d1cd8725a90b54268fc1dfe5b4d1fa2 Mon Sep 17 00:00:00 2001
From: Ronald Oussoren <ronaldoussoren@mac.com>
Date: Mon, 19 Oct 2020 20:13:49 +0200
Subject: [PATCH] bpo-42051: Reject XML entity declarations in plist files
(#22760)
---
Lib/plistlib.py | 7 +++++++
Lib/test/test_plistlib.py | 18 ++++++++++++++++++
.../2020-10-19-10-56-27.bpo-42051.EU_B7u.rst | 3 +++
3 files changed, 28 insertions(+)
create mode 100644 Misc/NEWS.d/next/Security/2020-10-19-10-56-27.bpo-42051.EU_B7u.rst
Backport:
* Drop Misc/NEWS.d
* plistlib.py:
* Handle cAmElCaSe vs under_scores
* self.parser vs parser
* Degrade InvalidFileException to ValueError
* test_plistlib.py:
* Update hunk context
* Drop b"" prefix
* Degrade InvalidFileException to ValueError
* Adapt parser invocation to older API
* Reimplement assertRaisesRegexp
diff --git a/Lib/plistlib.py b/Lib/plistlib.py
index aff5fe36ca..ba7ac19364 100644
--- a/Lib/plistlib.py
+++ b/Lib/plistlib.py
@@ -173,9 +173,16 @@ def parse(self, fileobj):
parser.StartElementHandler = self.handleBeginElement
parser.EndElementHandler = self.handleEndElement
parser.CharacterDataHandler = self.handleData
+ parser.EntityDeclHandler = self.handleEntityDecl
parser.ParseFile(fileobj)
return self.root
+ def handleEntityDecl(self, entity_name, is_parameter_entity, value, base, system_id, public_id, notation_name):
+ # Reject plist files with entity declarations to avoid XML vulnerabilies in expat.
+ # Regular plist files don't contain those declerations, and Apple's plutil tool does not
+ # accept them either.
+ raise ValueError("XML entity declarations are not supported in plist files")
+
def handleBeginElement(self, element, attrs):
self.data = []
handler = getattr(self, "begin_" + element, None)
diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py
index e5c9b5b6b2..cb071da1f3 100644
--- a/Lib/test/test_plistlib.py
+++ b/Lib/test/test_plistlib.py
@@ -106,6 +106,19 @@
</plist>
""".replace(" " * 8, "\t") # Apple as well as plistlib.py output hard tabs
+XML_PLIST_WITH_ENTITY='''\
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" [
+ <!ENTITY entity "replacement text">
+ ]>
+<plist version="1.0">
+ <dict>
+ <key>A</key>
+ <string>&entity;</string>
+ </dict>
+</plist>
+'''
+
class TestPlistlib(unittest.TestCase):
@@ -524,6 +537,15 @@ def test_modified_uid_huge(self):
self.assertEqual(test1, result1)
self.assertEqual(test2, result2)
+ def test_xml_plist_with_entity_decl(self):
+ try:
+ plistlib.readPlistFromString(XML_PLIST_WITH_ENTITY)
+ except ValueError as e:
+ self.assertIn("XML entity declarations are not supported",
+ e.message)
+ else:
+ self.fail("expected ValueError to be raised")
+
def test_main():
test_support.run_unittest(TestPlistlib)
--
2.40.1

40
debian/patches/CVE-2022-48566.diff vendored Normal file
View File

@@ -0,0 +1,40 @@
From c1bbca5b004b3f74d240ef8a76ff445cc1a27efb Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Sat, 21 Nov 2020 01:18:41 -0800
Subject: [PATCH] bpo-40791: Make compare_digest more constant-time. (GH-20444)
* bpo-40791: Make compare_digest more constant-time.
The existing volatile `left`/`right` pointers guarantee that the reads will all occur, but does not guarantee that they will be _used_. So a compiler can still short-circuit the loop, saving e.g. the overhead of doing the xors and especially the overhead of the data dependency between `result` and the reads. That would change performance depending on where the first unequal byte occurs. This change removes that optimization.
(This is change GH-1 from https://bugs.python.org/issue40791 .)
(cherry picked from commit 31729366e2bc09632e78f3896dbce0ae64914f28)
Co-authored-by: Devin Jeanpierre <jeanpierreda@google.com>
---
.../next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst | 1 +
Modules/_operator.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst
Backport:
* Drop Misc/NEWS.d
* _operator.c -> operator.c
diff --git a/Modules/_operator.c b/Modules/_operator.c
index 8a54829e5b..6f8f68f459 100644
--- a/Modules/operator.c
+++ b/Modules/operator.c
@@ -735,7 +735,7 @@ _tscmp(const unsigned char *a, const unsigned char *b,
volatile const unsigned char *left;
volatile const unsigned char *right;
Py_ssize_t i;
- unsigned char result;
+ volatile unsigned char result;
/* loop count depends on length of b */
length = len_b;
--
2.40.1

264
debian/patches/CVE-2023-24329.diff vendored Normal file
View File

@@ -0,0 +1,264 @@
From 439b9cfaf43080e91c4ad69f312f21fa098befc7 Mon Sep 17 00:00:00 2001
From: Ben Kallus <49924171+kenballus@users.noreply.github.com>
Date: Sun, 13 Nov 2022 18:25:55 +0000
Subject: [PATCH] gh-99418: Make urllib.parse.urlparse enforce that a scheme
must begin with an alphabetical ASCII character. (#99421)
Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.
RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`
The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
---
Lib/test/test_urlparse.py | 18 ++++++++++++++++++
Lib/urllib/parse.py | 2 +-
...22-11-12-15-45-51.gh-issue-99418.FxfAXS.rst | 2 ++
3 files changed, 21 insertions(+), 1 deletion(-)
create mode 100644 Misc/NEWS.d/next/Library/2022-11-12-15-45-51.gh-issue-99418.FxfAXS.rst
From 2f630e1ce18ad2e07428296532a68b11dc66ad10 Mon Sep 17 00:00:00 2001
From: Illia Volochii <illia.volochii@gmail.com>
Date: Wed, 17 May 2023 11:49:20 +0300
Subject: [PATCH] gh-102153: Start stripping C0 control and space chars in
`urlsplit` (#102508)
`urllib.parse.urlsplit` has already been respecting the WHATWG spec a bit #25595.
This adds more sanitizing to respect the "Remove any leading C0 control or space from input" [rule](https://url.spec.whatwg.org/#url-parsing:~:text=Remove%20any%20leading%20and%20trailing%20C0%20control%20or%20space%20from%20input.) in response to [CVE-2023-24329](https://nvd.nist.gov/vuln/detail/CVE-2023-24329).
---------
Co-authored-by: Gregory P. Smith [Google] <greg@krypto.org>
---
Doc/library/urllib.parse.rst | 46 +++++++++++++-
Lib/test/test_urlparse.py | 61 ++++++++++++++++++-
Lib/urllib/parse.py | 12 ++++
...-03-07-20-59-17.gh-issue-102153.14CLSZ.rst | 3 +
4 files changed, 119 insertions(+), 3 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2023-03-07-20-59-17.gh-issue-102153.14CLSZ.rst
Backport:
* Drop Misc/NEWS.d
* urllib.parse -> urlparse
* Update hunk context
* Implement str.isascii
* test_urlparse.py:
* Various str vs bytes issues
* Drop hunk in test_attributes_bad_port
* Avoid using TestCase.subTest
* Don't use non-ascii in source
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -654,6 +654,65 @@ def test_urlsplit_remove_unsafe_bytes(self):
self.assertEqual(p.scheme, "http")
self.assertEqual(p.geturl(), "http://www.python.org/javascript:alert('msg')/?query=something#fragment")
+ def test_urlsplit_strip_url(self):
+ noise = "".join(map(chr, range(0, 0x20 + 1)))
+ base_url = "http://User:Pass@www.python.org:080/doc/?query=yes#frag"
+
+ url = (noise + base_url).decode("utf8")
+ p = urlparse.urlsplit(url)
+ self.assertEqual(p.scheme, u"http")
+ self.assertEqual(p.netloc, u"User:Pass@www.python.org:080")
+ self.assertEqual(p.path, u"/doc/")
+ self.assertEqual(p.query, u"query=yes")
+ self.assertEqual(p.fragment, u"frag")
+ self.assertEqual(p.username, u"User")
+ self.assertEqual(p.password, u"Pass")
+ self.assertEqual(p.hostname, u"www.python.org")
+ self.assertEqual(p.port, 80)
+ self.assertEqual(p.geturl(), base_url.decode("utf8"))
+
+ url = noise + base_url
+ p = urlparse.urlsplit(url)
+ self.assertEqual(p.scheme, b"http")
+ self.assertEqual(p.netloc, b"User:Pass@www.python.org:080")
+ self.assertEqual(p.path, b"/doc/")
+ self.assertEqual(p.query, b"query=yes")
+ self.assertEqual(p.fragment, b"frag")
+ self.assertEqual(p.username, b"User")
+ self.assertEqual(p.password, b"Pass")
+ self.assertEqual(p.hostname, b"www.python.org")
+ self.assertEqual(p.port, 80)
+ self.assertEqual(p.geturl(), base_url)
+
+ # Test that trailing space is preserved as some applications rely on
+ # this within query strings.
+ query_spaces_url = "https://www.python.org:88/doc/?query= "
+ p = urlparse.urlsplit(noise + query_spaces_url)
+ self.assertEqual(p.scheme, "https")
+ self.assertEqual(p.netloc, "www.python.org:88")
+ self.assertEqual(p.path, "/doc/")
+ self.assertEqual(p.query, "query= ")
+ self.assertEqual(p.port, 88)
+ self.assertEqual(p.geturl(), query_spaces_url)
+
+ p = urlparse.urlsplit("www.pypi.org ")
+ # That "hostname" gets considered a "path" due to the
+ # trailing space and our existing logic... YUCK...
+ # and re-assembles via geturl aka unurlsplit into the original.
+ # django.core.validators.URLValidator (at least through v3.2) relies on
+ # this, for better or worse, to catch it in a ValidationError via its
+ # regular expressions.
+ # Here we test the basic round trip concept of such a trailing space.
+ self.assertEqual(urlparse.urlunsplit(p), "www.pypi.org ")
+
+ # with scheme as cache-key
+ url = "//www.python.org/"
+ scheme = noise + "https" + noise
+ for _ in range(2):
+ p = urlparse.urlsplit(url, scheme=scheme)
+ self.assertEqual(p.scheme, "https")
+ self.assertEqual(p.geturl(), "https://www.python.org/")
+
def test_attributes_bad_port(self):
"""Check handling of non-integer ports."""
p = urlparse.urlsplit("http://www.example.net:foo")
@@ -668,6 +668,23 @@ def test_attributes_bad_port(self):
self.assertEqual(p.netloc, "www.example.net:foo")
self.assertRaises(ValueError, lambda: p.port)
+ def test_attributes_bad_scheme(self):
+ """Check handling of invalid schemes."""
+ for bytes in (False, True):
+ for parse in (urlparse.urlsplit, urlparse.urlparse):
+ for scheme in (u".", u"+", u"-", u"0", u"http&", u"\xe0http"):
+ url = scheme + u"://www.example.net"
+ if bytes:
+ if all(ord(c) < 128 for c in url):
+ url = url.encode("ascii")
+ else:
+ continue
+ p = parse(url)
+ if bytes:
+ self.assertEqual(p.scheme, b"")
+ else:
+ self.assertEqual(p.scheme, u"")
+
def test_attributes_without_netloc(self):
# This example is straight from RFC 3261. It looks like it
# should allow the username, hostname, and port to be filled
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index 9a3102afd6..4f6867accb 100644
--- a/Lib/urlparse.py
+++ b/Lib/urlparse.py
@@ -25,6 +25,10 @@
scenarios for parsing, and for backward compatibility purposes, some
parsing quirks from older RFCs are retained. The testcases in
test_urlparse.py provides a good indicator of parsing behavior.
+
+The WHATWG URL Parser spec should also be considered. We are not compliant with
+it either due to existing user code API behavior expectations (Hyrum's Law).
+It serves as a useful guide when making changes.
"""
@@ -80,6 +84,10 @@
'0123456789'
'+-.')
+# Leading and trailing C0 control and space to be stripped per WHATWG spec.
+# == "".join([chr(i) for i in range(0, 0x20 + 1)])
+_WHATWG_C0_CONTROL_OR_SPACE = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f '
+
# Unsafe bytes to be removed per WHATWG spec
_UNSAFE_URL_BYTES_TO_REMOVE = ['\t', '\r', '\n']
@@ -464,9 +472,13 @@ def urlsplit(url, scheme='', allow_fragments=True):
return cached
if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth
clear_cache()
+ # Only lstrip url as some applications rely on preserving trailing space.
+ # (https://url.spec.whatwg.org/#concept-basic-url-parser would strip both)
+ url = url.lstrip(_WHATWG_C0_CONTROL_OR_SPACE)
+ scheme = scheme.strip(_WHATWG_C0_CONTROL_OR_SPACE)
netloc = query = fragment = ''
i = url.find(':')
- if i > 0:
+ if i > 0 and ord(url[0]) < 128 and url[0].isalpha():
if url[:i] == 'http': # optimize the common case
scheme = url[:i].lower()
url = url[i+1:]
diff --git a/Doc/library/urllib.parse.rst b/Doc/library/urllib.parse.rst
index 96b3965107..5a9a53f83d 100644
--- a/Doc/library/urlparse.rst
+++ b/Doc/library/urlparse.rst
@@ -159,6 +159,11 @@ or on combining URL components into a URL string.
decomposed before parsing, or is not a Unicode string, no error will be
raised.
+ .. warning::
+
+ :func:`urlparse` does not perform validation. See :ref:`URL parsing
+ security <url-parsing-security>` for details.
+
.. versionchanged:: 2.5
Added attributes to return value.
@@ -324,6 +328,15 @@ or on combining URL components into a URL string.
Following the `WHATWG spec`_ that updates RFC 3986, ASCII newline
``\n``, ``\r`` and tab ``\t`` characters are stripped from the URL.
+ Following some of the `WHATWG spec`_ that updates RFC 3986, leading C0
+ control and space characters are stripped from the URL. ``\n``,
+ ``\r`` and tab ``\t`` characters are removed from the URL at any position.
+
+ .. warning::
+
+ :func:`urlsplit` does not perform validation. See :ref:`URL parsing
+ security <url-parsing-security>` for details.
+
.. versionadded:: 2.2
.. versionchanged:: 2.5
@@ -338,6 +348,9 @@ or on combining URL components into a URL string.
.. versionchanged:: 2.7 security update
ASCII newline and tab characters are stripped from the URL.
+ .. versionchanged:: 2.7 security update
+ Leading WHATWG C0 control and space characters are stripped from the URL.
+
.. _WHATWG spec: https://url.spec.whatwg.org/#concept-basic-url-parser
.. function:: urlunsplit(parts)
@@ -414,6 +427,35 @@ or on combining URL components into a URL string.
.. _WHATWG: https://url.spec.whatwg.org/
+.. _url-parsing-security:
+
+URL parsing security
+--------------------
+
+The :func:`urlsplit` and :func:`urlparse` APIs do not perform **validation** of
+inputs. They may not raise errors on inputs that other applications consider
+invalid. They may also succeed on some inputs that might not be considered
+URLs elsewhere. Their purpose is for practical functionality rather than
+purity.
+
+Instead of raising an exception on unusual input, they may instead return some
+component parts as empty strings. Or components may contain more than perhaps
+they should.
+
+We recommend that users of these APIs where the values may be used anywhere
+with security implications code defensively. Do some verification within your
+code before trusting a returned component part. Does that ``scheme`` make
+sense? Is that a sensible ``path``? Is there anything strange about that
+``hostname``? etc.
+
+What constitutes a URL is not universally well defined. Different applications
+have different needs and desired constraints. For instance the living `WHATWG
+spec`_ describes what user facing web clients such as a web browser require.
+While :rfc:`3986` is more general. These functions incorporate some aspects of
+both, but cannot be claimed compliant with either. The APIs and existing user
+code with expectations on specific behaviors predate both standards leading us
+to be very cautious about making API behavior changes.
+
.. _urlparse-result-object:
Results of :func:`urlparse` and :func:`urlsplit`

321
debian/patches/CVE-2023-40217.diff vendored Normal file
View File

@@ -0,0 +1,321 @@
From 0cb0c238d520a8718e313b52cffc356a5a7561bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Langa?= <lukasz@langa.pl>
Date: Tue, 22 Aug 2023 19:53:15 +0200
Subject: [PATCH] gh-108310: Fix CVE-2023-40217: Check for & avoid the ssl
pre-close flaw (#108315)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Instances of `ssl.SSLSocket` were vulnerable to a bypass of the TLS handshake
and included protections (like certificate verification) and treating sent
unencrypted data as if it were post-handshake TLS encrypted data.
The vulnerability is caused when a socket is connected, data is sent by the
malicious peer and stored in a buffer, and then the malicious peer closes the
socket within a small timing window before the other peers TLS handshake can
begin. After this sequence of events the closed socket will not immediately
attempt a TLS handshake due to not being connected but will also allow the
buffered data to be read as if a successful TLS handshake had occurred.
Co-authored-by: Gregory P. Smith [Google LLC] <greg@krypto.org>
---
Lib/ssl.py | 31 ++-
Lib/test/test_ssl.py | 211 ++++++++++++++++++
...-08-22-17-39-12.gh-issue-108310.fVM3sg.rst | 7 +
3 files changed, 248 insertions(+), 1 deletion(-)
create mode 100644 Misc/NEWS.d/next/Security/2023-08-22-17-39-12.gh-issue-108310.fVM3sg.rst
From 64f99350351bc46e016b2286f36ba7cd669b79e3 Mon Sep 17 00:00:00 2001
From: Victor Stinner <vstinner@python.org>
Date: Wed, 23 Aug 2023 07:26:01 +0200
Subject: [PATCH] gh-108342: Break ref cycle in SSLSocket._create() exc
(#108344)
Explicitly break a reference cycle when SSLSocket._create() raises an
exception. Clear the variable storing the exception, since the
exception traceback contains the variables and so creates a reference
cycle.
This test leak was introduced by the test added for the fix of #108310.
---
Lib/ssl.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Backport:
* ssl.py:
* There is no socket.getblocking. In the connected case, we do not retain the
timeout, because #8524 was never fixed on Python 2.7. In the disconnected
case, we have to modify the timeout and therefore restore it.
* Cannot use self.recv in c'tor, because it would access self._sslobj
* socket.socket raises socket.error rather than OSError
* test_ssl.py:
* Merge imports
* Inline socket_helper.bind_port
* Delete non_linux_skip_if_other_okay_error: This backport is Linux-only
* socket.socket isn't a ContextManager yet
* http.client -> httplib
* Implement assertRaises
* Remove use of keyword-only arguments
* Do not use f"strings"
* Drop Misc/NEWS.d
diff --git a/Lib/ssl.py b/Lib/ssl.py
index 1d58737264..ff363c75e7 100644
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -994,6 +994,38 @@ def _create(cls, sock, server_side=False, do_handshake_on_connect=True,
if e.errno != errno.ENOTCONN:
raise
connected = False
+ sock_timeout = self.gettimeout()
+ self.settimeout(0)
+ try:
+ # We are not connected so this is not supposed to block, but
+ # testing revealed otherwise on macOS and Windows so we do
+ # the non-blocking dance regardless. Our raise when any data
+ # is found means consuming the data is harmless.
+ notconn_pre_handshake_data = self._sock.recv(1)
+ except socket_error as e:
+ # EINVAL occurs for recv(1) on non-connected on unix sockets.
+ if e.errno not in (errno.ENOTCONN, errno.EINVAL):
+ raise
+ notconn_pre_handshake_data = b''
+ self.settimeout(sock_timeout)
+ if notconn_pre_handshake_data:
+ # This prevents pending data sent to the socket before it was
+ # closed from escaping to the caller who could otherwise
+ # presume it came through a successful TLS connection.
+ reason = "Closed before TLS handshake with data in recv buffer."
+ notconn_pre_handshake_data_error = SSLError(e.errno, reason)
+ # Add the SSLError attributes that _ssl.c always adds.
+ notconn_pre_handshake_data_error.reason = reason
+ notconn_pre_handshake_data_error.library = None
+ try:
+ self.close()
+ except socket_error:
+ pass
+ try:
+ raise notconn_pre_handshake_data_error
+ finally:
+ # Explicitly break the reference cycle.
+ notconn_pre_handshake_data_error = None
else:
connected = True
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 6117ca3fdb..ad5377ec05 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -10,9 +10,11 @@
import asyncore
import socket
import select
+import struct
import time
import datetime
import gc
+import httplib
import os
import errno
import pprint
@@ -4659,5 +4662,196 @@ def sni_cb(sock, servername, ctx):
if _have_threads:
support.threading_cleanup(*thread_info)
+def set_socket_so_linger_on_with_zero_timeout(sock):
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
+
+
+class TestPreHandshakeClose(unittest.TestCase):
+ """Verify behavior of close sockets with received data before to the handshake.
+ """
+
+ class SingleConnectionTestServerThread(threading.Thread):
+
+ def __init__(self, name, call_after_accept):
+ self.call_after_accept = call_after_accept
+ self.received_data = b'' # set by .run()
+ self.wrap_error = None # set by .run()
+ self.listener = None # set by .start()
+ self.port = None # set by .start()
+ super().__init__(name=name)
+
+ def __enter__(self):
+ self.start()
+ return self
+
+ def __exit__(self, *args):
+ try:
+ if self.listener:
+ self.listener.close()
+ except OSError:
+ pass
+ self.join()
+ self.wrap_error = None # avoid dangling references
+
+ def start(self):
+ self.ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
+ self.ssl_ctx.verify_mode = ssl.CERT_REQUIRED
+ self.ssl_ctx.load_verify_locations(cafile=ONLYCERT)
+ self.ssl_ctx.load_cert_chain(certfile=ONLYCERT, keyfile=ONLYKEY)
+ self.listener = socket.socket()
+ self.listener.bind((None, 0))
+ self.port = self.listener.getsockname()[1]
+ self.listener.settimeout(2.0)
+ self.listener.listen(1)
+ super().start()
+
+ def run(self):
+ conn, address = self.listener.accept()
+ self.listener.close()
+ with conn:
+ if self.call_after_accept(conn):
+ return
+ try:
+ tls_socket = self.ssl_ctx.wrap_socket(conn, server_side=True)
+ except OSError as err: # ssl.SSLError inherits from OSError
+ self.wrap_error = err
+ else:
+ try:
+ self.received_data = tls_socket.recv(400)
+ except OSError:
+ pass # closed, protocol error, etc.
+
+ def test_preauth_data_to_tls_server(self):
+ server_accept_called = threading.Event()
+ ready_for_server_wrap_socket = threading.Event()
+
+ def call_after_accept(unused):
+ server_accept_called.set()
+ if not ready_for_server_wrap_socket.wait(2.0):
+ raise RuntimeError("wrap_socket event never set, test may fail.")
+ return False # Tell the server thread to continue.
+
+ server = self.SingleConnectionTestServerThread(
+ call_after_accept=call_after_accept,
+ name="preauth_data_to_tls_server")
+ self.enterContext(server) # starts it & unittest.TestCase stops it.
+
+ with closing(socket.socket()) as client:
+ client.connect(server.listener.getsockname())
+ # This forces an immediate connection close via RST on .close().
+ set_socket_so_linger_on_with_zero_timeout(client)
+ client.setblocking(False)
+
+ server_accept_called.wait()
+ client.send(b"DELETE /data HTTP/1.0\r\n\r\n")
+ client.close() # RST
+
+ ready_for_server_wrap_socket.set()
+ server.join()
+ wrap_error = server.wrap_error
+ self.assertEqual(b"", server.received_data)
+ self.assertIsInstance(wrap_error, OSError) # All platforms.
+ self.assertIsInstance(wrap_error, ssl.SSLError)
+ self.assertIn("before TLS handshake with data", wrap_error.args[1])
+ self.assertIn("before TLS handshake with data", wrap_error.reason)
+ self.assertNotEqual(0, wrap_error.args[0])
+ self.assertIsNone(wrap_error.library, msg="attr must exist")
+
+ def test_preauth_data_to_tls_client(self):
+ client_can_continue_with_wrap_socket = threading.Event()
+
+ def call_after_accept(conn_to_client):
+ # This forces an immediate connection close via RST on .close().
+ set_socket_so_linger_on_with_zero_timeout(conn_to_client)
+ conn_to_client.send(
+ b"HTTP/1.0 307 Temporary Redirect\r\n"
+ b"Location: https://example.com/someone-elses-server\r\n"
+ b"\r\n")
+ conn_to_client.close() # RST
+ client_can_continue_with_wrap_socket.set()
+ return True # Tell the server to stop.
+
+ server = self.SingleConnectionTestServerThread(
+ call_after_accept=call_after_accept,
+ name="preauth_data_to_tls_client")
+ self.enterContext(server) # starts it & unittest.TestCase stops it.
+ # Redundant; call_after_accept sets SO_LINGER on the accepted conn.
+ set_socket_so_linger_on_with_zero_timeout(server.listener)
+
+ with closing(socket.socket()) as client:
+ client.connect(server.listener.getsockname())
+ if not client_can_continue_with_wrap_socket.wait(2.0):
+ self.fail("test server took too long.")
+ ssl_ctx = ssl.create_default_context()
+ try:
+ tls_client = ssl_ctx.wrap_socket(
+ client, server_hostname="localhost")
+ except OSError as err: # SSLError inherits from OSError
+ wrap_error = err
+ received_data = b""
+ else:
+ wrap_error = None
+ received_data = tls_client.recv(400)
+ tls_client.close()
+
+ server.join()
+ self.assertEqual(b"", received_data)
+ self.assertIsInstance(wrap_error, OSError) # All platforms.
+ self.assertIsInstance(wrap_error, ssl.SSLError)
+ self.assertIn("before TLS handshake with data", wrap_error.args[1])
+ self.assertIn("before TLS handshake with data", wrap_error.reason)
+ self.assertNotEqual(0, wrap_error.args[0])
+ self.assertIsNone(wrap_error.library, msg="attr must exist")
+
+ def test_https_client_non_tls_response_ignored(self):
+
+ server_responding = threading.Event()
+
+ class SynchronizedHTTPSConnection(httplib.HTTPSConnection):
+ def connect(self):
+ httplib.HTTPConnection.connect(self)
+ # Wait for our fault injection server to have done its thing.
+ if not server_responding.wait(1.0) and support.verbose:
+ sys.stdout.write("server_responding event never set.")
+ self.sock = self._context.wrap_socket(
+ self.sock, server_hostname=self.host)
+
+ def call_after_accept(conn_to_client):
+ # This forces an immediate connection close via RST on .close().
+ set_socket_so_linger_on_with_zero_timeout(conn_to_client)
+ conn_to_client.send(
+ b"HTTP/1.0 402 Payment Required\r\n"
+ b"\r\n")
+ conn_to_client.close() # RST
+ server_responding.set()
+ return True # Tell the server to stop.
+
+ server = self.SingleConnectionTestServerThread(
+ call_after_accept=call_after_accept,
+ name="non_tls_http_RST_responder")
+ self.enterContext(server) # starts it & unittest.TestCase stops it.
+ # Redundant; call_after_accept sets SO_LINGER on the accepted conn.
+ set_socket_so_linger_on_with_zero_timeout(server.listener)
+
+ connection = SynchronizedHTTPSConnection(
+ "localhost",
+ port=server.port,
+ context=ssl.create_default_context(),
+ timeout=2.0,
+ )
+ # There are lots of reasons this raises as desired, long before this
+ # test was added. Sending the request requires a successful TLS wrapped
+ # socket; that fails if the connection is broken. It may seem pointless
+ # to test this. It serves as an illustration of something that we never
+ # want to happen... properly not happening.
+ try:
+ connection.request("HEAD", "/test", headers={"Host": "localhost"})
+ response = connection.getresponse()
+ except OSError:
+ pass
+ else:
+ self.fail("http request did not raise OSError")
+
+
if __name__ == "__main__":
test_main()
--
2.40.1

174
debian/patches/add-python-config-sh.diff vendored Normal file
View File

@@ -0,0 +1,174 @@
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -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
+ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+ sed -e "s,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g" < Misc/python-config.sh >python-config.sh
# Install the include files
INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
@@ -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
+ $(INSTALL_SCRIPT) python-config.sh $(DESTDIR)$(BINDIR)/python-config.sh
@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:"; \
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
@@ -56,3 +56,11 @@ for opt in opt_flags:
libs.extend(getvar('LINKFORSHARED').split())
print ' '.join(libs)
+ elif opt == '--extension-suffix':
+ print sysconfig.get_config_var('SO')
+
+ elif opt == '--abiflags':
+ print ''
+
+ elif opt == '--configdir':
+ print sysconfig.get_config_var('LIBPL')
--- /dev/null
+++ b/Misc/python-config.sh.in
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+exit_with_usage ()
+{
+ echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--configdir"
+ exit $1
+}
+
+if [ "$1" = "" ] ; then
+ exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+ local RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
+ if [ $(which readlink) ] ; then
+ RESULT=$(readlink -f "$RESULT")
+ fi
+ echo $RESULT
+}
+
+prefix_build="@prefix@"
+prefix_real=$(installed_prefix "$0")
+
+# Use sed to fix paths from their built to locations to their installed to locations.
+prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#")
+exec_prefix_build="@exec_prefix@"
+exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#")
+includedir=$(echo "@includedir@" | sed "s#$prefix_build#$prefix_real#")
+libdir=$(echo "@libdir@" | sed "s#$prefix_build#$prefix_real#")
+CFLAGS=$(echo "@CFLAGS@" | sed "s#$prefix_build#$prefix_real#")
+VERSION="@VERSION@"
+LIBM="@LIBM@"
+LIBC="@LIBC@"
+SYSLIBS="$LIBM $LIBC"
+ABIFLAGS="@DEBUG_EXT@"
+MULTIARCH="@MULTIARCH@"
+LIBS="-lpython${VERSION}${ABIFLAGS} @LIBS@ $SYSLIBS"
+BASECFLAGS="@BASECFLAGS@"
+LDLIBRARY="@LDLIBRARY@"
+LINKFORSHARED="@LINKFORSHARED@"
+OPT="@OPT@"
+PY_ENABLE_SHARED="@PY_ENABLE_SHARED@"
+LIBDEST=${prefix}/lib/python${VERSION}
+LIBPL=${LIBDEST}/config-${MULTIARCH}${ABIFLAGS}
+SO="${ABIFLAGS}.so"
+PYTHONFRAMEWORK="@PYTHONFRAMEWORK@"
+INCDIR="-I$includedir/python${VERSION}${ABIFLAGS}"
+PLATINCDIR="-I$includedir/$MULTIARCH/python${VERSION}${ABIFLAGS}"
+
+# Scan for --help or unknown argument.
+for ARG in $*
+do
+ case $ARG in
+ --help)
+ exit_with_usage 0
+ ;;
+ --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--configdir)
+ ;;
+ *)
+ exit_with_usage 1
+ ;;
+ esac
+done
+
+for ARG in $*
+do
+ case $ARG in
+ --prefix)
+ echo "$prefix"
+ ;;
+ --exec-prefix)
+ echo "$exec_prefix"
+ ;;
+ --includes)
+ echo "$INCDIR" "$PLATINCDIR"
+ ;;
+ --cflags)
+ echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
+ ;;
+ --libs)
+ echo "$LIBS"
+ ;;
+ --ldflags)
+ LINKFORSHAREDUSED=
+ if [ -z "$PYTHONFRAMEWORK" ] ; then
+ LINKFORSHAREDUSED=$LINKFORSHARED
+ fi
+ LIBPLUSED=
+ if [ "$PY_ENABLE_SHARED" = "0" ] ; then
+ LIBPLUSED="-L$LIBPL"
+ fi
+ echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED"
+ ;;
+ --extension-suffix)
+ echo "$SO"
+ ;;
+ --configdir)
+ echo "$LIBPL"
+ ;;
+esac
+done
--- a/configure.ac
+++ b/configure.ac
@@ -915,6 +915,7 @@ fi
# Other platforms follow
if test $enable_shared = "yes"; then
+ PY_ENABLE_SHARED=1
AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
case $ac_sys_system in
BeOS*)
@@ -975,6 +976,7 @@ if test $enable_shared = "yes"; then
esac
else # shared is disabled
+ PY_ENABLE_SHARED=0
case $ac_sys_system in
CYGWIN*)
BLDLIBRARY='$(LIBRARY)'
@@ -982,6 +984,7 @@ else # shared is disabled
;;
esac
fi
+AC_SUBST(PY_ENABLE_SHARED)
if test "$cross_compiling" = yes; then
RUNSHARED=
@@ -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)
+AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
AC_OUTPUT

34
debian/patches/atomic-pyc-rename.diff vendored Normal file
View File

@@ -0,0 +1,34 @@
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -120,13 +120,24 @@
return
if cfile is None:
cfile = file + (__debug__ and 'c' or 'o')
- with open(cfile, 'wb') as fc:
- fc.write('\0\0\0\0')
- wr_long(fc, timestamp)
- marshal.dump(codeobject, fc)
- fc.flush()
- fc.seek(0, 0)
- fc.write(MAGIC)
+ # Atomically write the pyc/pyo file. Issue #13146.
+ # id() is used to generate a pseudo-random filename.
+ path_tmp = '{}.{}'.format(cfile, id(cfile))
+ try:
+ with open(path_tmp, 'wb') as fc:
+ fc.write('\0\0\0\0')
+ wr_long(fc, timestamp)
+ marshal.dump(codeobject, fc)
+ fc.flush()
+ fc.seek(0, 0)
+ fc.write(MAGIC)
+ os.rename(path_tmp, cfile)
+ except OSError:
+ try:
+ os.unlink(path_tmp)
+ except OSError:
+ pass
+ raise
def main(args=None):
"""Compile several source files.

View File

@@ -0,0 +1,25 @@
# DP: the wininst-* files cannot be built within Debian, needing a
# DP: zlib mingw build, which the zlib maintainer isn't going to provide.
--- a/Lib/distutils/command/bdist_wininst.py
+++ b/Lib/distutils/command/bdist_wininst.py
@@ -14,6 +14,7 @@
from distutils.core import Command
from distutils.dir_util import remove_tree
from distutils.errors import DistutilsOptionError, DistutilsPlatformError
+from distutils.errors import DistutilsFileError
from distutils import log
from distutils.util import get_platform
@@ -360,7 +361,10 @@
sfix = ''
filename = os.path.join(directory, "wininst-%.1f%s.exe" % (bv, sfix))
- f = open(filename, "rb")
+ try:
+ f = open(filename, "rb")
+ except IOError, msg:
+ raise DistutilsFileError, str(msg) + ', %s not included in the Debian packages.' % filename
try:
return f.read()
finally:

19
debian/patches/bsddb-libpath.diff vendored Normal file
View File

@@ -0,0 +1,19 @@
# DP: Don't add the bsddb multilib path, if already in the standard lib path
--- a/setup.py
+++ b/setup.py
@@ -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
- db_incs = [db_incdir]
+ # only add db_incdir/dblib_dir if not in the standard paths
+ if db_incdir in inc_dirs:
+ db_incs = []
+ else:
+ db_incs = [db_incdir]
+ if dblib_dir[0] in lib_dirs:
+ dblib_dir = []
dblibs = [dblib]
# We add the runtime_library_dirs argument because the
# BerkeleyDB lib we're linking against often isn't in the

22
debian/patches/build-hash.diff vendored Normal file
View File

@@ -0,0 +1,22 @@
# DP: Always build the _md5, _sha1, _sha256 and _sha512 extension modules.
--- a/setup.py
+++ b/setup.py
@@ -920,7 +920,7 @@ class PyBuildExt(build_ext):
print ("warning: openssl 0x%08x is too old for _hashlib" %
openssl_ver)
missing.append('_hashlib')
- if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
+ if True or COMPILED_WITH_PYDEBUG or not have_usable_openssl:
# The _sha module implements the SHA1 hash algorithm.
exts.append( Extension('_sha', ['shamodule.c']) )
# The _md5 module implements the RSA Data Security, Inc. MD5
@@ -931,7 +931,7 @@ class PyBuildExt(build_ext):
depends = ['md5.h']) )
min_sha2_openssl_ver = 0x00908000
- if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
+ if True or COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
# OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
exts.append( Extension('_sha256', ['sha256module.c']) )
exts.append( Extension('_sha512', ['sha512module.c']) )

24
debian/patches/build-libpython.diff vendored Normal file
View File

@@ -0,0 +1,24 @@
# DP: Don't include object files twice in libpython.
Index: b/Makefile.pre.in
===================================================================
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -400,7 +400,7 @@ LIBRARY_OBJS= \
$(PYTHON_OBJS) \
$(MODULE_OBJS) \
$(SIGNAL_OBJS) \
- $(MODOBJS)
+ $(sort $(MODOBJS))
#########################################################################
# Rules
@@ -542,7 +542,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
$(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
$(AR) $(ARFLAGS) $@ $(PYTHON_OBJS)
$(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
- $(AR) $(ARFLAGS) $@ $(MODOBJS)
+ $(AR) $(ARFLAGS) $@ $(sort $(MODOBJS))
$(RANLIB) $@
libpython$(VERSION).so: $(LIBRARY_OBJS)

39
debian/patches/cthreads.diff vendored Normal file
View File

@@ -0,0 +1,39 @@
# DP: Remove cthreads detection
--- a/configure.ac
+++ b/configure.ac
@@ -2154,7 +2154,6 @@
# Templates for things AC_DEFINEd more than once.
# For a single AC_DEFINE, no template is needed.
-AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
AH_TEMPLATE(_REENTRANT,
[Define to force use of thread-safe errno, h_errno, and other functions])
AH_TEMPLATE(WITH_THREAD,
@@ -2236,17 +2235,6 @@
AC_MSG_RESULT($unistd_defines_pthreads)
AC_DEFINE(_REENTRANT)
- AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
- AC_DEFINE(C_THREADS)
- AC_DEFINE(HURD_C_THREADS, 1,
- [Define if you are using Mach cthreads directly under /include])
- LIBS="$LIBS -lthreads"
- THREADOBJ="Python/thread.o"],[
- AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
- AC_DEFINE(C_THREADS)
- AC_DEFINE(MACH_C_THREADS, 1,
- [Define if you are using Mach cthreads under mach /])
- THREADOBJ="Python/thread.o"],[
AC_MSG_CHECKING(for --with-pth)
AC_ARG_WITH([pth],
AS_HELP_STRING([--with-pth], [use GNU pth threading libraries]),
@@ -2301,7 +2289,7 @@
LIBS="$LIBS -lcma"
THREADOBJ="Python/thread.o"],[
USE_THREAD_MODULE="#"])
- ])])])])])])])])])])
+ ])])])])])])])])
AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
LIBS="$LIBS -lmpc"

34
debian/patches/ctypes-arm.diff vendored Normal file
View File

@@ -0,0 +1,34 @@
Index: b/Lib/ctypes/util.py
===================================================================
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -236,16 +236,27 @@ elif os.name == "posix":
def _findSoname_ldconfig(name):
import struct
+ # XXX this code assumes that we know all unames and that a single
+ # ABI is supported per uname; instead we should find what the
+ # ABI is (e.g. check ABI of current process) or simply ask libc
+ # to load the library for us
+ uname = os.uname()[4]
+ # ARM has a variety of unames, e.g. armv7l
+ if uname.startswith("arm"):
+ uname = "arm"
if struct.calcsize('l') == 4:
- machine = os.uname()[4] + '-32'
+ machine = uname + '-32'
else:
- machine = os.uname()[4] + '-64'
+ machine = uname + '-64'
mach_map = {
'x86_64-64': 'libc6,x86-64',
'ppc64-64': 'libc6,64bit',
'sparc64-64': 'libc6,64bit',
's390x-64': 'libc6,64bit',
'ia64-64': 'libc6,IA-64',
+ # this actually breaks on biarch or multiarch as the first
+ # library wins; uname doesn't tell us which ABI we're using
+ 'arm-32': 'libc6(,hard-float)?',
}
abi_type = mach_map.get(machine, 'libc6')

73
debian/patches/deb-locations.diff vendored Normal file
View File

@@ -0,0 +1,73 @@
# 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 @@ ManPage = ReadonlyManPage
def test():
import os
import sys
- # XXX This directory may be different on your system
- MANDIR = '/usr/local/man/mann'
+ # XXX This directory may be different on your system,
+ # it is here set for Debian GNU/Linux.
+ MANDIR = '/usr/share/man'
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 @@ import re
from Tkinter import *
from ManPage import ManPage
-MANNDIRLIST = ['/depot/sundry/man/mann','/usr/local/man/mann']
-MAN3DIRLIST = ['/depot/sundry/man/man3','/usr/local/man/man3']
+MANNDIRLIST = ['/depot/sundry/man/mann','/usr/share/man/mann']
+MAN3DIRLIST = ['/depot/sundry/man/man3','/usr/share/man/man3']
foundmanndir = 0
for dir in MANNDIRLIST:
Index: b/Misc/python.man
===================================================================
--- a/Misc/python.man
+++ b/Misc/python.man
@@ -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.
-The default for both is \fI/usr/local\fP.
+On Debian GNU/{Hurd,Linux} the default for both is \fI/usr\fP.
.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 @@ 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
-RCSBINDIR = "/usr/local/bin/" # Directory containing RCS commands
+RCSBINDIR = "/usr/bin/" # Directory containing RCS commands
# (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 @@ 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
-web tree is located at /usr/local/etc/httpd/htdpcs (the default for
+web tree is located at /var/www, which is the default for Debian
+GNU/Linux. Other systems use /usr/local/etc/httpd/htdocs (the default for
the NCSA HTTP daemon and probably others).
Report printed:

19
debian/patches/deb-setup.diff vendored Normal file
View File

@@ -0,0 +1,19 @@
# DP: Don't include /usr/local/include and /usr/local/lib as gcc search paths
--- a/setup.py
+++ b/setup.py
@@ -500,10 +500,10 @@ class PyBuildExt(build_ext):
os.unlink(tmpfile)
def detect_modules(self):
- # Ensure that /usr/local is always used
- if not cross_compiling:
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ # On Debian /usr/local is always used, so we don't include it twice
+ #if not cross_compiling:
+ # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+ # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
if cross_compiling:
self.add_gcc_paths()
self.add_multiarch_paths()

228
debian/patches/debug-build.diff vendored Normal file
View File

@@ -0,0 +1,228 @@
# DP: Change the interpreter to build and install python extensions
# DP: built with the python-dbg interpreter with a different name into
# DP: the same path (by appending `_d' to the extension name).
--- a/Lib/distutils/command/build.py
+++ b/Lib/distutils/command/build.py
@@ -91,7 +91,8 @@ class build(Command):
# 'lib.<plat>' under the base build directory. We only use one of
# them for a given distribution, though --
if self.build_purelib is None:
- self.build_purelib = os.path.join(self.build_base, 'lib')
+ self.build_purelib = os.path.join(self.build_base,
+ 'lib' + plat_specifier)
if self.build_platlib is None:
self.build_platlib = os.path.join(self.build_base,
'lib' + plat_specifier)
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -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
- return os.path.join(prefix, "include", "python" + get_python_version())
+ return os.path.join(prefix, "include", "python" + get_python_version())+(sys.pydebug and "_d" or "")
elif os.name == "nt":
return os.path.join(prefix, "include")
elif os.name == "os2":
@@ -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)
- return os.path.join(lib_dir, "config", "Makefile")
+ return os.path.join(lib_dir, "config"+(sys.pydebug and "_d" or ""), "Makefile")
def parse_config_h(fp, g=None):
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -338,7 +338,7 @@ def get_makefile_filename():
"""Return the path of the Makefile."""
if _PYTHON_BUILD:
return os.path.join(_PROJECT_BASE, "Makefile")
- return os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config", "Makefile")
+ return os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config" + (sys.pydebug and "_d" or ""), "Makefile")
# Issue #22199: retain undocumented private name for compatibility
_get_makefile_filename = get_makefile_filename
@@ -470,7 +470,7 @@ def get_config_h_filename():
else:
inc_dir = _PROJECT_BASE
else:
- inc_dir = get_path('platinclude').replace("/usr/local","/usr",1)
+ inc_dir = get_path('platinclude').replace("/usr/local","/usr",1)+(sys.pydebug and "_d" or "")
return os.path.join(inc_dir, 'pyconfig.h')
def get_scheme_names():
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -121,8 +121,8 @@ SCRIPTDIR= $(prefix)/lib
# Detailed destination directories
BINLIBDEST= $(LIBDIR)/python$(VERSION)
LIBDEST= $(SCRIPTDIR)/python$(VERSION)
-INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)
-CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION)
+INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)$(DEBUG_EXT)
+CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION)$(DEBUG_EXT)
LIBP= $(LIBDIR)/python$(VERSION)
# Symbols used for using shared libraries
@@ -136,6 +136,8 @@ DESTSHARED= $(BINLIBDEST)/lib-dynload
EXE= @EXEEXT@
BUILDEXE= @BUILDEXEEXT@
+DEBUG_EXT= @DEBUG_EXT@
+
# Short name and location for Mac OS X Python framework
UNIVERSALSDK=@UNIVERSALSDK@
PYTHONFRAMEWORK= @PYTHONFRAMEWORK@
@@ -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) $(CCSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
$(LN) -f $(INSTSONAME) $@; \
@@ -1207,8 +1209,8 @@ inclinstall:
$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
# Install the library and miscellaneous stuff needed for extending/embedding
-# This goes into $(exec_prefix)
-LIBPL= $(LIBP)/config
+# This goes into $(exec_prefix)$(DEBUG_EXT)
+LIBPL= $(LIBP)/config$(DEBUG_EXT)
# pkgconfig directory
LIBPC= $(LIBDIR)/pkgconfig
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
@@ -44,7 +44,7 @@ for opt in opt_flags:
print ' '.join(flags)
elif opt in ('--libs', '--ldflags'):
- libs = ['-lpython' + pyver]
+ libs = ['-lpython' + pyver + (sys.pydebug and "_d" or "")]
libs += getvar('LIBS').split()
libs += getvar('SYSLIBS').split()
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -46,6 +46,10 @@ const struct filedescr _PyImport_DynLoad
{"module.exe", "rb", C_EXTENSION},
{"MODULE.EXE", "rb", C_EXTENSION},
#else
+#ifdef Py_DEBUG
+ {"_d.so", "rb", C_EXTENSION},
+ {"module_d.so", "rb", C_EXTENSION},
+#endif
{".so", "rb", C_EXTENSION},
{"module.so", "rb", C_EXTENSION},
#endif
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1524,6 +1524,12 @@ _PySys_Init(void)
PyString_FromString("legacy"));
#endif
+#ifdef Py_DEBUG
+ PyDict_SetItemString(sysdict, "pydebug", Py_True);
+#else
+ PyDict_SetItemString(sysdict, "pydebug", Py_False);
+#endif
+
#undef SET_SYS_FROM_STRING
if (PyErr_Occurred())
return NULL;
--- a/configure.ac
+++ b/configure.ac
@@ -777,7 +777,7 @@ AC_SUBST(LIBRARY)
AC_MSG_CHECKING(LIBRARY)
if test -z "$LIBRARY"
then
- LIBRARY='libpython$(VERSION).a'
+ LIBRARY='libpython$(VERSION)$(DEBUG_EXT).a'
fi
AC_MSG_RESULT($LIBRARY)
@@ -923,8 +923,8 @@ if test $enable_shared = "yes"; then
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
- LDLIBRARY='libpython$(VERSION).so'
- BLDLIBRARY='-L. -lpython$(VERSION)'
+ LDLIBRARY='libpython$(VERSION)$(DEBUG_EXT).so'
+ BLDLIBRARY='-L. -lpython$(VERSION)$(DEBUG_EXT)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
case $ac_sys_system in
FreeBSD*)
@@ -1050,6 +1050,12 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
fi],
[AC_MSG_RESULT(no)])
+if test "$Py_DEBUG" = 'true'
+then
+ DEBUG_EXT=_d
+fi
+AC_SUBST(DEBUG_EXT)
+
# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
# merged with this chunk of code?
@@ -2129,7 +2135,7 @@ then
esac
;;
CYGWIN*) SO=.dll;;
- *) SO=.so;;
+ *) SO=$DEBUG_EXT.so;;
esac
else
# this might also be a termcap variable, see #610332
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -295,8 +295,8 @@ class BuildExtTestCase(support.TempdirMa
finally:
os.chdir(old_wd)
self.assertTrue(os.path.exists(so_file))
- self.assertEqual(os.path.splitext(so_file)[-1],
- sysconfig.get_config_var('SO'))
+ so_ext = sysconfig.get_config_var('SO')
+ self.assertEqual(so_file[len(so_file)-len(so_ext):], so_ext)
so_dir = os.path.dirname(so_file)
self.assertEqual(so_dir, other_tmp_dir)
cmd.compiler = None
@@ -304,8 +304,7 @@ class BuildExtTestCase(support.TempdirMa
cmd.run()
so_file = cmd.get_outputs()[0]
self.assertTrue(os.path.exists(so_file))
- self.assertEqual(os.path.splitext(so_file)[-1],
- sysconfig.get_config_var('SO'))
+ self.assertEqual(so_file[len(so_file)-len(so_ext):], so_ext)
so_dir = os.path.dirname(so_file)
self.assertEqual(so_dir, cmd.build_lib)
--- a/Lib/distutils/tests/test_build.py
+++ b/Lib/distutils/tests/test_build.py
@@ -20,10 +20,6 @@ class BuildTestCase(support.TempdirManag
# if not specified, plat_name gets the current platform
self.assertEqual(cmd.plat_name, get_platform())
- # build_purelib is build + lib
- wanted = os.path.join(cmd.build_base, 'lib')
- self.assertEqual(cmd.build_purelib, wanted)
-
# build_platlib is 'build/lib.platform-x.x[-pydebug]'
# examples:
# build/lib.macosx-10.3-i386-2.7
@@ -34,6 +30,10 @@ class BuildTestCase(support.TempdirManag
wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
self.assertEqual(cmd.build_platlib, wanted)
+ # build_purelib is build + lib
+ wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
+ self.assertEqual(cmd.build_purelib, wanted)
+
# by default, build_lib = build_purelib
self.assertEqual(cmd.build_lib, cmd.build_purelib)

28
debian/patches/disable-sem-check.diff vendored Normal file
View File

@@ -0,0 +1,28 @@
# DP: Assume working semaphores on Linux, don't rely on running kernel for the check.
--- a/configure.ac
+++ b/configure.ac
@@ -4061,6 +4061,11 @@ int main(void) {
[ac_cv_posix_semaphores_enabled=no],
[ac_cv_posix_semaphores_enabled=yes])
)
+case $ac_sys_system in
+ Linux*)
+ # assume enabled, see https://launchpad.net/bugs/630511
+ ac_cv_posix_semaphores_enabled=yes
+esac
AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
if test $ac_cv_posix_semaphores_enabled = no
then
@@ -4097,6 +4102,11 @@ int main(void){
[ac_cv_broken_sem_getvalue=yes],
[ac_cv_broken_sem_getvalue=yes])
)
+case $ac_sys_system in
+ Linux*)
+ # assume enabled, see https://launchpad.net/bugs/630511
+ ac_cv_broken_sem_getvalue=no
+esac
AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
if test $ac_cv_broken_sem_getvalue = yes
then

13
debian/patches/disable-utimes.diff vendored Normal file
View File

@@ -0,0 +1,13 @@
# DP: disable check for utimes function, which is broken in glibc-2.3.2
--- a/configure.ac
+++ b/configure.ac
@@ -2698,7 +2698,7 @@
setsid setpgid setpgrp setuid setvbuf snprintf \
sigaction siginterrupt sigrelse strftime \
sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
- truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
+ truncate uname unsetenv waitpid wait3 wait4 wcscoll _getpty)
# For some functions, having a definition is not sufficient, since
# we want to take their address.

View File

@@ -0,0 +1,380 @@
# DP: distutils: Add an option --install-layout=deb, which
# DP: - installs into $prefix/dist-packages instead of $prefix/site-packages.
# DP: - doesn't encode the python version into the egg name.
--- a/Doc/install/index.rst
+++ b/Doc/install/index.rst
@@ -255,6 +255,8 @@ is pure Python or contains extensions ("
+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
| Platform | Standard installation location | Default value | Notes |
+=================+=====================================================+==================================================+=======+
+| Debian/Ubuntu | :file:`{prefix}/lib/python{X.Y}/dist-packages` | :file:`/usr/local/lib/python{X.Y}/dist-packages` | \(0) |
++-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
| 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) |
@@ -264,6 +266,14 @@ is pure Python or contains extensions ("
Notes:
+(0)
+ Starting with Python-2.6 Debian/Ubuntu uses for the Python which comes within
+ the Linux distribution a non-default name for the installation directory. This
+ is to avoid overwriting of the python modules which come with the distribution,
+ which unfortunately is the upstream behaviour of the installation tools. The
+ non-default name in :file:`/usr/local` is used not to overwrite a local python
+ installation (defaulting to :file:`/usr/local`).
+
(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
@@ -448,6 +458,15 @@ them to go in :file:`/usr/local/lib/pyth
/usr/bin/python setup.py install --prefix=/usr/local
+Starting with Python-2.6 Debian/Ubuntu does use
+:file:`/usr/lib/python{X.Y}/dist-packages` and
+:file:`/usr/local/lib/python{X.Y}/dist-packages` for the installation
+of python modules included in the Linux distribution. To overwrite
+the name of the site directory, explicitely use the :option:`--prefix`
+option, however make sure that the installation path is included in
+``sys.path``. For packaging of python modules for Debian/Ubuntu, use
+the new ``setup.py install`` option :option:`--install-layout=deb`.
+
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
@@ -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.
+On Debian/Ubuntu, starting with Python-2.6 the convention for system
+installed packages is to put then in the
+:file:`/usr/lib/python{X.Y}/dist-packages/` directory, and for locally
+installed packages is to put them in the
+:file:`/usr/lib/python{X.Y}/dist-packages/` directory. To share the
+locally installed packages for the system provided Python with the
+locally installed packages of a local python installation, make
+:file:`/usr/lib/python{X.Y}/dist-packages/` a symbolic link to the
+:file:`{...}/site-packages/` directory of your local python
+installation.
+
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
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -47,6 +47,20 @@ INSTALL_SCHEMES = {
'scripts': '$base/bin',
'data' : '$base',
},
+ 'unix_local': {
+ 'purelib': '$base/local/lib/python$py_version_short/dist-packages',
+ 'platlib': '$platbase/local/lib/python$py_version_short/dist-packages',
+ 'headers': '$base/local/include/python$py_version_short/$dist_name',
+ 'scripts': '$base/local/bin',
+ 'data' : '$base/local',
+ },
+ 'deb_system': {
+ 'purelib': '$base/lib/python$py_version_short/dist-packages',
+ 'platlib': '$platbase/lib/python$py_version_short/dist-packages',
+ 'headers': '$base/include/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
'unix_home': {
'purelib': '$base/lib/python',
'platlib': '$base/lib/python',
@@ -154,6 +168,9 @@ class install (Command):
('record=', None,
"filename in which to record list of installed files"),
+
+ ('install-layout=', None,
+ "installation layout to choose (known values: deb, unix)"),
]
boolean_options = ['compile', 'force', 'skip-build', 'user']
@@ -168,6 +185,7 @@ class install (Command):
self.exec_prefix = None
self.home = None
self.user = 0
+ self.prefix_option = None
# These select only the installation base; it's up to the user to
# specify the installation scheme (currently, that means supplying
@@ -189,6 +207,9 @@ class install (Command):
self.install_userbase = USER_BASE
self.install_usersite = USER_SITE
+ # enable custom installation, known values: deb
+ self.install_layout = None
+
self.compile = None
self.optimize = None
@@ -421,6 +442,7 @@ class install (Command):
self.install_base = self.install_platbase = self.home
self.select_scheme("unix_home")
else:
+ self.prefix_option = self.prefix
if self.prefix is None:
if self.exec_prefix is not None:
raise DistutilsOptionError, \
@@ -435,7 +457,23 @@ class install (Command):
self.install_base = self.prefix
self.install_platbase = self.exec_prefix
- self.select_scheme("unix_prefix")
+ if self.install_layout:
+ if self.install_layout.lower() in ['deb']:
+ self.select_scheme("deb_system")
+ elif self.install_layout.lower() in ['posix', 'unix']:
+ self.select_scheme("unix_prefix")
+ else:
+ raise DistutilsOptionError(
+ "unknown value for --install-layout")
+ elif (self.prefix_option and os.path.normpath(self.prefix) != '/usr/local') \
+ or 'PYTHONUSERBASE' in os.environ \
+ or 'real_prefix' in sys.__dict__:
+ self.select_scheme("unix_prefix")
+ else:
+ if os.path.normpath(self.prefix) == '/usr/local':
+ self.select_scheme("deb_system")
+ else:
+ self.select_scheme("unix_local")
# finalize_unix ()
--- 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):
description = "Install package's PKG-INFO metadata as an .egg-info file"
user_options = [
('install-dir=', 'd', "directory to install to"),
+ ('install-layout', None, "custom installation layout"),
]
def initialize_options(self):
self.install_dir = None
+ self.install_layout = None
+ self.prefix_option = None
def finalize_options(self):
self.set_undefined_options('install_lib',('install_dir','install_dir'))
- basename = "%s-%s-py%s.egg-info" % (
- to_filename(safe_name(self.distribution.get_name())),
- to_filename(safe_version(self.distribution.get_version())),
- sys.version[:3]
- )
+ self.set_undefined_options('install',('install_layout','install_layout'))
+ self.set_undefined_options('install',('prefix_option','prefix_option'))
+ if self.install_layout:
+ basename = "%s-%s.egg-info" % (
+ to_filename(safe_name(self.distribution.get_name())),
+ to_filename(safe_version(self.distribution.get_version()))
+ )
+ if not self.install_layout.lower() in ['deb']:
+ raise DistutilsOptionError(
+ "unknown value for --install-layout")
+ elif self.prefix_option or 'real_prefix' in sys.__dict__:
+ basename = "%s-%s-py%s.egg-info" % (
+ to_filename(safe_name(self.distribution.get_name())),
+ to_filename(safe_version(self.distribution.get_version())),
+ sys.version[:3]
+ )
+ else:
+ basename = "%s-%s.egg-info" % (
+ to_filename(safe_name(self.distribution.get_name())),
+ to_filename(safe_version(self.distribution.get_version()))
+ )
self.target = os.path.join(self.install_dir, basename)
self.outputs = [self.target]
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -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'.
"""
+ is_default_prefix = not prefix or os.path.normpath(prefix) in ('/usr', '/usr/local')
if prefix is None:
prefix = plat_specific and EXEC_PREFIX or PREFIX
@@ -133,6 +134,8 @@ def get_python_lib(plat_specific=0, stan
"lib", "python" + get_python_version())
if standard_lib:
return libpython
+ elif is_default_prefix and 'PYTHONUSERBASE' not in os.environ and 'real_prefix' not in sys.__dict__:
+ return os.path.join(libpython, "dist-packages")
else:
return os.path.join(libpython, "site-packages")
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -273,6 +273,13 @@ def addusersitepackages(known_paths):
if ENABLE_USER_SITE and os.path.isdir(user_site):
addsitedir(user_site, known_paths)
+ if ENABLE_USER_SITE:
+ for dist_libdir in ("local/lib", "lib"):
+ user_site = os.path.join(USER_BASE, dist_libdir,
+ "python" + sys.version[:3],
+ "dist-packages")
+ if os.path.isdir(user_site):
+ addsitedir(user_site, known_paths)
return known_paths
def getsitepackages():
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -16,6 +16,26 @@ _INSTALL_SCHEMES = {
'scripts': '{base}/bin',
'data': '{base}',
},
+ 'posix_local': {
+ 'stdlib': '{base}/lib/python{py_version_short}',
+ 'platstdlib': '{platbase}/lib/python{py_version_short}',
+ 'purelib': '{base}/local/lib/python{py_version_short}/dist-packages',
+ 'platlib': '{platbase}/local/lib/python{py_version_short}/dist-packages',
+ 'include': '{base}/local/include/python{py_version_short}',
+ 'platinclude': '{platbase}/local/include/python{py_version_short}',
+ 'scripts': '{base}/local/bin',
+ 'data': '{base}/local',
+ },
+ 'deb_system': {
+ 'stdlib': '{base}/lib/python{py_version_short}',
+ 'platstdlib': '{platbase}/lib/python{py_version_short}',
+ 'purelib': '{base}/lib/python{py_version_short}/dist-packages',
+ 'platlib': '{platbase}/lib/python{py_version_short}/dist-packages',
+ 'include': '{base}/include/python{py_version_short}',
+ 'platinclude': '{platbase}/include/python{py_version_short}',
+ 'scripts': '{base}/bin',
+ 'data': '{base}',
+ },
'posix_home': {
'stdlib': '{base}/lib/python',
'platstdlib': '{base}/lib/python',
@@ -134,7 +154,7 @@ def is_python_build():
_PYTHON_BUILD = is_python_build()
if _PYTHON_BUILD:
- for scheme in ('posix_prefix', 'posix_home'):
+ for scheme in ('posix_prefix', 'posix_local', 'deb_system', 'posix_home'):
_INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include'
_INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}'
@@ -168,7 +188,10 @@ def _expand_vars(scheme, vars):
def _get_default_scheme():
if os.name == 'posix':
- # the default scheme for posix is posix_prefix
+ # the default scheme for posix on Debian/Ubuntu is posix_local
+ is_default_prefix = os.path.normpath(sys.exec_prefix or sys.prefix) in ('/usr', '/usr/local')
+ if is_default_prefix and 'PYTHONUSERBASE' not in os.environ and 'real_prefix' not in sys.__dict__:
+ return 'posix_local'
return 'posix_prefix'
return os.name
@@ -315,7 +338,7 @@ def get_makefile_filename():
"""Return the path of the Makefile."""
if _PYTHON_BUILD:
return os.path.join(_PROJECT_BASE, "Makefile")
- return os.path.join(get_path('platstdlib'), "config", "Makefile")
+ return os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config", "Makefile")
# Issue #22199: retain undocumented private name for compatibility
_get_makefile_filename = get_makefile_filename
@@ -447,7 +470,7 @@ def get_config_h_filename():
else:
inc_dir = _PROJECT_BASE
else:
- inc_dir = get_path('platinclude')
+ inc_dir = get_path('platinclude').replace("/usr/local","/usr",1)
return os.path.join(inc_dir, 'pyconfig.h')
def get_scheme_names():
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -301,7 +301,7 @@ class ImportTests(unittest.TestCase):
with check_warnings(('', ImportWarning)):
# Just a random non-package directory we always expect to be
# somewhere in sys.path...
- self.assertRaises(ImportError, __import__, "site-packages")
+ self.assertRaises(ImportError, __import__, "dist-packages")
def test_import_by_filename(self):
path = os.path.abspath(TESTFN)
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -255,10 +255,13 @@ class HelperFunctionsTests(unittest.Test
elif os.sep == '/':
# OS X, Linux, FreeBSD, etc
self.assertEqual(len(dirs), 2)
- wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
- 'site-packages')
+ wanted = os.path.join('xoxo', 'local', 'lib',
+ 'python' + sys.version[:3],
+ 'dist-packages')
self.assertEqual(dirs[0], wanted)
- wanted = os.path.join('xoxo', 'lib', 'site-python')
+ wanted = os.path.join('xoxo', 'lib',
+ 'python' + sys.version[:3],
+ 'dist-packages')
self.assertEqual(dirs[1], wanted)
else:
# other platforms
--- a/Lib/test/test_sysconfig.py
+++ b/Lib/test/test_sysconfig.py
@@ -239,8 +239,8 @@ class TestSysConfig(unittest.TestCase):
self.assertTrue(os.path.isfile(config_h), config_h)
def test_get_scheme_names(self):
- wanted = ('nt', 'nt_user', 'os2', 'os2_home', 'osx_framework_user',
- 'posix_home', 'posix_prefix', 'posix_user')
+ wanted = ('deb_system', 'nt', 'nt_user', 'os2', 'os2_home', 'osx_framework_user',
+ 'posix_home', 'posix_local', 'posix_prefix', 'posix_user')
self.assertEqual(get_scheme_names(), wanted)
@unittest.skipIf(sys.platform.startswith('win'),
--- a/Lib/distutils/tests/test_install.py
+++ b/Lib/distutils/tests/test_install.py
@@ -194,7 +194,7 @@ class InstallTestCase(support.TempdirMan
found = [os.path.basename(line) for line in content.splitlines()]
expected = ['hello.py', 'hello.pyc', 'sayhi',
- 'UNKNOWN-0.0.0-py%s.%s.egg-info' % sys.version_info[:2]]
+ 'UNKNOWN-0.0.0.egg-info']
self.assertEqual(found, expected)
def test_record_extensions(self):
@@ -224,7 +224,7 @@ class InstallTestCase(support.TempdirMan
found = [os.path.basename(line) for line in content.splitlines()]
expected = [_make_ext_name('xx'),
- 'UNKNOWN-0.0.0-py%s.%s.egg-info' % sys.version_info[:2]]
+ 'UNKNOWN-0.0.0.egg-info']
self.assertEqual(found, expected)
def test_debug_mode(self):
--- 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(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))
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -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://", "https://")):

20
debian/patches/distutils-link.diff vendored Normal file
View File

@@ -0,0 +1,20 @@
# 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
@@ -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)
-
+ # filter out standard library paths, which are not explicitely needed
+ # for linking
+ library_dirs = [dir for dir in library_dirs
+ if not dir in ('/lib', '/lib64', '/usr/lib', '/usr/lib64')]
+ runtime_library_dirs = [dir for dir in runtime_library_dirs
+ if not dir in ('/lib', '/lib64', '/usr/lib', '/usr/lib64')]
lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs,
libraries)
if type(output_dir) not in (StringType, NoneType):

57
debian/patches/distutils-sysconfig.diff vendored Normal file
View File

@@ -0,0 +1,57 @@
# DP: Allow setting BASECFLAGS, OPT and EXTRA_LDFLAGS (like, CC, CXX, CPP,
# DP: CFLAGS, CPPFLAGS, CCSHARED, LDSHARED) from the environment.
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -184,10 +184,12 @@ def customize_compiler(compiler):
_osx_support.customize_compiler(_config_vars)
_config_vars['CUSTOMIZED_OSX_COMPILER'] = 'True'
- (cc, cxx, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
- get_config_vars('CC', 'CXX', 'CFLAGS',
- 'CCSHARED', 'LDSHARED', 'SO', 'AR',
- 'ARFLAGS')
+ (cc, cxx, cflags, extra_cflags, basecflags,
+ ccshared, ldshared, so_ext, ar, ar_flags,
+ configure_cppflags, configure_cflags, configure_ldflags) = \
+ 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']
@@ -208,13 +210,24 @@ def customize_compiler(compiler):
cpp = cc + " -E" # not always
if 'LDFLAGS' in os.environ:
ldshared = ldshared + ' ' + os.environ['LDFLAGS']
+ elif configure_ldflags:
+ ldshared = ldshared + ' ' + configure_ldflags
+ if 'BASECFLAGS' in os.environ:
+ basecflags = os.environ['BASECFLAGS']
if 'CFLAGS' in os.environ:
- 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 (basecflags, configure_cflags, extra_cflags) if x)
+ ldshared = ldshared + ' ' + configure_cflags
if 'CPPFLAGS' in os.environ:
cpp = cpp + ' ' + os.environ['CPPFLAGS']
cflags = cflags + ' ' + os.environ['CPPFLAGS']
ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
+ elif configure_cppflags:
+ cpp = cpp + ' ' + configure_cppflags
+ cflags = cflags + ' ' + configure_cppflags
+ ldshared = ldshared + ' ' + configure_cppflags
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)

13
debian/patches/doc-nodownload.diff vendored Normal file
View File

@@ -0,0 +1,13 @@
# DP: Don't try to download documentation tools
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -57,7 +57,7 @@
update: clean checkout
-build: checkout
+build:
mkdir -p build/$(BUILDER) build/doctrees
$(PYTHON) tools/sphinx-build.py $(ALLSPHINXOPTS)
@echo

Some files were not shown because too many files have changed in this diff Show More