From 130354b867f6800da733e2eb0890384e3bf5057b Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Thu, 10 Feb 2022 00:10:23 -0800 Subject: spack audit: fix spurious failures for target/platform conflicts (#28860) --- lib/spack/spack/audit.py | 15 +++++++++++---- lib/spack/spack/test/audit.py | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index df5fd6c86b..8787f520c2 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -323,10 +323,17 @@ def _unknown_variants_in_directives(pkgs, error_cls): vrn = spack.spec.Spec(conflict) try: vrn.constrain(trigger) - except Exception as e: - msg = 'Generic error in conflict for package "{0}": ' - errors.append(error_cls(msg.format(pkg.name), [str(e)])) - continue + except Exception: + # If one of the conflict/trigger includes a platform and the other + # includes an os or target, the constraint will fail if the current + # platform is not the plataform in the conflict/trigger. Audit the + # conflict and trigger separately in that case. + # When os and target constraints can be created independently of + # the platform, TODO change this back to add an error. + errors.extend(_analyze_variants_in_directive( + pkg, spack.spec.Spec(trigger), + directive='conflicts', error_cls=error_cls + )) errors.extend(_analyze_variants_in_directive( pkg, vrn, directive='conflicts', error_cls=error_cls )) diff --git a/lib/spack/spack/test/audit.py b/lib/spack/spack/test/audit.py index 207e98a7e8..ffc0d5b8d9 100644 --- a/lib/spack/spack/test/audit.py +++ b/lib/spack/spack/test/audit.py @@ -16,7 +16,10 @@ import spack.config # The package use a non existing variant in a depends_on directive (['wrong-variant-in-depends-on'], 'PKG-DIRECTIVES'), # This package has no issues - (['mpileaks'], None) + (['mpileaks'], None), + # This package has a conflict with a trigger which cannot constrain the constraint + # Should not raise an error + (['unconstrainable-conflict'], None), ]) def test_package_audits(packages, failing_check, mock_packages): reports = spack.audit.run_group('packages', pkgs=packages) -- cgit v1.2.3-60-g2f50