From 0eca79e7e4f6ffba47dad9c76d58e131f8dfef99 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Dec 2023 18:05:33 +0100 Subject: 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. --- lib/spack/spack/audit.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index 4fe1b1dddf..be1f72c2cf 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -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 -- cgit v1.2.3-70-g09d2