internal/rosa: create metadata alongside artifact
All checks were successful
Test / Create distribution (push) Successful in 1m5s
Test / Sandbox (push) Successful in 2m45s
Test / ShareFS (push) Successful in 3m47s
Test / Hakurei (push) Successful in 4m0s
Test / Sandbox (race detector) (push) Successful in 5m28s
Test / Hakurei (race detector) (push) Successful in 6m32s
Test / Flake checks (push) Successful in 1m21s

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

@@ -118,7 +118,7 @@ func main() {
rosa.Native().DropCaches("", flags)
cross := flagArch != "" && flagArch != runtime.GOARCH
if flagQEMU || cross {
cm.qemu, _ = rosa.Native().Std().Load(rosa.QEMU)
_, cm.qemu = rosa.Native().Std().MustLoad(rosa.QEMU)
}
if cross {
@@ -358,7 +358,7 @@ func main() {
for range max(flagJobs, 1) {
wg.Go(func() {
for p := range w {
meta := rosa.Native().MustGet(p)
meta, _ := rosa.Native().Std().MustLoad(p)
if meta.ID == 0 {
continue
}
@@ -371,13 +371,9 @@ func main() {
continue
}
_, version := rosa.Native().Std().Load(p)
if current, latest :=
version,
meta.GetLatest(v); current != latest {
if latest := meta.GetLatest(v); meta.Version != latest {
n.Add(1)
log.Printf("%s %s < %s", meta.Name, current, latest)
log.Printf("%s %s < %s", meta.Name, meta.Version, latest)
continue
}
@@ -453,7 +449,7 @@ func main() {
)
if err = cm.Do(func(cache *pkg.Cache) (err error) {
llvm, _ := rosa.Native().New(s - 2).Load(rosa.LLVM)
_, llvm := rosa.Native().New(s - 2).Load(rosa.LLVM)
pathname, _, err = cache.Cure(llvm)
return
}); err != nil {
@@ -462,7 +458,7 @@ func main() {
log.Println("stage1:", pathname)
if err = cm.Do(func(cache *pkg.Cache) (err error) {
llvm, _ := rosa.Native().New(s - 1).Load(rosa.LLVM)
_, llvm := rosa.Native().New(s - 1).Load(rosa.LLVM)
pathname, checksum[0], err = cache.Cure(llvm)
return
}); err != nil {
@@ -470,7 +466,7 @@ func main() {
}
log.Println("stage2:", pathname)
if err = cm.Do(func(cache *pkg.Cache) (err error) {
llvm, _ := rosa.Native().New(s).Load(rosa.LLVM)
_, llvm := rosa.Native().New(s).Load(rosa.LLVM)
pathname, checksum[1], err = cache.Cure(llvm)
return
}); err != nil {
@@ -492,7 +488,7 @@ func main() {
if flagStage0 {
if err = cm.Do(func(cache *pkg.Cache) (err error) {
stage0, _ := rosa.Native().New(s).Load(rosa.Stage0)
_, stage0 := rosa.Native().New(s).Load(rosa.Stage0)
pathname, _, err = cache.Cure(stage0)
return
}); err != nil {
@@ -546,7 +542,7 @@ func main() {
t -= 1
}
a, _ := rosa.Native().New(t).Load(rosa.ArtifactH(unique.Make(args[0])))
_, a := rosa.Native().New(t).Load(rosa.ArtifactH(unique.Make(args[0])))
if a == nil {
return fmt.Errorf("unknown artifact %q", args[0])
}
@@ -762,7 +758,7 @@ func main() {
handles := make([]rosa.ArtifactH, len(args)+3)
for i, arg := range args {
handles[i] = rosa.ArtifactH(unique.Make(arg))
if rosa.Native().Get(handles[i]) == nil {
if meta, _ := rosa.Native().Std().Load(handles[i]); meta == nil {
return fmt.Errorf("unknown artifact %q", arg)
}
}