When we write the hash, we do so by using:
snapshot_cache_path + / + catalyst-hash
But when we read it, we do so by:
snapshot_cache_path + catalyst-hash
If the path lacks a trailing /, then we never read the correct hash
file. The current helper returns -1 on missing file errors which is
compared against the existing hash. In essence, we always trigger a
cache miss.
Clean up the code to properly create the path and use that var in both
places to prevent future breakage.
---
v2
- do it better like an all star
catalyst/base/stagebase.py | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index f81c51b..7d069fa 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -815,9 +815,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
print self.settings["chroot_path"]
print "unpack(), target_portdir = " + target_portdir
if "snapcache" in self.settings["options"]:
- snapshot_cache_hash=\
-
read_from_clst(self.settings["snapshot_cache_path"]+\
- "catalyst-hash")
+ snapshot_cache_hash_path = pjoin(
+ self.settings['snapshot_cache_path'],
'catalyst-hash')
+ snapshot_cache_hash =
read_from_clst(snapshot_cache_hash_path)
unpack_info['mode'] = self.decompressor.determine_mode(
unpack_info['source'])
@@ -862,8 +862,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
print unpack_errmsg %(unpack_info)
if "snapcache" in self.settings["options"]:
- myf=open(self.settings["snapshot_cache_path"] +
- "/" + "catalyst-hash","w")
+ myf = open(snapshot_cache_hash_path, 'w')
myf.write(self.settings["snapshot_path_hash"])
myf.close()
else:
--
2.5.2