summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Josef Scheibel <scheibel1@llnl.gov>2019-11-26 19:50:06 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2019-12-23 23:03:10 -0800
commit587c650b8891ff1a633d4ccfcfcae74e079b1c8d (patch)
tree4abe72b89c8b0b328942f2a37c76abd6bbf2c629
parentd71428622bebc54db4a1903e2026067fc085cb1b (diff)
downloadspack-587c650b8891ff1a633d4ccfcfcae74e079b1c8d.tar.gz
spack-587c650b8891ff1a633d4ccfcfcae74e079b1c8d.tar.bz2
spack-587c650b8891ff1a633d4ccfcfcae74e079b1c8d.tar.xz
spack-587c650b8891ff1a633d4ccfcfcae74e079b1c8d.zip
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.
-rw-r--r--lib/spack/spack/stage.py10
1 files changed, 10 insertions, 0 deletions
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)