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) }) }