package rosa import "hakurei.app/internal/pkg" func (t Toolchain) newHakurei(suffix, script string) pkg.Artifact { return t.New("hakurei"+suffix+"-"+hakureiVersion, 0, []pkg.Artifact{ t.Load(Go), t.Load(Gzip), t.Load(PkgConfig), t.Load(KernelHeaders), t.Load(Libseccomp), t.Load(ACL), t.Load(Attr), t.Load(Fuse), t.Load(Xproto), t.Load(LibXau), t.Load(XCBProto), t.Load(XCB), t.Load(Libffi), t.Load(Libexpat), t.Load(Libxml2), t.Load(Wayland), t.Load(WaylandProtocols), }, nil, []string{ "CGO_ENABLED=1", "GOCACHE=/tmp/gocache", "CC=clang -O3 -Werror", }, ` echo '# Building test helper (hostname).' go build -v -o /bin/hostname /usr/src/hostname/main.go echo chmod -R +w /usr/src/hakurei cd /usr/src/hakurei HAKUREI_VERSION='v`+hakureiVersion+`' `+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, t.NewPatchedSource( "hakurei", hakureiVersion, hakureiSource, true, 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() { artifactsF[Hakurei] = func(t Toolchain) pkg.Artifact { return t.newHakurei("", ` mkdir -p /work/system/libexec/hakurei/ echo '# Building hakurei.' go generate -v ./... go build -trimpath -v -o /work/system/libexec/hakurei -ldflags="-s -w -buildid= -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= -extldflags=-static' ./... echo mkdir -p /work/system/bin/ (cd /work/system/libexec/hakurei && mv \ hakurei \ sharefs \ ../../bin/) `) } artifactsF[HakureiDist] = func(t Toolchain) pkg.Artifact { return t.newHakurei("-dist", ` export HAKUREI_VERSION DESTDIR=/work /usr/src/hakurei/dist/release.sh `) } }