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')
|
print('Provides: ' .. provide .. '\\n')
|
||||||
end
|
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
|
Name: python-rpm-macros
|
||||||
Version: 3.9
|
Version: 3.9
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
Summary: The common Python RPM macros
|
Summary: The common Python RPM macros
|
||||||
|
|
||||||
# macros and lua: MIT, compileall2.py: PSFv2
|
# macros and lua: MIT, compileall2.py: PSFv2
|
||||||
|
@ -107,6 +107,10 @@ install -m 644 compileall2.py %{buildroot}%{_rpmconfigdir}/redhat/
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%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
|
* Tue Jun 16 2020 Lumír Balhar <lbalhar@redhat.com> - 3.9-4
|
||||||
- Use compileall from stdlib for Python >= 3.9
|
- Use compileall from stdlib for Python >= 3.9
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import textwrap
|
||||||
|
|
||||||
X_Y = f'{sys.version_info[0]}.{sys.version_info[1]}'
|
X_Y = f'{sys.version_info[0]}.{sys.version_info[1]}'
|
||||||
XY = 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():
|
def test_pycached_fails_with_extension_glob():
|
||||||
lines = rpm_eval('%pycached %{python3_sitelib}/foo.py*', fails=True)
|
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'
|
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