[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