[packages/python3] Up to 3.15.0

arekm arekm at pld-linux.org
Fri Oct 9 23:15:12 CEST 2026


commit d4a35001706c92001538a40842c22a2d390580aa
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Fri Oct 9 23:13:38 2026 +0200

    Up to 3.15.0

 python3-BLDLIBRARY.patch          | 14 ++++-----
 python3-configure-posix-sh.patch  | 16 ++++++++++
 python3-multilib.patch            | 61 +++++++--------------------------------
 python3-test-pyrepl-history.patch | 18 ------------
 python3-test-unlink-rofs.patch    | 15 ----------
 python3.spec                      | 51 ++++++++++++++++++++------------
 6 files changed, 67 insertions(+), 108 deletions(-)
---
diff --git a/python3.spec b/python3.spec
index 0c8b212..102669a 100644
--- a/python3.spec
+++ b/python3.spec
@@ -16,14 +16,13 @@
 %define		nobuilder_tests -u-network -x test_resource -x test_openpty -x test_socket -x test_posix -x test_locale -x test_pty -x test_asyncio -x test_os -x test_readline -x test_normalization -x test_zoneinfo
 
 # tests which fail because of some unknown/unresolved reason (this list should be %%{nil})
-#   test_site: fails because our site.py is patched to include both /usr/share/... and /usr/lib...
 #   test_gdb: fails, as the gdb uses old python version
 #   test_time: test_AsTimeval (test.test_time.TestCPyTime), rounding error
 %ifarch x32
 %define		broken_tests_x32	-x test_time
 %undefine	with_optimizations
 %endif
-%define		broken_tests	-x test_embed -x test_gdb -x test_site -x test_ssl %{?broken_tests_x32}
+%define		broken_tests	-x test_embed -x test_gdb -x test_ssl %{?broken_tests_x32}
 
 %ifarch armv6hl armv7hl armv7hnl
 %define		_python_target_abi	%{?_gnu}hf
@@ -31,7 +30,7 @@
 %define		_python_target_abi	%{?_gnu}
 %endif
 
-%define py_ver		3.14
+%define py_ver		3.15
 %define py_abi		%{py_ver}
 %define	py_platform	%{py_abi}-%{_target_base_arch}-%{_target_os}%{?_python_target_abi}
 %define py_prefix	%{_prefix}
@@ -49,13 +48,13 @@ Summary(ru.UTF-8):	Язык программирования очень высо
 Summary(tr.UTF-8):	X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
 Summary(uk.UTF-8):	Мова програмування дуже високого рівня з X-інтерфейсом
 Name:		python3
-Version:	%{py_ver}.8
+Version:	%{py_ver}.0
 Release:	1
 Epoch:		1
 License:	PSF
 Group:		Development/Languages/Python
 Source0:	https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
-# Source0-md5:	129e654fc09bda21b21c7b4b5ac516e9
+# Source0-md5:	143a3a4a078206f468cf7618f6fb425a
 Source1:	pyconfig.h.in
 # https://peps.python.org/pep-0668/
 Source2:	externally-managed
@@ -71,9 +70,8 @@ Patch11:	%{name}-installcompile.patch
 
 Patch14:	python3-profile-tests.patch
 Patch15:	python3-tests.patch
-Patch16:	python3-test-unlink-rofs.patch
 Patch17:	python3-test-subprocess-userns.patch
-Patch18:	python3-test-pyrepl-history.patch
+Patch19:	python3-configure-posix-sh.patch
 URL:		https://www.python.org/
 BuildRequires:	autoconf >= 2.72
 BuildRequires:	autoconf-archive
@@ -106,11 +104,10 @@ BuildRequires:	sed >= 4.0
 BuildRequires:	sqlite3-devel >= 3.15.2
 BuildRequires:	tar >= 1:1.22
 %{?with_info:BuildRequires:	tetex-makeindex}
-%{?with_tkinter:BuildRequires:	tix-devel >= 1:8.1.4-4}
 %{?with_tkinter:BuildRequires:	tk-devel >= 8.5.12}
 BuildRequires:	xz
 BuildRequires:	xz-devel
