From 67857730528669d454db967db1c0914a894b3f33 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 15 Oct 2025 17:41:42 +0200 Subject: [PATCH] python315: init add 3.15.0a1 https://docs.python.org/3.15/whatsnew/changelog.html#python-3-15-0-alpha-1 --- doc/languages-frameworks/python.section.md | 1 + .../python/cpython/3.15/no-ldconfig.patch | 40 +++++++++++++++++++ .../interpreters/python/default.nix | 13 ++++++ pkgs/top-level/all-packages.nix | 7 ++++ 4 files changed, 61 insertions(+) create mode 100644 pkgs/development/interpreters/python/cpython/3.15/no-ldconfig.patch diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 487b7d4b3401..61c211c0dfcb 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -55,6 +55,7 @@ sets are * `pkgs.python312Packages` * `pkgs.python313Packages` * `pkgs.python314Packages` +* `pkgs.python315Packages` * `pkgs.pypy27Packages` * `pkgs.pypy310Packages` diff --git a/pkgs/development/interpreters/python/cpython/3.15/no-ldconfig.patch b/pkgs/development/interpreters/python/cpython/3.15/no-ldconfig.patch new file mode 100644 index 000000000000..d7e148b510d9 --- /dev/null +++ b/pkgs/development/interpreters/python/cpython/3.15/no-ldconfig.patch @@ -0,0 +1,40 @@ +diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py +index 378f12167c6..21710702e69 100644 +--- a/Lib/ctypes/util.py ++++ b/Lib/ctypes/util.py +@@ -374,34 +374,7 @@ def find_library(name, is64 = False): + else: + + def _findSoname_ldconfig(name): +- import struct +- if struct.calcsize('l') == 4: +- machine = os.uname().machine + '-32' +- else: +- machine = os.uname().machine + '-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', +- } +- abi_type = mach_map.get(machine, 'libc6') +- +- # XXX assuming GLIBC's ldconfig (with option -p) +- regex = r'\s+(lib%s\.[^\s]+)\s+\(%s' +- regex = os.fsencode(regex % (re.escape(name), abi_type)) +- try: +- with subprocess.Popen(['/sbin/ldconfig', '-p'], +- stdin=subprocess.DEVNULL, +- stderr=subprocess.DEVNULL, +- stdout=subprocess.PIPE, +- env={'LC_ALL': 'C', 'LANG': 'C'}) as p: +- res = re.search(regex, p.stdout.read()) +- if res: +- return os.fsdecode(res.group(1)) +- except OSError: +- pass ++ return None + + def _findLib_ld(name): + # See issue #9998 for why this is needed diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 6a4bf4a42133..2764e6a95344 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -97,6 +97,19 @@ hash = "sha256-Ipna5ULTlc44g6ygDTyRAwfNaOCy9zNgmMjnt+7p8+k="; inherit passthruFun; }; + + python315 = callPackage ./cpython { + self = __splicedPackages.python315; + sourceVersion = { + major = "3"; + minor = "15"; + patch = "0"; + suffix = "a1"; + }; + hash = "sha256-MZSTnUiO6u79z5kNNVQtmtHOeIeJxOIwWiBg63BY5aQ="; + inherit passthruFun; + }; + # Minimal versions of Python (built without optional dependencies) python3Minimal = (callPackage ./cpython ( diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a2c59749b7bc..294a73b11b90 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5942,6 +5942,11 @@ with pkgs; pythonAttr = "python314FreeThreading"; enableGIL = false; }; + python315FreeThreading = python315.override { + self = python315FreeThreading; + pythonAttr = "python315FreeThreading"; + enableGIL = false; + }; pythonInterpreters = callPackage ./../development/interpreters/python { }; inherit (pythonInterpreters) @@ -5951,6 +5956,7 @@ with pkgs; python312 python313 python314 + python315 python3Minimal pypy27 pypy310 @@ -5967,6 +5973,7 @@ with pkgs; python312Packages = recurseIntoAttrs python312.pkgs; python313Packages = recurseIntoAttrs python313.pkgs; python314Packages = python314.pkgs; + python315Packages = python315.pkgs; pypyPackages = pypy.pkgs; pypy2Packages = pypy2.pkgs; pypy27Packages = pypy27.pkgs;