internal/rosa/package: migrate system image
All checks were successful
Test / Create distribution (push) Successful in 1m4s
Test / Sandbox (push) Successful in 2m52s
Test / ShareFS (push) Successful in 3m43s
Test / Hakurei (push) Successful in 3m56s
Test / Sandbox (race detector) (push) Successful in 5m30s
Test / Hakurei (race detector) (push) Successful in 6m30s
Test / Flake checks (push) Successful in 1m22s
All checks were successful
Test / Create distribution (push) Successful in 1m4s
Test / Sandbox (push) Successful in 2m52s
Test / ShareFS (push) Successful in 3m43s
Test / Hakurei (push) Successful in 3m56s
Test / Sandbox (race detector) (push) Successful in 5m30s
Test / Hakurei (race detector) (push) Successful in 6m30s
Test / Flake checks (push) Successful in 1m22s
The overlay argument also enables migration of stage0. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
package rosa
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hakurei.app/fhs"
|
|
||||||
"hakurei.app/internal/pkg"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
meta := Metadata{
|
|
||||||
Name: "system-image",
|
|
||||||
Description: "Rosa OS system image",
|
|
||||||
Version: Unversioned,
|
|
||||||
}
|
|
||||||
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
|
|
||||||
return &meta, t.New("system.img", TNoToolchain, t.Append(nil,
|
|
||||||
H("squashfs-tools"),
|
|
||||||
), nil, nil, `
|
|
||||||
mksquashfs /mnt/system /work/system.img
|
|
||||||
`, pkg.Path(fhs.AbsRoot.Append("mnt"), false, t.Append(nil,
|
|
||||||
_musl,
|
|
||||||
_mksh,
|
|
||||||
_toybox,
|
|
||||||
|
|
||||||
H("kmod"),
|
|
||||||
H("kernel"),
|
|
||||||
H("firmware"),
|
|
||||||
)...))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -19,3 +19,27 @@ package initramfs-image {
|
|||||||
gen_init_cpio,
|
gen_init_cpio,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
package system-image {
|
||||||
|
description = "Rosa OS system image";
|
||||||
|
version = unversioned;
|
||||||
|
exclude = true;
|
||||||
|
|
||||||
|
source = earlyinit;
|
||||||
|
extra = [
|
||||||
|
musl,
|
||||||
|
mksh,
|
||||||
|
toybox,
|
||||||
|
|
||||||
|
kmod,
|
||||||
|
kernel,
|
||||||
|
firmware,
|
||||||
|
];
|
||||||
|
overlay = "/mnt";
|
||||||
|
|
||||||
|
exec = generic {
|
||||||
|
build = "mksquashfs /mnt/system /work/system.img";
|
||||||
|
};
|
||||||
|
|
||||||
|
inputs = [ squashfs-tools ];
|
||||||
|
}
|
||||||
|
|||||||
@@ -932,6 +932,7 @@ func (ctx *evalContext) pf(
|
|||||||
output pkg.Artifact
|
output pkg.Artifact
|
||||||
sourceA any
|
sourceA any
|
||||||
helper Helper
|
helper Helper
|
||||||
|
overlay string
|
||||||
|
|
||||||
inputs, runtimes, extra azalea.Array
|
inputs, runtimes, extra azalea.Array
|
||||||
)
|
)
|
||||||
@@ -960,6 +961,7 @@ func (ctx *evalContext) pf(
|
|||||||
k("inputs"): &inputs,
|
k("inputs"): &inputs,
|
||||||
k("runtime"): &runtimes,
|
k("runtime"): &runtimes,
|
||||||
k("extra"): &extra,
|
k("extra"): &extra,
|
||||||
|
k("overlay"): &overlay,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -991,13 +993,26 @@ func (ctx *evalContext) pf(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, h := range extraH {
|
if overlay == "" {
|
||||||
_, a := ctx.t.MustLoad(h)
|
for _, h := range extraH {
|
||||||
attr.Paths = append(attr.Paths, pkg.Path(
|
_, a := ctx.t.MustLoad(h)
|
||||||
AbsUsrSrc.Append("extra", h.String()),
|
attr.Paths = append(attr.Paths, pkg.Path(
|
||||||
attr.Writable,
|
AbsUsrSrc.Append("extra", h.String()),
|
||||||
a,
|
attr.Writable,
|
||||||
))
|
a,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var o pkg.ExecPath
|
||||||
|
if o.P, err = check.NewAbs(overlay); err != nil {
|
||||||
|
o.P = AbsUsrSrc.Append("extra", overlay)
|
||||||
|
}
|
||||||
|
o.A = make([]pkg.Artifact, len(extraH))
|
||||||
|
for i, h := range extraH {
|
||||||
|
_, a := ctx.t.MustLoad(h)
|
||||||
|
o.A[i] = a
|
||||||
|
}
|
||||||
|
attr.Paths = append(attr.Paths, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pair := range files {
|
for _, pair := range files {
|
||||||
|
|||||||
Reference in New Issue
Block a user