Add %python_extras_subpkg
See https://fedoraproject.org/wiki/Changes/PythonExtras
This commit is contained in:
parent
3a211cc91b
commit
763d24cc5c
@ -175,3 +175,51 @@
|
||||
print('Provides: ' .. provide .. '\\n')
|
||||
end
|
||||
}
|
||||
|
||||
%python_extras_subpkg(n:i:f:F) %{expand:%{lua:
|
||||
local option_n = '-n (name of the base package)'
|
||||
local option_i = '-i (buildroot path to metadata)'
|
||||
local option_f = '-f (builddir path to a filelist)'
|
||||
local option_F = '-F (skip %%files section)'
|
||||
local value_n = rpm.expand('%{-n*}')
|
||||
local value_i = rpm.expand('%{-i*}')
|
||||
local value_f = rpm.expand('%{-f*}')
|
||||
local value_F = rpm.expand('%{-F}')
|
||||
local args = rpm.expand('%{*}')
|
||||
if value_n == '' then
|
||||
rpm.expand('%{error:%%%0: missing option ' .. option_n .. '}')
|
||||
end
|
||||
if value_i == '' and value_f == '' and value_F == '' then
|
||||
rpm.expand('%{error:%%%0: missing option ' .. option_i .. ' or ' .. option_f .. ' or ' .. option_F .. '}')
|
||||
end
|
||||
if value_i ~= '' and value_f ~= '' then
|
||||
rpm.expand('%{error:%%%0: simultaneous ' .. option_i .. ' and ' .. option_f .. ' options are not possible}')
|
||||
end
|
||||
if value_i ~= '' and value_F ~= '' then
|
||||
rpm.expand('%{error:%%%0: simultaneous ' .. option_i .. ' and ' .. option_F .. ' options are not possible}')
|
||||
end
|
||||
if value_f ~= '' and value_F ~= '' then
|
||||
rpm.expand('%{error:%%%0: simultaneous ' .. option_f .. ' and ' .. option_F .. ' options are not possible}')
|
||||
end
|
||||
if args == '' then
|
||||
rpm.expand('%{error:%%%0 requires at least one argument with "extras" name}')
|
||||
end
|
||||
local requires = 'Requires: ' .. value_n .. ' = %{?epoch:%{epoch}:}%{version}-%{release}'
|
||||
for extras in args:gmatch('%w+') do
|
||||
local rpmname = value_n .. '+' .. extras
|
||||
local pkgdef = '%package -n ' .. rpmname
|
||||
local summary = 'Summary: Metapackage for ' .. value_n .. ': ' .. extras .. ' extras'
|
||||
local description = '%description -n ' .. rpmname .. '\\\n' ..
|
||||
'This is a metapackage bringing in ' .. extras .. ' extras requires for ' .. value_n .. '.\\\n' ..
|
||||
'It contains no code, just makes sure the dependencies are installed.\\\n'
|
||||
local files = ''
|
||||
if value_i ~= '' then
|
||||
files = '%files -n ' .. rpmname .. '\\\n' .. '%ghost ' .. value_i
|
||||
elseif value_f ~= '' then
|
||||
files = '%files -n ' .. rpmname .. ' -f ' .. value_f
|
||||
end
|
||||
for i, line in ipairs({pkgdef, summary, requires, description, files, ''}) do
|
||||
print(line .. '\\\n')
|
||||
end
|
||||
end
|
||||
}}
|
||||
|
@ -1,6 +1,6 @@
|
||||
Name: python-rpm-macros
|
||||
Version: 3.9
|
||||
Release: 4%{?dist}
|
||||
Release: 5%{?dist}
|
||||
Summary: The common Python RPM macros
|
||||
|
||||
# macros and lua: MIT, compileall2.py: PSFv2
|
||||
@ -107,6 +107,10 @@ install -m 644 compileall2.py %{buildroot}%{_rpmconfigdir}/redhat/
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Jul 08 2020 Miro Hrončok <mhroncok@redhat.com> - 3.9-5
|
||||
- Introduce %%python_extras_subpkg
|
||||
- https://fedoraproject.org/wiki/Changes/PythonExtras
|
||||
|
||||
* Tue Jun 16 2020 Lumír Balhar <lbalhar@redhat.com> - 3.9-4
|
||||
- Use compileall from stdlib for Python >= 3.9
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
X_Y = f'{sys.version_info[0]}.{sys.version_info[1]}'
|
||||
XY = f'{sys.version_info[0]}{sys.version_info[1]}'
|
||||
@ -260,3 +261,78 @@ def test_pycached_with_exclude():
|
||||
def test_pycached_fails_with_extension_glob():
|
||||
lines = rpm_eval('%pycached %{python3_sitelib}/foo.py*', fails=True)
|
||||
assert lines[0] == 'error: %pycached can only be used with paths explicitly ending with .py'
|
||||
|
||||
|
||||
def test_python_extras_subpkg_i():
|
||||
lines = rpm_eval('%python_extras_subpkg -n python3-setuptools_scm -i %{python3_sitelib}/*.egg-info toml yaml',
|
||||
version='6', release='7')
|
||||
expected = textwrap.dedent(f"""
|
||||
%package -n python3-setuptools_scm+toml
|
||||
Summary: Metapackage for python3-setuptools_scm: toml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+toml
|
||||
This is a metapackage bringing in toml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
|
||||
%files -n python3-setuptools_scm+toml
|
||||
%ghost /usr/lib/python{X_Y}/site-packages/*.egg-info
|
||||
|
||||
%package -n python3-setuptools_scm+yaml
|
||||
Summary: Metapackage for python3-setuptools_scm: yaml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+yaml
|
||||
This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
|
||||
%files -n python3-setuptools_scm+yaml
|
||||
%ghost /usr/lib/python{X_Y}/site-packages/*.egg-info
|
||||
""").lstrip().splitlines()
|
||||
assert lines == expected
|
||||
|
||||
|
||||
def test_python_extras_subpkg_f():
|
||||
lines = rpm_eval('%python_extras_subpkg -n python3-setuptools_scm -f ghost_filelist toml yaml',
|
||||
version='6', release='7')
|
||||
expected = textwrap.dedent(f"""
|
||||
%package -n python3-setuptools_scm+toml
|
||||
Summary: Metapackage for python3-setuptools_scm: toml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+toml
|
||||
This is a metapackage bringing in toml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
|
||||
%files -n python3-setuptools_scm+toml -f ghost_filelist
|
||||
|
||||
%package -n python3-setuptools_scm+yaml
|
||||
Summary: Metapackage for python3-setuptools_scm: yaml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+yaml
|
||||
This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
|
||||
%files -n python3-setuptools_scm+yaml -f ghost_filelist
|
||||
""").lstrip().splitlines()
|
||||
assert lines == expected
|
||||
|
||||
|
||||
def test_python_extras_subpkg_F():
|
||||
lines = rpm_eval('%python_extras_subpkg -n python3-setuptools_scm -F toml yaml',
|
||||
version='6', release='7')
|
||||
expected = textwrap.dedent(f"""
|
||||
%package -n python3-setuptools_scm+toml
|
||||
Summary: Metapackage for python3-setuptools_scm: toml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+toml
|
||||
This is a metapackage bringing in toml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
|
||||
|
||||
|
||||
%package -n python3-setuptools_scm+yaml
|
||||
Summary: Metapackage for python3-setuptools_scm: yaml extras
|
||||
Requires: python3-setuptools_scm = 6-7
|
||||
%description -n python3-setuptools_scm+yaml
|
||||
This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.
|
||||
It contains no code, just makes sure the dependencies are installed.
|
||||
""").lstrip().splitlines()
|
||||
assert lines == expected
|
||||
|
Loading…
Reference in New Issue
Block a user