summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Brown <ben.brown@codethink.co.uk>2017-04-13 15:15:56 +0100
committerBen Brown <ben.brown@codethink.co.uk>2017-04-13 15:35:50 +0100
commita40cdbea72d582f3b09f3cb36e51bf866dd98f6f (patch)
tree6a6d17bc7cba7cfbde344ae9ab7061882bf2ee8b
parent4f3201027ade4fa1e1e0a8f2e94fbc20d33bd42c (diff)
downloadybd-benbrown/binaries.tar.gz
Add sha256 of binary blobs to the cache-keybenbrown/binaries
Bumps artifact-version.
-rw-r--r--ybd/assembly.py4
-rw-r--r--ybd/cache.py8
-rw-r--r--ybd/config/ybd.conf4
3 files changed, 13 insertions, 3 deletions
diff --git a/ybd/assembly.py b/ybd/assembly.py
index 1b5c571..a895c8d 100644
--- a/ybd/assembly.py
+++ b/ybd/assembly.py
@@ -172,7 +172,9 @@ def run_build(dn):
repos.checkout(dn)
dn['SOURCE_DATE_EPOCH'] = repos.source_date_epoch(dn['checkout'])
elif dn.get('url'):
- repos.get_binary(dn)
+ # No need to verify here, will be cached as part of cache-key
+ # calculation.
+ repos.get_binary(dn, verify=False)
get_build_commands(dn)
env_vars = sandbox.env_vars_for_build(dn)
diff --git a/ybd/cache.py b/ybd/cache.py
index d8d4df4..e7f6f37 100644
--- a/ybd/cache.py
+++ b/ybd/cache.py
@@ -23,7 +23,7 @@ from subprocess import call
import hashlib
import app
-from repos import get_repo_url, get_tree
+from repos import get_repo_url, get_tree, get_binary
from utils import hardlink_all_files, make_deterministic_gztar_archive
from utils import make_deterministic_tar_archive
from utils import md5, sha256, set_mtime_recursively, sorted_ls
@@ -61,6 +61,8 @@ def cache_key(dn):
dn['tree'], dn['sha'] = get_tree(dn)
if not dn.get('repourl'):
dn['repourl'] = get_repo_url(dn.get('repo'))
+ if dn.get('url'):
+ dn['sha256'] = get_binary(dn, sha_only=True)
factors = hash_factors(dn)
factors = json.dumps(factors, sort_keys=True).encode('utf-8')
key = hashlib.sha256(factors).hexdigest()
@@ -143,6 +145,10 @@ def hash_factors(dn):
else:
hash_factors['max-jobs'] = 'parallel'
+ if app.config.get('artifact-version', 0) not in range(0, 9):
+ if dn.get('url'):
+ hash_factors['sha256'] = dn['sha256']
+
return hash_factors
diff --git a/ybd/config/ybd.conf b/ybd/config/ybd.conf
index d800d23..7abbe32 100644
--- a/ybd/config/ybd.conf
+++ b/ybd/config/ybd.conf
@@ -62,7 +62,9 @@ aliases:
# 7: (after e7be39bf) see https://gitlab.com/baserock/ybd/issues/249
# we need to include max-jobs in the cache-key
# 8: (after c59d65cf) support added for git-lfs
-artifact-version: 8
+# 9: (after 6a098196) support added for fetching blobs via url, sha256 of blobs
+# added to the cache-key
+artifact-version: 9
# path to be used in default chroots for builds
base-path: ['/usr/bin', '/bin', '/usr/sbin', '/sbin']