From 009a4e0d583d14ebe328473df6468424587087a7 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 19 May 2026 22:10:39 +0900 Subject: [PATCH] internal/rosa/hakurei: migrate to helper This predates the helper infrastructure, so migrate it. Signed-off-by: Ophestra --- internal/rosa/hakurei.go | 108 ++++++++++++++++++++++----------------- internal/rosa/images.go | 2 +- 2 files changed, 62 insertions(+), 48 deletions(-) diff --git a/internal/rosa/hakurei.go b/internal/rosa/hakurei.go index 537b6b76..a44d64da 100644 --- a/internal/rosa/hakurei.go +++ b/internal/rosa/hakurei.go @@ -3,7 +3,7 @@ package rosa import "hakurei.app/internal/pkg" func (t Toolchain) newHakurei( - suffix, script string, + suffix, build, check, install string, withHostname bool, ) pkg.Artifact { hostname := ` @@ -14,7 +14,40 @@ go build -o /bin/hostname /usr/src/hostname/main.go hostname = "" } - return t.New("hakurei"+suffix+"-"+hakureiVersion, 0, t.Append(nil, + name := "hakurei" + suffix + return t.NewPackage(name, hakureiVersion, t.NewPatchedSource( + "hakurei", hakureiVersion, hakureiSource, false, hakureiPatches..., + ), &PackageAttr{ + Writable: true, + Env: []string{ + "CGO_ENABLED=1", + "GOCACHE=/tmp/gocache", + "CC=clang -O3 -Werror", + }, + + Paths: []pkg.ExecPath{pkg.Path(AbsUsrSrc.Append("hostname", "main.go"), false, pkg.NewFile( + "hostname.go", + []byte(` +package main + +import "os" + +func main() { + if name, err := os.Hostname(); err != nil { + panic(err) + } else { + os.Stdout.WriteString(name) + } +} +`), + ))}, + }, &GenericHelper{ + Build: hostname + ` +HAKUREI_VERSION='v` + hakureiVersion + `' +` + build, + Check: check, + Install: install, + }, Go, PkgConfig, @@ -30,36 +63,19 @@ go build -o /bin/hostname /usr/src/hostname/main.go WaylandProtocols, KernelHeaders, - ), nil, []string{ - "CGO_ENABLED=1", - "GOCACHE=/tmp/gocache", - "CC=clang -O3 -Werror", - }, hostname+` -cd /usr/src/hakurei - -HAKUREI_VERSION='v`+hakureiVersion+`' -`+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, t.NewPatchedSource( - "hakurei", hakureiVersion, hakureiSource, false, hakureiPatches..., - )), pkg.Path(AbsUsrSrc.Append("hostname", "main.go"), false, pkg.NewFile( - "hostname.go", - []byte(` -package main - -import "os" - -func main() { - if name, err := os.Hostname(); err != nil { - panic(err) - } else { - os.Stdout.WriteString(name) - } -} -`), - ))) + ) } func init() { - native.mustRegister(func(t Toolchain) (pkg.Artifact, string) { - return t.newHakurei("", ` + meta := Metadata{ + Name: "hakurei", + Description: "low-level userspace tooling for Rosa OS", + Website: "https://hakurei.app", + Version: hakureiVersion, + + ID: 388834, + } + native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) { + return &meta, t.newHakurei("", ` mkdir -p /work/system/libexec/hakurei/ echo "Building hakurei for $(go env GOOS)/$(go env GOARCH)." @@ -74,36 +90,34 @@ go build -trimpath -tags=rosa -o /work/system/libexec/hakurei -ldflags="-s -w -X main.hakureiPath=/system/bin/hakurei " ./... echo - +`, ` echo '##### Testing hakurei.' go test -ldflags='-buildid= -linkmode external -extldflags=-static' ./... echo - +`, ` mkdir -p /work/system/bin/ (cd /work/system/libexec/hakurei && mv \ hakurei \ sharefs \ ../../bin/) -`, true), hakureiVersion - }, &Metadata{ - Name: "hakurei", - Description: "low-level userspace tooling for Rosa OS", - Website: "https://hakurei.app/", - - ID: 388834, +`, true) }) - native.mustRegister(func(t Toolchain) (pkg.Artifact, string) { +} +func init() { + meta := Metadata{ + Name: "hakurei-dist", + Description: "low-level userspace tooling for Rosa OS (distribution tarball)", + Website: "https://hakurei.app", + Version: hakureiVersion, + } + native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) { name := "all" if t.opts&OptSkipCheck != 0 { name = "make" } - return t.newHakurei("-dist", ` + return &meta, t.newHakurei("-dist", ` export HAKUREI_VERSION -DESTDIR=/work /usr/src/hakurei/`+name+`.sh -`, true), hakureiVersion - }, &Metadata{ - Name: "hakurei-dist", - Description: "low-level userspace tooling for Rosa OS (distribution tarball)", - Website: "https://hakurei.app/", +DESTDIR=/work ./`+name+`.sh +`, "", "", true) }) } diff --git a/internal/rosa/images.go b/internal/rosa/images.go index 561eee7c..c46cb837 100644 --- a/internal/rosa/images.go +++ b/internal/rosa/images.go @@ -23,7 +23,7 @@ go build -trimpath -v -o /work/system/libexec/hakurei -ldflags="-s -w -X hakurei.app/internal/info.buildVersion=${HAKUREI_VERSION} " ./cmd/earlyinit echo -`, false) +`, "", "", false) }) }