Package: python3.13 / 3.13.6-1

Metadata

Package Version Patches format
python3.13 3.13.6-1 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
deb locations.diff | (download)

Lib/pydoc.py | 4 4 + 0 - 0 !
Misc/python.man | 2 1 + 1 - 0 !
2 files changed, 5 insertions(+), 1 deletion(-)

 debian: adjust locations of directories to debian policy
distutils install layout.diff | (download)

Lib/_distutils_system_mod.py | 164 164 + 0 - 0 !
Lib/pydoc.py | 1 1 + 0 - 0 !
Lib/site.py | 23 21 + 2 - 0 !
Lib/test/test_site.py | 10 5 + 5 - 0 !
4 files changed, 191 insertions(+), 7 deletions(-)

 debian: add a distutils option --install-layout=deb
 This option:
  - installs into $prefix/dist-packages instead of $prefix/site-packages.
  - doesn't encode the python version into the egg name.
 .
 We install modules into dist-packages so that a local admin can build their
 own cpython from source, and they won't see each others' installed modules.
 This keeps Debian packaged applications working correctly, isolated from the
 local cpython.
 .
 Customize site.py to import from Debian's dist-packages layout.

sysconfig debian schemes.diff | (download)

Lib/sysconfig/__init__.py | 41 38 + 3 - 0 !
Lib/test/test_sysconfig.py | 2 1 + 1 - 0 !
2 files changed, 39 insertions(+), 4 deletions(-)

---
tkinter import.diff | (download)

Lib/tkinter/__init__.py | 5 4 + 1 - 0 !
Lib/turtle.py | 5 4 + 1 - 0 !
2 files changed, 8 insertions(+), 2 deletions(-)

 suggest installation of python3-tk package
 We split Tk out into a separate binary package. Help users who try to import
 it, without it installed.

gdbm import.diff | (download)

Lib/dbm/gnu.py | 5 4 + 1 - 0 !
Lib/dbm/ndbm.py | 5 4 + 1 - 0 !
2 files changed, 8 insertions(+), 2 deletions(-)

 debian: suggest installation of python3-gdbm package
 We split gdbm out into a separate binary package. Help users who try to import
 it, without it installed.

link opt.diff | (download)

configure.ac | 6 3 + 3 - 0 !
1 file changed, 3 insertions(+), 3 deletions(-)

 call the linker with -o1 -bsymbolic-functions
 We do symbolic-functions as policy in Ubuntu.

 Could be forwarded in the form of a configure flag.

setup modules.diff | (download)

Modules/Setup | 16 5 + 11 - 0 !
1 file changed, 5 insertions(+), 11 deletions(-)

 configure linking for c-library wrapping modules
 Use the system C libraries, rather than sources bundled with cPython, or
 anything from /usr/local.
 This is for performance, to avoid unnecessary C extension imports at start-up.

profiled build.diff | (download)

Makefile.pre.in | 11 10 + 1 - 0 !
1 file changed, 10 insertions(+), 1 deletion(-)

 ignore errors in the profile task.
 This is a rewrite of the profile task. We run the tests sequentially, and only
 once at a time.

langpack gettext.diff | (download)

Lib/gettext.py | 15 15 + 0 - 0 !
1 file changed, 15 insertions(+)

 ubuntu: support separate langpack packages
 Support alternative gettext tree in /usr/share/locale-langpack; if a file is
 present in both trees, prefer the newer one.
 Ubuntu collates gettext from packages on the DVD into language packs, to
 reduce disk-space on the image.
 This is Ubuntu-Specific.

disable sem check.diff | (download)

configure.ac | 13 9 + 4 - 0 !
1 file changed, 9 insertions(+), 4 deletions(-)

 debian: don't autodetect whether semephores are present
 Assume working semaphores, don't rely on running kernel for the check.

 This is not something that's approriate for us to detect at build time.
 Potentially forwadable, if redesigned.

multiarch.diff | (download)

Lib/sysconfig/__init__.py | 6 6 + 0 - 0 !
Makefile.pre.in | 1 1 + 0 - 0 !
2 files changed, 7 insertions(+)

 debian: configure multiarch tuple.
 1. Expose multiarchsubdir in sysconfig.
    Some packages in Debian are depending on this.
 2. Install the .pc file into the multiarch path.

ensurepip disabled.diff | (download)

Lib/ensurepip/__init__.py | 33 33 + 0 - 0 !
Lib/venv/__init__.py | 22 20 + 2 - 0 !
2 files changed, 53 insertions(+), 2 deletions(-)

 disable ensurepip for the system installation
 We have a python3-pip package, for users who want pip.
 We just need ensurepip to seed pip in virtual environments.

destshared location.diff | (download)

Makefile.pre.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 keep the lib-dynload dir in the same place when configuring with
 --libdir=/usr/lib/$(DEB_HOST_MULTIARCH)
 The C extensions already have multiarch paths in their filenames.

min tempfile.diff | (download)

Lib/tempfile.py | 195 193 + 2 - 0 !
1 file changed, 193 insertions(+), 2 deletions(-)

 debian: degrade tempfile gracefully without shutil
 python3.X-minimal includes tempfile but not shutil. Use a fallback racy
 rmtree, if shutil can't be imported.

 This needs constant maintainance, as the code is a copy.

min lib argparse.diff | (download)

