Support the extras configuration option of tox in %pyproject_buildrequires -t
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1877977
This commit is contained in:
parent
0498ef29dd
commit
9f3eea2ae5
@ -46,7 +46,7 @@ BuildRequires: (python3dist(importlib-metadata) if python3 < 3.8)
|
|||||||
BuildRequires: python3dist(pip)
|
BuildRequires: python3dist(pip)
|
||||||
BuildRequires: python3dist(setuptools)
|
BuildRequires: python3dist(setuptools)
|
||||||
BuildRequires: python3dist(toml)
|
BuildRequires: python3dist(toml)
|
||||||
BuildRequires: python3dist(tox-current-env) >= 0.0.2
|
BuildRequires: python3dist(tox-current-env) >= 0.0.3
|
||||||
BuildRequires: python3dist(wheel)
|
BuildRequires: python3dist(wheel)
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -96,6 +96,8 @@ export HOSTNAME="rpmbuild" # to speedup tox in network-less mock, see rhbz#1856
|
|||||||
%changelog
|
%changelog
|
||||||
* Tue Sep 29 2020 Lumír Balhar <lbalhar@redhat.com> - 0-30
|
* Tue Sep 29 2020 Lumír Balhar <lbalhar@redhat.com> - 0-30
|
||||||
- Process RECORD files in %%pyproject_install and remove them
|
- Process RECORD files in %%pyproject_install and remove them
|
||||||
|
- Support the extras configuration option of tox in %%pyproject_buildrequires -t
|
||||||
|
- Fixes: rhbz#1877977
|
||||||
|
|
||||||
* Wed Sep 23 2020 Miro Hrončok <mhroncok@redhat.com> - 0-29
|
* Wed Sep 23 2020 Miro Hrončok <mhroncok@redhat.com> - 0-29
|
||||||
- Check the requirements after installing "requires_for_build_wheel"
|
- Check the requirements after installing "requires_for_build_wheel"
|
||||||
|
@ -52,17 +52,25 @@ class Requirements:
|
|||||||
def __init__(self, get_installed_version, extras='',
|
def __init__(self, get_installed_version, extras='',
|
||||||
generate_extras=False, python3_pkgversion='3'):
|
generate_extras=False, python3_pkgversion='3'):
|
||||||
self.get_installed_version = get_installed_version
|
self.get_installed_version = get_installed_version
|
||||||
|
self.extras = set()
|
||||||
|
|
||||||
if extras:
|
if extras:
|
||||||
self.marker_envs = [{'extra': e.strip()} for e in extras.split(',')]
|
self.add_extras(*extras.split(','))
|
||||||
else:
|
|
||||||
self.marker_envs = [{'extra': ''}]
|
|
||||||
|
|
||||||
self.missing_requirements = False
|
self.missing_requirements = False
|
||||||
|
|
||||||
self.generate_extras = generate_extras
|
self.generate_extras = generate_extras
|
||||||
self.python3_pkgversion = python3_pkgversion
|
self.python3_pkgversion = python3_pkgversion
|
||||||
|
|
||||||
|
def add_extras(self, *extras):
|
||||||
|
self.extras |= set(e.strip() for e in extras)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def marker_envs(self):
|
||||||
|
if self.extras:
|
||||||
|
return [{'extra': e} for e in sorted(self.extras)]
|
||||||
|
return [{'extra': ''}]
|
||||||
|
|
||||||
def evaluate_all_environamnets(self, requirement):
|
def evaluate_all_environamnets(self, requirement):
|
||||||
for marker_env in self.marker_envs:
|
for marker_env in self.marker_envs:
|
||||||
if requirement.marker.evaluate(environment=marker_env):
|
if requirement.marker.evaluate(environment=marker_env):
|
||||||
@ -232,12 +240,14 @@ def parse_tox_requires_lines(lines):
|
|||||||
|
|
||||||
|
|
||||||
def generate_tox_requirements(toxenv, requirements):
|
def generate_tox_requirements(toxenv, requirements):
|
||||||
requirements.add('tox-current-env >= 0.0.2', source='tox itself')
|
requirements.add('tox-current-env >= 0.0.3', source='tox itself')
|
||||||
requirements.check(source='tox itself')
|
requirements.check(source='tox itself')
|
||||||
with tempfile.NamedTemporaryFile('r') as depfile:
|
with tempfile.NamedTemporaryFile('r') as deps, tempfile.NamedTemporaryFile('r') as extras:
|
||||||
r = subprocess.run(
|
r = subprocess.run(
|
||||||
[sys.executable, '-m', 'tox', '--print-deps-to-file',
|
[sys.executable, '-m', 'tox',
|
||||||
depfile.name, '-qre', toxenv],
|
'--print-deps-to', deps.name,
|
||||||
|
'--print-extras-to', extras.name,
|
||||||
|
'-qre', toxenv],
|
||||||
check=False,
|
check=False,
|
||||||
encoding='utf-8',
|
encoding='utf-8',
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
@ -247,8 +257,9 @@ def generate_tox_requirements(toxenv, requirements):
|
|||||||
print_err(r.stdout, end='')
|
print_err(r.stdout, end='')
|
||||||
r.check_returncode()
|
r.check_returncode()
|
||||||
|
|
||||||
deplines = depfile.read().splitlines()
|
deplines = deps.read().splitlines()
|
||||||
packages = parse_tox_requires_lines(deplines)
|
packages = parse_tox_requires_lines(deplines)
|
||||||
|
requirements.add_extras(*extras.read().splitlines())
|
||||||
requirements.extend(packages,
|
requirements.extend(packages,
|
||||||
source=f'tox --print-deps-only: {toxenv}')
|
source=f'tox --print-deps-only: {toxenv}')
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ Tox dependencies:
|
|||||||
setuptools: 50
|
setuptools: 50
|
||||||
wheel: 1
|
wheel: 1
|
||||||
tox: 3.5.3
|
tox: 3.5.3
|
||||||
tox-current-env: 0.0.2
|
tox-current-env: 0.0.3
|
||||||
toxenv: py3
|
toxenv: py3
|
||||||
setup.py: |
|
setup.py: |
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
@ -312,8 +312,52 @@ Tox dependencies:
|
|||||||
python3dist(setuptools) >= 40.8
|
python3dist(setuptools) >= 40.8
|
||||||
python3dist(wheel)
|
python3dist(wheel)
|
||||||
python3dist(wheel)
|
python3dist(wheel)
|
||||||
python3dist(tox-current-env) >= 0.0.2
|
python3dist(tox-current-env) >= 0.0.3
|
||||||
python3dist(toxdep1)
|
python3dist(toxdep1)
|
||||||
python3dist(toxdep2)
|
python3dist(toxdep2)
|
||||||
python3dist(inst)
|
python3dist(inst)
|
||||||
result: 0
|
result: 0
|
||||||
|
|
||||||
|
Tox extras:
|
||||||
|
installed:
|
||||||
|
setuptools: 50
|
||||||
|
wheel: 1
|
||||||
|
tox: 3.5.3
|
||||||
|
tox-current-env: 0.0.3
|
||||||
|
toxenv: py3
|
||||||
|
setup.py: |
|
||||||
|
from setuptools import setup
|
||||||
|
setup(
|
||||||
|
name='test',
|
||||||
|
version='0.1',
|
||||||
|
install_requires=['inst'],
|
||||||
|
extras_require={
|
||||||
|
'extra1': ['dep11 > 11', 'dep12'],
|
||||||
|
'extra2': ['dep21', 'dep22', 'dep23'],
|
||||||
|
'nope': ['nopedep'],
|
||||||
|
}
|
||||||
|
)
|
||||||
|
tox.ini: |
|
||||||
|
[tox]
|
||||||
|
envlist = py36,py37,py38
|
||||||
|
[testenv]
|
||||||
|
deps =
|
||||||
|
toxdep
|
||||||
|
extras =
|
||||||
|
extra2
|
||||||
|
extra1
|
||||||
|
commands =
|
||||||
|
true
|
||||||
|
expected: |
|
||||||
|
python3dist(setuptools) >= 40.8
|
||||||
|
python3dist(wheel)
|
||||||
|
python3dist(wheel)
|
||||||
|
python3dist(tox-current-env) >= 0.0.3
|
||||||
|
python3dist(toxdep)
|
||||||
|
python3dist(inst)
|
||||||
|
python3dist(dep11) > 11
|
||||||
|
python3dist(dep12)
|
||||||
|
python3dist(dep21)
|
||||||
|
python3dist(dep22)
|
||||||
|
python3dist(dep23)
|
||||||
|
result: 0
|
||||||
|
Loading…
Reference in New Issue
Block a user