aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/rosa.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/rosa.go')
-rw-r--r--internal/rosa/rosa.go36
1 files changed, 26 insertions, 10 deletions
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index 1ad15100..beffb3ff 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -277,10 +277,12 @@ function apply {
// helperInPlace is a special directory value for omitting the cd statement.
const helperInPlace = "\x00"
-// Helper is a build system helper for [Toolchain.NewPackage].
+// Helper is a build system helper for [Toolchain.New].
type Helper interface {
- // extra returns helper-specific dependencies.
- extra() P
+ // tools returns helper-specific tool handles.
+ tools() P
+ // inputs returns helper-specific input handles.
+ inputs() P
// wantsChmod returns whether the source directory should be made writable.
wantsChmod() bool
@@ -335,6 +337,8 @@ type PackageAttr struct {
// Whether to create [pkg.KindExecNet] instead of [pkg.KindExec].
HostNet bool
+ // Native utilities used by the build process.
+ Tools P
// Unregistered extras.
Extra []pkg.Artifact
// Passed through to [Toolchain.New], before source.
@@ -362,7 +366,7 @@ func (t Toolchain) appendHandle(a []pkg.Artifact, pv pa, p ArtifactH) []pkg.Arti
pv[p] = struct{}{}
meta, u := t.MustLoad(p)
- for _, d := range meta.Dependencies {
+ for _, d := range meta.Runtimes {
a = t.appendHandle(a, pv, d)
}
return append(a, u)
@@ -393,7 +397,7 @@ func (t Toolchain) New(
source pkg.Artifact,
attr *PackageAttr,
helper Helper,
- extra ...ArtifactH,
+ inputs ...ArtifactH,
) pkg.Artifact {
if attr == nil {
attr = new(PackageAttr)
@@ -411,7 +415,10 @@ func (t Toolchain) New(
rn = name + "-" + version
}
- root := make([]pkg.Artifact, 0, 1<<3+len(attr.Extra)+len(extra))
+ root := make([]pkg.Artifact, 0, 1<<3+
+ len(attr.Extra)+
+ len(attr.Tools)+
+ len(inputs))
root = append(root, attr.Extra...)
const lcMessages = "LC_MESSAGES=C.UTF-8"
@@ -485,10 +492,16 @@ func (t Toolchain) New(
wantsChmod, wantsWrite := helper.wantsChmod(), helper.wantsWrite()
{
pv := paGet()
- for _, p := range helper.extra() {
+ for _, p := range helper.tools() {
root = t.appendHandle(root, pv, p)
}
- for _, p := range extra {
+ for _, p := range helper.inputs() {
+ root = t.appendHandle(root, pv, p)
+ }
+ for _, p := range attr.Tools {
+ root = t.appendHandle(root, pv, p)
+ }
+ for _, p := range inputs {
root = t.appendHandle(root, pv, p)
}
boot := t.S.New(t.stage - 1)
@@ -592,8 +605,11 @@ type GenericHelper struct {
var _ Helper = new(GenericHelper)
-// extra is a noop.
-func (*GenericHelper) extra() P { return nil }
+// tools is a noop.
+func (*GenericHelper) tools() P { return nil }
+
+// inputs is a noop.
+func (*GenericHelper) inputs() P { return nil }
// wantsChmod returns false.
func (*GenericHelper) wantsChmod() bool { return false }