Lib/argparse.py | 13 12 + 1 - 0 !
1 file changed, 12 insertions(+), 1 deletion(-)

 debian: degrade argparse gracefully without gettext
 python3.X-minimal includes argparse but not gettext. Use a fallback noop
 gettext, if it can't be imported.

min argparse no shutil.diff | (download)

Lib/argparse.py | 9 6 + 3 - 0 !
1 file changed, 6 insertions(+), 3 deletions(-)

 debian: degrade argparse gracefully without shutil
 python3.X-minimal includes argparse but not shutil. Use a fixed terminal
 width, if shutil can't be imported.

min ntpath import.diff | (download)

Lib/pathlib/_local.py | 4 3 + 1 - 0 !
1 file changed, 3 insertions(+), 1 deletion(-)

 ntpath is not in python-minimal, replace module-level imports with
 local imports in functions that actually require ntpath.
min compileall.diff | (download)

Lib/compileall.py | 11 7 + 4 - 0 !
1 file changed, 7 insertions(+), 4 deletions(-)

 avoid tripping over the multiprocessing import in compileall
 Minimal includes compileall but not multiprocessing.
min pyrepl import.dff | (download)

Modules/main.c | 3 2 + 1 - 0 !
1 file changed, 2 insertions(+), 1 deletion(-)

 _pyrepl (and its dependencies) are not shipped in -minimal
 Fall back to the basic REPL.
makefile bootstrap.diff | (download)

Makefile.pre.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---
test freeze strip libdir.diff | (download)

Tools/freeze/test/freeze.py | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 [patch] strip absolute --libdir paths from configure args in
 test_freeze

We are trying to install into a prefix, any absolute path would not
necessarily be writeable. e.g. if Python is configured with
--libdir=/usr/lib/$(MULTIARCH)/ during a Debian build.

stable abi multiarch.diff | (download)

Doc/c-api/stable.rst | 3 2 + 1 - 0 !
Makefile.pre.in | 1 1 + 0 - 0 !
Misc/NEWS.d/next/C_API/2024-08-12-09-48-04.gh-issue-122931.QwHc2l.rst | 2 2 + 0 - 0 !
Python/dynload_shlib.c | 3 3 + 0 - 0 !
4 files changed, 8 insertions(+), 1 deletion(-)

 [patch 1/3] gh-122917 allow stable api extensions to include a
 multiarch tuple in the filename

This permits stable ABI extensions for multiple architectures to be
co-installed into the same directory, without clashing with each other,
the same way (non-stable ABI) regular extensions can.

It is listed below the current .abi3 suffix because setuptools will
select the first suffix containing .abi3, as the target filename.
We do this to protect older Python versions predating this patch.

gchead alignment.diff | (download)

Include/internal/pycore_gc.h | 5 3 + 2 - 0 !
Include/object.h | 9 7 + 2 - 0 !
Misc/NEWS.d/next/Build/2024-12-04-10-00-35.gh-issue-127545.t0THjE.rst | 1 1 + 0 - 0 !
3 files changed, 11 insertions(+), 4 deletions(-)

 [patch] specify minimum pygc_head and pyobject alignment to fix build
 failure

As documented in InternalDocs/garbage_collector.md, the garbage collector
stores flags in the least significant two bits of the _gc_prev pointer
in struct PyGC_Head. Consequently, this pointer is only capable of storing
a location that's aligned to a 4-byte boundary.

This alignment requirement is documented but it's not actually encoded.
The code only works when python happens to run on a platform that has a
sufficiently large minimum alignment for the structs in question.

The same problem arises with PyObject pointers because the least
significant bits get used for PyStackRef tags.

Since we know that 2 bits are needed, we also know the minimum alignment
that's needed. Let's make that explicit, so the compiler can then make
those bits available.

This patch fixes a segfault in _bootstrap_python. In 3.14.0 beta 2
this fixes the "Assertion `!PyStackRef_IsTaggedInt(ref)' failed" when
built with --config-pydebug.

Also, making the requirements explicit improves clarity.

This bug was previously investigated by Adrian Glaubitz here:
https://lists.debian.org/debian-68k/2024/11/msg00020.html
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1087600

Although Adrian's patch isn't really correct (because natural alignment
is not needed), he deserves full credit for finding the root cause.

issue127330.diff | (download)

Modules/_ssl.c | 3 2 + 1 - 0 !
Modules/_ssl_data_111.h | 4 3 + 1 - 0 !
Modules/_ssl_data_300.h | 5 4 + 1 - 0 !
Modules/_ssl_data_31.h | 8605 0 + 8605 - 0 !
Modules/_ssl_data_34.h | 9277 9277 + 0 - 0 !
Tools/c-analyzer/cpython/_parser.py | 4 1 + 3 - 0 !
Tools/ssl/make_ssl_data.py | 34 31 + 3 - 0 !
Tools/ssl/multissltests.py | 2 2 + 0 - 0 !
8 files changed, 9320 insertions(+), 8614 deletions(-)

 add support for openssl 3.4
no sphinx 8.2.diff | (download)

Doc/conf.py | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---
Add Debian specific documentation path to IDLE menu.diff | (download)

Lib/idlelib/editor.py | 10 9 + 1 - 0 !
1 file changed, 9 insertions(+), 1 deletion(-)

 add debian specific documentation path to idle menu