internal: clean up build strings
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m9s
Test / Hakurei (push) Successful in 3m5s
Test / Hpkg (push) Successful in 4m4s
Test / Sandbox (race detector) (push) Successful in 4m9s
Test / Hakurei (race detector) (push) Successful in 4m46s
Test / Flake checks (push) Successful in 1m30s
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m9s
Test / Hakurei (push) Successful in 3m5s
Test / Hpkg (push) Successful in 4m4s
Test / Sandbox (race detector) (push) Successful in 4m9s
Test / Hakurei (race detector) (push) Successful in 4m46s
Test / Flake checks (push) Successful in 1m30s
These names are less ambiguous and should be understandable without reading the source code. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
699c19e972
commit
766dd89ffa
@ -14,7 +14,7 @@ import (
|
|||||||
"hakurei.app/message"
|
"hakurei.app/message"
|
||||||
)
|
)
|
||||||
|
|
||||||
var hakureiPath = internal.MustHakureiPath()
|
var hakureiPathVal = internal.MustHakureiPath().String()
|
||||||
|
|
||||||
func mustRunApp(ctx context.Context, msg message.Msg, config *hst.Config, beforeFail func()) {
|
func mustRunApp(ctx context.Context, msg message.Msg, config *hst.Config, beforeFail func()) {
|
||||||
var (
|
var (
|
||||||
@ -27,9 +27,9 @@ func mustRunApp(ctx context.Context, msg message.Msg, config *hst.Config, before
|
|||||||
log.Fatalf("cannot pipe: %v", err)
|
log.Fatalf("cannot pipe: %v", err)
|
||||||
} else {
|
} else {
|
||||||
if msg.IsVerbose() {
|
if msg.IsVerbose() {
|
||||||
cmd = exec.CommandContext(ctx, hakureiPath.String(), "-v", "app", "3")
|
cmd = exec.CommandContext(ctx, hakureiPathVal, "-v", "app", "3")
|
||||||
} else {
|
} else {
|
||||||
cmd = exec.CommandContext(ctx, hakureiPath.String(), "app", "3")
|
cmd = exec.CommandContext(ctx, hakureiPathVal, "app", "3")
|
||||||
}
|
}
|
||||||
cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
|
cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
|
||||||
cmd.ExtraFiles = []*os.File{r}
|
cmd.ExtraFiles = []*os.File{r}
|
||||||
|
|||||||
@ -26,6 +26,11 @@ const (
|
|||||||
identityMax = 9999
|
identityMax = 9999
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// hakureiPath is the absolute path to Hakurei.
|
||||||
|
//
|
||||||
|
// This is set by the linker.
|
||||||
|
var hakureiPath string
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(0)
|
log.SetFlags(0)
|
||||||
log.SetPrefix("hsu: ")
|
log.SetPrefix("hsu: ")
|
||||||
@ -43,13 +48,18 @@ func main() {
|
|||||||
log.Fatal("this program must not be started by root")
|
log.Fatal("this program must not be started by root")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !path.IsAbs(hakureiPath) {
|
||||||
|
log.Fatal("this program is compiled incorrectly")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var toolPath string
|
var toolPath string
|
||||||
pexe := path.Join("/proc", strconv.Itoa(os.Getppid()), "exe")
|
pexe := path.Join("/proc", strconv.Itoa(os.Getppid()), "exe")
|
||||||
if p, err := os.Readlink(pexe); err != nil {
|
if p, err := os.Readlink(pexe); err != nil {
|
||||||
log.Fatalf("cannot read parent executable path: %v", err)
|
log.Fatalf("cannot read parent executable path: %v", err)
|
||||||
} else if strings.HasSuffix(p, " (deleted)") {
|
} else if strings.HasSuffix(p, " (deleted)") {
|
||||||
log.Fatal("hakurei executable has been deleted")
|
log.Fatal("hakurei executable has been deleted")
|
||||||
} else if p != mustCheckPath(hmain) {
|
} else if p != hakureiPath {
|
||||||
log.Fatal("this program must be started by hakurei")
|
log.Fatal("this program must be started by hakurei")
|
||||||
} else {
|
} else {
|
||||||
toolPath = p
|
toolPath = p
|
||||||
|
|||||||
@ -19,5 +19,5 @@ buildGoModule {
|
|||||||
ldflags = lib.attrsets.foldlAttrs (
|
ldflags = lib.attrsets.foldlAttrs (
|
||||||
ldflags: name: value:
|
ldflags: name: value:
|
||||||
ldflags ++ [ "-X main.${name}=${value}" ]
|
ldflags ++ [ "-X main.${name}=${value}" ]
|
||||||
) [ "-s -w" ] { hmain = "${hakurei}/libexec/hakurei"; };
|
) [ "-s -w" ] { hakureiPath = "${hakurei}/libexec/hakurei"; };
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"log"
|
|
||||||
"path"
|
|
||||||
)
|
|
||||||
|
|
||||||
const compPoison = "INVALIDINVALIDINVALIDINVALIDINVALID"
|
|
||||||
|
|
||||||
var (
|
|
||||||
hmain = compPoison
|
|
||||||
)
|
|
||||||
|
|
||||||
func mustCheckPath(p string) string {
|
|
||||||
if p != compPoison && p != "" && path.IsAbs(p) {
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
log.Fatal("this program is compiled incorrectly")
|
|
||||||
return compPoison
|
|
||||||
}
|
|
||||||
8
dist/release.sh
vendored
8
dist/release.sh
vendored
@ -10,10 +10,10 @@ cp -rv "dist/comp" "${out}"
|
|||||||
|
|
||||||
go generate ./...
|
go generate ./...
|
||||||
go build -trimpath -v -o "${out}/bin/" -ldflags "-s -w -buildid= -extldflags '-static'
|
go build -trimpath -v -o "${out}/bin/" -ldflags "-s -w -buildid= -extldflags '-static'
|
||||||
-X hakurei.app/internal.version=${VERSION}
|
-X hakurei.app/internal.buildVersion=${VERSION}
|
||||||
-X hakurei.app/internal.hmain=/usr/bin/hakurei
|
-X hakurei.app/internal.hakureiPath=/usr/bin/hakurei
|
||||||
-X hakurei.app/internal.hsu=/usr/bin/hsu
|
-X hakurei.app/internal.hsuPath=/usr/bin/hsu
|
||||||
-X main.hmain=/usr/bin/hakurei" ./...
|
-X main.hakureiPath=/usr/bin/hakurei" ./...
|
||||||
|
|
||||||
rm -f "./${out}.tar.gz" && tar -C dist -czf "${out}.tar.gz" "${pname}"
|
rm -f "./${out}.tar.gz" && tar -C dist -czf "${out}.tar.gz" "${pname}"
|
||||||
rm -rf "./${out}"
|
rm -rf "./${out}"
|
||||||
|
|||||||
@ -1,17 +0,0 @@
|
|||||||
package internal
|
|
||||||
|
|
||||||
const compPoison = "INVALIDINVALIDINVALIDINVALIDINVALID"
|
|
||||||
|
|
||||||
var (
|
|
||||||
version = compPoison
|
|
||||||
)
|
|
||||||
|
|
||||||
// checkComp validates string value set at compile time.
|
|
||||||
func checkComp(s string) (string, bool) { return s, s != compPoison && s != "" }
|
|
||||||
|
|
||||||
func Version() string {
|
|
||||||
if v, ok := checkComp(version); ok {
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
return "impure"
|
|
||||||
}
|
|
||||||
@ -6,20 +6,20 @@ import (
|
|||||||
"hakurei.app/container/check"
|
"hakurei.app/container/check"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
// Absolute paths to the Hakurei installation.
|
||||||
hmain = compPoison
|
//
|
||||||
hsu = compPoison
|
// These are set by the linker.
|
||||||
)
|
var hakureiPath, hsuPath string
|
||||||
|
|
||||||
// MustHakureiPath returns the absolute path to hakurei, configured at compile time.
|
// MustHakureiPath returns the [check.Absolute] path to hakurei.
|
||||||
func MustHakureiPath() *check.Absolute { return mustCheckPath(log.Fatal, "hakurei", hmain) }
|
func MustHakureiPath() *check.Absolute { return mustCheckPath(log.Fatal, "hakurei", hakureiPath) }
|
||||||
|
|
||||||
// MustHsuPath returns the absolute path to hakurei, configured at compile time.
|
// MustHsuPath returns the [check.Absolute] to hsu.
|
||||||
func MustHsuPath() *check.Absolute { return mustCheckPath(log.Fatal, "hsu", hsu) }
|
func MustHsuPath() *check.Absolute { return mustCheckPath(log.Fatal, "hsu", hsuPath) }
|
||||||
|
|
||||||
// mustCheckPath checks a pathname against compPoison, then [container.NewAbs], calling fatal if either step fails.
|
// mustCheckPath checks a pathname to not be zero, then [check.NewAbs], calling fatal if either step fails.
|
||||||
func mustCheckPath(fatal func(v ...any), name, pathname string) *check.Absolute {
|
func mustCheckPath(fatal func(v ...any), name, pathname string) *check.Absolute {
|
||||||
if pathname != compPoison && pathname != "" {
|
if pathname != "" {
|
||||||
if a, err := check.NewAbs(pathname); err != nil {
|
if a, err := check.NewAbs(pathname); err != nil {
|
||||||
fatal(err.Error())
|
fatal(err.Error())
|
||||||
return nil // unreachable
|
return nil // unreachable
|
||||||
|
|||||||
@ -15,7 +15,6 @@ func TestMustCheckPath(t *testing.T) {
|
|||||||
pathname string
|
pathname string
|
||||||
wantFatal string
|
wantFatal string
|
||||||
}{
|
}{
|
||||||
{"poison", compPoison, "invalid test path, this program is compiled incorrectly"},
|
|
||||||
{"zero", "", "invalid test path, this program is compiled incorrectly"},
|
{"zero", "", "invalid test path, this program is compiled incorrectly"},
|
||||||
{"not absolute", "\x00", `path "\x00" is not absolute`},
|
{"not absolute", "\x00", `path "\x00" is not absolute`},
|
||||||
{"success", "/proc/nonexistent", ""},
|
{"success", "/proc/nonexistent", ""},
|
||||||
|
|||||||
19
internal/version.go
Normal file
19
internal/version.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
// FallbackVersion is returned when a version string was not set by the linker.
|
||||||
|
const FallbackVersion = "dirty"
|
||||||
|
|
||||||
|
// buildVersion is the Hakurei tree's version string at build time.
|
||||||
|
//
|
||||||
|
// This is set by the linker.
|
||||||
|
var buildVersion string
|
||||||
|
|
||||||
|
// Version returns the Hakurei tree's version string.
|
||||||
|
// It is either the value of the constant [FallbackVersion] or,
|
||||||
|
// when possible, a release tag like "v1.0.0".
|
||||||
|
func Version() string {
|
||||||
|
if buildVersion != "" {
|
||||||
|
return buildVersion
|
||||||
|
}
|
||||||
|
return FallbackVersion
|
||||||
|
}
|
||||||
@ -75,9 +75,9 @@ buildGoModule rec {
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
version = "v${version}";
|
buildVersion = "v${version}";
|
||||||
hmain = "${placeholder "out"}/libexec/hakurei";
|
hakureiPath = "${placeholder "out"}/libexec/hakurei";
|
||||||
hsu = "/run/wrappers/bin/hsu";
|
hsuPath = "/run/wrappers/bin/hsu";
|
||||||
};
|
};
|
||||||
|
|
||||||
# nix build environment does not allow acls
|
# nix build environment does not allow acls
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user