import python39-3.9.2-1.module+el8.4.0+10237+bdc77aac
This commit is contained in:
commit
81b2b9d637
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/Python-3.9.2.tar.xz
|
1
.python39.metadata
Normal file
1
.python39.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
110ca5bca7989f9558a54ee6762e6774a4b9644a SOURCES/Python-3.9.2.tar.xz
|
30
SOURCES/00001-rpath.patch
Normal file
30
SOURCES/00001-rpath.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Wed, 13 Jan 2010 21:25:18 +0000
|
||||||
|
Subject: [PATCH] 00001: Fixup distutils/unixccompiler.py to remove standard
|
||||||
|
library path from rpath Was Patch0 in ivazquez' python3000 specfile
|
||||||
|
|
||||||
|
---
|
||||||
|
Lib/distutils/unixccompiler.py | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
|
||||||
|
index f0792de74a..4d837936c6 100644
|
||||||
|
--- a/Lib/distutils/unixccompiler.py
|
||||||
|
+++ b/Lib/distutils/unixccompiler.py
|
||||||
|
@@ -82,6 +82,15 @@ class UnixCCompiler(CCompiler):
|
||||||
|
if sys.platform == "cygwin":
|
||||||
|
exe_extension = ".exe"
|
||||||
|
|
||||||
|
+ def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs):
|
||||||
|
+ """Remove standard library path from rpath"""
|
||||||
|
+ libraries, library_dirs, runtime_library_dirs = super()._fix_lib_args(
|
||||||
|
+ libraries, library_dirs, runtime_library_dirs)
|
||||||
|
+ libdir = sysconfig.get_config_var('LIBDIR')
|
||||||
|
+ if runtime_library_dirs and (libdir in runtime_library_dirs):
|
||||||
|
+ runtime_library_dirs.remove(libdir)
|
||||||
|
+ return libraries, library_dirs, runtime_library_dirs
|
||||||
|
+
|
||||||
|
def preprocess(self, source, output_file=None, macros=None,
|
||||||
|
include_dirs=None, extra_preargs=None, extra_postargs=None):
|
||||||
|
fixed_args = self._fix_compile_args(None, macros, include_dirs)
|
75
SOURCES/00111-no-static-lib.patch
Normal file
75
SOURCES/00111-no-static-lib.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Date: Mon, 18 Jan 2010 17:59:07 +0000
|
||||||
|
Subject: [PATCH] 00111: Don't try to build a libpythonMAJOR.MINOR.a
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Downstream only: not appropriate for upstream.
|
||||||
|
|
||||||
|
See https://bugzilla.redhat.com/show_bug.cgi?id=556092
|
||||||
|
|
||||||
|
Co-authored-by: David Malcolm <dmalcolm@redhat.com>
|
||||||
|
Co-authored-by: Bohuslav Kabrda <bkabrda@redhat.com>
|
||||||
|
Co-authored-by: Matej Stuchlik <mstuchli@redhat.com>
|
||||||
|
Co-authored-by: Robert Kuska <rkuska@redhat.com>
|
||||||
|
Co-authored-by: Charalampos Stratakis <cstratak@redhat.com>
|
||||||
|
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||||
|
---
|
||||||
|
Makefile.pre.in | 21 ++-------------------
|
||||||
|
1 file changed, 2 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||||
|
index f128444b98..22f25e159d 100644
|
||||||
|
--- a/Makefile.pre.in
|
||||||
|
+++ b/Makefile.pre.in
|
||||||
|
@@ -586,7 +586,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||||
|
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
|
||||||
|
|
||||||
|
# Build the interpreter
|
||||||
|
-$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
|
+$(BUILDPYTHON): Programs/python.o $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
|
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||||
|
|
||||||
|
platform: $(BUILDPYTHON) pybuilddir.txt
|
||||||
|
@@ -634,12 +634,6 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
||||||
|
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
|
||||||
|
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
||||||
|
|
||||||
|
-
|
||||||
|
-# Build static library
|
||||||
|
-$(LIBRARY): $(LIBRARY_OBJS)
|
||||||
|
- -rm -f $@
|
||||||
|
- $(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
|
||||||
|
-
|
||||||
|
libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
|
||||||
|
if test $(INSTSONAME) != $(LDLIBRARY); then \
|
||||||
|
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
|
||||||
|
@@ -721,7 +715,7 @@ Makefile Modules/config.c: Makefile.pre \
|
||||||
|
@echo "The Makefile was updated, you may need to re-run make."
|
||||||
|
|
||||||
|
|
||||||
|
-Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
|
+Programs/_testembed: Programs/_testembed.o $(LDLIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
|
||||||
|
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
@@ -1631,17 +1625,6 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
||||||
|
else true; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
- @if test -d $(LIBRARY); then :; else \
|
||||||
|
- if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
|
||||||
|
- if test "$(SHLIB_SUFFIX)" = .dll; then \
|
||||||
|
- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
|
||||||
|
- else \
|
||||||
|
- $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
|
||||||
|
- fi; \
|
||||||
|
- else \
|
||||||
|
- echo Skip install of $(LIBRARY) - use make frameworkinstall; \
|
||||||
|
- fi; \
|
||||||
|
- fi
|
||||||
|
$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
|
||||||
|
$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o
|
||||||
|
$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
|
74
SOURCES/00189-use-rpm-wheels.patch
Normal file
74
SOURCES/00189-use-rpm-wheels.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||||
|
Date: Wed, 15 Aug 2018 15:36:29 +0200
|
||||||
|
Subject: [PATCH] 00189: Instead of bundled wheels, use our RPM packaged wheels
|
||||||
|
|
||||||
|
We keep them in /usr/share/python-wheels
|
||||||
|
|
||||||
|
Downstream only: upstream bundles
|
||||||
|
We might eventually pursuit upstream support, but it's low prio
|
||||||
|
---
|
||||||
|
Lib/ensurepip/__init__.py | 33 ++++++++++++++++++++++-----------
|
||||||
|
1 file changed, 22 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
|
||||||
|
index 97dfa7ea71..984e587ea0 100644
|
||||||
|
--- a/Lib/ensurepip/__init__.py
|
||||||
|
+++ b/Lib/ensurepip/__init__.py
|
||||||
|
@@ -1,3 +1,5 @@
|
||||||
|
+import distutils.version
|
||||||
|
+import glob
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
@@ -6,16 +8,28 @@ import tempfile
|
||||||
|
import subprocess
|
||||||
|
from importlib import resources
|
||||||
|
|
||||||
|
-from . import _bundled
|
||||||
|
-
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ["version", "bootstrap"]
|
||||||
|
|
||||||
|
+_WHEEL_DIR = "/usr/share/python39-wheels/"
|
||||||
|
|
||||||
|
-_SETUPTOOLS_VERSION = "49.2.1"
|
||||||
|
+_wheels = {}
|
||||||
|
|
||||||
|
-_PIP_VERSION = "20.2.3"
|
||||||
|
+def _get_most_recent_wheel_version(pkg):
|
||||||
|
+ prefix = os.path.join(_WHEEL_DIR, "{}-".format(pkg))
|
||||||
|
+ _wheels[pkg] = {}
|
||||||
|
+ for suffix in "-py2.py3-none-any.whl", "-py3-none-any.whl":
|
||||||
|
+ pattern = "{}*{}".format(prefix, suffix)
|
||||||
|
+ for path in glob.glob(pattern):
|
||||||
|
+ version_str = path[len(prefix):-len(suffix)]
|
||||||
|
+ _wheels[pkg][version_str] = os.path.basename(path)
|
||||||
|
+ return str(max(_wheels[pkg], key=distutils.version.LooseVersion))
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+_SETUPTOOLS_VERSION = _get_most_recent_wheel_version("setuptools")
|
||||||
|
+
|
||||||
|
+_PIP_VERSION = _get_most_recent_wheel_version("pip")
|
||||||
|
|
||||||
|
_PROJECTS = [
|
||||||
|
("setuptools", _SETUPTOOLS_VERSION, "py3"),
|
||||||
|
@@ -105,13 +119,10 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
|
||||||
|
# additional paths that need added to sys.path
|
||||||
|
additional_paths = []
|
||||||
|
for project, version, py_tag in _PROJECTS:
|
||||||
|
- wheel_name = "{}-{}-{}-none-any.whl".format(project, version, py_tag)
|
||||||
|
- whl = resources.read_binary(
|
||||||
|
- _bundled,
|
||||||
|
- wheel_name,
|
||||||
|
- )
|
||||||
|
- with open(os.path.join(tmpdir, wheel_name), "wb") as fp:
|
||||||
|
- fp.write(whl)
|
||||||
|
+ wheel_name = _wheels[project][version]
|
||||||
|
+ with open(os.path.join(_WHEEL_DIR, wheel_name), "rb") as sfp:
|
||||||
|
+ with open(os.path.join(tmpdir, wheel_name), "wb") as fp:
|
||||||
|
+ fp.write(sfp.read())
|
||||||
|
|
||||||
|
additional_paths.append(os.path.join(tmpdir, wheel_name))
|
||||||
|
|
62
SOURCES/00251-change-user-install-location.patch
Normal file
62
SOURCES/00251-change-user-install-location.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Cyprian <m.cyprian@gmail.com>
|
||||||
|
Date: Mon, 26 Jun 2017 16:32:56 +0200
|
||||||
|
Subject: [PATCH] 00251: Change user install location
|
||||||
|
|
||||||
|
Set values of prefix and exec_prefix in distutils install command
|
||||||
|
to /usr/local if executable is /usr/bin/python* and RPM build
|
||||||
|
is not detected to make pip and distutils install into separate location.
|
||||||
|
|
||||||
|
Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
||||||
|
Downstream only: Awaiting resources to work on upstream PEP
|
||||||
|
---
|
||||||
|
Lib/distutils/command/install.py | 15 +++++++++++++--
|
||||||
|
Lib/site.py | 9 ++++++++-
|
||||||
|
2 files changed, 21 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
||||||
|
index aaa300efa9..f8d453912a 100644
|
||||||
|
--- a/Lib/distutils/command/install.py
|
||||||
|
+++ b/Lib/distutils/command/install.py
|
||||||
|
@@ -419,8 +419,19 @@ class install(Command):
|
||||||
|
raise DistutilsOptionError(
|
||||||
|
"must not supply exec-prefix without prefix")
|
||||||
|
|
||||||
|
- self.prefix = os.path.normpath(sys.prefix)
|
||||||
|
- self.exec_prefix = os.path.normpath(sys.exec_prefix)
|
||||||
|
+ # self.prefix is set to sys.prefix + /local/
|
||||||
|
+ # if neither RPM build nor virtual environment is
|
||||||
|
+ # detected to make pip and distutils install packages
|
||||||
|
+ # into the separate location.
|
||||||
|
+ 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:
|
||||||
|
if self.exec_prefix is None:
|
||||||
|
diff --git a/Lib/site.py b/Lib/site.py
|
||||||
|
index 9e617afb00..db14f715f9 100644
|
||||||
|
--- a/Lib/site.py
|
||||||
|
+++ b/Lib/site.py
|
||||||
|
@@ -353,7 +353,14 @@ def getsitepackages(prefixes=None):
|
||||||
|
return sitepackages
|
||||||
|
|
||||||
|
def addsitepackages(known_paths, prefixes=None):
|
||||||
|
- """Add site-packages to sys.path"""
|
||||||
|
+ """Add site-packages to sys.path
|
||||||
|
+
|
||||||
|
+ '/usr/local' is included in PREFIXES if RPM build is not detected
|
||||||
|
+ to make packages installed into this location visible.
|
||||||
|
+
|
||||||
|
+ """
|
||||||
|
+ if ENABLE_USER_SITE and 'RPM_BUILD_ROOT' not in os.environ:
|
||||||
|
+ PREFIXES.insert(0, "/usr/local")
|
||||||
|
for sitedir in getsitepackages(prefixes):
|
||||||
|
if os.path.isdir(sitedir):
|
||||||
|
addsitedir(sitedir, known_paths)
|
54
SOURCES/00328-pyc-timestamp-invalidation-mode.patch
Normal file
54
SOURCES/00328-pyc-timestamp-invalidation-mode.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||||
|
Date: Thu, 11 Jul 2019 13:44:13 +0200
|
||||||
|
Subject: [PATCH] 00328: Restore pyc to TIMESTAMP invalidation mode as default
|
||||||
|
in rpmbuild
|
||||||
|
|
||||||
|
Since Fedora 31, the $SOURCE_DATE_EPOCH is set in rpmbuild to the latest
|
||||||
|
%changelog date. This makes Python default to the CHECKED_HASH pyc
|
||||||
|
invalidation mode, bringing more reproducible builds traded for an import
|
||||||
|
performance decrease. To avoid that, we don't default to CHECKED_HASH
|
||||||
|
when $RPM_BUILD_ROOT is set (i.e. when we are building RPM packages).
|
||||||
|
|
||||||
|
See https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/57#comment-27426
|
||||||
|
Downstream only: only used when building RPM packages
|
||||||
|
Ideally, we should talk to upstream and explain why we don't want this
|
||||||
|
---
|
||||||
|
Lib/py_compile.py | 3 ++-
|
||||||
|
Lib/test/test_py_compile.py | 2 ++
|
||||||
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
|
||||||
|
index a81f493731..bba3642bf2 100644
|
||||||
|
--- a/Lib/py_compile.py
|
||||||
|
+++ b/Lib/py_compile.py
|
||||||
|
@@ -70,7 +70,8 @@ class PycInvalidationMode(enum.Enum):
|
||||||
|
|
||||||
|
|
||||||
|
def _get_default_invalidation_mode():
|
||||||
|
- if os.environ.get('SOURCE_DATE_EPOCH'):
|
||||||
|
+ if (os.environ.get('SOURCE_DATE_EPOCH') and not
|
||||||
|
+ os.environ.get('RPM_BUILD_ROOT')):
|
||||||
|
return PycInvalidationMode.CHECKED_HASH
|
||||||
|
else:
|
||||||
|
return PycInvalidationMode.TIMESTAMP
|
||||||
|
diff --git a/Lib/test/test_py_compile.py b/Lib/test/test_py_compile.py
|
||||||
|
index e6791c6916..b2d3dcf7fb 100644
|
||||||
|
--- a/Lib/test/test_py_compile.py
|
||||||
|
+++ b/Lib/test/test_py_compile.py
|
||||||
|
@@ -19,6 +19,7 @@ def without_source_date_epoch(fxn):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
with support.EnvironmentVarGuard() as env:
|
||||||
|
env.unset('SOURCE_DATE_EPOCH')
|
||||||
|
+ env.unset('RPM_BUILD_ROOT')
|
||||||
|
return fxn(*args, **kwargs)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
@@ -29,6 +30,7 @@ def with_source_date_epoch(fxn):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
with support.EnvironmentVarGuard() as env:
|
||||||
|
env['SOURCE_DATE_EPOCH'] = '123456789'
|
||||||
|
+ env.unset('RPM_BUILD_ROOT')
|
||||||
|
return fxn(*args, **kwargs)
|
||||||
|
return wrapper
|
||||||
|
|
2573
SOURCES/00329-fips.patch
Normal file
2573
SOURCES/00329-fips.patch
Normal file
File diff suppressed because it is too large
Load Diff
97
SOURCES/00353-architecture-names-upstream-downstream.patch
Normal file
97
SOURCES/00353-architecture-names-upstream-downstream.patch
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lumir Balhar <lbalhar@redhat.com>
|
||||||
|
Date: Tue, 4 Aug 2020 12:04:03 +0200
|
||||||
|
Subject: [PATCH] 00353: Original names for architectures with different names
|
||||||
|
downstream
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
https://fedoraproject.org/wiki/Changes/Python_Upstream_Architecture_Names
|
||||||
|
|
||||||
|
Pythons in RHEL/Fedora used different names for some architectures
|
||||||
|
than upstream and other distros (for example ppc64 vs. powerpc64).
|
||||||
|
This was patched in patch 274, now it is sedded if %with legacy_archnames.
|
||||||
|
|
||||||
|
That meant that an extension built with the default upstream settings
|
||||||
|
(on other distro or as an manylinux wheel) could not been found by Python
|
||||||
|
on RHEL/Fedora because it had a different suffix.
|
||||||
|
This patch adds the legacy names to importlib so Python is able
|
||||||
|
to import extensions with a legacy architecture name in its
|
||||||
|
file name.
|
||||||
|
It work both ways, so it support both %with and %without legacy_archnames.
|
||||||
|
|
||||||
|
WARNING: This patch has no effect on Python built with bootstrap
|
||||||
|
enabled because Python/importlib_external.h is not regenerated
|
||||||
|
and therefore Python during bootstrap contains importlib from
|
||||||
|
upstream without this feature. It's possible to include
|
||||||
|
Python/importlib_external.h to this patch but it'd make rebasing
|
||||||
|
a nightmare because it's basically a binary file.
|
||||||
|
|
||||||
|
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||||
|
---
|
||||||
|
Lib/importlib/_bootstrap_external.py | 40 ++++++++++++++++++++++++++--
|
||||||
|
1 file changed, 38 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
|
||||||
|
index 25a3f8c0e0..a2edbebc88 100644
|
||||||
|
--- a/Lib/importlib/_bootstrap_external.py
|
||||||
|
+++ b/Lib/importlib/_bootstrap_external.py
|
||||||
|
@@ -1566,7 +1566,7 @@ def _get_supported_file_loaders():
|
||||||
|
|
||||||
|
Each item is a tuple (loader, suffixes).
|
||||||
|
"""
|
||||||
|
- extensions = ExtensionFileLoader, _imp.extension_suffixes()
|
||||||
|
+ extensions = ExtensionFileLoader, _alternative_architectures(_imp.extension_suffixes())
|
||||||
|
source = SourceFileLoader, SOURCE_SUFFIXES
|
||||||
|
bytecode = SourcelessFileLoader, BYTECODE_SUFFIXES
|
||||||
|
return [extensions, source, bytecode]
|
||||||
|
@@ -1622,7 +1622,7 @@ def _setup(_bootstrap_module):
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
setattr(self_module, '_relax_case', _make_relax_case())
|
||||||
|
- EXTENSION_SUFFIXES.extend(_imp.extension_suffixes())
|
||||||
|
+ EXTENSION_SUFFIXES.extend(_alternative_architectures(_imp.extension_suffixes()))
|
||||||
|
if builtin_os == 'nt':
|
||||||
|
SOURCE_SUFFIXES.append('.pyw')
|
||||||
|
if '_d.pyd' in EXTENSION_SUFFIXES:
|
||||||
|
@@ -1635,3 +1635,39 @@ def _install(_bootstrap_module):
|
||||||
|
supported_loaders = _get_supported_file_loaders()
|
||||||
|
sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)])
|
||||||
|
sys.meta_path.append(PathFinder)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+_ARCH_MAP = {
|
||||||
|
+ "-arm-linux-gnueabi.": "-arm-linux-gnueabihf.",
|
||||||
|
+ "-armeb-linux-gnueabi.": "-armeb-linux-gnueabihf.",
|
||||||
|
+ "-mips64-linux-gnu.": "-mips64-linux-gnuabi64.",
|
||||||
|
+ "-mips64el-linux-gnu.": "-mips64el-linux-gnuabi64.",
|
||||||
|
+ "-ppc-linux-gnu.": "-powerpc-linux-gnu.",
|
||||||
|
+ "-ppc-linux-gnuspe.": "-powerpc-linux-gnuspe.",
|
||||||
|
+ "-ppc64-linux-gnu.": "-powerpc64-linux-gnu.",
|
||||||
|
+ "-ppc64le-linux-gnu.": "-powerpc64le-linux-gnu.",
|
||||||
|
+ # The above, but the other way around:
|
||||||
|
+ "-arm-linux-gnueabihf.": "-arm-linux-gnueabi.",
|
||||||
|
+ "-armeb-linux-gnueabihf.": "-armeb-linux-gnueabi.",
|
||||||
|
+ "-mips64-linux-gnuabi64.": "-mips64-linux-gnu.",
|
||||||
|
+ "-mips64el-linux-gnuabi64.": "-mips64el-linux-gnu.",
|
||||||
|
+ "-powerpc-linux-gnu.": "-ppc-linux-gnu.",
|
||||||
|
+ "-powerpc-linux-gnuspe.": "-ppc-linux-gnuspe.",
|
||||||
|
+ "-powerpc64-linux-gnu.": "-ppc64-linux-gnu.",
|
||||||
|
+ "-powerpc64le-linux-gnu.": "-ppc64le-linux-gnu.",
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+def _alternative_architectures(suffixes):
|
||||||
|
+ """Add a suffix with an alternative architecture name
|
||||||
|
+ to the list of suffixes so an extension built with
|
||||||
|
+ the default (upstream) setting is loadable with our Pythons
|
||||||
|
+ """
|
||||||
|
+
|
||||||
|
+ for suffix in suffixes:
|
||||||
|
+ for original, alternative in _ARCH_MAP.items():
|
||||||
|
+ if original in suffix:
|
||||||
|
+ suffixes.append(suffix.replace(original, alternative))
|
||||||
|
+ return suffixes
|
||||||
|
+
|
||||||
|
+ return suffixes
|
16
SOURCES/Python-3.9.2.tar.xz.asc
Normal file
16
SOURCES/Python-3.9.2.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEE4/8oOcBIslwITevpsmmV4xAlBWgFAmAvyCoACgkQsmmV4xAl
|
||||||
|
BWhP7g//XBDQxNrjEaLSBfGy8tGbNPqlrBAOWsuH02JzvRXnr2gBX2m8TfaUSAnq
|
||||||
|
8Kzafrpsfw0+7LFoPfrp+YwUO5k2WprovW9Iw+LoUM0d5DABL/gXKwVb0j9i8nRj
|
||||||
|
uaPLzX9SRnCQQPfYQW/5wRFIm+/aqz4fx93k3Gw0AfeYh9Ka1pUJOCxCvihS47+E
|
||||||
|
dUeoC6S8SUDrm5lPLj8t1uVVtp8W7GpGMwF5Zn31ThrlUA4V/dTMmqSUXCaAI9Ii
|
||||||
|
zXditd26EfySKSxps+VQgL7GB778XcIYxlnMYzoqd6SD/pCQgagpFP2nZ1zdZ0/g
|
||||||
|
qpwgeGE2SK++w8iiOs2Q59tisREU7PHNVtpdILhw9Me892mwxIjl8wDMTZHY8vvU
|
||||||
|
6OZRI9G8UktpkEcT9FeFgwna2T3T16rEVbrzpteeDLFgqUpt84yXD+pd5W/Oozaj
|
||||||
|
sfbd7lCFBcdzCQIKa+DGDuJKFPExu8oqGg7Zq25wxLvkNosmHXny9NylE1VIJ5ad
|
||||||
|
WHadwBeFSFCR7faplO8s+hO/BmT5PcEwIXrz/xVqwf28o/0im63llkE6WUCRW4MU
|
||||||
|
x/S5uWjB/HSDw2NHLRRc0bLabl30mMCf7J/EkVmm9dsIpmXhn6SLC9YCYjJtIjC7
|
||||||
|
ChSQs+U8MgEnwk/un/DELIRUtu+rQZ1GkQnJ4tooaYJlYr/m7Ww=
|
||||||
|
=s/wm
|
||||||
|
-----END PGP SIGNATURE-----
|
55
SOURCES/check-pyc-timestamps.py
Normal file
55
SOURCES/check-pyc-timestamps.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
"""Checks if all *.pyc files have later mtime than their *.py files."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from importlib.util import cache_from_source
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
RPM_BUILD_ROOT = os.environ.get('RPM_BUILD_ROOT', '')
|
||||||
|
|
||||||
|
# ...cpython-3X.pyc
|
||||||
|
# ...cpython-3X.opt-1.pyc
|
||||||
|
# ...cpython-3X.opt-2.pyc
|
||||||
|
LEVELS = (None, 1, 2)
|
||||||
|
|
||||||
|
# list of globs of test and other files that we expect not to have bytecode
|
||||||
|
not_compiled = [
|
||||||
|
'/usr/bin/*',
|
||||||
|
'*/test/bad_coding.py',
|
||||||
|
'*/test/bad_coding2.py',
|
||||||
|
'*/test/badsyntax_*.py',
|
||||||
|
'*/lib2to3/tests/data/bom.py',
|
||||||
|
'*/lib2to3/tests/data/crlf.py',
|
||||||
|
'*/lib2to3/tests/data/different_encoding.py',
|
||||||
|
'*/lib2to3/tests/data/false_encoding.py',
|
||||||
|
'*/lib2to3/tests/data/py2_test_grammar.py',
|
||||||
|
'*.debug-gdb.py',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def bytecode_expected(path):
|
||||||
|
path = Path(path[len(RPM_BUILD_ROOT):])
|
||||||
|
for glob in not_compiled:
|
||||||
|
if path.match(glob):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
failed = 0
|
||||||
|
compiled = (path for path in sys.argv[1:] if bytecode_expected(path))
|
||||||
|
for path in compiled:
|
||||||
|
to_check = (cache_from_source(path, optimization=opt) for opt in LEVELS)
|
||||||
|
f_mtime = os.path.getmtime(path)
|
||||||
|
for pyc in to_check:
|
||||||
|
c_mtime = os.path.getmtime(pyc)
|
||||||
|
if c_mtime < f_mtime:
|
||||||
|
print('Failed bytecompilation timestamps check: '
|
||||||
|
f'Bytecode file {pyc} is older than source file {path}',
|
||||||
|
file=sys.stderr)
|
||||||
|
failed += 1
|
||||||
|
|
||||||
|
if failed:
|
||||||
|
print(f'\n{failed} files failed bytecompilation timestamps check.',
|
||||||
|
file=sys.stderr)
|
||||||
|
sys.exit(1)
|
35
SOURCES/idle3.appdata.xml
Normal file
35
SOURCES/idle3.appdata.xml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Copyright 2017 Zbigniew Jędrzejewski-Szmek -->
|
||||||
|
<application>
|
||||||
|
<id type="desktop">idle3.desktop</id>
|
||||||
|
<name>IDLE3</name>
|
||||||
|
<metadata_licence>CC0</metadata_licence>
|
||||||
|
<project_license>Python-2.0</project_license>
|
||||||
|
<summary>Python 3 Integrated Development and Learning Environment</summary>
|
||||||
|
<description>
|
||||||
|
<p>
|
||||||
|
IDLE is Python’s Integrated Development and Learning Environment.
|
||||||
|
The GUI is uniform between Windows, Unix, and Mac OS X.
|
||||||
|
IDLE provides an easy way to start writing, running, and debugging
|
||||||
|
Python code.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
IDLE is written in pure Python, and uses the tkinter GUI toolkit.
|
||||||
|
It provides:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>a Python shell window (interactive interpreter) with colorizing of code input, output, and error messages,</li>
|
||||||
|
<li>a multi-window text editor with multiple undo, Python colorizing, smart indent, call tips, auto completion, and other features,</li>
|
||||||
|
<li>search within any window, replace within editor windows, and search through multiple files (grep),</li>
|
||||||
|
<li>a debugger with persistent breakpoints, stepping, and viewing of global and local namespaces.</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
<url type="homepage">https://docs.python.org/3/library/idle.html</url>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-main-window.png</screenshot>
|
||||||
|
<screenshot>http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-class-browser.png</screenshot>
|
||||||
|
<screenshot>http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-code-viewer.png</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<update_contact>zbyszek@in.waw.pl</update_contact>
|
||||||
|
</application>
|
11
SOURCES/idle3.desktop
Normal file
11
SOURCES/idle3.desktop
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=IDLE 3
|
||||||
|
Comment=Python 3 Integrated Development and Learning Environment
|
||||||
|
Exec=idle3 %F
|
||||||
|
TryExec=idle3
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Icon=idle3
|
||||||
|
Categories=Development;IDE;
|
||||||
|
MimeType=text/x-python;
|
32
SOURCES/macros.python39
Normal file
32
SOURCES/macros.python39
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
%__python3 /usr/bin/python3.9
|
||||||
|
%python3_pkgversion 39
|
||||||
|
%__pytest /usr/bin/pytest-3.9
|
||||||
|
|
||||||
|
# The following are macros from macros.python3 in Fedora that are newer/different than those in the python3-rpm-macros package in RHEL.
|
||||||
|
# These macros overwrite/supercede some of the macros in the python3-rpm-macros package in RHEL.
|
||||||
|
|
||||||
|
%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
|
||||||
|
%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
||||||
|
|
||||||
|
%py3_install() %{expand:\\\
|
||||||
|
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||||
|
%{__python3} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||||
|
rm -rfv %{buildroot}%{_bindir}/__pycache__
|
||||||
|
}
|
||||||
|
|
||||||
|
%py3_install_egg() %{expand:\\\
|
||||||
|
mkdir -p %{buildroot}%{python3_sitelib}
|
||||||
|
CFLAGS="%{optflags}" %{__python3} -m easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*}
|
||||||
|
rm -rfv %{buildroot}%{_bindir}/__pycache__
|
||||||
|
}
|
||||||
|
|
||||||
|
%py3_install_wheel() %{expand:\\\
|
||||||
|
CFLAGS="%{optflags}" %{__python3} -m pip install -I dist/%{1} --root %{buildroot} --no-deps --no-index --no-warn-script-location
|
||||||
|
rm -rfv %{buildroot}%{_bindir}/__pycache__
|
||||||
|
for distinfo in %{buildroot}%{python3_sitelib}/*.dist-info %{buildroot}%{python3_sitearch}/*.dist-info; do
|
||||||
|
if [ -f ${distinfo}/direct_url.json ]; then
|
||||||
|
rm -fv ${distinfo}/direct_url.json
|
||||||
|
sed -i '/direct_url.json/d' ${distinfo}/RECORD
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
11542
SOURCES/pubkeys.txt
Normal file
11542
SOURCES/pubkeys.txt
Normal file
File diff suppressed because it is too large
Load Diff
2093
SPECS/python39.spec
Normal file
2093
SPECS/python39.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user