internal/rosa: improve cmake interface
All checks were successful
Test / Create distribution (push) Successful in 1m0s
Test / Sandbox (push) Successful in 2m38s
Test / Hakurei (push) Successful in 3m52s
Test / ShareFS (push) Successful in 4m0s
Test / Hpkg (push) Successful in 4m49s
Test / Sandbox (race detector) (push) Successful in 5m6s
Test / Hakurei (race detector) (push) Successful in 5m56s
Test / Flake checks (push) Successful in 1m42s

This should make the call site look better for new artifacts.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-01-31 02:42:01 +09:00
parent 1ac8ca7a80
commit 47490823be
2 changed files with 19 additions and 26 deletions

View File

@@ -38,14 +38,12 @@ make DESTDIR=/work install
func init() { artifactsF[CMake] = Toolchain.newCMake }
// CMakeAttr holds the project-specific attributes that will be applied to a new
// [pkg.Artifact] compiled via CMake.
// [pkg.Artifact] compiled via [CMake].
type CMakeAttr struct {
// Path elements joined with source.
Append []string
// Use source tree as scratch space.
Writable bool
// Dependencies concatenated with the build system itself.
Extra []pkg.Artifact
// CMake CACHE entries.
Cache [][2]string
@@ -59,15 +57,16 @@ type CMakeAttr struct {
// Override the default installation prefix [AbsSystem].
Prefix *check.Absolute
// Return an exclusive artifact.
Exclusive bool
// Passed through to [Toolchain.New].
Flag int
}
// NewViaCMake returns a [pkg.Artifact] for compiling and installing via CMake.
// NewViaCMake returns a [pkg.Artifact] for compiling and installing via [CMake].
func (t Toolchain) NewViaCMake(
name, version, variant string,
source pkg.Artifact,
attr *CMakeAttr,
extra ...pkg.Artifact,
) pkg.Artifact {
if name == "" || version == "" || variant == "" {
panic("names must be non-empty")
@@ -95,13 +94,8 @@ chmod -R +w "${ROSA_SOURCE}"
prefix = AbsSystem
}
var flag int
if attr.Exclusive {
flag |= TExclusive
}
sourcePath := AbsUsrSrc.Append(name)
return t.New(name+"-"+variant+"-"+version, flag, stage3Concat(t, attr.Extra,
return t.New(name+"-"+variant+"-"+version, attr.Flag, stage3Concat(t, extra,
t.Load(CMake),
t.Load(Ninja),
), nil, slices.Concat([]string{