From 8044c0cc0aec2509b33dd088294f69648061b632 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 16 Oct 2024 03:12:01 +0200 Subject: [PATCH] python314: init at 3.14.0a1 https://docs.python.org/3.14/whatsnew/changelog.html#python-3-14-0-alpha-1 --- doc/languages-frameworks/python.section.md | 1 + .../python/cpython/3.14/no-ldconfig.patch | 40 +++++++++++++++++++ .../interpreters/python/default.nix | 12 ++++++ pkgs/top-level/all-packages.nix | 13 +++++- 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/interpreters/python/cpython/3.14/no-ldconfig.patch diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 3d9736da7fa0..31f7f40346b3 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -55,6 +55,7 @@ sets are * `pkgs.python311Packages` * `pkgs.python312Packages` * `pkgs.python313Packages` +* `pkgs.python314Packages` * `pkgs.pypy27Packages` * `pkgs.pypy39Packages` * `pkgs.pypy310Packages` diff --git a/pkgs/development/interpreters/python/cpython/3.14/no-ldconfig.patch b/pkgs/development/interpreters/python/cpython/3.14/no-ldconfig.patch new file mode 100644 index 000000000000..5d176dd38de7 --- /dev/null +++ b/pkgs/development/interpreters/python/cpython/3.14/no-ldconfig.patch @@ -0,0 +1,40 @@ +diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py +index 117bf06cb01..ff50cb083bd 100644 +--- a/Lib/ctypes/util.py ++++ b/Lib/ctypes/util.py +@@ -280,34 +280,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 5e67c8bd4a15..9588393a33b5 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -93,6 +93,18 @@ in { hash = "sha256-CG3liC48sxDU3KSEV1IuLkgBjs1D2pzfgn9qB1nvsH0="; inherit passthruFun; }; + + python314 = callPackage ./cpython { + self = __splicedPackages.python314; + sourceVersion = { + major = "3"; + minor = "14"; + patch = "0"; + suffix = "a1"; + }; + hash = "sha256-PkZLDLt1NeLbNCYv0ZoKOT0OYr4PQ7FRPtmDebBU6tQ="; + inherit passthruFun; + }; # Minimal versions of Python (built without optional dependencies) python3Minimal = (callPackage ./cpython ({ self = __splicedPackages.python3Minimal; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dd396293a78c..24dc84b84a0a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16411,15 +16411,25 @@ with pkgs; bluezSupport = lib.meta.availableOn stdenv.hostPlatform bluez; x11Support = true; }; + python314Full = python314.override { + self = python314Full; + pythonAttr = "python314Full"; + bluezSupport = lib.meta.availableOn stdenv.hostPlatform bluez; + x11Support = true; + }; # https://py-free-threading.github.io python313FreeThreading = python313.override { pythonAttr = "python313FreeThreading"; enableGIL = false; }; + python314FreeThreading = python314.override { + pythonAttr = "python313FreeThreading"; + enableGIL = false; + }; pythonInterpreters = callPackage ./../development/interpreters/python { }; - inherit (pythonInterpreters) python27 python39 python310 python311 python312 python313 python3Minimal pypy27 pypy310 pypy39 rustpython; + inherit (pythonInterpreters) python27 python39 python310 python311 python312 python313 python314 python3Minimal pypy27 pypy310 pypy39 rustpython; # List of extensions with overrides to apply to all Python package sets. pythonPackagesExtensions = [ ]; @@ -16431,6 +16441,7 @@ with pkgs; python311Packages = recurseIntoAttrs python311.pkgs; python312Packages = recurseIntoAttrs python312.pkgs; python313Packages = python313.pkgs; + python314Packages = python314.pkgs; pypyPackages = pypy.pkgs; pypy2Packages = pypy2.pkgs; pypy27Packages = pypy27.pkgs;