Compare commits
26 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3252eefc8 | ||
|
|
99563953da | ||
|
|
89d9f92697 | ||
|
|
511bdb75bd | ||
|
|
8a53c5ea64 | ||
|
|
479c2b397f | ||
|
|
1cba7ca6d7 | ||
|
|
5b70ab91fe | ||
|
|
fd2542f9c3 | ||
|
|
ba94183739 | ||
|
|
6928c91eb9 | ||
|
|
68d2217237 | ||
|
|
9aecf247bb | ||
|
|
3463fb44bf | ||
|
|
a7b4c9c13d | ||
|
|
7a9076d0e1 | ||
|
|
dfe2d475a9 | ||
|
|
bc7ab932a7 | ||
|
|
41c4f95a61 | ||
|
|
2b285dee4e | ||
|
|
7c6eb17d2b | ||
|
|
b7b2fa452d | ||
|
|
f7c55a4f2f | ||
|
|
dd94826d72 | ||
|
|
0cd2202156 | ||
|
|
d2a365c76d |
10 changed files with 506 additions and 122 deletions
|
|
@ -9,7 +9,7 @@ Subject: [PATCH] 00001: Fixup distutils/unixccompiler.py to remove standard
|
||||||
1 file changed, 9 insertions(+)
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
|
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
|
||||||
index f0792de74a..4d837936c6 100644
|
index d00c48981e..0283a28c19 100644
|
||||||
--- a/Lib/distutils/unixccompiler.py
|
--- a/Lib/distutils/unixccompiler.py
|
||||||
+++ b/Lib/distutils/unixccompiler.py
|
+++ b/Lib/distutils/unixccompiler.py
|
||||||
@@ -82,6 +82,15 @@ class UnixCCompiler(CCompiler):
|
@@ -82,6 +82,15 @@ class UnixCCompiler(CCompiler):
|
||||||
|
|
|
||||||
|
|
@ -2,41 +2,53 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Michal Cyprian <m.cyprian@gmail.com>
|
From: Michal Cyprian <m.cyprian@gmail.com>
|
||||||
Date: Mon, 26 Jun 2017 16:32:56 +0200
|
Date: Mon, 26 Jun 2017 16:32:56 +0200
|
||||||
Subject: [PATCH] 00251: Change user install location
|
Subject: [PATCH] 00251: Change user install location
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
Set values of prefix and exec_prefix in distutils install command
|
Set values of prefix and exec_prefix in distutils install command
|
||||||
to /usr/local if executable is /usr/bin/python* and RPM build
|
to /usr/local if executable is /usr/bin/python* and RPM build
|
||||||
is not detected to make pip and distutils install into separate location.
|
is not detected to make pip and distutils install into separate location.
|
||||||
|
|
||||||
Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
||||||
Downstream only: Awaiting resources to work on upstream PEP
|
Downstream only: Reworked in Fedora 36+ to follow https://bugs.python.org/issue43976
|
||||||
|
|
||||||
|
pypa/distutils integration: https://github.com/pypa/distutils/pull/70
|
||||||
|
|
||||||
|
Also set sysconfig._PIP_USE_SYSCONFIG = False, to force pip-upgraded-pip
|
||||||
|
to respect this patched distutils install command.
|
||||||
|
See https://bugzilla.redhat.com/show_bug.cgi?id=2014513
|
||||||
|
|
||||||
|
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||||
---
|
---
|
||||||
Lib/distutils/command/install.py | 15 +++++++++++++--
|
Lib/distutils/command/install.py | 8 ++++++--
|
||||||
Lib/site.py | 9 ++++++++-
|
Lib/site.py | 9 ++++++++-
|
||||||
2 files changed, 21 insertions(+), 3 deletions(-)
|
Lib/sysconfig.py | 16 ++++++++++++++++
|
||||||
|
3 files changed, 30 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
||||||
index 26696cfb9d..1826cbcb38 100644
|
index 01d5331a63..79f70f0de4 100644
|
||||||
--- a/Lib/distutils/command/install.py
|
--- a/Lib/distutils/command/install.py
|
||||||
+++ b/Lib/distutils/command/install.py
|
+++ b/Lib/distutils/command/install.py
|
||||||
@@ -441,8 +441,19 @@ def finalize_unix(self):
|
@@ -159,6 +159,8 @@ class install(Command):
|
||||||
|
|
||||||
|
negative_opt = {'no-compile' : 'compile'}
|
||||||
|
|
||||||
|
+ # Allow Fedora to add components to the prefix
|
||||||
|
+ _prefix_addition = getattr(sysconfig, '_prefix_addition', '')
|
||||||
|
|
||||||
|
def initialize_options(self):
|
||||||
|
"""Initializes options."""
|
||||||
|
@@ -441,8 +443,10 @@ def finalize_unix(self):
|
||||||
raise DistutilsOptionError(
|
raise DistutilsOptionError(
|
||||||
"must not supply exec-prefix without prefix")
|
"must not supply exec-prefix without prefix")
|
||||||
|
|
||||||
- self.prefix = os.path.normpath(sys.prefix)
|
- self.prefix = os.path.normpath(sys.prefix)
|
||||||
- self.exec_prefix = os.path.normpath(sys.exec_prefix)
|
- self.exec_prefix = os.path.normpath(sys.exec_prefix)
|
||||||
+ # self.prefix is set to sys.prefix + /local/
|
+ self.prefix = (
|
||||||
+ # if neither RPM build nor virtual environment is
|
+ os.path.normpath(sys.prefix) + self._prefix_addition)
|
||||||
+ # detected to make pip and distutils install packages
|
+ self.exec_prefix = (
|
||||||
+ # into the separate location.
|
+ os.path.normpath(sys.exec_prefix) + self._prefix_addition)
|
||||||
+ if (not (hasattr(sys, 'real_prefix') or
|
|
||||||
+ sys.prefix != sys.base_prefix) and
|
|
||||||
+ 'RPM_BUILD_ROOT' not in os.environ):
|
|
||||||
+ addition = "/local"
|
|
||||||
+ else:
|
|
||||||
+ addition = ""
|
|
||||||
+
|
|
||||||
+ self.prefix = os.path.normpath(sys.prefix) + addition
|
|
||||||
+ self.exec_prefix = os.path.normpath(sys.exec_prefix) + addition
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if self.exec_prefix is None:
|
if self.exec_prefix is None:
|
||||||
|
|
@ -61,3 +73,30 @@ index 939893eb5e..d1316c3355 100644
|
||||||
for sitedir in getsitepackages(prefixes):
|
for sitedir in getsitepackages(prefixes):
|
||||||
if os.path.isdir(sitedir):
|
if os.path.isdir(sitedir):
|
||||||
addsitedir(sitedir, known_paths)
|
addsitedir(sitedir, known_paths)
|
||||||
|
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
|
||||||
|
index daf9f00006..b88f9a9de0 100644
|
||||||
|
--- a/Lib/sysconfig.py
|
||||||
|
+++ b/Lib/sysconfig.py
|
||||||
|
@@ -58,6 +58,22 @@
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
+# Force pip to use distutils paths instead of sysconfig
|
||||||
|
+# https://github.com/pypa/pip/issues/10647
|
||||||
|
+_PIP_USE_SYSCONFIG = False
|
||||||
|
+
|
||||||
|
+# This is used by distutils.command.install in the stdlib
|
||||||
|
+# as well as pypa/distutils (e.g. bundled in setuptools).
|
||||||
|
+# The self.prefix value is set to sys.prefix + /local/
|
||||||
|
+# if neither RPM build nor virtual environment is
|
||||||
|
+# detected to make distutils install packages
|
||||||
|
+# into the separate location.
|
||||||
|
+# https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
||||||
|
+if (not (hasattr(sys, 'real_prefix') or
|
||||||
|
+ sys.prefix != sys.base_prefix) and
|
||||||
|
+ 'RPM_BUILD_ROOT' not in os.environ):
|
||||||
|
+ _prefix_addition = "/local"
|
||||||
|
+
|
||||||
|
|
||||||
|
# NOTE: site.py has copy of this function.
|
||||||
|
# Sync it when modify this function.
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ Ideally, we should talk to upstream and explain why we don't want this
|
||||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
|
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
|
||||||
index 0f9b59025c..59dc3fe50b 100644
|
index 388614e51b..db52725016 100644
|
||||||
--- a/Lib/py_compile.py
|
--- a/Lib/py_compile.py
|
||||||
+++ b/Lib/py_compile.py
|
+++ b/Lib/py_compile.py
|
||||||
@@ -70,7 +70,8 @@ class PycInvalidationMode(enum.Enum):
|
@@ -70,7 +70,8 @@ class PycInvalidationMode(enum.Enum):
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <thrnciar@redhat.com>
|
||||||
|
Date: Tue, 7 Dec 2021 14:41:59 +0100
|
||||||
|
Subject: [PATCH] 00371: Revert "bpo-1596321: Fix threading._shutdown() for the
|
||||||
|
main thread (GH-28549) (GH-28589)"
|
||||||
|
|
||||||
|
This reverts commit 38c67738c64304928c68d5c2bd78bbb01d979b94. It
|
||||||
|
introduced regression causing FreeIPA's tests to fail.
|
||||||
|
|
||||||
|
For more info see:
|
||||||
|
https://bodhi.fedoraproject.org/updates/FEDORA-2021-e152ce5f31
|
||||||
|
https://github.com/GrahamDumpleton/mod_wsgi/issues/730
|
||||||
|
---
|
||||||
|
Lib/test/test_threading.py | 33 ---------------------------------
|
||||||
|
Lib/threading.py | 25 ++++++++-----------------
|
||||||
|
2 files changed, 8 insertions(+), 50 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
|
||||||
|
index c54806e594..c51de6f4b8 100644
|
||||||
|
--- a/Lib/test/test_threading.py
|
||||||
|
+++ b/Lib/test/test_threading.py
|
||||||
|
@@ -928,39 +928,6 @@ def test_debug_deprecation(self):
|
||||||
|
b'is deprecated and will be removed in Python 3.12')
|
||||||
|
self.assertIn(msg, err)
|
||||||
|
|
||||||
|
- def test_import_from_another_thread(self):
|
||||||
|
- # bpo-1596321: If the threading module is first import from a thread
|
||||||
|
- # different than the main thread, threading._shutdown() must handle
|
||||||
|
- # this case without logging an error at Python exit.
|
||||||
|
- code = textwrap.dedent('''
|
||||||
|
- import _thread
|
||||||
|
- import sys
|
||||||
|
-
|
||||||
|
- event = _thread.allocate_lock()
|
||||||
|
- event.acquire()
|
||||||
|
-
|
||||||
|
- def import_threading():
|
||||||
|
- import threading
|
||||||
|
- event.release()
|
||||||
|
-
|
||||||
|
- if 'threading' in sys.modules:
|
||||||
|
- raise Exception('threading is already imported')
|
||||||
|
-
|
||||||
|
- _thread.start_new_thread(import_threading, ())
|
||||||
|
-
|
||||||
|
- # wait until the threading module is imported
|
||||||
|
- event.acquire()
|
||||||
|
- event.release()
|
||||||
|
-
|
||||||
|
- if 'threading' not in sys.modules:
|
||||||
|
- raise Exception('threading is not imported')
|
||||||
|
-
|
||||||
|
- # don't wait until the thread completes
|
||||||
|
- ''')
|
||||||
|
- rc, out, err = assert_python_ok("-c", code)
|
||||||
|
- self.assertEqual(out, b'')
|
||||||
|
- self.assertEqual(err, b'')
|
||||||
|
-
|
||||||
|
|
||||||
|
class ThreadJoinOnShutdown(BaseTestCase):
|
||||||
|
|
||||||
|
diff --git a/Lib/threading.py b/Lib/threading.py
|
||||||
|
index 62f49c05cd..433aa11212 100644
|
||||||
|
--- a/Lib/threading.py
|
||||||
|
+++ b/Lib/threading.py
|
||||||
|
@@ -1530,29 +1530,20 @@ def _shutdown():
|
||||||
|
|
||||||
|
global _SHUTTING_DOWN
|
||||||
|
_SHUTTING_DOWN = True
|
||||||
|
+ # Main thread
|
||||||
|
+ tlock = _main_thread._tstate_lock
|
||||||
|
+ # The main thread isn't finished yet, so its thread state lock can't have
|
||||||
|
+ # been released.
|
||||||
|
+ assert tlock is not None
|
||||||
|
+ assert tlock.locked()
|
||||||
|
+ tlock.release()
|
||||||
|
+ _main_thread._stop()
|
||||||
|
|
||||||
|
# Call registered threading atexit functions before threads are joined.
|
||||||
|
# Order is reversed, similar to atexit.
|
||||||
|
for atexit_call in reversed(_threading_atexits):
|
||||||
|
atexit_call()
|
||||||
|
|
||||||
|
- # Main thread
|
||||||
|
- if _main_thread.ident == get_ident():
|
||||||
|
- tlock = _main_thread._tstate_lock
|
||||||
|
- # The main thread isn't finished yet, so its thread state lock can't
|
||||||
|
- # have been released.
|
||||||
|
- assert tlock is not None
|
||||||
|
- assert tlock.locked()
|
||||||
|
- tlock.release()
|
||||||
|
- _main_thread._stop()
|
||||||
|
- else:
|
||||||
|
- # bpo-1596321: _shutdown() must be called in the main thread.
|
||||||
|
- # If the threading module was not imported by the main thread,
|
||||||
|
- # _main_thread is the thread which imported the threading module.
|
||||||
|
- # In this case, ignore _main_thread, similar behavior than for threads
|
||||||
|
- # spawned by C libraries or using _thread.start_new_thread().
|
||||||
|
- pass
|
||||||
|
-
|
||||||
|
# Join all non-deamon threads
|
||||||
|
while True:
|
||||||
|
with _shutdown_locks_lock:
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Miss Islington (bot)"
|
||||||
|
<31488909+miss-islington@users.noreply.github.com>
|
||||||
|
Date: Thu, 20 Oct 2022 16:55:51 -0700
|
||||||
|
Subject: [PATCH] 00391: Don't use Linux abstract sockets for multiprocessing
|
||||||
|
|
||||||
|
Linux abstract sockets are insecure as they lack any form of filesystem
|
||||||
|
permissions so their use allows anyone on the system to inject code into
|
||||||
|
the process.
|
||||||
|
|
||||||
|
This removes the default preference for abstract sockets in
|
||||||
|
multiprocessing introduced in Python 3.9+ via
|
||||||
|
https://github.com/python/cpython/pull/18866 while fixing
|
||||||
|
https://github.com/python/cpython/issues/84031.
|
||||||
|
|
||||||
|
Explicit use of an abstract socket by a user now generates a
|
||||||
|
RuntimeWarning. If we choose to keep this warning, it should be
|
||||||
|
backported to the 3.7 and 3.8 branches.
|
||||||
|
(cherry picked from commit 49f61068f49747164988ffc5a442d2a63874fc17)
|
||||||
|
|
||||||
|
Co-authored-by: Gregory P. Smith <greg@krypto.org>
|
||||||
|
|
||||||
|
Automerge-Triggered-By: GH:gpshead
|
||||||
|
---
|
||||||
|
Lib/multiprocessing/connection.py | 5 -----
|
||||||
|
.../2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst | 15 +++++++++++++++
|
||||||
|
2 files changed, 15 insertions(+), 5 deletions(-)
|
||||||
|
create mode 100644 Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
|
||||||
|
|
||||||
|
diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
|
||||||
|
index 510e4b5aba..8e2facf92a 100644
|
||||||
|
--- a/Lib/multiprocessing/connection.py
|
||||||
|
+++ b/Lib/multiprocessing/connection.py
|
||||||
|
@@ -73,11 +73,6 @@ def arbitrary_address(family):
|
||||||
|
if family == 'AF_INET':
|
||||||
|
return ('localhost', 0)
|
||||||
|
elif family == 'AF_UNIX':
|
||||||
|
- # Prefer abstract sockets if possible to avoid problems with the address
|
||||||
|
- # size. When coding portable applications, some implementations have
|
||||||
|
- # sun_path as short as 92 bytes in the sockaddr_un struct.
|
||||||
|
- if util.abstract_sockets_supported:
|
||||||
|
- return f"\0listener-{os.getpid()}-{next(_mmap_counter)}"
|
||||||
|
return tempfile.mktemp(prefix='listener-', dir=util.get_temp_dir())
|
||||||
|
elif family == 'AF_PIPE':
|
||||||
|
return tempfile.mktemp(prefix=r'\\.\pipe\pyc-%d-%d-' %
|
||||||
|
diff --git a/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst b/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..02d95b5705
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+On Linux the :mod:`multiprocessing` module returns to using filesystem backed
|
||||||
|
+unix domain sockets for communication with the *forkserver* process instead of
|
||||||
|
+the Linux abstract socket namespace. Only code that chooses to use the
|
||||||
|
+:ref:`"forkserver" start method <multiprocessing-start-methods>` is affected.
|
||||||
|
+
|
||||||
|
+Abstract sockets have no permissions and could allow any user on the system in
|
||||||
|
+the same `network namespace
|
||||||
|
+<https://man7.org/linux/man-pages/man7/network_namespaces.7.html>`_ (often the
|
||||||
|
+whole system) to inject code into the multiprocessing *forkserver* process.
|
||||||
|
+This was a potential privilege escalation. Filesystem based socket permissions
|
||||||
|
+restrict this to the *forkserver* process user as was the default in Python 3.8
|
||||||
|
+and earlier.
|
||||||
|
+
|
||||||
|
+This prevents Linux `CVE-2022-42919
|
||||||
|
+<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_.
|
||||||
111
00393-idle---fix-buggy-macosx-patch.patch
Normal file
111
00393-idle---fix-buggy-macosx-patch.patch
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Miss Islington (bot)"
|
||||||
|
<31488909+miss-islington@users.noreply.github.com>
|
||||||
|
Date: Sun, 16 Oct 2022 08:33:33 -0700
|
||||||
|
Subject: [PATCH] 00393: IDLE - fix buggy macosx patch
|
||||||
|
|
||||||
|
GH-97530 fixed IDLE tests possibly crashing on a Mac without a GUI.
|
||||||
|
But it resulted in IDLE not starting in 3.10.8, 3.12.0a1, and
|
||||||
|
Microsoft Python 3.10.2288.0 when test/* is not installed.
|
||||||
|
After this patch, test.* is only imported when testing on Mac.
|
||||||
|
(cherry picked from commit 35fa5d5e7f2b0971b39b2659dc70cb77e34a7dd6)
|
||||||
|
|
||||||
|
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
|
||||||
|
---
|
||||||
|
Lib/idlelib/NEWS.txt | 5 +++
|
||||||
|
Lib/idlelib/macosx.py | 42 ++++++++++++-------
|
||||||
|
...2-10-15-21-20-40.gh-issue-97527.otAHJM.rst | 3 ++
|
||||||
|
3 files changed, 34 insertions(+), 16 deletions(-)
|
||||||
|
create mode 100644 Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
|
||||||
|
|
||||||
|
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
|
||||||
|
index 277fd9429a..521b1f12f9 100644
|
||||||
|
--- a/Lib/idlelib/NEWS.txt
|
||||||
|
+++ b/Lib/idlelib/NEWS.txt
|
||||||
|
@@ -4,6 +4,11 @@ Released 2023-04-03?
|
||||||
|
=========================
|
||||||
|
|
||||||
|
|
||||||
|
+gh-97527: Fix a bug in the previous bugfix that caused IDLE to not
|
||||||
|
+start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python
|
||||||
|
+3.10.2288.0 installed without the Lib/test package. 3.11.0 was never
|
||||||
|
+affected.
|
||||||
|
+
|
||||||
|
gh-65802: Document handling of extensions in Save As dialogs.
|
||||||
|
|
||||||
|
gh-95191: Include prompts when saving Shell (interactive input/output).
|
||||||
|
diff --git a/Lib/idlelib/macosx.py b/Lib/idlelib/macosx.py
|
||||||
|
index 1085d689f6..f53bd58970 100644
|
||||||
|
--- a/Lib/idlelib/macosx.py
|
||||||
|
+++ b/Lib/idlelib/macosx.py
|
||||||
|
@@ -4,7 +4,6 @@
|
||||||
|
from os.path import expanduser
|
||||||
|
import plistlib
|
||||||
|
from sys import platform # Used in _init_tk_type, changed by test.
|
||||||
|
-from test.support import requires, ResourceDenied
|
||||||
|
|
||||||
|
import tkinter
|
||||||
|
|
||||||
|
@@ -16,27 +15,38 @@
|
||||||
|
|
||||||
|
def _init_tk_type():
|
||||||
|
""" Initialize _tk_type for isXyzTk functions.
|
||||||
|
+
|
||||||
|
+ This function is only called once, when _tk_type is still None.
|
||||||
|
"""
|
||||||
|
global _tk_type
|
||||||
|
if platform == 'darwin':
|
||||||
|
- try:
|
||||||
|
- requires('gui')
|
||||||
|
- except ResourceDenied: # Possible when testing.
|
||||||
|
- _tk_type = "cocoa" # Newest and most common.
|
||||||
|
- else:
|
||||||
|
- root = tkinter.Tk()
|
||||||
|
- ws = root.tk.call('tk', 'windowingsystem')
|
||||||
|
- if 'x11' in ws:
|
||||||
|
- _tk_type = "xquartz"
|
||||||
|
- elif 'aqua' not in ws:
|
||||||
|
- _tk_type = "other"
|
||||||
|
- elif 'AppKit' in root.tk.call('winfo', 'server', '.'):
|
||||||
|
+
|
||||||
|
+ # When running IDLE, GUI is present, test/* may not be.
|
||||||
|
+ # When running tests, test/* is present, GUI may not be.
|
||||||
|
+ # If not, guess most common. Does not matter for testing.
|
||||||
|
+ from idlelib.__init__ import testing
|
||||||
|
+ if testing:
|
||||||
|
+ from test.support import requires, ResourceDenied
|
||||||
|
+ try:
|
||||||
|
+ requires('gui')
|
||||||
|
+ except ResourceDenied:
|
||||||
|
_tk_type = "cocoa"
|
||||||
|
- else:
|
||||||
|
- _tk_type = "carbon"
|
||||||
|
- root.destroy()
|
||||||
|
+ return
|
||||||
|
+
|
||||||
|
+ root = tkinter.Tk()
|
||||||
|
+ ws = root.tk.call('tk', 'windowingsystem')
|
||||||
|
+ if 'x11' in ws:
|
||||||
|
+ _tk_type = "xquartz"
|
||||||
|
+ elif 'aqua' not in ws:
|
||||||
|
+ _tk_type = "other"
|
||||||
|
+ elif 'AppKit' in root.tk.call('winfo', 'server', '.'):
|
||||||
|
+ _tk_type = "cocoa"
|
||||||
|
+ else:
|
||||||
|
+ _tk_type = "carbon"
|
||||||
|
+ root.destroy()
|
||||||
|
else:
|
||||||
|
_tk_type = "other"
|
||||||
|
+ return
|
||||||
|
|
||||||
|
def isAquaTk():
|
||||||
|
"""
|
||||||
|
diff --git a/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst b/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..e7fda89741
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Misc/NEWS.d/next/IDLE/2022-10-15-21-20-40.gh-issue-97527.otAHJM.rst
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+Fix a bug in the previous bugfix that caused IDLE to not start when run with
|
||||||
|
+3.10.8, 3.12.0a1, and at least Microsoft Python 3.10.2288.0 installed
|
||||||
|
+without the Lib/test package. 3.11.0 was never affected.
|
||||||
|
|
@ -19,9 +19,6 @@ addFilter(r'self-obsoletion python3\.\d+ obsoletes python3\.\d+')
|
||||||
# intentionally hardcoded
|
# intentionally hardcoded
|
||||||
addFilter(r'hardcoded-library-path in %{_prefix}/lib/(debug/%{_libdir}|python%{pybasever})')
|
addFilter(r'hardcoded-library-path in %{_prefix}/lib/(debug/%{_libdir}|python%{pybasever})')
|
||||||
|
|
||||||
# intentional for our pythonXY package
|
|
||||||
addFilter(r'python3\.\d+\.[^:]+: (E|W): devel-file-in-non-devel-package')
|
|
||||||
|
|
||||||
# we have non binary stuff, python files
|
# we have non binary stuff, python files
|
||||||
addFilter(r'only-non-binary-in-usr-lib')
|
addFilter(r'only-non-binary-in-usr-lib')
|
||||||
|
|
||||||
|
|
|
||||||
256
python3.10.spec
256
python3.10.spec
|
|
@ -13,11 +13,11 @@ URL: https://www.python.org/
|
||||||
|
|
||||||
# WARNING When rebasing to a new Python version,
|
# WARNING When rebasing to a new Python version,
|
||||||
# remember to update the python3-docs package as well
|
# remember to update the python3-docs package as well
|
||||||
%global general_version %{pybasever}.0
|
%global general_version %{pybasever}.8
|
||||||
#global prerel ...
|
#global prerel ...
|
||||||
%global upstream_version %{general_version}%{?prerel}
|
%global upstream_version %{general_version}%{?prerel}
|
||||||
Version: %{general_version}%{?prerel:~%{prerel}}
|
Version: %{general_version}%{?prerel:~%{prerel}}
|
||||||
Release: 1%{?dist}
|
Release: 3%{?dist}
|
||||||
License: Python
|
License: Python
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -31,7 +31,6 @@ License: Python
|
||||||
# Main Python, i.e. whether this is the main Python version in the distribution
|
# Main Python, i.e. whether this is the main Python version in the distribution
|
||||||
# that owns /usr/bin/python3 and other unique paths
|
# that owns /usr/bin/python3 and other unique paths
|
||||||
# This also means the built subpackages are called python3 rather than python3X
|
# This also means the built subpackages are called python3 rather than python3X
|
||||||
# WARNING: This also influences the flatpackage bcond below.
|
|
||||||
# By default, this is determined by the %%__default_python3_pkgversion value
|
# By default, this is determined by the %%__default_python3_pkgversion value
|
||||||
%if "%{?__default_python3_pkgversion}" == "%{pybasever}"
|
%if "%{?__default_python3_pkgversion}" == "%{pybasever}"
|
||||||
%bcond_without main_python
|
%bcond_without main_python
|
||||||
|
|
@ -39,13 +38,13 @@ License: Python
|
||||||
%bcond_with main_python
|
%bcond_with main_python
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# Flat package, i.e. no separate subpackages
|
# If this is *not* Main Python, should it contain `Provides: python(abi) ...`?
|
||||||
# Default (in Fedora): if this is a main Python, it is not a flatpackage
|
# In Fedora no package shall depend on an alternative Python via this tag, so we do not provide it.
|
||||||
# Not supported: Combination of flatpackage enabled and main_python enabled
|
# In ELN/RHEL/CentOS we want to allow building against alternative stacks, so the Provide is enabled.
|
||||||
%if %{with main_python}
|
%if 0%{?fedora}
|
||||||
%bcond_with flatpackage
|
%bcond_with python_abi_provides_for_alt_pythons
|
||||||
%else
|
%else
|
||||||
%bcond_without flatpackage
|
%bcond_without python_abi_provides_for_alt_pythons
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# When bootstrapping python3, we need to build setuptools.
|
# When bootstrapping python3, we need to build setuptools.
|
||||||
|
|
@ -68,8 +67,8 @@ License: Python
|
||||||
# If the rpmwheels condition is disabled, we use the bundled wheel packages
|
# If the rpmwheels condition is disabled, we use the bundled wheel packages
|
||||||
# from Python with the versions below.
|
# from Python with the versions below.
|
||||||
# This needs to be manually updated when we update Python.
|
# This needs to be manually updated when we update Python.
|
||||||
%global pip_version 21.2.3
|
%global pip_version 22.2.2
|
||||||
%global setuptools_version 57.4.0
|
%global setuptools_version 63.2.0
|
||||||
|
|
||||||
# Expensive optimizations (mainly, profile-guided optimizations)
|
# Expensive optimizations (mainly, profile-guided optimizations)
|
||||||
%bcond_without optimizations
|
%bcond_without optimizations
|
||||||
|
|
@ -79,11 +78,7 @@ License: Python
|
||||||
|
|
||||||
# Extra build for debugging the interpreter or C-API extensions
|
# Extra build for debugging the interpreter or C-API extensions
|
||||||
# (the -debug subpackages)
|
# (the -debug subpackages)
|
||||||
%if %{with flatpackage}
|
|
||||||
%bcond_with debug_build
|
|
||||||
%else
|
|
||||||
%bcond_without debug_build
|
%bcond_without debug_build
|
||||||
%endif
|
|
||||||
|
|
||||||
# Support for the GDB debugger
|
# Support for the GDB debugger
|
||||||
%bcond_without gdb_hooks
|
%bcond_without gdb_hooks
|
||||||
|
|
@ -166,6 +161,20 @@ License: Python
|
||||||
%{warn:Doing a main_python build with wrong %%__default_python3_pkgversion (0%{?__default_python3_pkgversion}, but this is %pyshortver)}
|
%{warn:Doing a main_python build with wrong %%__default_python3_pkgversion (0%{?__default_python3_pkgversion}, but this is %pyshortver)}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with main_python}
|
||||||
|
# To keep the upgrade path clean, we Obsolete python3.X from the python3
|
||||||
|
# package and python3.X-foo from individual subpackages.
|
||||||
|
# Note that using Obsoletes without package version is not standard practice.
|
||||||
|
# Here we assert that *any* version of the system's default interpreter is
|
||||||
|
# preferable to an "extra" interpreter. For example, python3-3.6.1 will
|
||||||
|
# replace python3.6-3.6.2.
|
||||||
|
%define unversioned_obsoletes_of_python3_X_if_main() %{expand:\
|
||||||
|
Obsoletes: python%{pybasever}%{?1:-%{1}}\
|
||||||
|
}
|
||||||
|
%else
|
||||||
|
%define unversioned_obsoletes_of_python3_X_if_main() %{nil}
|
||||||
|
%endif
|
||||||
|
|
||||||
# =======================
|
# =======================
|
||||||
# Build-time requirements
|
# Build-time requirements
|
||||||
# =======================
|
# =======================
|
||||||
|
|
@ -267,7 +276,7 @@ Source11: idle3.appdata.xml
|
||||||
# Was Patch0 in ivazquez' python3000 specfile
|
# Was Patch0 in ivazquez' python3000 specfile
|
||||||
Patch1: 00001-rpath.patch
|
Patch1: 00001-rpath.patch
|
||||||
|
|
||||||
# 00251 # 5c445123f04d96be42a35eef5119378ba1713a96
|
# 00251 # 08a62456431df182dfad18ad75838f769aca2d08
|
||||||
# Change user install location
|
# Change user install location
|
||||||
#
|
#
|
||||||
# Set values of prefix and exec_prefix in distutils install command
|
# Set values of prefix and exec_prefix in distutils install command
|
||||||
|
|
@ -275,7 +284,13 @@ Patch1: 00001-rpath.patch
|
||||||
# is not detected to make pip and distutils install into separate location.
|
# is not detected to make pip and distutils install into separate location.
|
||||||
#
|
#
|
||||||
# Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
# Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
||||||
# Downstream only: Awaiting resources to work on upstream PEP
|
# Downstream only: Reworked in Fedora 36+ to follow https://bugs.python.org/issue43976
|
||||||
|
#
|
||||||
|
# pypa/distutils integration: https://github.com/pypa/distutils/pull/70
|
||||||
|
#
|
||||||
|
# Also set sysconfig._PIP_USE_SYSCONFIG = False, to force pip-upgraded-pip
|
||||||
|
# to respect this patched distutils install command.
|
||||||
|
# See https://bugzilla.redhat.com/show_bug.cgi?id=2014513
|
||||||
Patch251: 00251-change-user-install-location.patch
|
Patch251: 00251-change-user-install-location.patch
|
||||||
|
|
||||||
# 00328 # 318e500c98f5e59eb1f23e0fcd32db69b9bd17e1
|
# 00328 # 318e500c98f5e59eb1f23e0fcd32db69b9bd17e1
|
||||||
|
|
@ -292,6 +307,46 @@ Patch251: 00251-change-user-install-location.patch
|
||||||
# Ideally, we should talk to upstream and explain why we don't want this
|
# Ideally, we should talk to upstream and explain why we don't want this
|
||||||
Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
||||||
|
|
||||||
|
# 00371 # c1754d9c2750f89cb702e1b63a99201f5f7cff00
|
||||||
|
# Revert "bpo-1596321: Fix threading._shutdown() for the main thread (GH-28549) (GH-28589)"
|
||||||
|
#
|
||||||
|
# This reverts commit 38c67738c64304928c68d5c2bd78bbb01d979b94. It
|
||||||
|
# introduced regression causing FreeIPA's tests to fail.
|
||||||
|
#
|
||||||
|
# For more info see:
|
||||||
|
# https://bodhi.fedoraproject.org/updates/FEDORA-2021-e152ce5f31
|
||||||
|
# https://github.com/GrahamDumpleton/mod_wsgi/issues/730
|
||||||
|
Patch371: 00371-revert-bpo-1596321-fix-threading-_shutdown-for-the-main-thread-gh-28549-gh-28589.patch
|
||||||
|
|
||||||
|
# 00391 # e6d12d8fca6afad3a56dc076c220f213b723a28e
|
||||||
|
# Don't use Linux abstract sockets for multiprocessing
|
||||||
|
#
|
||||||
|
# Linux abstract sockets are insecure as they lack any form of filesystem
|
||||||
|
# permissions so their use allows anyone on the system to inject code into
|
||||||
|
# the process.
|
||||||
|
#
|
||||||
|
# This removes the default preference for abstract sockets in
|
||||||
|
# multiprocessing introduced in Python 3.9+ via
|
||||||
|
# https://github.com/python/cpython/pull/18866 while fixing
|
||||||
|
# https://github.com/python/cpython/issues/84031.
|
||||||
|
#
|
||||||
|
# Explicit use of an abstract socket by a user now generates a
|
||||||
|
# RuntimeWarning. If we choose to keep this warning, it should be
|
||||||
|
# backported to the 3.7 and 3.8 branches.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Automerge-Triggered-By: GH:gpshead
|
||||||
|
Patch391: 00391-don-t-use-linux-abstract-sockets-for-multiprocessing.patch
|
||||||
|
|
||||||
|
# 00393 # 353b3ca7b9e0884839cd6dea28c9bafd9f878571
|
||||||
|
# IDLE - fix buggy macosx patch
|
||||||
|
#
|
||||||
|
# GH-97530 fixed IDLE tests possibly crashing on a Mac without a GUI.
|
||||||
|
# But it resulted in IDLE not starting in 3.10.8, 3.12.0a1, and
|
||||||
|
# Microsoft Python 3.10.2288.0 when test/* is not installed.
|
||||||
|
# After this patch, test.* is only imported when testing on Mac.
|
||||||
|
Patch393: 00393-idle---fix-buggy-macosx-patch.patch
|
||||||
|
|
||||||
# (New patches go here ^^^)
|
# (New patches go here ^^^)
|
||||||
#
|
#
|
||||||
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
||||||
|
|
@ -310,8 +365,7 @@ Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
||||||
# Descriptions, and metadata for subpackages
|
# Descriptions, and metadata for subpackages
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
# this if branch is ~300 lines long and contains subpackages' definitions
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%if %{with main_python}
|
%if %{with main_python}
|
||||||
# Description for the python3X SRPM only:
|
# Description for the python3X SRPM only:
|
||||||
%description
|
%description
|
||||||
|
|
@ -324,17 +378,13 @@ third-party libraries.
|
||||||
Summary: Python %{pybasever} interpreter
|
Summary: Python %{pybasever} interpreter
|
||||||
|
|
||||||
# In order to support multiple Python interpreters for development purposes,
|
# In order to support multiple Python interpreters for development purposes,
|
||||||
# packages with the naming scheme flatpackage (e.g. python3.5) exist for
|
# packages with fully versioned naming scheme (e.g. python3.9*) exist for
|
||||||
# non-default versions of Python 3.
|
# non-default versions of Python 3.
|
||||||
# For consistency, we provide python3.X from python3 as well.
|
# For consistency, we provide python3.X from python3 as well.
|
||||||
Provides: python%{pybasever} = %{version}-%{release}
|
Provides: python%{pybasever} = %{version}-%{release}
|
||||||
Provides: python%{pybasever}%{?_isa} = %{version}-%{release}
|
Provides: python%{pybasever}%{?_isa} = %{version}-%{release}
|
||||||
# To keep the upgrade path clean, we Obsolete python3.X.
|
|
||||||
# Note that using Obsoletes without package version is not standard practice.
|
%unversioned_obsoletes_of_python3_X_if_main
|
||||||
# Here we assert that *any* version of the system's default interpreter is
|
|
||||||
# preferable to an "extra" interpreter. For example, python3-3.6.1 will
|
|
||||||
# replace python3.6-3.6.2.
|
|
||||||
Obsoletes: python%{pybasever}
|
|
||||||
|
|
||||||
# https://fedoraproject.org/wiki/Changes/Move_usr_bin_python_into_separate_package
|
# https://fedoraproject.org/wiki/Changes/Move_usr_bin_python_into_separate_package
|
||||||
# https://fedoraproject.org/wiki/Changes/Python_means_Python3
|
# https://fedoraproject.org/wiki/Changes/Python_means_Python3
|
||||||
|
|
@ -348,15 +398,18 @@ Recommends: %{_bindir}/python
|
||||||
# python39). However, to align it with the executable names and to prepare for
|
# python39). However, to align it with the executable names and to prepare for
|
||||||
# Python 3.10, they were renamed to pythonX.Y (e.g. python3.9, python3.10). We
|
# Python 3.10, they were renamed to pythonX.Y (e.g. python3.9, python3.10). We
|
||||||
# provide and obsolete the previous names.
|
# provide and obsolete the previous names.
|
||||||
# - Here are the tags for the nonflat package, regardless if main_python (e.g.
|
|
||||||
# python3) or not (e.g. python39). For the flat package, the provide is
|
|
||||||
# repeated many lines later.
|
|
||||||
Provides: python%{pyshortver} = %{version}-%{release}
|
Provides: python%{pyshortver} = %{version}-%{release}
|
||||||
Obsoletes: python%{pyshortver} < %{version}-%{release}
|
Obsoletes: python%{pyshortver} < %{version}-%{release}
|
||||||
|
|
||||||
|
%if %{with main_python} || %{with python_abi_provides_for_alt_pythons}
|
||||||
# Packages with Python modules in standard locations automatically
|
# Packages with Python modules in standard locations automatically
|
||||||
# depend on python(abi). Provide that here.
|
# depend on python(abi). Provide that here.
|
||||||
Provides: python(abi) = %{pybasever}
|
Provides: python(abi) = %{pybasever}
|
||||||
|
%else
|
||||||
|
# We exclude the `python(abi)` Provides
|
||||||
|
%global __requires_exclude ^python\\(abi\\) = 3\\..+
|
||||||
|
%global __provides_exclude ^python\\(abi\\) = 3\\..+
|
||||||
|
%endif
|
||||||
|
|
||||||
Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
|
|
@ -423,6 +476,8 @@ Provides: bundled(python3dist(pip)) = %{pip_version}
|
||||||
Provides: bundled(python3dist(setuptools)) = %{setuptools_version}
|
Provides: bundled(python3dist(setuptools)) = %{setuptools_version}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main libs
|
||||||
|
|
||||||
# There are files in the standard library that have python shebang.
|
# There are files in the standard library that have python shebang.
|
||||||
# We've filtered the automatic requirement out so libs are installable without
|
# We've filtered the automatic requirement out so libs are installable without
|
||||||
# the main package. This however makes it pulled in by default.
|
# the main package. This however makes it pulled in by default.
|
||||||
|
|
@ -455,15 +510,22 @@ Requires: (python-rpm-macros if rpm-build)
|
||||||
Requires: (python3-rpm-macros if rpm-build)
|
Requires: (python3-rpm-macros if rpm-build)
|
||||||
Requires: (pyproject-rpm-macros if rpm-build)
|
Requires: (pyproject-rpm-macros if rpm-build)
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main devel
|
||||||
|
|
||||||
|
%if %{with main_python}
|
||||||
# Python developers are very likely to need pip
|
# Python developers are very likely to need pip
|
||||||
Recommends: %{pkgname}-pip
|
Recommends: %{pkgname}-pip
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{without bootstrap}
|
%if %{without bootstrap}
|
||||||
Requires: (python3-rpm-generators if rpm-build)
|
Requires: (python3-rpm-generators if rpm-build)
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Provides: %{pkgname}-2to3 = %{version}-%{release}
|
Provides: %{pkgname}-2to3 = %{version}-%{release}
|
||||||
|
|
||||||
|
%if %{with main_python}
|
||||||
Provides: 2to3 = %{version}-%{release}
|
Provides: 2to3 = %{version}-%{release}
|
||||||
|
%endif
|
||||||
|
|
||||||
Conflicts: %{pkgname} < %{version}-%{release}
|
Conflicts: %{pkgname} < %{version}-%{release}
|
||||||
|
|
||||||
|
|
@ -481,8 +543,12 @@ Summary: A basic graphical development environment for Python
|
||||||
Requires: %{pkgname} = %{version}-%{release}
|
Requires: %{pkgname} = %{version}-%{release}
|
||||||
Requires: %{pkgname}-tkinter = %{version}-%{release}
|
Requires: %{pkgname}-tkinter = %{version}-%{release}
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main idle
|
||||||
|
|
||||||
|
%if %{with main_python}
|
||||||
Provides: idle3 = %{version}-%{release}
|
Provides: idle3 = %{version}-%{release}
|
||||||
Provides: idle = %{version}-%{release}
|
Provides: idle = %{version}-%{release}
|
||||||
|
%endif
|
||||||
|
|
||||||
Provides: %{pkgname}-tools = %{version}-%{release}
|
Provides: %{pkgname}-tools = %{version}-%{release}
|
||||||
Provides: %{pkgname}-tools%{?_isa} = %{version}-%{release}
|
Provides: %{pkgname}-tools%{?_isa} = %{version}-%{release}
|
||||||
|
|
@ -505,6 +571,8 @@ configuration, browsers, and other dialogs.
|
||||||
Summary: A GUI toolkit for Python
|
Summary: A GUI toolkit for Python
|
||||||
Requires: %{pkgname} = %{version}-%{release}
|
Requires: %{pkgname} = %{version}-%{release}
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main tkinter
|
||||||
|
|
||||||
# The importable module "turtle" is here, so provide python3-turtle.
|
# The importable module "turtle" is here, so provide python3-turtle.
|
||||||
# (We don't provide python3-turtledemo, that's not too useful when imported.)
|
# (We don't provide python3-turtledemo, that's not too useful when imported.)
|
||||||
%py_provides %{pkgname}-turtle
|
%py_provides %{pkgname}-turtle
|
||||||
|
|
@ -519,6 +587,8 @@ Summary: The self-test suite for the main python3 package
|
||||||
Requires: %{pkgname} = %{version}-%{release}
|
Requires: %{pkgname} = %{version}-%{release}
|
||||||
Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main test
|
||||||
|
|
||||||
%description -n %{pkgname}-test
|
%description -n %{pkgname}-test
|
||||||
The self-test suite for the Python interpreter.
|
The self-test suite for the Python interpreter.
|
||||||
|
|
||||||
|
|
@ -541,6 +611,8 @@ Requires: %{pkgname}-test%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{pkgname}-tkinter%{?_isa} = %{version}-%{release}
|
Requires: %{pkgname}-tkinter%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{pkgname}-idle%{?_isa} = %{version}-%{release}
|
Requires: %{pkgname}-idle%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
|
%unversioned_obsoletes_of_python3_X_if_main debug
|
||||||
|
|
||||||
%description -n %{pkgname}-debug
|
%description -n %{pkgname}-debug
|
||||||
python3-debug provides a version of the Python runtime with numerous debugging
|
python3-debug provides a version of the Python runtime with numerous debugging
|
||||||
features enabled, aimed at advanced Python users such as developers of Python
|
features enabled, aimed at advanced Python users such as developers of Python
|
||||||
|
|
@ -558,44 +630,6 @@ The debug runtime additionally supports debug builds of C-API extensions
|
||||||
(with the "d" ABI flag) for debugging issues in those extensions.
|
(with the "d" ABI flag) for debugging issues in those extensions.
|
||||||
%endif # with debug_build
|
%endif # with debug_build
|
||||||
|
|
||||||
%else # with flatpackage
|
|
||||||
|
|
||||||
# We'll not provide this, on purpose
|
|
||||||
# No package in Fedora shall ever depend on flatpackage via this
|
|
||||||
%global __requires_exclude ^python\\(abi\\) = 3\\..+
|
|
||||||
%global __provides_exclude ^python\\(abi\\) = 3\\..+
|
|
||||||
|
|
||||||
# Python interpreter packages used to be named (or provide) name pythonXY (e.g.
|
|
||||||
# python39). However, to align it with the executable names and to prepare for
|
|
||||||
# Python 3.10, they were renamed to pythonX.Y (e.g. python3.9, python3.10). We
|
|
||||||
# provide and obsolete the previous names.
|
|
||||||
# - Here are the tags for the flat package. For the nonflat package, the
|
|
||||||
# provide is repeated many lines above.
|
|
||||||
Provides: python%{pyshortver} = %{version}-%{release}
|
|
||||||
Obsoletes: python%{pyshortver} < %{version}-%{release}
|
|
||||||
|
|
||||||
%if %{with rpmwheels}
|
|
||||||
Requires: python-setuptools-wheel
|
|
||||||
Requires: python-pip-wheel
|
|
||||||
%else
|
|
||||||
Provides: bundled(python3dist(pip)) = %{pip_version}
|
|
||||||
Provides: bundled(python3dist(setuptools)) = %{setuptools_version}
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# The zoneinfo module needs tzdata
|
|
||||||
Requires: tzdata
|
|
||||||
|
|
||||||
# The description for the flat package (SRPM and built)
|
|
||||||
%description
|
|
||||||
Python %{pybasever} package for developers.
|
|
||||||
|
|
||||||
This package exists to allow developers to test their code against a newer
|
|
||||||
version of Python. This is not a full Python stack and if you wish to run
|
|
||||||
your applications with Python %{pybasever}, update your Fedora to a newer
|
|
||||||
version once Python %{pybasever} is stable.
|
|
||||||
|
|
||||||
%endif # with flatpackage
|
|
||||||
|
|
||||||
# ======================================================
|
# ======================================================
|
||||||
# The prep phase of the build:
|
# The prep phase of the build:
|
||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
@ -1058,10 +1092,8 @@ CheckPython() {
|
||||||
# test_distutils
|
# test_distutils
|
||||||
# distutils.tests.test_bdist_rpm tests fail when bootstraping the Python
|
# distutils.tests.test_bdist_rpm tests fail when bootstraping the Python
|
||||||
# package: rpmbuild requires /usr/bin/pythonX.Y to be installed
|
# package: rpmbuild requires /usr/bin/pythonX.Y to be installed
|
||||||
# test_frozentable fails with Python 3.10.0a6 (https://bugs.python.org/issue43372)
|
|
||||||
LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \
|
LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \
|
||||||
-wW --slowest -j0 --timeout=1800 \
|
-wW --slowest -j0 --timeout=1800 \
|
||||||
-i test_frozentable \
|
|
||||||
%if %{with bootstrap}
|
%if %{with bootstrap}
|
||||||
-x test_distutils \
|
-x test_distutils \
|
||||||
%endif
|
%endif
|
||||||
|
|
@ -1100,17 +1132,13 @@ CheckPython optimized
|
||||||
|
|
||||||
|
|
||||||
%if %{with main_python}
|
%if %{with main_python}
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n python-unversioned-command
|
%files -n python-unversioned-command
|
||||||
%endif
|
|
||||||
%{_bindir}/python
|
%{_bindir}/python
|
||||||
%{_mandir}/*/python.1*
|
%{_mandir}/*/python.1*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-libs
|
%files -n %{pkgname}-libs
|
||||||
%doc README.rst
|
%doc README.rst
|
||||||
%endif
|
|
||||||
|
|
||||||
%dir %{pylibdir}
|
%dir %{pylibdir}
|
||||||
%dir %{dynload_dir}
|
%dir %{dynload_dir}
|
||||||
|
|
@ -1118,9 +1146,7 @@ CheckPython optimized
|
||||||
%license %{pylibdir}/LICENSE.txt
|
%license %{pylibdir}/LICENSE.txt
|
||||||
|
|
||||||
%{pylibdir}/lib2to3
|
%{pylibdir}/lib2to3
|
||||||
%if %{without flatpackage}
|
|
||||||
%exclude %{pylibdir}/lib2to3/tests
|
%exclude %{pylibdir}/lib2to3/tests
|
||||||
%endif
|
|
||||||
|
|
||||||
%dir %{pylibdir}/unittest/
|
%dir %{pylibdir}/unittest/
|
||||||
%dir %{pylibdir}/unittest/__pycache__/
|
%dir %{pylibdir}/unittest/__pycache__/
|
||||||
|
|
@ -1243,6 +1269,12 @@ CheckPython optimized
|
||||||
%dir %{pylibdir}/site-packages/
|
%dir %{pylibdir}/site-packages/
|
||||||
%dir %{pylibdir}/site-packages/__pycache__/
|
%dir %{pylibdir}/site-packages/__pycache__/
|
||||||
%{pylibdir}/site-packages/README.txt
|
%{pylibdir}/site-packages/README.txt
|
||||||
|
|
||||||
|
%if %{with debug_build}
|
||||||
|
%exclude %{pylibdir}/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}.py
|
||||||
|
%exclude %{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}%{bytecode_suffixes}
|
||||||
|
%endif
|
||||||
|
|
||||||
%{pylibdir}/*.py
|
%{pylibdir}/*.py
|
||||||
%dir %{pylibdir}/__pycache__/
|
%dir %{pylibdir}/__pycache__/
|
||||||
%{pylibdir}/__pycache__/*%{bytecode_suffixes}
|
%{pylibdir}/__pycache__/*%{bytecode_suffixes}
|
||||||
|
|
@ -1307,10 +1339,8 @@ CheckPython optimized
|
||||||
%{pylibdir}/sqlite3/*.py
|
%{pylibdir}/sqlite3/*.py
|
||||||
%{pylibdir}/sqlite3/__pycache__/*%{bytecode_suffixes}
|
%{pylibdir}/sqlite3/__pycache__/*%{bytecode_suffixes}
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%exclude %{pylibdir}/turtle.py
|
%exclude %{pylibdir}/turtle.py
|
||||||
%exclude %{pylibdir}/__pycache__/turtle*%{bytecode_suffixes}
|
%exclude %{pylibdir}/__pycache__/turtle*%{bytecode_suffixes}
|
||||||
%endif
|
|
||||||
|
|
||||||
%{pylibdir}/urllib
|
%{pylibdir}/urllib
|
||||||
%{pylibdir}/xml
|
%{pylibdir}/xml
|
||||||
|
|
@ -1336,15 +1366,10 @@ CheckPython optimized
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-devel
|
%files -n %{pkgname}-devel
|
||||||
%endif
|
|
||||||
|
|
||||||
%{pylibdir}/config-%{LDVERSION_optimized}-%{platform_triplet}/*
|
%{pylibdir}/config-%{LDVERSION_optimized}-%{platform_triplet}/*
|
||||||
%if %{without flatpackage}
|
|
||||||
%exclude %{pylibdir}/config-%{LDVERSION_optimized}-%{platform_triplet}/Makefile
|
%exclude %{pylibdir}/config-%{LDVERSION_optimized}-%{platform_triplet}/Makefile
|
||||||
%exclude %{_includedir}/python%{LDVERSION_optimized}/%{_pyconfig_h}
|
%exclude %{_includedir}/python%{LDVERSION_optimized}/%{_pyconfig_h}
|
||||||
%endif
|
|
||||||
%{_includedir}/python%{LDVERSION_optimized}/*.h
|
%{_includedir}/python%{LDVERSION_optimized}/*.h
|
||||||
%{_includedir}/python%{LDVERSION_optimized}/internal/
|
%{_includedir}/python%{LDVERSION_optimized}/internal/
|
||||||
%{_includedir}/python%{LDVERSION_optimized}/cpython/
|
%{_includedir}/python%{LDVERSION_optimized}/cpython/
|
||||||
|
|
@ -1379,10 +1404,7 @@ CheckPython optimized
|
||||||
%{_libdir}/pkgconfig/python-%{pybasever}-embed.pc
|
%{_libdir}/pkgconfig/python-%{pybasever}-embed.pc
|
||||||
|
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-idle
|
%files -n %{pkgname}-idle
|
||||||
%endif
|
|
||||||
|
|
||||||
%if %{with main_python}
|
%if %{with main_python}
|
||||||
%{_bindir}/idle*
|
%{_bindir}/idle*
|
||||||
%else
|
%else
|
||||||
|
|
@ -1397,14 +1419,9 @@ CheckPython optimized
|
||||||
%{_datadir}/icons/hicolor/*/apps/idle3.*
|
%{_datadir}/icons/hicolor/*/apps/idle3.*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-tkinter
|
%files -n %{pkgname}-tkinter
|
||||||
%endif
|
|
||||||
|
|
||||||
%{pylibdir}/tkinter
|
%{pylibdir}/tkinter
|
||||||
%if %{without flatpackage}
|
|
||||||
%exclude %{pylibdir}/tkinter/test
|
%exclude %{pylibdir}/tkinter/test
|
||||||
%endif
|
|
||||||
%{dynload_dir}/_tkinter.%{SOABI_optimized}.so
|
%{dynload_dir}/_tkinter.%{SOABI_optimized}.so
|
||||||
%{pylibdir}/turtle.py
|
%{pylibdir}/turtle.py
|
||||||
%{pylibdir}/__pycache__/turtle*%{bytecode_suffixes}
|
%{pylibdir}/__pycache__/turtle*%{bytecode_suffixes}
|
||||||
|
|
@ -1415,10 +1432,7 @@ CheckPython optimized
|
||||||
%{pylibdir}/turtledemo/__pycache__/*%{bytecode_suffixes}
|
%{pylibdir}/turtledemo/__pycache__/*%{bytecode_suffixes}
|
||||||
|
|
||||||
|
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-test
|
%files -n %{pkgname}-test
|
||||||
%endif
|
|
||||||
|
|
||||||
%{pylibdir}/ctypes/test
|
%{pylibdir}/ctypes/test
|
||||||
%{pylibdir}/distutils/tests
|
%{pylibdir}/distutils/tests
|
||||||
%{pylibdir}/sqlite3/test
|
%{pylibdir}/sqlite3/test
|
||||||
|
|
@ -1441,10 +1455,7 @@ CheckPython optimized
|
||||||
# all of the other subpackages
|
# all of the other subpackages
|
||||||
|
|
||||||
%if %{with debug_build}
|
%if %{with debug_build}
|
||||||
%if %{without flatpackage}
|
|
||||||
%files -n %{pkgname}-debug
|
%files -n %{pkgname}-debug
|
||||||
%endif
|
|
||||||
|
|
||||||
%if %{with main_python}
|
%if %{with main_python}
|
||||||
%{_bindir}/python3-debug
|
%{_bindir}/python3-debug
|
||||||
%{_bindir}/python-debug
|
%{_bindir}/python-debug
|
||||||
|
|
@ -1560,6 +1571,9 @@ CheckPython optimized
|
||||||
%{dynload_dir}/_testinternalcapi.%{SOABI_debug}.so
|
%{dynload_dir}/_testinternalcapi.%{SOABI_debug}.so
|
||||||
%{dynload_dir}/_testmultiphase.%{SOABI_debug}.so
|
%{dynload_dir}/_testmultiphase.%{SOABI_debug}.so
|
||||||
|
|
||||||
|
%{pylibdir}/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}.py
|
||||||
|
%{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}%{bytecode_suffixes}
|
||||||
|
|
||||||
%endif # with debug_build
|
%endif # with debug_build
|
||||||
|
|
||||||
# We put the debug-gdb.py file inside /usr/lib/debug to avoid noise from ldconfig
|
# We put the debug-gdb.py file inside /usr/lib/debug to avoid noise from ldconfig
|
||||||
|
|
@ -1583,6 +1597,56 @@ CheckPython optimized
|
||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Nov 14 2022 Miro Hrončok <mhroncok@redhat.com> - 3.10.8-3
|
||||||
|
- Make IDLE work without python3-test installed
|
||||||
|
- Fixes rhbz#2142602
|
||||||
|
|
||||||
|
* Wed Nov 09 2022 Lumír Balhar <lbalhar@redhat.com> - 3.10.8-2
|
||||||
|
- Fix CVE-2022-42919
|
||||||
|
Resolves: rhbz#2138709
|
||||||
|
|
||||||
|
* Wed Oct 12 2022 Miro Hrončok <mhroncok@redhat.com> - 3.10.8-1
|
||||||
|
- Update to 3.10.8
|
||||||
|
|
||||||
|
* Wed Sep 07 2022 Miro Hrončok <mhroncok@redhat.com> - 3.10.7-1
|
||||||
|
- Update to 3.10.7
|
||||||
|
- Contains security fix for CVE-2020-10735
|
||||||
|
|
||||||
|
* Tue Aug 02 2022 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.6-1
|
||||||
|
- Update to 3.10.6
|
||||||
|
|
||||||
|
* Thu Jun 09 2022 Charalampos Stratakis <cstratak@redhat.com> - 3.10.5-2
|
||||||
|
- Security fix for CVE-2015-20107
|
||||||
|
Resolves: rhbz#2075390
|
||||||
|
|
||||||
|
* Tue Jun 07 2022 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.5-1
|
||||||
|
- Update to 3.10.5
|
||||||
|
|
||||||
|
* Sat May 14 2022 Tomas Orsava <torsava@redhat.com> - 3.10.4-2
|
||||||
|
- Move _sysconfigdata_d_linux*.py to the debug subpackage
|
||||||
|
|
||||||
|
* Fri Mar 25 2022 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.4-1
|
||||||
|
- Update to 3.10.4
|
||||||
|
|
||||||
|
* Fri Mar 18 2022 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.3-1
|
||||||
|
- Update to 3.10.3
|
||||||
|
|
||||||
|
* Mon Jan 17 2022 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.2-1
|
||||||
|
- Update to 3.10.2
|
||||||
|
|
||||||
|
* Mon Jan 10 2022 Miro Hrončok <mhroncok@redhat.com> - 3.10.1-3
|
||||||
|
- Backport fixes for two Python 3.10.1 regressions
|
||||||
|
- Fixes: rhbz#2030621
|
||||||
|
- Fixes: rhbz#2034962
|
||||||
|
|
||||||
|
* Thu Dec 09 2021 Miro Hrončok <mhroncok@redhat.com> - 3.10.1-2
|
||||||
|
- Instruct pip to use distutils
|
||||||
|
- Instruct pypa/distutils to add /local/ addition to prefix
|
||||||
|
- Fixes rhbz#2014513
|
||||||
|
|
||||||
|
* Tue Dec 07 2021 Tomáš Hrnčiar <thrnciar@redhat.com> - 3.10.1-1
|
||||||
|
- Update to 3.10.1
|
||||||
|
|
||||||
* Mon Oct 04 2021 Miro Hrončok <mhroncok@redhat.com> - 3.10.0-1
|
* Mon Oct 04 2021 Miro Hrončok <mhroncok@redhat.com> - 3.10.0-1
|
||||||
- Update to 3.10.0 final
|
- Update to 3.10.0 final
|
||||||
|
|
||||||
|
|
|
||||||
4
sources
4
sources
|
|
@ -1,2 +1,2 @@
|
||||||
SHA512 (Python-3.10.0.tar.xz) = 82b2729afc7d72a80882f199970667dce7d971a2e5ecfe6cf84f7b68612ab2caf6ed6d7a8cb81f24ea85cb0816464bb2e8b2e6884eda62fa40742edc674193bd
|
SHA512 (Python-3.10.8.tar.xz) = 40e3e77d79618c81d6fc57c5d119b99c2959dcf932f40aad6b26f2ec39c5e713e6ff298f7597b4fad2ab94680db3732483b5ca0a45e6ae58c14580b3ea44cb0f
|
||||||
SHA512 (Python-3.10.0.tar.xz.asc) = 67236e02bc49da1423717cb54216b745f613ba2fc4b372a4aa15a36ab15fe69d9b9087070382957d480df7576d13056caedcd979fb56531799a1190b822f673d
|
SHA512 (Python-3.10.8.tar.xz.asc) = 0c2ef09d898257ba5e9ec7c5bb224a7e50e5ebca96843b4d9e25be6cdd2f17144772aafc92280af20c21491e3c8cedc697414688ece613c93b28ff7ecddcf93f
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@
|
||||||
- smoke:
|
- smoke:
|
||||||
dir: python/smoke
|
dir: python/smoke
|
||||||
run: VERSION=3.10 ./venv.sh
|
run: VERSION=3.10 ./venv.sh
|
||||||
|
- smoke_virtualenv:
|
||||||
|
dir: python/smoke
|
||||||
|
run: VERSION=3.10 METHOD=virtualenv ./venv.sh
|
||||||
- debugsmoke:
|
- debugsmoke:
|
||||||
dir: python/smoke
|
dir: python/smoke
|
||||||
run: PYTHON=python3-debug TOX=false VERSION=3.10 ./venv.sh
|
run: PYTHON=python3-debug TOX=false VERSION=3.10 ./venv.sh
|
||||||
|
|
@ -44,7 +47,8 @@
|
||||||
- python3-devel # for extension building in venv and selftest
|
- python3-devel # for extension building in venv and selftest
|
||||||
- python3-tkinter # for selftest
|
- python3-tkinter # for selftest
|
||||||
- python3-test # for selftest
|
- python3-test # for selftest
|
||||||
- python3-tox # for venv tests
|
- tox # for venv tests
|
||||||
|
- virtualenv # for virtualenv tests
|
||||||
- glibc-all-langpacks # for locale tests
|
- glibc-all-langpacks # for locale tests
|
||||||
- marshalparser # for testing compatibility (magic numbers) with marshalparser
|
- marshalparser # for testing compatibility (magic numbers) with marshalparser
|
||||||
- rpm # for debugging
|
- rpm # for debugging
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue