diff --git a/macros.python b/macros.python index f0d431d..9cec71c 100644 --- a/macros.python +++ b/macros.python @@ -9,6 +9,7 @@ %python_platform %(RPM_BUILD_ROOT= %{__python} -Esc "import sysconfig; print(sysconfig.get_platform())") %python_platform_triplet %(RPM_BUILD_ROOT= %{__python} -Esc "import sysconfig; print(sysconfig.get_config_var('MULTIARCH'))") %python_ext_suffix %(RPM_BUILD_ROOT= %{__python} -Esc "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))") +%python_cache_tag %(RPM_BUILD_ROOT= %{__python} -Esc "import sys; print(sys.implementation.cache_tag)") %py_setup setup.py %py_shbang_opts -s diff --git a/macros.python3 b/macros.python3 index 0ccafd9..a29c5ef 100644 --- a/macros.python3 +++ b/macros.python3 @@ -7,6 +7,7 @@ %python3_platform %(RPM_BUILD_ROOT= %{__python3} -Ic "import sysconfig; print(sysconfig.get_platform())") %python3_platform_triplet %(RPM_BUILD_ROOT= %{__python3} -Ic "import sysconfig; print(sysconfig.get_config_var('MULTIARCH'))") %python3_ext_suffix %(RPM_BUILD_ROOT= %{__python3} -Ic "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))") +%python3_cache_tag %(RPM_BUILD_ROOT= %{__python3} -Ic "import sys; print(sys.implementation.cache_tag)") %py3dir %{_builddir}/python3-%{name}-%{version}-%{release} %py3_shbang_opts -s @@ -102,6 +103,7 @@ pyminor = path:match("/python3.(%d+)/") or "*" dirname = path:match("(.*/)") modulename = path:match(".*/([^/]+).py") + -- %%python3_cache_tag is not used here because this macro supports not-installed CPythons print("\\n" .. dirname .. "__pycache__/" .. modulename .. ".cpython-3" .. pyminor .. "{,.opt-?}.pyc") end } diff --git a/python-rpm-macros.spec b/python-rpm-macros.spec index 865caef..e3f5b65 100644 --- a/python-rpm-macros.spec +++ b/python-rpm-macros.spec @@ -49,7 +49,7 @@ elseif posix.stat('macros.python-srpm') then end } Version: %{__default_python3_version} -Release: 11%{?dist} +Release: 12%{?dist} BuildArch: noarch @@ -146,6 +146,9 @@ install -m 755 brp-* %{buildroot}%{_rpmconfigdir}/redhat/ %changelog +* Tue Jul 19 2022 Miro Hrončok - 3.10-12 +- Define %%python3_cache_tag / %%python_cache_tag, e.g. cpython-311 + * Mon Feb 07 2022 Miro Hrončok - 3.10-11 - Set $RPM_BUILD_ROOT in %%{python3_...} macros to allow selecting alternate sysconfig install scheme based on that variable diff --git a/tests/test_evals.py b/tests/test_evals.py index 732b951..5060705 100644 --- a/tests/test_evals.py +++ b/tests/test_evals.py @@ -560,6 +560,7 @@ unversioned_macros = pytest.mark.parametrize('macro', [ '%python_platform', '%python_platform_triplet', '%python_ext_suffix', + '%python_cache_tag', '%py_shebang_fix', '%py_build', '%py_build_egg', @@ -598,6 +599,18 @@ def test_ext_suffix(): assert rpm_eval("%python3_ext_suffix") == [f".cpython-{XY}-x86_64-linux-gnu.so"] +def test_cache_tag(): + assert rpm_eval("%python3_cache_tag") == [f"cpython-{XY}"] + + +def test_cache_tag_alternate_python(): + assert rpm_eval("%python_cache_tag", __python=f"/usr/bin/python3.6") == [f"cpython-36"] + + +def test_cache_tag_alternate_python3(): + assert rpm_eval("%python3_cache_tag", __python3=f"/usr/bin/python3.6") == [f"cpython-36"] + + def test_python_sitelib_value(): macro = '%python_sitelib' assert rpm_eval(macro, __python='/usr/bin/python3.6') == [f'/usr/lib/python3.6/site-packages']