From 2e372c53ab240fa6d47c97071d03d76bb5b8e9c7 Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Tue, 18 Feb 2025 06:17:55 +0100 Subject: [PATCH] spec.py: remove Spec.virtual_dependencies (#49079) --- lib/spack/spack/spec.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 1f9ba1e530b..3c9a2729ecb 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -3409,12 +3409,20 @@ def _intersects_dependencies(self, other): # These two loops handle cases where there is an overly restrictive # vpkg in one spec for a provider in the other (e.g., mpi@3: is not # compatible with mpich2) - for spec in self.virtual_dependencies(): - if spec.name in other_index and not other_index.providers_for(spec): + for spec in self.traverse(): + if ( + spack.repo.PATH.is_virtual(spec.name) + and spec.name in other_index + and not other_index.providers_for(spec) + ): return False - for spec in other.virtual_dependencies(): - if spec.name in self_index and not self_index.providers_for(spec): + for spec in other.traverse(): + if ( + spack.repo.PATH.is_virtual(spec.name) + and spec.name in self_index + and not self_index.providers_for(spec) + ): return False return True @@ -3558,10 +3566,6 @@ def satisfies(self, other: Union[str, "Spec"], deps: bool = True) -> bool: for rhs in other.traverse(root=False) ) - def virtual_dependencies(self): - """Return list of any virtual deps in this spec.""" - return [spec for spec in self.traverse() if spack.repo.PATH.is_virtual(spec.name)] - @property # type: ignore[misc] # decorated prop not supported in mypy def patches(self): """Return patch objects for any patch sha256 sums on this Spec.