internal/rosa: static etc artifact
All checks were successful
Test / Create distribution (push) Successful in 49s
Test / Sandbox (push) Successful in 2m54s
Test / ShareFS (push) Successful in 4m48s
Test / Sandbox (race detector) (push) Successful in 5m29s
Test / Hpkg (push) Successful in 5m30s
Test / Hakurei (push) Successful in 5m48s
Test / Hakurei (race detector) (push) Successful in 7m33s
Test / Flake checks (push) Successful in 1m46s
All checks were successful
Test / Create distribution (push) Successful in 49s
Test / Sandbox (push) Successful in 2m54s
Test / ShareFS (push) Successful in 4m48s
Test / Sandbox (race detector) (push) Successful in 5m29s
Test / Hpkg (push) Successful in 5m30s
Test / Hakurei (push) Successful in 5m48s
Test / Hakurei (race detector) (push) Successful in 7m33s
Test / Flake checks (push) Successful in 1m46s
This places configuration files with hardcoded content in /etc to silence test suites expecting them to be present. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
52
internal/rosa/etc.go
Normal file
52
internal/rosa/etc.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
package rosa
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"hakurei.app/internal/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
// cureEtc contains deterministic elements of /etc, made available as part of
|
||||||
|
// [Toolchain]. This silences test suites expecting certain standard files to be
|
||||||
|
// available in /etc.
|
||||||
|
type cureEtc struct{}
|
||||||
|
|
||||||
|
// Cure writes hardcoded configuration to files under etc.
|
||||||
|
func (cureEtc) Cure(t *pkg.TContext) (err error) {
|
||||||
|
etc := t.GetWorkDir().Append("etc")
|
||||||
|
if err = os.MkdirAll(etc.String(), 0700); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, f := range [][2]string{
|
||||||
|
{"hosts", "127.0.0.1 localhost cure cure-net\n"},
|
||||||
|
{"passwd", `root:x:0:0:System administrator:/proc/nonexistent:/bin/sh
|
||||||
|
cure:x:1023:1023:Cure:/usr/src:/bin/sh
|
||||||
|
nobody:x:65534:65534:Overflow user:/proc/nonexistent:/system/bin/false
|
||||||
|
`},
|
||||||
|
{"group", `root:x:0:
|
||||||
|
cure:x:1023:
|
||||||
|
nobody:x:65534:
|
||||||
|
`},
|
||||||
|
} {
|
||||||
|
if err = os.WriteFile(
|
||||||
|
etc.Append(f[0]).String(),
|
||||||
|
[]byte(f[1]),
|
||||||
|
0400,
|
||||||
|
); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return os.Chmod(etc.String(), 0500)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kind returns the hardcoded [pkg.Kind] value.
|
||||||
|
func (cureEtc) Kind() pkg.Kind { return kindEtc }
|
||||||
|
|
||||||
|
// Params is a noop.
|
||||||
|
func (cureEtc) Params(*pkg.IContext) {}
|
||||||
|
|
||||||
|
// Dependencies returns a nil slice.
|
||||||
|
func (cureEtc) Dependencies() []pkg.Artifact { return nil }
|
||||||
|
|
||||||
|
// String returns a hardcoded reporting name.
|
||||||
|
func (cureEtc) String() string { return "cure-etc" }
|
||||||
11
internal/rosa/rosa.go
Normal file
11
internal/rosa/rosa.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
// Package rosa provides Rosa OS toolchain artifacts and miscellaneous software.
|
||||||
|
package rosa
|
||||||
|
|
||||||
|
import (
|
||||||
|
"hakurei.app/internal/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// kindEtc is the kind of [pkg.Artifact] of cureEtc.
|
||||||
|
kindEtc = iota + pkg.KindCustomOffset
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user