Automatically word-wrap the description of extras subpackages
This only works for package and extra names less than 79 characters long. I don't expect many actual packages to exceed this limit. 78 characters should be enough for everybody. Why 78? 79 is the line-lenght limit from rpmlint. And we need to put punctuation in there.
This commit is contained in:
		
							parent
							
								
									5b5cc39d89
								
							
						
					
					
						commit
						c746b25f28
					
				| @ -202,8 +202,18 @@ | |||||||
|         local rpmname = value_n .. '+' .. extras |         local rpmname = value_n .. '+' .. extras | ||||||
|         local pkgdef = '%package -n ' .. rpmname |         local pkgdef = '%package -n ' .. rpmname | ||||||
|         local summary = 'Summary: Metapackage for ' .. value_n .. ': ' .. extras .. ' extras' |         local summary = 'Summary: Metapackage for ' .. value_n .. ': ' .. extras .. ' extras' | ||||||
|         local description = '%description -n ' .. rpmname .. '\\\n' .. |         local description = '%description -n ' .. rpmname .. '\\\n' | ||||||
|                             'This is a metapackage bringing in ' .. extras .. ' extras requires for ' .. value_n .. '.\\\n' .. |         local current_line = 'This is a metapackage bringing in' | ||||||
|  |         for _, word in ipairs({extras, 'extras', 'requires', 'for', value_n .. '.'}) do | ||||||
|  |           local line = current_line .. ' ' .. word | ||||||
|  |           if line:len() > 79 then | ||||||
|  |             description = description .. current_line .. '\\\n' | ||||||
|  |             current_line = word | ||||||
|  |           else | ||||||
|  |             current_line = line | ||||||
|  |           end | ||||||
|  |         end | ||||||
|  |         description = description .. current_line .. '\\\n' .. | ||||||
|                       'It contains no code, just makes sure the dependencies are installed.\\\n' |                       'It contains no code, just makes sure the dependencies are installed.\\\n' | ||||||
|         local files = '' |         local files = '' | ||||||
|         if value_i ~= '' then |         if value_i ~= '' then | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| Name:           python-rpm-macros | Name:           python-rpm-macros | ||||||
| Version:        3.9 | Version:        3.9 | ||||||
| Release:        12%{?dist} | Release:        13%{?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 | ||||||
|  | * Fri Feb 05 2021 Miro Hrončok <mhroncok@redhat.com> - 3.9-13 | ||||||
|  | - Automatically word-wrap the description of extras subpackages | ||||||
|  | - Fixes: rhbz#1922442 | ||||||
|  | 
 | ||||||
| * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.9-12 | * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.9-12 | ||||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild | - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -340,7 +340,8 @@ def test_python_extras_subpkg_i(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: toml extras |         Summary: Metapackage for python3-setuptools_scm: toml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+toml |         %description -n python3-setuptools_scm+toml | ||||||
|         This is a metapackage bringing in toml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in toml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
| 
 | 
 | ||||||
|         %files -n python3-setuptools_scm+toml |         %files -n python3-setuptools_scm+toml | ||||||
| @ -350,7 +351,8 @@ def test_python_extras_subpkg_i(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: yaml extras |         Summary: Metapackage for python3-setuptools_scm: yaml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+yaml |         %description -n python3-setuptools_scm+yaml | ||||||
|         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in yaml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
| 
 | 
 | ||||||
|         %files -n python3-setuptools_scm+yaml |         %files -n python3-setuptools_scm+yaml | ||||||
| @ -367,7 +369,8 @@ def test_python_extras_subpkg_f(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: toml extras |         Summary: Metapackage for python3-setuptools_scm: toml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+toml |         %description -n python3-setuptools_scm+toml | ||||||
|         This is a metapackage bringing in toml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in toml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
| 
 | 
 | ||||||
|         %files -n python3-setuptools_scm+toml -f ghost_filelist |         %files -n python3-setuptools_scm+toml -f ghost_filelist | ||||||
| @ -376,7 +379,8 @@ def test_python_extras_subpkg_f(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: yaml extras |         Summary: Metapackage for python3-setuptools_scm: yaml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+yaml |         %description -n python3-setuptools_scm+yaml | ||||||
|         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in yaml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
| 
 | 
 | ||||||
|         %files -n python3-setuptools_scm+yaml -f ghost_filelist |         %files -n python3-setuptools_scm+yaml -f ghost_filelist | ||||||
| @ -392,7 +396,8 @@ def test_python_extras_subpkg_F(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: toml extras |         Summary: Metapackage for python3-setuptools_scm: toml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+toml |         %description -n python3-setuptools_scm+toml | ||||||
|         This is a metapackage bringing in toml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in toml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -401,12 +406,35 @@ def test_python_extras_subpkg_F(): | |||||||
|         Summary: Metapackage for python3-setuptools_scm: yaml extras |         Summary: Metapackage for python3-setuptools_scm: yaml extras | ||||||
|         Requires: python3-setuptools_scm = 6-7 |         Requires: python3-setuptools_scm = 6-7 | ||||||
|         %description -n python3-setuptools_scm+yaml |         %description -n python3-setuptools_scm+yaml | ||||||
|         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm. |         This is a metapackage bringing in yaml extras requires for | ||||||
|  |         python3-setuptools_scm. | ||||||
|         It contains no code, just makes sure the dependencies are installed. |         It contains no code, just makes sure the dependencies are installed. | ||||||
|         """).lstrip().splitlines() |         """).lstrip().splitlines() | ||||||
|     assert lines == expected |     assert lines == expected | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @pytest.mark.parametrize('basename_len', [1, 10, 30, 45, 78]) | ||||||
|  | @pytest.mark.parametrize('extra_len', [1, 13, 28, 52, 78]) | ||||||
|  | def test_python_extras_subpkg_description_wrapping(basename_len, extra_len): | ||||||
|  |     basename = 'x' * basename_len | ||||||
|  |     extra = 'y' * extra_len | ||||||
|  |     lines = rpm_eval(f'%python_extras_subpkg -n {basename} -F {extra}', | ||||||
|  |                      version='6', release='7') | ||||||
|  |     for idx, line in enumerate(lines): | ||||||
|  |         if line.startswith('%description'): | ||||||
|  |             start = idx + 1 | ||||||
|  |     lines = lines[start:] | ||||||
|  |     assert all(len(l) < 80 for l in lines) | ||||||
|  |     assert len(lines) < 6 | ||||||
|  |     if len(" ".join(lines[:-1])) < 80: | ||||||
|  |         assert len(lines) == 2 | ||||||
|  |     expected_singleline = (f"This is a metapackage bringing in {extra} extras " | ||||||
|  |                            f"requires for {basename}. It contains no code, " | ||||||
|  |                            f"just makes sure the dependencies are installed.") | ||||||
|  |     description_singleline = " ".join(lines) | ||||||
|  |     assert description_singleline == expected_singleline | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| unversioned_macros = pytest.mark.parametrize('macro', [ | unversioned_macros = pytest.mark.parametrize('macro', [ | ||||||
|     '%__python', |     '%__python', | ||||||
|     '%python', |     '%python', | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user