aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-28 22:51:03 +0900
committerOphestra <cat@gensokyo.uk>2026-01-29 00:51:32 +0900
commit77ea27b0385eb5df851fad3a1582b1737145f449 (patch)
tree041101579410ede4f49a680c5750a3d20dc87a40
parente76bc6a13aa9d2d1f6695c3ddcda1267cafe9ae6 (diff)
internal/rosa: mksh artifact
This provides a shell, as part of the effort to replace busybox. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/all.go2
-rw-r--r--internal/rosa/mksh.go30
2 files changed, 32 insertions, 0 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 3b9ccb74..c76a15c4 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -37,6 +37,7 @@ const (
M4
Make
Meson
+ Mksh
NSS
NSSCACert
Ninja
@@ -111,6 +112,7 @@ func (t Toolchain) ResolveName(name string) (p PArtifact, ok bool) {
"m4": M4,
"make": Make,
"meson": Meson,
+ "mksh": Mksh,
"nss": NSS,
"nss-cacert": NSSCACert,
"ninja": Ninja,
diff --git a/internal/rosa/mksh.go b/internal/rosa/mksh.go
new file mode 100644
index 00000000..dd30f697
--- /dev/null
+++ b/internal/rosa/mksh.go
@@ -0,0 +1,30 @@
+package rosa
+
+import "hakurei.app/internal/pkg"
+
+func (t Toolchain) newMksh() pkg.Artifact {
+ const (
+ version = "59c"
+ checksum = "0Zj-k4nXEu3IuJY4lvwD2OrC2t27GdZj8SPy4DoaeuBRH1padWb7oREpYgwY8JNq"
+ )
+ return t.New("mksh-"+version, false, stage3Concat(t, []pkg.Artifact{},
+ t.Load(Make),
+ t.Load(Perl),
+ ), nil, []string{
+ "LDSTATIC=-static",
+ }, `
+cd "$(mktemp -d)"
+sh /usr/src/mksh/Build.sh
+./test.sh -C regress:no-ctty
+
+mkdir -p /work/{bin,system/bin}
+cp mksh /work/system/bin/sh
+ln -vs ../system/bin/sh /work/bin
+`, pkg.Path(AbsUsrSrc.Append("mksh"), false, pkg.NewHTTPGetTar(
+ nil,
+ "https://mbsd.evolvis.org/MirOS/dist/mir/mksh/mksh-R"+version+".tgz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ )))
+}
+func init() { artifactsF[Mksh] = Toolchain.newMksh }