diff --git a/F00251-change-user-install-location.patch b/F00251-change-user-install-location.patch deleted file mode 100644 index 11489f7..0000000 --- a/F00251-change-user-install-location.patch +++ /dev/null @@ -1,173 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Mon, 15 Feb 2021 12:19:27 +0100 -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 base and platbase in sysconfig from /usr -to /usr/local when RPM build is not detected -to make pip and similar tools install into separate location. - -Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe -Downstream only. - -We've tried to rework in Fedora 36/Python 3.10 to follow https://bugs.python.org/issue43976 -but we have identified serious problems with that approach, -see https://bugzilla.redhat.com/2026979 or https://bugzilla.redhat.com/2097183 - -pypa/distutils integration: https://github.com/pypa/distutils/pull/70 - -Co-authored-by: Petr Viktorin -Co-authored-by: Miro Hrončok -Co-authored-by: Michal Cyprian -Co-authored-by: Lumír Balhar ---- - Lib/site.py | 9 ++++++- - Lib/sysconfig.py | 49 +++++++++++++++++++++++++++++++++++++- - Lib/test/test_sysconfig.py | 17 +++++++++++-- - 3 files changed, 71 insertions(+), 4 deletions(-) - -Index: Python-3.12.0rc1/Lib/site.py -=================================================================== ---- Python-3.12.0rc1.orig/Lib/site.py -+++ Python-3.12.0rc1/Lib/site.py -@@ -377,8 +377,15 @@ 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. -+ -+ """ - _trace("Processing global site-packages") -+ 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) -Index: Python-3.12.0rc1/Lib/sysconfig.py -=================================================================== ---- Python-3.12.0rc1.orig/Lib/sysconfig.py -+++ Python-3.12.0rc1/Lib/sysconfig.py -@@ -104,6 +104,11 @@ if os.name == 'nt': - else: - _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv'] - -+# For a brief period of time in the Fedora 36 life cycle, -+# this installation scheme existed and was documented in the release notes. -+# For backwards compatibility, we keep it here (at least on 3.10 and 3.11). -+_INSTALL_SCHEMES['rpm_prefix'] = _INSTALL_SCHEMES['posix_prefix'] -+ - - # NOTE: site.py has copy of this function. - # Sync it when modify this function. -@@ -163,6 +168,19 @@ if _HAS_USER_BASE: - }, - } - -+# 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' -+ -+ - _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', - 'scripts', 'data') - -@@ -263,11 +281,40 @@ def _extend_dict(target_dict, other_dict - target_dict[key] = value - - -+_CONFIG_VARS_LOCAL = None -+ -+ -+def _config_vars_local(): -+ # This function returns the config vars with prefixes amended to /usr/local -+ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe -+ global _CONFIG_VARS_LOCAL -+ if _CONFIG_VARS_LOCAL is None: -+ _CONFIG_VARS_LOCAL = dict(get_config_vars()) -+ _CONFIG_VARS_LOCAL['base'] = '/usr/local' -+ _CONFIG_VARS_LOCAL['platbase'] = '/usr/local' -+ return _CONFIG_VARS_LOCAL -+ -+ - def _expand_vars(scheme, vars): - res = {} - if vars is None: - vars = {} -- _extend_dict(vars, get_config_vars()) -+ -+ # when we are not in a virtual environment or an RPM build -+ # we change '/usr' to '/usr/local' -+ # to avoid surprises, we explicitly check for the /usr/ prefix -+ # Python virtual environments have different prefixes -+ # we only do this for posix_prefix, not to mangle the venv scheme -+ # posix_prefix is used by sudo pip install -+ # we only change the defaults here, so explicit --prefix will take precedence -+ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe -+ if (scheme == 'posix_prefix' and -+ _PREFIX == '/usr' and -+ 'RPM_BUILD_ROOT' not in os.environ): -+ _extend_dict(vars, _config_vars_local()) -+ else: -+ _extend_dict(vars, get_config_vars()) -+ - if os.name == 'nt': - # On Windows we want to substitute 'lib' for schemes rather - # than the native value (without modifying vars, in case it -Index: Python-3.12.0rc1/Lib/test/test_sysconfig.py -=================================================================== ---- Python-3.12.0rc1.orig/Lib/test/test_sysconfig.py -+++ Python-3.12.0rc1/Lib/test/test_sysconfig.py -@@ -110,8 +110,19 @@ class TestSysConfig(unittest.TestCase): - for scheme in _INSTALL_SCHEMES: - for name in _INSTALL_SCHEMES[scheme]: - expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars) -+ tested = get_path(name, scheme) -+ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe -+ if tested.startswith('/usr/local'): -+ # /usr/local should only be used in posix_prefix -+ self.assertEqual(scheme, 'posix_prefix') -+ # Fedora CI runs tests for venv and virtualenv that check for other prefixes -+ self.assertEqual(sys.prefix, '/usr') -+ # When building the RPM of Python, %check runs this with RPM_BUILD_ROOT set -+ # Fedora CI runs this with RPM_BUILD_ROOT unset -+ self.assertNotIn('RPM_BUILD_ROOT', os.environ) -+ tested = tested.replace('/usr/local', '/usr') - self.assertEqual( -- os.path.normpath(get_path(name, scheme)), -+ os.path.normpath(tested), - os.path.normpath(expected), - ) - -@@ -335,7 +346,7 @@ class TestSysConfig(unittest.TestCase): - self.assertTrue(os.path.isfile(config_h), config_h) - - def test_get_scheme_names(self): -- wanted = ['nt', 'posix_home', 'posix_prefix', 'posix_venv', 'nt_venv', 'venv'] -+ wanted = ['nt', 'posix_home', 'posix_prefix', 'posix_venv', 'nt_venv', 'venv', 'rpm_prefix'] - if HAS_USER_BASE: - wanted.extend(['nt_user', 'osx_framework_user', 'posix_user']) - self.assertEqual(get_scheme_names(), tuple(sorted(wanted))) -@@ -347,6 +358,8 @@ class TestSysConfig(unittest.TestCase): - cmd = "-c", "import sysconfig; print(sysconfig.get_platform())" - self.assertEqual(py.call_real(*cmd), py.call_link(*cmd)) - -+ @unittest.skipIf('RPM_BUILD_ROOT' not in os.environ, -+ "Test doesn't expect Fedora's paths") - def test_user_similar(self): - # Issue #8759: make sure the posix scheme for the users - # is similar to the global posix_prefix one diff --git a/python312.changes b/python312.changes index b8eeb43..22438d1 100644 --- a/python312.changes +++ b/python312.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Nov 16 10:02:18 UTC 2023 - Daniel Garcia + +- Remove F00251-change-user-install-location.patch, that patch breaks + the python-rpm-macros usage with multibuild + ------------------------------------------------------------------- Mon Oct 2 17:15:53 UTC 2023 - Matej Cepl diff --git a/python312.spec b/python312.spec index 33b332d..4dff7bf 100644 --- a/python312.spec +++ b/python312.spec @@ -69,7 +69,7 @@ %define tarversion %{version} %endif # We don't process beta signs well -%define folderversion 3.12.0 +%define folderversion %{tarversion} %define tarname Python-%{tarversion} %define sitedir %{_libdir}/python%{python_version} # three possible ABI kinds: m - pymalloc, d - debug build; see PEP 3149 @@ -136,13 +136,6 @@ Source99: python.keyring # They are listed here to work around missing functionality in rpmbuild, # which would otherwise exclude them from distributed src.rpm files. Source100: PACKAGING-NOTES -# PATCH-FEATURE-UPSTREAM F00251-change-user-install-location.patch bsc#[0-9]+ mcepl@suse.com -# Fix installation in /usr/local (boo#1071941), originally from Fedora -# https://src.fedoraproject.org/rpms/python3/blob/master/f/00251-change-user-install-location.patch -# 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 -Patch02: F00251-change-user-install-location.patch # support finding packages in /usr/local, install to /usr/local by default Patch07: python-3.3.0b1-localpath.patch # replace DATE, TIME and COMPILER by fixed definitions to aid reproducible builds @@ -418,7 +411,6 @@ other applications. %prep %setup -q -n %{tarname} -%patch02 -p1 %patch07 -p1 %patch08 -p1 %patch09 -p1