From 279a9736330e187e7e8a03e9da63449f6613afc9 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sun, 8 Mar 2026 18:28:35 +0900 Subject: [PATCH] internal/rosa: build independent earlyinit This avoids unnecessarily rebuilding hakurei during development. Signed-off-by: Ophestra --- internal/rosa/all.go | 2 ++ internal/rosa/images.go | 24 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 41aacdd..6b9605b 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -19,6 +19,8 @@ const ( LLVMRuntimes LLVMClang + // EarlyInit is the Rosa OS initramfs init program. + EarlyInit // ImageInitramfs is the Rosa OS initramfs archive. ImageInitramfs diff --git a/internal/rosa/images.go b/internal/rosa/images.go index 52ff8f6..bef35d2 100644 --- a/internal/rosa/images.go +++ b/internal/rosa/images.go @@ -2,10 +2,32 @@ package rosa import "hakurei.app/internal/pkg" +func init() { + artifactsM[EarlyInit] = Metadata{ + Name: "earlyinit", + Description: "Rosa OS initramfs init program", + + f: func(t Toolchain) (pkg.Artifact, string) { + return t.newHakurei("-early-init", ` +mkdir -p /work/system/libexec/hakurei/ + +echo '# Building earlyinit.' +go build -trimpath -v -o /work/system/libexec/hakurei -ldflags="-s -w + -buildid= + -linkmode external + -extldflags=-static + -X hakurei.app/internal/info.buildVersion=${HAKUREI_VERSION} +" ./cmd/earlyinit +echo +`, false), Unversioned + }, + } +} + func (t Toolchain) newImageInitramfs() (pkg.Artifact, string) { return t.New("initramfs", TNoToolchain, []pkg.Artifact{ t.Load(Zstd), - t.Load(Hakurei), + t.Load(EarlyInit), t.Load(GenInitCPIO), }, nil, nil, ` gen_init_cpio -t 4294967295 -c /usr/src/initramfs | zstd > /work/initramfs.zst