diff options
author | Jade Lovelace <lix@jade.fyi> | 2024-06-16 13:34:04 -0700 |
---|---|---|
committer | Jade Lovelace <lix@jade.fyi> | 2024-06-16 13:34:04 -0700 |
commit | 4e02951335cf5ed9c37c44b81adf7e1f0fae8788 (patch) | |
tree | e2c04cce9ad8a828a6b1be84439f030cf986d29d /releng | |
parent | 4004d124837d10ce96a0bc33f1eb56bfa98eddcd (diff) |
releng: fix broken manifest from 2.90-rc1
Well that is embarrassing. I think the proper thing is to just quickly
ship a -rc2, so I will open a backport of this.
$ curl https://releases.lix.systems/manifest.nix
# This file was generated by releng/create_release.xsh in Lix
{
aarch64-linux = "/nix/store/mrbknq000af7iaqhk53bnpk1fvfrc1xp-lix-2.90.0-rc1";
aarch64-darwin = "/nix/store/z1bdccwsk34iv491aygh0mm1lgpf7yy1-lix-2.90.0-rc1";
x86_64-darwin = "/nix/store/xqvfpdhzck44v6kyhgi9f8v0xybksb6a-lix-2.90.0-rc1";
x86_64-linux = "/nix/store/h2ml0nx4477r84y82jgm8y80jpr72gqw-lix-release-tarballs";
}
Change-Id: I9cf007c850c2faf995a3a9d92457517b8501d1a1
Diffstat (limited to 'releng')
-rw-r--r-- | releng/create_release.xsh | 26 |
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') |