aboutsummaryrefslogtreecommitdiff
path: root/releng
diff options
context:
space:
mode:
Diffstat (limited to 'releng')
-rw-r--r--releng/create_release.xsh26
1 files changed, 20 insertions, 6 deletions
diff --git a/releng/create_release.xsh b/releng/create_release.xsh
index 874f71a77..358124359 100644
--- a/releng/create_release.xsh
+++ b/releng/create_release.xsh
@@ -106,17 +106,17 @@ def upload_drv_paths_and_outputs(env: RelengEnvironment, paths: list[str]):
raise subprocess.CalledProcessError(rv, proc.args)
-def make_manifest(eval_result):
- manifest = {vs['system']: vs['outputs']['out'] for vs in eval_result}
+def make_manifest(builds_by_system):
+
def manifest_line(system, out):
return f' {system} = "{out}";'
manifest_text = textwrap.dedent("""\
# This file was generated by releng/create_release.xsh in Lix
{{
- {lines}
+ {lines}
}}
- """).format(lines='\n'.join(manifest_line(s, p) for (s, p) in manifest.items()))
+ """).format(lines='\n'.join(manifest_line(s, p) for (s, p) in builds_by_system.items()))
return manifest_text
@@ -142,6 +142,18 @@ def sha256_file(f: Path):
return hasher.hexdigest()
+def extract_builds_by_system(eval_result):
+ # This could be a dictionary comprehension, but we want to be absolutely
+ # sure we don't have duplicates.
+ ret = {}
+ for attr in eval_result:
+ if attr['attrPath'][0] != 'build':
+ continue
+ assert attr['system'] not in ret
+ ret[attr['system']] = attr['outputs']['out']
+ return ret
+
+
def make_artifacts_dir(eval_result, d: Path):
d.mkdir(exist_ok=True, parents=True)
version_dir = d / 'lix' / f'lix-{VERSION}'
@@ -150,12 +162,14 @@ def make_artifacts_dir(eval_result, d: Path):
tarballs_drv = next(p for p in eval_result if p['attr'] == 'tarballs')
cp --no-preserve=mode -r @(tarballs_drv['outputs']['out'])/* @(version_dir)
+ builds_by_system = extract_builds_by_system(eval_result)
+
# FIXME: upgrade-nix searches for manifest.nix at root, which is rather annoying
with open(d / 'manifest.nix', 'w') as h:
- h.write(make_manifest(eval_result))
+ h.write(make_manifest(builds_by_system))
with open(version_dir / 'manifest.nix', 'w') as h:
- h.write(make_manifest(eval_result))
+ h.write(make_manifest(builds_by_system))
print('[+] Make sources tarball')