Add an audit to prevent virtual packages with variants specified (#41747)

Currently, a virtual spec is composed of just a name and a version. When a virtual spec contains other components, such as variants, Spack won't emit warnings or errors but will silently drop them - which is unexpected by users.
This commit is contained in:
Massimiliano Culpo
2023-12-19 18:05:33 +01:00
committed by GitHub
parent f245bde772
commit 0eca79e7e4
12 changed files with 108 additions and 15 deletions

View File

@@ -757,6 +757,15 @@ def _issues_in_depends_on_directive(pkgs, error_cls):
]
errors.append(error_cls(summary=summary, details=details))
for s in (dependency_spec, when):
if s.virtual and s.variants:
summary = f"{pkg_name}: virtual dependency cannot have variants"
details = [
f"remove variants from '{str(s)}' in depends_on directive",
f"in {filename}",
]
errors.append(error_cls(summary=summary, details=details))
# No need to analyze virtual packages
if spack.repo.PATH.is_virtual(dependency_name):
continue