diff options
author | Ben Brown <ben.brown@codethink.co.uk> | 2017-04-13 15:15:56 +0100 |
---|---|---|
committer | Ben Brown <ben.brown@codethink.co.uk> | 2017-04-13 15:35:50 +0100 |
commit | a40cdbea72d582f3b09f3cb36e51bf866dd98f6f (patch) | |
tree | 6a6d17bc7cba7cfbde344ae9ab7061882bf2ee8b | |
parent | 4f3201027ade4fa1e1e0a8f2e94fbc20d33bd42c (diff) | |
download | ybd-benbrown/binaries.tar.gz |
Add sha256 of binary blobs to the cache-keybenbrown/binaries
Bumps artifact-version.
-rw-r--r-- | ybd/assembly.py | 4 | ||||
-rw-r--r-- | ybd/cache.py | 8 | ||||
-rw-r--r-- | ybd/config/ybd.conf | 4 |
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'] |