-BuildRequires:	zlib-devel >= 1.2.0
+BuildRequires:	zlib-devel >= 1.2.2.1
 BuildRequires:	zstd-devel >= 1.4.5
 BuildConflicts:	python3-hunter <= 3.7.0
 Requires:	%{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
@@ -411,7 +408,6 @@ Summary(tr.UTF-8):	Python için grafik kullanıcı arayüzü
 Group:		Libraries/Python
 Requires:	%{name}-modules%{?_isa} = %{epoch}:%{version}-%{release}
 Requires:	tcl%{?_isa} >= 8.5.12
-Requires:	tix%{?_isa} >= 1:8.1.4-4
 Requires:	tk%{?_isa} >= 8.5.12
 
 %description tkinter
@@ -483,9 +479,8 @@ Moduły testowe dla Pythona.
 
 %patch -P 14 -p1
 %patch -P 15 -p1
-%patch -P 16 -p1
 %patch -P 17 -p1
-%patch -P 18 -p1
+%patch -P 19 -p1
 
 %{__rm} -r Modules/expat
 
@@ -498,6 +493,7 @@ done
 %endif
 
 sed -i -e '1s,/usr/bin/python$,%{__python3},' \
+      Tools/build/generate_slots.py \
       Tools/gdb/libpython.py
 
 sed -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
@@ -519,6 +515,20 @@ fi
 
 export SETUPTOOLS_USE_DISTUTILS=stdlib
 
+# ModuleNotFoundError hints for stdlib modules shipped in separate packages
+cat > missing-stdlib.json <<'EOF'
+{
+	"idlelib": "Install the idle3 package to use idlelib",
+	"pydoc": "Install the pydoc3 package to use pydoc",
+	"pydoc_data": "Install the pydoc3 package to use pydoc",
+%if %{with tkinter}
+	"_tkinter": "Install the python3-tkinter package to use tkinter",
+	"tkinter": "Install the python3-tkinter package to use tkinter",
+%endif
+	"timeit": "Install the python3-devel-tools package to use timeit"
+}
+EOF
+
 %{__aclocal}
 %{__autoconf}
 %configure \
@@ -534,6 +544,7 @@ export SETUPTOOLS_USE_DISTUTILS=stdlib
 	--with-computed-gotos \
 	--with-dbmliborder=gdbm:ndbm%{?with_bdb::bdb} \
 	--with-doc-strings \
+	--with-missing-stdlib-config=missing-stdlib.json \
 	--without-ensurepip \
         --with-platlibdir="%{_lib}" \
 	%{?with_debug:--with-pydebug} \
@@ -550,6 +561,10 @@ if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
       exit 1
 fi
 
+# PGO and test runs write to $HOME (user site, REPL history); builder's may be read-only
+install -d test-home
+export HOME=$(pwd)/test-home
+
 %{__make} \
 	TESTOPTS="%{_smp_mflags} %{test_list}" \
 	2>&1 | awk '
@@ -736,11 +751,11 @@ rm -rf $RPM_BUILD_ROOT
 %{py_libdir}/posixpath.py
 %{py_libdir}/reprlib.py
 %{py_libdir}/site.py
-%{py_libdir}/sre_*.py
 %{py_libdir}/stat.py
 %{py_libdir}/token.py
 %{py_libdir}/tokenize.py
 %{py_libdir}/traceback.py
+%{py_libdir}/_missing_stdlib_info.py
 %{py_libdir}/weakref.py
 %{py_libdir}/os.py
 # needed by the dynamic sys.lib patch
@@ -766,11 +781,11 @@ rm -rf $RPM_BUILD_ROOT
 %{py_libdir}/__pycache__/posixpath.cpython-*.py[co]
 %{py_libdir}/__pycache__/reprlib.cpython-*.py[co]
 %{py_libdir}/__pycache__/site.cpython-*.py[co]
-%{py_libdir}/__pycache__/sre_*.cpython-*.py[co]
 %{py_libdir}/__pycache__/stat.cpython-*.py[co]
 %{py_libdir}/__pycache__/token.cpython-*.py[co]
 %{py_libdir}/__pycache__/tokenize.cpython-*.py[co]
 %{py_libdir}/__pycache__/traceback.cpython-*.py[co]
+%{py_libdir}/__pycache__/_missing_stdlib_info.cpython-*.py[co]
 %{py_libdir}/__pycache__/weakref.cpython-*.py[co]
 %{py_libdir}/__pycache__/os.cpython-*.py[co]
 %{py_libdir}/__pycache__/types.cpython-*.py[co]
@@ -1044,7 +1059,6 @@ rm -rf $RPM_BUILD_ROOT
 # list .so modules to be sure that all of them are built
 #
 
-%attr(755,root,root) %{py_dyndir}/_asyncio.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_bisect.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_blake2.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_bz2.cpython-*.so
@@ -1073,6 +1087,7 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{py_dyndir}/_json.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_lsprof.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_lzma.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_math_integer.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_md5.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_multibytecodec.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_multiprocessing.cpython-*.so
@@ -1092,7 +1107,6 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{py_dyndir}/_testcapi.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_testclinic.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_testclinic_limited.cpython-*.so
-#%attr(755,root,root) %{py_dyndir}/_testexternalinspection.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_testimportmultiple.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_testinternalcapi.cpython-*.so
 %attr(755,root,root) %{py_dyndir}/_testlimitedcapi.cpython-*.so
@@ -1165,8 +1179,6 @@ rm -rf $RPM_BUILD_ROOT
 %{py_libdir}/http/__pycache__
 %{py_libdir}/http/*.py
 
-%dir %{py_libdir}/idlelib
-
 %dir %{py_libdir}/json
 %{py_libdir}/json/__pycache__
 %{py_libdir}/json/*.py
@@ -1183,6 +1195,7 @@ rm -rf $RPM_BUILD_ROOT
 %{py_libdir}/multiprocessing/dummy/*.py
 
 %{py_libdir}/pathlib
+%{py_libdir}/profiling
 %{py_libdir}/re
 %{py_libdir}/string
 %{py_libdir}/tomllib
@@ -1258,6 +1271,7 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/idle3
 %attr(755,root,root) %{_bindir}/idle%{py_ver}
+%dir %{py_libdir}/idlelib
 %dir %{py_libdir}/idlelib/Icons
 %{py_libdir}/idlelib/__pycache__
 %{py_libdir}/idlelib/*.py
@@ -1314,6 +1328,7 @@ rm -rf $RPM_BUILD_ROOT
 
 %files test
 %defattr(644,root,root,755)
+%dir %{py_libdir}/idlelib
 %{py_libdir}/idlelib/idle_test
 %{py_libdir}/test
 
diff --git a/python3-BLDLIBRARY.patch b/python3-BLDLIBRARY.patch
index 0239c41..5966483 100644
--- a/python3-BLDLIBRARY.patch
+++ b/python3-BLDLIBRARY.patch
@@ -1,6 +1,6 @@
 --- Python-3.8.5/Makefile.pre.in.orig	2020-09-17 07:55:13.731893519 +0200
 +++ Python-3.8.5/Makefile.pre.in	2020-09-17 10:33:36.683744945 +0200
-@@ -280,6 +280,7 @@
+@@ -284,6 +284,7 @@ DIST=		$(DISTFILES) $(DISTDIRS)
  LIBRARY=	@LIBRARY@
  LDLIBRARY=      @LDLIBRARY@
  BLDLIBRARY=     @BLDLIBRARY@
@@ -8,21 +8,21 @@
  MODULE_LDFLAGS_SHARED=$(if $(LIBPYTHON),$(BLDLIBRARY))
  PY3LIBRARY=     @PY3LIBRARY@
  DLLLIBRARY=	@DLLLIBRARY@
-@@ -780,7 +780,7 @@ clinic: check-clean-src $(srcdir)/Module
+@@ -1004,7 +1005,7 @@ clinic-tests: check-clean-src $(srcdir)/
  
  # Build the interpreter
  $(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
--	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
-+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBDIR) $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+-	$(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
++	$(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBDIR) $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
  
  platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
  	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
-@@ -1433,7 +1433,7 @@ regen-re: $(BUILDPYTHON)
+@@ -1699,7 +1700,7 @@ regen-re: $(BUILDPYTHON)
  	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
  
  Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
--	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
-+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBDIR) $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+-	$(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
++	$(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBDIR) $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
  
  ############################################################################
  # "Bootstrap Python" used to run Programs/_freeze_module.py
diff --git a/python3-configure-posix-sh.patch b/python3-configure-posix-sh.patch
new file mode 100644
index 0000000..ad43626
--- /dev/null
+++ b/python3-configure-posix-sh.patch
@@ -0,0 +1,16 @@
+POSIX sh parses "&>/dev/null" as "&" plus ">/dev/null": the compiler runs in the
+background, ./conftest is not there yet and the check always reports "default".
+
+--- Python-3.15.0/configure.ac.orig	2026-10-09 13:16:41.000000000 +0200
++++ Python-3.15.0/configure.ac	2026-10-09 21:56:23.542818230 +0200
+@@ -2501,8 +2501,8 @@ int main()
+ EOF
+ 
+     ac_cv_thread_stack_size=unknown
+-    if $CC -pthread $CFLAGS conftest.c -o conftest &>/dev/null; then
+-        ./conftest &>/dev/null
++    if $CC -pthread $CFLAGS conftest.c -o conftest >/dev/null 2>&1; then
++        ./conftest >/dev/null 2>&1
+         exitcode=$?
+         if test $exitcode -eq 1; then
+             ac_cv_thread_stack_size=1048576
diff --git a/python3-multilib.patch b/python3-multilib.patch
index 2d1bc21..9fce7a2 100644
--- a/python3-multilib.patch
+++ b/python3-multilib.patch
@@ -1,16 +1,7 @@
 diff -urNp -x '*.orig' Python-3.9.2.org/Lib/site.py Python-3.9.2/Lib/site.py
 --- Python-3.9.2.org/Lib/site.py	2021-02-19 13:31:44.000000000 +0100
 +++ Python-3.9.2/Lib/site.py	2021-02-25 18:40:00.705652346 +0100
-@@ -295,7 +295,7 @@
-     if sys.platform == 'darwin' and sys._framework:
-         return f'{userbase}/lib/{implementation_lower}/site-packages'
- 
--    return f'{userbase}/lib/python{version[0]}.{version[1]}{abi_thread}/site-packages'
-+    return f'{userbase}/{sys.platlibdir}/python{version[0]}.{version[1]}{abi_thread}/site-packages'
- 
- 
- def getuserbase():
-@@ -408,6 +408,8 @@ def getsitepackages(prefixes=None):
+@@ -769,6 +769,8 @@ def getsitepackages(prefixes=None):
                                      f"{implementation}{ver[0]}.{ver[1]}{abi_thread}",
                                      "site-packages")
                  sitepackages.append(path)
@@ -46,30 +37,15 @@ diff -urNp -x '*.orig' Python-3.9.2.org/Lib/sysconfig/__init__.py Python-3.9.2/L
          'include': '{installed_base}/include/{implementation_lower}',
          'platinclude': '{installed_base}/include/{implementation_lower}',
          'scripts': '{base}/bin',
-@@ -150,8 +150,8 @@ if _HAS_USER_BASE:
-         'posix_user': {
-             'stdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
-             'platstdlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
--            'purelib': '{userbase}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
--            'platlib': '{userbase}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
-+            'purelib': '{userbase}/share/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
-+            'platlib': '{userbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
-             'include': '{userbase}/include/{implementation_lower}{py_version_short}{abi_thread}',
-             'scripts': '{userbase}/bin',
-             'data': '{userbase}',
-@@ -490,7 +490,11 @@ def get_config_h_filename():
+@@ -470,7 +470,7 @@ def get_config_h_filename():
          else:
              inc_dir = _PROJECT_BASE
      else:
 -        inc_dir = get_path('platinclude')
-+        if hasattr(sys, 'abiflags'):
-+            config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags)
-+        else:
-+            config_dir_name = 'config'
-+        inc_dir = os.path.join(get_path('stdlib'), config_dir_name)
++        inc_dir = os.path.dirname(get_makefile_filename())
      return os.path.join(inc_dir, 'pyconfig.h')
  
-
+ 
 --- Python-3.10.0/Makefile.pre.in~	2021-10-04 19:40:46.000000000 +0200
 +++ Python-3.10.0/Makefile.pre.in	2021-10-20 22:21:30.573156183 +0200
 @@ -1707,9 +1707,9 @@ libainstall:	@DEF_MAKE_RULE@ python-conf
@@ -86,36 +62,21 @@ diff -urNp -x '*.orig' Python-3.9.2.org/Lib/sysconfig/__init__.py Python-3.9.2/L
  				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
 --- Python-3.10.6/Lib/test/test_sysconfig.py.orig	2022-08-22 06:15:16.895139554 +0200
 +++ Python-3.10.6/Lib/test/test_sysconfig.py	2022-08-22 06:18:57.331178879 +0200
-@@ -414,13 +414,13 @@ class TestSysConfig(unittest.TestCase):
+@@ -430,13 +430,16 @@ class TestSysConfig(unittest.TestCase, V
                  expected = os.path.normpath(global_path.replace(base, user, 1))
                  # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
                  # whereas posix_prefix does.
 -                if name == 'platlib':
-+                if name != 'platlib':
++                if name in ('platlib', 'purelib'):
                      # Replace "/lib64/python3.11/site-packages" suffix
                      # with "/lib/python3.11/site-packages".
                      py_version_abi = sysconfig._get_python_version_abi()
                      suffix = f'python{py_version_abi}/site-packages'
--                    expected = expected.replace(f'/{sys.platlibdir}/{suffix}',
--                                                f'/lib/{suffix}')
-+                    expected = expected.replace(f'/lib/{suffix}',
-+                                                f'/{sys.platlibdir}/{suffix}')
+                     expected = expected.replace(f'/{sys.platlibdir}/{suffix}',
+                                                 f'/lib/{suffix}')
++                    # posix_prefix keeps purelib in share/
++                    expected = expected.replace(f'/share/{suffix}',
++                                                f'/lib/{suffix}')
                  self.assertEqual(user_path, expected)
  
      def test_main(self):
---- Python-3.10.13/Lib/venv/__init__.py.orig	2023-08-24 14:46:25.000000000 +0200
-+++ Python-3.10.13/Lib/venv/__init__.py	2023-09-23 12:30:09.948046280 +0200
-@@ -145,10 +145,9 @@ class EnvBuilder:
-         create_if_needed(incpath)
-         context.lib_path = libpath
-         create_if_needed(libpath)
--        # Issue 21197: create lib64 as a symlink to lib on 64-bit non-OS X POSIX
--        if ((sys.maxsize > 2**32) and (os.name == 'posix') and
--            (sys.platform != 'darwin')):
--            link_path = os.path.join(env_dir, 'lib64')
-+        # Issue 21197: create lib<qual> as a symlink to lib on 64-bit non-OS X POSIX
-+        if sys.platlibdir != 'lib':
-+            link_path = os.path.join(env_dir, sys.platlibdir)
-             if not os.path.exists(link_path):   # Issue #21643
-                 os.symlink('lib', link_path)
-         context.bin_path = binpath
diff --git a/python3-test-pyrepl-history.patch b/python3-test-pyrepl-history.patch
deleted file mode 100644
index ede8993..0000000
--- a/python3-test-pyrepl-history.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Run the pyrepl half of test_no_newline with a temporary PYTHON_HISTORY.
-With env=None run_repl uses -I, which ignores PYTHON_HISTORY, so the REPL
-appends to the real ~/.python_history; with a read-only $HOME the resulting
-warning lands in the checked output.
-
---- Python-3.14.8/Lib/test/test_pyrepl/test_pyrepl.py
-+++ Python-3.14.8/Lib/test/test_pyrepl/test_pyrepl.py
-@@ -1963,7 +1963,9 @@
-             self.assertEqual(basic_exit_code, 0)
-             self.assertIn(expected_output_sequence, basic_output)
- 
--        output, exit_code = self.run_repl(commands)
-+        env = os.environ.copy()
-+        env.pop("PYTHON_BASIC_REPL", None)
-+        output, exit_code = self.run_repl(commands, env=env)
-         self.assertEqual(exit_code, 0)
- 
-         # Build patterns for escape sequences that don't affect cursor position
diff --git a/python3-test-unlink-rofs.patch b/python3-test-unlink-rofs.patch
deleted file mode 100644
index e056d1a..0000000
--- a/python3-test-unlink-rofs.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- Python-3.13.13/Lib/test/support/os_helper.py.orig	2025-11-10 00:00:00.000000000 +0100
-+++ Python-3.13.13/Lib/test/support/os_helper.py	2025-11-10 00:00:00.000000000 +0100
-@@ -345,6 +345,12 @@ def unlink(filename):
-         _unlink(filename)
-     except (FileNotFoundError, NotADirectoryError):
-         pass
-+    except OSError as e:
-+        # On a read-only filesystem, unlink of a non-existent file may
-+        # raise EROFS instead of ENOENT. Treat it like a missing file.
-+        if e.errno == errno.EROFS and not os.path.lexists(filename):
-+            return
-+        raise
-
-
- if sys.platform.startswith("win"):
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/python3.git/commitdiff/d4a35001706c92001538a40842c22a2d390580aa



More information about the pld-cvs-commit mailing list