From 587c650b8891ff1a633d4ccfcfcae74e079b1c8d Mon Sep 17 00:00:00 2001 From: Peter Josef Scheibel Date: Tue, 26 Nov 2019 19:50:06 -0800 Subject: Mirrors: skip attempts to fetch BundlePackages BundlePackages use a noop fetch strategy. The mirror logic was assuming that the fetcher had a resource to cach after performing a fetch. This adds a special check to skip caching if the stage is associated with a BundleFetchStrategy. Note that this should allow caching resources associated with BundlePackages. --- lib/spack/spack/stage.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index ffad242f27..bf65ee0b01 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -492,6 +492,16 @@ class Stage(object): def cache_mirror(self, stats): """Perform a fetch if the resource is not already cached""" + if isinstance(self.default_fetcher, fs.BundleFetchStrategy): + # BundleFetchStrategy has no source to fetch. The associated + # fetcher does nothing but the associated stage may still exist. + # There is currently no method available on the fetcher to + # distinguish this ('cachable' refers to whether the fetcher + # refers to a resource with a fixed ID, which is not the same + # concept as whether there is anything to fetch at all) so we + # must examine the type of the fetcher. + return + dst_root = spack.caches.mirror_cache.root absolute_storage_path = os.path.join( dst_root, self.mirror_paths.storage_path) -- cgit v1.2.3-60-g2f50