internal/rosa: create metadata alongside artifact

This enables deferring evaluation of azalea-based packages and fixes the longstanding quirk of version being disjoint from other metadata.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-05-19 00:03:42 +09:00
parent 0e95573f18
commit 8807cbc730
88 changed files with 612 additions and 874 deletions

View File

@@ -5,10 +5,16 @@ import (
"hakurei.app/internal/pkg"
)
func (t Toolchain) newStage0() (pkg.Artifact, string) {
return t.New("rosa-stage0", 0, t.Append(nil,
Bzip2,
), nil, nil, `
func init() {
meta := Metadata{
Name: "rosa-stage0",
Description: "Rosa OS stage0 toolchain tarball for bootstrap",
Version: Unversioned,
}
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
return &meta, t.New("rosa-stage0", 0, t.Append(nil,
Bzip2,
), nil, nil, `
umask 377
tar \
-vjc \
@@ -16,38 +22,30 @@ tar \
-f /work/stage0-`+t.triple()+`.tar.bz2 \
.
`, pkg.Path(fhs.AbsRoot.Append("stage0"), false, t.Append(nil,
LLVM,
Mksh,
toyboxEarly,
)...)), Unversioned
}
func init() {
native.MustRegister(&Artifact{
f: Toolchain.newStage0,
Name: "rosa-stage0",
Description: "Rosa OS stage0 toolchain tarball for bootstrap",
LLVM,
Mksh,
toyboxEarly,
)...))
})
}
func init() {
const version = "20260504"
native.MustRegister(&Artifact{
f: func(t Toolchain) (pkg.Artifact, string) {
return newTar(
"https://hakurei.app/seed/"+version+"/"+
"stage0-"+t.triple()+".tar.bz2",
perArch[string]{
"amd64": "IQjFDkiAVLo1XzflgMMiLP3gnVY2hhDMTzl-QqJDCQhcLQ3lLtRzjI5WCxGyW_lk",
"arm64": "6fmwl2Umx2QssKQvxxb1JOGkAjzfA_MXKku0jVdGjYGb35OvwEVA5NYtd0HIy3yH",
"riscv64": "Z2ODV0rIoo9iQRUIu35bsaOBeXc_9qQfGcyb2aGneatzNUJlXh5emSpEV2bOklUL",
}.unwrap(t.S),
pkg.TarBzip2,
), version
},
meta := Metadata{
Name: "stage0-dist",
Description: "Rosa OS stage0 bootstrap seed",
Version: "20260504",
}
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
return &meta, newTar(
"https://hakurei.app/seed/"+meta.Version+"/"+
"stage0-"+t.triple()+".tar.bz2",
perArch[string]{
"amd64": "IQjFDkiAVLo1XzflgMMiLP3gnVY2hhDMTzl-QqJDCQhcLQ3lLtRzjI5WCxGyW_lk",
"arm64": "6fmwl2Umx2QssKQvxxb1JOGkAjzfA_MXKku0jVdGjYGb35OvwEVA5NYtd0HIy3yH",
"riscv64": "Z2ODV0rIoo9iQRUIu35bsaOBeXc_9qQfGcyb2aGneatzNUJlXh5emSpEV2bOklUL",
}.unwrap(t.S),
pkg.TarBzip2,
)
})
}