internal/rosa/hakurei: optionally use embedded source
All checks were successful
Test / Create distribution (push) Successful in 1m1s
Test / Sandbox (push) Successful in 2m38s
Test / Hakurei (push) Successful in 3m55s
Test / ShareFS (push) Successful in 4m0s
Test / Hpkg (push) Successful in 4m30s
Test / Sandbox (race detector) (push) Successful in 4m57s
Test / Hakurei (race detector) (push) Successful in 6m12s
Test / Flake checks (push) Successful in 1m45s
All checks were successful
Test / Create distribution (push) Successful in 1m1s
Test / Sandbox (push) Successful in 2m38s
Test / Hakurei (push) Successful in 3m55s
Test / ShareFS (push) Successful in 4m0s
Test / Hpkg (push) Successful in 4m30s
Test / Sandbox (race detector) (push) Successful in 4m57s
Test / Hakurei (race detector) (push) Successful in 6m12s
Test / Flake checks (push) Successful in 1m45s
This builds hakurei in Rosa OS between releases. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -28,6 +28,7 @@ go.work.sum
|
|||||||
# go generate
|
# go generate
|
||||||
/cmd/hakurei/LICENSE
|
/cmd/hakurei/LICENSE
|
||||||
/internal/pkg/testdata/testtool
|
/internal/pkg/testdata/testtool
|
||||||
|
/internal/rosa/hakurei_current.tar.gz
|
||||||
|
|
||||||
# release
|
# release
|
||||||
/dist/hakurei-*
|
/dist/hakurei-*
|
||||||
|
|||||||
@@ -1,15 +1,9 @@
|
|||||||
package rosa
|
package rosa
|
||||||
|
|
||||||
import (
|
import "hakurei.app/internal/pkg"
|
||||||
"hakurei.app/internal/pkg"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (t Toolchain) newHakurei(suffix, script string) pkg.Artifact {
|
func (t Toolchain) newHakurei(suffix, script string) pkg.Artifact {
|
||||||
const (
|
return t.New("hakurei"+suffix+"-"+hakureiVersion, 0, []pkg.Artifact{
|
||||||
version = "0.3.5"
|
|
||||||
checksum = "6Tn38NLezRD2d3aGdFg5qFfqn8_KvC6HwMKwJMPvaHmVw8xRgxn8B0PObswl2mOk"
|
|
||||||
)
|
|
||||||
return t.New("hakurei"+suffix+"-"+version, 0, []pkg.Artifact{
|
|
||||||
t.Load(Go),
|
t.Load(Go),
|
||||||
|
|
||||||
t.Load(Gzip),
|
t.Load(Gzip),
|
||||||
@@ -43,45 +37,9 @@ echo
|
|||||||
chmod -R +w /usr/src/hakurei
|
chmod -R +w /usr/src/hakurei
|
||||||
cd /usr/src/hakurei
|
cd /usr/src/hakurei
|
||||||
|
|
||||||
HAKUREI_VERSION='v`+version+`'
|
HAKUREI_VERSION='v`+hakureiVersion+`'
|
||||||
`+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, t.NewPatchedSource(
|
`+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, t.NewPatchedSource(
|
||||||
"hakurei", version, pkg.NewHTTPGetTar(
|
"hakurei", hakureiVersion, hakureiSource, true, hakureiPatches...,
|
||||||
nil, "https://git.gensokyo.uk/security/hakurei/archive/"+
|
|
||||||
"v"+version+".tar.gz",
|
|
||||||
mustDecode(checksum),
|
|
||||||
pkg.TarGzip,
|
|
||||||
), true, [2]string{"createTemp-error-injection", `diff --git a/container/dispatcher_test.go b/container/dispatcher_test.go
|
|
||||||
index 5de37fc..fe0c4db 100644
|
|
||||||
--- a/container/dispatcher_test.go
|
|
||||||
+++ b/container/dispatcher_test.go
|
|
||||||
@@ -238,8 +238,11 @@ func sliceAddr[S any](s []S) *[]S { return &s }
|
|
||||||
|
|
||||||
func newCheckedFile(t *testing.T, name, wantData string, closeErr error) osFile {
|
|
||||||
f := &checkedOsFile{t: t, name: name, want: wantData, closeErr: closeErr}
|
|
||||||
- // check happens in Close, and cleanup is not guaranteed to run, so relying on it for sloppy implementations will cause sporadic test results
|
|
||||||
- f.cleanup = runtime.AddCleanup(f, func(name string) { f.t.Fatalf("checkedOsFile %s became unreachable without a call to Close", name) }, f.name)
|
|
||||||
+ // check happens in Close, and cleanup is not guaranteed to run, so relying
|
|
||||||
+ // on it for sloppy implementations will cause sporadic test results
|
|
||||||
+ f.cleanup = runtime.AddCleanup(f, func(name string) {
|
|
||||||
+ panic("checkedOsFile " + name + " became unreachable without a call to Close")
|
|
||||||
+ }, name)
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/container/initplace_test.go b/container/initplace_test.go
|
|
||||||
index afeddbe..1c2f20b 100644
|
|
||||||
--- a/container/initplace_test.go
|
|
||||||
+++ b/container/initplace_test.go
|
|
||||||
@@ -21,7 +21,7 @@ func TestTmpfileOp(t *testing.T) {
|
|
||||||
Path: samplePath,
|
|
||||||
Data: sampleData,
|
|
||||||
}, nil, nil, []stub.Call{
|
|
||||||
- call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), stub.UniqueError(5)),
|
|
||||||
+ call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, (*checkedOsFile)(nil), stub.UniqueError(5)),
|
|
||||||
}, stub.UniqueError(5)},
|
|
||||||
|
|
||||||
{"Write", &Params{ParentPerm: 0700}, &TmpfileOp{
|
|
||||||
`},
|
|
||||||
)), pkg.Path(AbsUsrSrc.Append("hostname", "main.go"), false, pkg.NewFile(
|
)), pkg.Path(AbsUsrSrc.Append("hostname", "main.go"), false, pkg.NewFile(
|
||||||
"hostname.go",
|
"hostname.go",
|
||||||
[]byte(`
|
[]byte(`
|
||||||
|
|||||||
26
internal/rosa/hakurei_current.go
Normal file
26
internal/rosa/hakurei_current.go
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
//go:build current
|
||||||
|
|
||||||
|
package rosa
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
"hakurei.app/internal/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
const hakureiVersion = "1.0-current"
|
||||||
|
|
||||||
|
// hakureiSourceTarball is a compressed tarball of the hakurei source code.
|
||||||
|
//
|
||||||
|
//go:generate tar -zc -C ../.. --exclude .git --exclude *.tar.gz -f hakurei_current.tar.gz .
|
||||||
|
//go:embed hakurei_current.tar.gz
|
||||||
|
var hakureiSourceTarball []byte
|
||||||
|
|
||||||
|
// hakureiSource is the source code at the time this package is compiled.
|
||||||
|
var hakureiSource = pkg.NewTar(pkg.NewFile(
|
||||||
|
"hakurei-current.tar.gz",
|
||||||
|
hakureiSourceTarball,
|
||||||
|
), pkg.TarGzip)
|
||||||
|
|
||||||
|
// hakureiPatches are patches applied against the compile-time source tree.
|
||||||
|
var hakureiPatches [][2]string
|
||||||
51
internal/rosa/hakurei_release.go
Normal file
51
internal/rosa/hakurei_release.go
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
//go:build !current
|
||||||
|
|
||||||
|
package rosa
|
||||||
|
|
||||||
|
import "hakurei.app/internal/pkg"
|
||||||
|
|
||||||
|
const hakureiVersion = "0.3.5"
|
||||||
|
|
||||||
|
// hakureiSource is the source code of a hakurei release.
|
||||||
|
var hakureiSource = pkg.NewHTTPGetTar(
|
||||||
|
nil, "https://git.gensokyo.uk/security/hakurei/archive/"+
|
||||||
|
"v"+hakureiVersion+".tar.gz",
|
||||||
|
mustDecode("6Tn38NLezRD2d3aGdFg5qFfqn8_KvC6HwMKwJMPvaHmVw8xRgxn8B0PObswl2mOk"),
|
||||||
|
pkg.TarGzip,
|
||||||
|
)
|
||||||
|
|
||||||
|
// hakureiPatches are patches applied against a hakurei release.
|
||||||
|
var hakureiPatches = [][2]string{
|
||||||
|
{"createTemp-error-injection", `diff --git a/container/dispatcher_test.go b/container/dispatcher_test.go
|
||||||
|
index 5de37fc..fe0c4db 100644
|
||||||
|
--- a/container/dispatcher_test.go
|
||||||
|
+++ b/container/dispatcher_test.go
|
||||||
|
@@ -238,8 +238,11 @@ func sliceAddr[S any](s []S) *[]S { return &s }
|
||||||
|
|
||||||
|
func newCheckedFile(t *testing.T, name, wantData string, closeErr error) osFile {
|
||||||
|
f := &checkedOsFile{t: t, name: name, want: wantData, closeErr: closeErr}
|
||||||
|
- // check happens in Close, and cleanup is not guaranteed to run, so relying on it for sloppy implementations will cause sporadic test results
|
||||||
|
- f.cleanup = runtime.AddCleanup(f, func(name string) { f.t.Fatalf("checkedOsFile %s became unreachable without a call to Close", name) }, f.name)
|
||||||
|
+ // check happens in Close, and cleanup is not guaranteed to run, so relying
|
||||||
|
+ // on it for sloppy implementations will cause sporadic test results
|
||||||
|
+ f.cleanup = runtime.AddCleanup(f, func(name string) {
|
||||||
|
+ panic("checkedOsFile " + name + " became unreachable without a call to Close")
|
||||||
|
+ }, name)
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/container/initplace_test.go b/container/initplace_test.go
|
||||||
|
index afeddbe..1c2f20b 100644
|
||||||
|
--- a/container/initplace_test.go
|
||||||
|
+++ b/container/initplace_test.go
|
||||||
|
@@ -21,7 +21,7 @@ func TestTmpfileOp(t *testing.T) {
|
||||||
|
Path: samplePath,
|
||||||
|
Data: sampleData,
|
||||||
|
}, nil, nil, []stub.Call{
|
||||||
|
- call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), stub.UniqueError(5)),
|
||||||
|
+ call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, (*checkedOsFile)(nil), stub.UniqueError(5)),
|
||||||
|
}, stub.UniqueError(5)},
|
||||||
|
|
||||||
|
{"Write", &Params{ParentPerm: 0700}, &TmpfileOp{
|
||||||
|
`},
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user