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.
This commit is contained in:
parent
d71428622b
commit
587c650b88
1 changed files with 10 additions and 0 deletions
|
@ -492,6 +492,16 @@ def cache_local(self):
|
||||||
|
|
||||||
def cache_mirror(self, stats):
|
def cache_mirror(self, stats):
|
||||||
"""Perform a fetch if the resource is not already cached"""
|
"""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
|
dst_root = spack.caches.mirror_cache.root
|
||||||
absolute_storage_path = os.path.join(
|
absolute_storage_path = os.path.join(
|
||||||
dst_root, self.mirror_paths.storage_path)
|
dst_root, self.mirror_paths.storage_path)
|
||||||
|
|
Loading…
Reference in a new issue