From b45d7c590aabe938e0a2a11c157ab4f0c8e86988 Mon Sep 17 00:00:00 2001 From: Miro HronĨok Date: Oct 22 2020 21:43:32 +0000 Subject: WIP: Allow multiple -e in %pyproject_buildrequires --- diff --git a/macros.pyproject b/macros.pyproject index b4652ab..41ba893 100644 --- a/macros.pyproject +++ b/macros.pyproject @@ -79,9 +79,18 @@ fi %default_toxenv py%{python3_version_nodots} %toxenv %{default_toxenv} +%_construct_toxenv(rxte:) %{lua: +cmd = rpm.expand(" %{?**}") -- mind the space +toxenv = "" +for env in string.gmatch(cmd, "%s%-e%s*(%S+)") do + toxenv = toxenv .. "," .. env +end +print(toxenv:sub(2)) -- drops the first , +} + %pyproject_buildrequires(rxte:) %{expand:\\\ -%{-e:%{expand:%global toxenv %{-e*}}} +%{-e:%{expand:%global toxenv %{_construct_toxenv %{?**}}}} echo 'python%{python3_pkgversion}-devel' echo 'python%{python3_pkgversion}dist(pip) >= 19' echo 'python%{python3_pkgversion}dist(packaging)' diff --git a/pyproject_buildrequires.py b/pyproject_buildrequires.py index 4946240..7b688d2 100644 --- a/pyproject_buildrequires.py +++ b/pyproject_buildrequires.py @@ -244,6 +244,7 @@ def parse_tox_requires_lines(lines): def generate_tox_requirements(toxenv, requirements): + toxenv = ','.join(toxenv) requirements.add('tox-current-env >= 0.0.3', source='tox itself') requirements.check(source='tox itself') with tempfile.NamedTemporaryFile('r') as deps, tempfile.NamedTemporaryFile('r') as extras: @@ -297,7 +298,7 @@ def generate_requires( try: backend = get_backend(requirements) generate_build_requirements(backend, requirements) - if toxenv is not None: + if toxenv: include_runtime = True generate_tox_requirements(toxenv, requirements) if include_runtime: @@ -315,8 +316,8 @@ def main(argv): help='Generate run-time requirements', ) parser.add_argument( - '-e', '--toxenv', metavar='TOXENVS', default=None, - help=('specify tox environments' + '-e', '--toxenv', metavar='TOXENVS', action='append', + help=('specify tox environments (comma separated and/or repeated)' '(implies --tox)'), ) parser.add_argument( @@ -346,8 +347,9 @@ def main(argv): if args.tox: args.runtime = True - args.toxenv = (args.toxenv or os.getenv('RPM_TOXENV') or - f'py{sys.version_info.major}{sys.version_info.minor}') + if not args.toxenv: + _default = f'py{sys.version_info.major}{sys.version_info.minor}' + args.toxenv = [os.getenv('RPM_TOXENV', _default)] if args.extras: args.runtime = True diff --git a/pyproject_buildrequires_testcases.yaml b/pyproject_buildrequires_testcases.yaml index 0f380f4..fb155ce 100644 --- a/pyproject_buildrequires_testcases.yaml +++ b/pyproject_buildrequires_testcases.yaml @@ -294,7 +294,8 @@ Tox dependencies: wheel: 1 tox: 3.5.3 tox-current-env: 0.0.3 - toxenv: py3 + toxenv: + - py3 setup.py: | from setuptools import setup setup( @@ -327,7 +328,8 @@ Tox extras: wheel: 1 tox: 3.5.3 tox-current-env: 0.0.3 - toxenv: py3 + toxenv: + - py3 setup.py: | from setuptools import setup setup(