#128 WIP: Allow multiple -e in %pyproject_buildrequires (via Lua)
Closed 3 years ago by churchyard. Opened 3 years ago by churchyard.
rpms/ churchyard/pyproject-rpm-macros multiple_toxenv_options  into  master

file modified
+10 -1
@@ -79,9 +79,18 @@ 

  %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)'

file modified
+7 -5
@@ -244,6 +244,7 @@ 

  

  

  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 @@ 

      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 @@ 

          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 @@ 

  

      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

@@ -294,7 +294,8 @@ 

      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 @@ 

      wheel: 1

      tox: 3.5.3

      tox-current-env: 0.0.3

-   toxenv: py3

+   toxenv:

+     - py3

    setup.py: |

      from setuptools import setup

      setup(