aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-02-10 19:40:45 +0900
committerOphestra <cat@gensokyo.uk>2026-02-10 21:22:46 +0900
commitfb101a02f21d048515561659b06bfc2a35568c56 (patch)
tree463d221e3408de18728ba85cf3412cde8b5a3e48 /internal
parent3dbd67d1138e46d15df408d1404c946163e15ef1 (diff)
internal/rosa: self-host stage0 tarball
This replaces gentoo stage3 tarballs. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/all.go4
-rw-r--r--internal/rosa/stage0.go39
-rw-r--r--internal/rosa/toybox.go4
3 files changed, 46 insertions, 1 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 0fdfdc8a..6c1a8ab7 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -83,6 +83,10 @@ const (
// stages only. This preset and its direct output must never be exposed.
gcc
+ // Stage0 is a tarball containing all compile-time dependencies of artifacts
+ // part of the [Std] toolchain.
+ Stage0
+
// _presetEnd is the total number of presets and does not denote a preset.
_presetEnd
)
diff --git a/internal/rosa/stage0.go b/internal/rosa/stage0.go
new file mode 100644
index 00000000..7b347255
--- /dev/null
+++ b/internal/rosa/stage0.go
@@ -0,0 +1,39 @@
+package rosa
+
+import "hakurei.app/internal/pkg"
+
+func (t Toolchain) newStage0() pkg.Artifact {
+ musl, compilerRT, runtimes, clang := t.NewLLVM()
+ return t.New("rosa-stage0", 0, []pkg.Artifact{
+ musl,
+ compilerRT,
+ runtimes,
+ clang,
+
+ t.Load(Bzip2),
+
+ t.Load(Patch),
+ t.Load(Make),
+ t.Load(CMake),
+ t.Load(Ninja),
+
+ t.Load(Libffi),
+ t.Load(Python),
+ t.Load(Perl),
+ t.Load(Diffutils),
+ t.Load(Bash),
+ t.Load(Gawk),
+ t.Load(Coreutils),
+ t.Load(Findutils),
+
+ t.Load(KernelHeaders),
+ }, nil, nil, `
+umask 377
+tar \
+ -vjc \
+ -C / \
+ -f /work/stage0-`+triplet()+`.tar.bz2 \
+ system bin usr/bin/env
+`)
+}
+func init() { artifactsF[Stage0] = Toolchain.newStage0 }
diff --git a/internal/rosa/toybox.go b/internal/rosa/toybox.go
index 2e4d470e..a35215b7 100644
--- a/internal/rosa/toybox.go
+++ b/internal/rosa/toybox.go
@@ -16,7 +16,9 @@ func (t Toolchain) newToybox(suffix, script string) pkg.Artifact {
), nil, stage0Concat(t, []string{},
"ROSA_CHECK=make USER=cure tests",
), `
-ln -s ../system/bin/bash /bin/ || true
+chmod +w /bin/
+ln -sf ../system/bin/bash /bin/
+
cd /usr/src/toybox
chmod +w kconfig tests
rm \