b745af58b1
Resolves: rhbz#2207631 - The script is copied veratim from the current Fedora version. - The script is namespaced with the `_py3_11` version, because it's only used for Python 3.11 at this point, and when we're adding the Python 3.12 stack, we don't want to name clash with it. The script might be different at that point, and also we can't depend on Python 3.11 macros from Python 3.12 macros. - The script is excluded from bytecompilation, because it's run but never imported, and we don't want to pollute the `/usr/lib/rpm/redhat/` directory.
78 lines
4.3 KiB
Plaintext
78 lines
4.3 KiB
Plaintext
%__python3 /usr/bin/python3.11
|
|
%python3_pkgversion 3.11
|
|
|
|
# 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.
|
|
|
|
# nb: $RPM_BUILD_ROOT is not set when the macros are expanded (at spec parse time)
|
|
# so we set it manually (to empty string), making our Python prefer the correct install scheme location
|
|
# platbase/base is explicitly set to %%{_prefix} to support custom values, such as /app for flatpaks
|
|
%python3_sitelib %(RPM_BUILD_ROOT= %{__python3} -Ic "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")
|
|
%python3_sitearch %(RPM_BUILD_ROOT= %{__python3} -Ic "import sysconfig; print(sysconfig.get_path('platlib', vars={'platbase': '%{_prefix}', 'base': '%{_prefix}'}))")
|
|
%python3_version %(RPM_BUILD_ROOT= %{__python3} -Ic "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
|
|
%python3_version_nodots %(RPM_BUILD_ROOT= %{__python3} -Ic "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
|
%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)")
|
|
|
|
%_py3_shebang_s s
|
|
%_py3_shebang_P %(RPM_BUILD_ROOT= %{__python3} -Ic "import sys; print('P' if hasattr(sys.flags, 'safe_path') else '')")
|
|
%py3_shbang_opts -%{?_py3_shebang_s}%{?_py3_shebang_P}
|
|
|
|
%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} --prefix %{_prefix} %{?*}
|
|
rm -rfv %{buildroot}%{_bindir}/__pycache__
|
|
}
|
|
|
|
%py3_install_egg() %{expand:\\\
|
|
mkdir -p %{buildroot}%{python3_sitelib}
|
|
%{__python3} -m easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*}
|
|
rm -rfv %{buildroot}%{_bindir}/__pycache__
|
|
}
|
|
|
|
%py3_install_wheel() %{expand:\\\
|
|
%{__python3} -m pip install -I dist/%{1} --root %{buildroot} --prefix %{_prefix} --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
|
|
}
|
|
|
|
# With $PATH and $PYTHONPATH set to the %%buildroot,
|
|
# try to import the Python 3 module(s) given as command-line args or read from file (-f).
|
|
# Respect the custom values of %%py3_shebang_flags or set nothing if it's undefined.
|
|
# Filter and check import on only top-level modules using -t flag.
|
|
# Exclude unwanted modules by passing their globs to -e option.
|
|
# Useful as a smoke test in %%check when running tests is not feasible.
|
|
# Use spaces or commas as separators if providing list directly.
|
|
# Use newlines as separators if providing list in a file.
|
|
%py3_check_import(e:tf:) %{expand:\\\
|
|
PATH="%{buildroot}%{_bindir}:$PATH"\\\
|
|
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}"\\\
|
|
_PYTHONSITE="%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}"\\\
|
|
PYTHONDONTWRITEBYTECODE=1\\\
|
|
%{lua:
|
|
local command = "%{__python3} "
|
|
if rpm.expand("%{?py3_shebang_flags}") ~= "" then
|
|
command = command .. "-%{py3_shebang_flags}"
|
|
end
|
|
command = command .. " %{_rpmconfigdir}/redhat/import_all_modules_py3_11.py "
|
|
-- handle multiline arguments correctly, see https://bugzilla.redhat.com/2018809
|
|
local args=rpm.expand('%{?**}'):gsub("[%s\\\\]*%s+", " ")
|
|
print(command .. args)
|
|
}
|
|
}
|
|
|
|
%pytest %{expand:\\\
|
|
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
|
PATH="%{buildroot}%{_bindir}:$PATH"\\\
|
|
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}"\\\
|
|
PYTHONDONTWRITEBYTECODE=1\\\
|
|
%{?__pytest_addopts:PYTEST_ADDOPTS="${PYTEST_ADDOPTS:-} %{__pytest_addopts}"}\\\
|
|
%__pytest}
|