Files
hakurei/internal/rosa/hakurei.go
Ophestra b482fd4abf
All checks were successful
Test / Create distribution (push) Successful in 1m4s
Test / Sandbox (push) Successful in 4m18s
Test / Hakurei (push) Successful in 6m13s
Test / ShareFS (push) Successful in 6m11s
Test / Sandbox (race detector) (push) Successful in 6m55s
Test / Hakurei (race detector) (push) Successful in 8m5s
Test / Flake checks (push) Successful in 1m21s
internal/rosa: remove global handles
These no longer serve any purpose.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-20 08:15:23 +09:00

120 lines
2.6 KiB
Go

package rosa
import "hakurei.app/internal/pkg"
func (t Toolchain) newHakurei(
suffix, build, check, install string,
withHostname bool,
) pkg.Artifact {
hostname := `
echo 'Building test helper (hostname).'
go build -o /bin/hostname /usr/src/hostname/main.go
`
if !withHostname {
hostname = ""
}
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,
H("pkg-config"),
H("libseccomp"),
H("acl"),
H("fuse"),
H("xcb"),
H("wayland"),
H("wayland-protocols"),
kernelHeaders,
)
}
func init() {
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)."
go generate ./...
go build -trimpath -tags=rosa -o /work/system/libexec/hakurei -ldflags="-s -w
-buildid=
-linkmode external
-extldflags=-static
-X hakurei.app/internal/info.buildVersion=${HAKUREI_VERSION}
-X hakurei.app/internal/info.hakureiPath=/system/bin/hakurei
-X hakurei.app/internal/info.hsuPath=/system/bin/hsu
-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)
})
}
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 &meta, t.newHakurei("-dist", `
export HAKUREI_VERSION
DESTDIR=/work ./`+name+`.sh
`, "", "", true)
})
}