forked from lix-project/lix
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
This commit is contained in:
parent
4004d12483
commit
4e02951335
|
@ -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')
|
||||
|
||||
|
|
Loading…
Reference in a new issue