aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/rosa/meson.go59
-rw-r--r--internal/rosa/package/muon.az4
-rw-r--r--internal/rosa/state.go1
3 files changed, 48 insertions, 16 deletions
diff --git a/internal/rosa/meson.go b/internal/rosa/meson.go
index d6f9b1fb..569db9b7 100644
--- a/internal/rosa/meson.go
+++ b/internal/rosa/meson.go
@@ -5,10 +5,16 @@ import (
"strings"
)
-var _meson = H("meson")
+var (
+ _muon = H("muon")
+ _meson = H("meson")
+)
// MesonHelper builds and tests a meson project.
type MesonHelper struct {
+ // Use muon instead of meson.
+ Muon bool
+
// Runs after setup.
ScriptCompileEarly string
// Runs after compile.
@@ -29,7 +35,12 @@ type MesonHelper struct {
var _ Helper = new(MesonHelper)
// extra returns hardcoded meson runtime dependencies.
-func (*MesonHelper) extra(int) P { return P{_meson} }
+func (attr *MesonHelper) extra(int) P {
+ if !attr.isPython() {
+ return P{_muon}
+ }
+ return P{_meson}
+}
// wantsChmod returns false.
func (*MesonHelper) wantsChmod() bool { return false }
@@ -43,6 +54,12 @@ func (*MesonHelper) scriptEarly() string { return "" }
// wantsDir requests a new directory in TMPDIR.
func (*MesonHelper) wantsDir() (string, bool) { return `"$(mktemp -d)"`, false }
+// isPython returns whether the legacy python implementation is used.
+func (attr *MesonHelper) isPython() bool {
+ return attr != nil &&
+ (!attr.Muon || len(attr.SkipTests) != 0 || attr.InteractiveTest)
+}
+
// script generates the cure script.
func (attr *MesonHelper) script(t Toolchain, name string) string {
if attr == nil {
@@ -54,13 +71,28 @@ func (attr *MesonHelper) script(t Toolchain, name string) string {
scriptCompiled = "\n" + scriptCompiled
}
+ python := attr.isPython()
+ muon := "muon"
+ compile := " samu " + jobsFlagE
+ destdir := "-d"
+ if python {
+ muon = "meson"
+ compile = " compile " + jobsFlagE + " " + loadFlagE
+ destdir = "--destdir"
+ }
+
var scriptTest string
if !attr.SkipTest && t.opts&OptSkipCheck == 0 {
scriptTest = `
-meson test \
+` + muon + ` test \
` + jobsFlagE + ` \
- -t 10 \
+ -t 10`
+ if python {
+ scriptTest += ` \
--print-errorlogs`
+ } else {
+ scriptTest += " -Rv"
+ }
if attr.InteractiveTest {
scriptTest += ` \
--interactive`
@@ -71,13 +103,12 @@ meson test \
}
return `
-cd "$(mktemp -d)"
-meson setup \
+` + muon + ` setup \
` + strings.Join(slices.Collect(func(yield func(string) bool) {
for _, v := range append([]KV{
- {"wrap-mode", "nofallback"},
- {"prefix", "/system"},
- {"buildtype", "release"},
+ {"Dwrap_mode", "nofallback"},
+ {"Dprefix", "/system"},
+ {"Dbuildtype", "release"},
}, attr.Setup...) {
s := "-" + v[0]
if len(v[0]) > 0 && v[0][0] != 'D' {
@@ -91,11 +122,9 @@ meson setup \
}
}
}), " \\\n\t") + ` \
- . '/usr/src/` + name + `'
-meson compile \
- ` + jobsFlagE + ` \
- ` + loadFlagE + scriptCompiled + scriptTest + `
-meson install \
- --destdir=/work
+ '/usr/src/` + name + `'
+` + muon + compile + scriptCompiled + scriptTest + `
+` + muon + ` install \
+ ` + destdir + ` /work
` + attr.Script
}
diff --git a/internal/rosa/package/muon.az b/internal/rosa/package/muon.az
index a5c8cda4..512844a9 100644
--- a/internal/rosa/package/muon.az
+++ b/internal/rosa/package/muon.az
@@ -49,7 +49,7 @@ sed -i '/common.220 fs module/d' subprojects/meson-tests/meson.build
/usr/src/muon
/boot/muon-bootstrap samu `+jobsFlagE+`
`;
- check = "./muon test "+jobsFlagE+" -R\n";
+ check = "./muon test "+jobsFlagE+" -Rv\n";
install = "./muon install -d /work\n";
};
@@ -57,4 +57,6 @@ sed -i '/common.220 fs module/d' subprojects/meson-tests/meson.build
python-early,
kernel-headers,
];
+
+ runtime = [ pkg-config ];
}
diff --git a/internal/rosa/state.go b/internal/rosa/state.go
index 12a9d9e2..a14f4a5d 100644
--- a/internal/rosa/state.go
+++ b/internal/rosa/state.go
@@ -878,6 +878,7 @@ func (s *S) getFrame() azalea.Frame {
) (v any, set bool, err error) {
var attr MesonHelper
if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
+ k("muon"): &attr.Muon,
k("preCompile"): &attr.ScriptCompileEarly,
k("postCompile"): &attr.ScriptCompiled,
k("postInstall"): &attr.Script,