diff options
Diffstat (limited to 'lib/spack/spack/repository.py')
-rw-r--r-- | lib/spack/spack/repository.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index ec5e7ddc44..a3cac95c3b 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -683,7 +683,7 @@ class Repo(object): self._instances = {} # Maps that goes from package name to corresponding file stat - self._fast_package_checker = FastPackageChecker(self.packages_path) + self._fast_package_checker = None # Index of virtual dependencies, computed lazily self._provider_index = None @@ -928,9 +928,15 @@ class Repo(object): pkg_dir = self.dirname_for_package_name(spec.name) return join_path(pkg_dir, package_file_name) + @property + def _pkg_checker(self): + if self._fast_package_checker is None: + self._fast_package_checker = FastPackageChecker(self.packages_path) + return self._fast_package_checker + def all_package_names(self): """Returns a sorted list of all package names in the Repo.""" - return sorted(self._fast_package_checker.keys()) + return sorted(self._pkg_checker.keys()) def packages_with_tags(self, *tags): v = set(self.all_package_names()) @@ -952,7 +958,7 @@ class Repo(object): def exists(self, pkg_name): """Whether a package with the supplied name exists.""" - return pkg_name in self._fast_package_checker + return pkg_name in self._pkg_checker def is_virtual(self, pkg_name): """True if the package with this name is virtual, False otherwise.""" |