diff options
Diffstat (limited to 'cmd/mbf/main.go')
| -rw-r--r-- | cmd/mbf/main.go | 70 |
1 files changed, 33 insertions, 37 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go index ea10d3b7..25902fde 100644 --- a/cmd/mbf/main.go +++ b/cmd/mbf/main.go @@ -97,10 +97,10 @@ func main() { if !flagLTO { flags |= rosa.OptLLVMNoLTO } - rosa.DropCaches("", flags) + rosa.Native().DropCaches("", flags) cross := flagArch != "" && flagArch != runtime.GOARCH if flagQEMU || cross { - cm.qemu = rosa.Std.Load(rosa.QEMU) + cm.qemu, _ = rosa.Native().Load(rosa.Std, rosa.QEMU) } if cross { @@ -108,7 +108,7 @@ func main() { flags = flagCrossOverride } - rosa.DropCaches(flagArch, flags) + rosa.Native().DropCaches(flagArch, flags) if !rosa.HasStage0() { return pkg.UnsupportedArchError(flagArch) } @@ -331,12 +331,12 @@ func main() { n atomic.Uint64 ) - w := make(chan rosa.PArtifact) + w := make(chan rosa.ArtifactH) var wg sync.WaitGroup for range max(flagJobs, 1) { wg.Go(func() { for p := range w { - meta := rosa.GetMetadata(p) + meta := rosa.Native().MustGet(p) if meta.ID == 0 { continue } @@ -349,8 +349,9 @@ func main() { continue } + _, version := rosa.Native().Load(rosa.Std, p) if current, latest := - rosa.Std.Version(p), + version, meta.GetLatest(v); current != latest { n.Add(1) @@ -364,9 +365,9 @@ func main() { } done: - for i := range rosa.PresetEnd { + for _, p := range rosa.Native().Collect() { select { - case w <- rosa.PArtifact(i): + case w <- p: break case <-ctx.Done(): break done @@ -421,7 +422,7 @@ func main() { return } } - rosa.SetGentooStage3(flagGentoo, checksum) + rosa.Native().SetGentooStage3(flagGentoo, checksum) } var ( @@ -430,9 +431,8 @@ func main() { ) if err = cm.Do(func(cache *pkg.Cache) (err error) { - pathname, _, err = cache.Cure( - (t - 2).Load(rosa.LLVM), - ) + llvm, _ := rosa.Native().Load(t-2, rosa.LLVM) + pathname, _, err = cache.Cure(llvm) return }); err != nil { return @@ -440,18 +440,16 @@ func main() { log.Println("stage1:", pathname) if err = cm.Do(func(cache *pkg.Cache) (err error) { - pathname, checksum[0], err = cache.Cure( - (t - 1).Load(rosa.LLVM), - ) + llvm, _ := rosa.Native().Load(t-1, rosa.LLVM) + pathname, checksum[0], err = cache.Cure(llvm) return }); err != nil { return } log.Println("stage2:", pathname) if err = cm.Do(func(cache *pkg.Cache) (err error) { - pathname, checksum[1], err = cache.Cure( - t.Load(rosa.LLVM), - ) + llvm, _ := rosa.Native().Load(t, rosa.LLVM) + pathname, checksum[1], err = cache.Cure(llvm) return }); err != nil { return @@ -472,9 +470,8 @@ func main() { if flagStage0 { if err = cm.Do(func(cache *pkg.Cache) (err error) { - pathname, _, err = cache.Cure( - t.Load(rosa.Stage0), - ) + stage0, _ := rosa.Native().Load(t, rosa.Stage0) + pathname, _, err = cache.Cure(stage0) return }); err != nil { return @@ -519,10 +516,6 @@ func main() { if len(args) != 1 { return errors.New("cure requires 1 argument") } - p, ok := rosa.ResolveName(args[0]) - if !ok { - return fmt.Errorf("unknown artifact %q", args[0]) - } t := rosa.Std if flagBoot { @@ -531,11 +524,16 @@ func main() { t -= 1 } + a, _ := rosa.Native().Load(t, rosa.ArtifactH(unique.Make(args[0]))) + if a == nil { + return fmt.Errorf("unknown artifact %q", args[0]) + } + switch { default: var pathname *check.Absolute err := cm.Do(func(cache *pkg.Cache) (err error) { - pathname, _, err = cache.Cure(t.Load(p)) + pathname, _, err = cache.Cure(a) return }) if err != nil { @@ -577,7 +575,7 @@ func main() { return err } - if err = pkg.NewIR().EncodeAll(f, rosa.Std.Load(p)); err != nil { + if err = pkg.NewIR().EncodeAll(f, a); err != nil { _ = f.Close() return err } @@ -588,7 +586,7 @@ func main() { return cm.Do(func(cache *pkg.Cache) error { return cache.EnterExec( ctx, - t.Load(p), + a, true, os.Stdin, os.Stdout, os.Stderr, rosa.AbsSystem.Append("bin", "mksh"), "sh", @@ -600,7 +598,6 @@ func main() { if flagNoReply { flags |= remoteNoReply } - a := t.Load(p) pathname, err := cureRemote(ctx, &addr, a, flags) if !flagNoReply && err == nil { log.Println(pathname) @@ -620,7 +617,7 @@ func main() { case flagFaults: var faults []pkg.Fault if err := cm.Do(func(cache *pkg.Cache) (err error) { - faults, err = cache.ReadFaults(t.Load(p)) + faults, err = cache.ReadFaults(a) return }); err != nil { return err @@ -634,7 +631,7 @@ func main() { case flagPop: var faults []pkg.Fault if err := cm.Do(func(cache *pkg.Cache) (err error) { - faults, err = cache.ReadFaults(t.Load(p)) + faults, err = cache.ReadFaults(a) return }); err != nil { return err @@ -740,27 +737,26 @@ func main() { "shell", "Interactive shell in the specified Rosa OS environment", func(args []string) error { - presets := make([]rosa.PArtifact, len(args)+3) + handles := make([]rosa.ArtifactH, len(args)+3) for i, arg := range args { - p, ok := rosa.ResolveName(arg) - if !ok { + handles[i] = rosa.ArtifactH(unique.Make(arg)) + if rosa.Native().Get(handles[i]) == nil { return fmt.Errorf("unknown artifact %q", arg) } - presets[i] = p } base := rosa.LLVM if !flagWithToolchain { base = rosa.Musl } - presets = append(presets, + handles = append(handles, base, rosa.Mksh, rosa.Toybox, ) root := make(pkg.Collect, 0, 6+len(args)) - root = rosa.Std.AppendPresets(root, presets...) + root = rosa.Native().AppendPresets(rosa.Std, root, handles...) if err := cm.Do(func(cache *pkg.Cache) error { _, _, err := cache.Cure(&root) |
