aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/mbf/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mbf/main.go')
-rw-r--r--cmd/mbf/main.go70
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)