diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-09-05 05:44:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-09-05 06:25:41 +0900 |
| commit | 5a32f8f9b2f2540495e79cb39ce4a6861553fe79 (patch) | |
| tree | 47b25144af5edead669b615f3abcc51aedd81096 /internal/rosa/rosa.go | |
| parent | 871c701fdbce4a3d43e6e8edc436a2ae93322540 (diff) | |
internal/rosa: separate native tools from libraries
This removes most redundant runtime arguments and is useful for cross-compilation.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/rosa.go')
| -rw-r--r-- | internal/rosa/rosa.go | 36 |
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 } |
