aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-27 12:00:13 +0900
committerOphestra <cat@gensokyo.uk>2026-05-27 12:00:13 +0900
commit7816f8b523eae98a30a088732626cb0ae1084cb9 (patch)
tree3f8eddfc405674bd3c0a1f55ba8e46386a16789b
parent91e4229e32272c36086e07cc302f4025f4387c7a (diff)
internal/rosa/package: cairo
Required by sway, which is required by vm test suite. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/meson.go6
-rw-r--r--internal/rosa/package/cairo.az52
-rw-r--r--internal/rosa/state.go11
3 files changed, 64 insertions, 5 deletions
diff --git a/internal/rosa/meson.go b/internal/rosa/meson.go
index 003b32cd..4281e1f9 100644
--- a/internal/rosa/meson.go
+++ b/internal/rosa/meson.go
@@ -20,6 +20,8 @@ type MesonHelper struct {
Setup []KV
// Whether to skip meson test.
SkipTest bool
+ // Run tests with interactive input/output.
+ InteractiveTest bool
}
var _ Helper = new(MesonHelper)
@@ -55,6 +57,10 @@ func (attr *MesonHelper) script(t Toolchain, name string) string {
scriptTest = `
meson test \
--print-errorlogs`
+ if attr.InteractiveTest {
+ scriptTest += ` \
+ --interactive`
+ }
}
return `
diff --git a/internal/rosa/package/cairo.az b/internal/rosa/package/cairo.az
new file mode 100644
index 00000000..b8a5469e
--- /dev/null
+++ b/internal/rosa/package/cairo.az
@@ -0,0 +1,52 @@
+package cairo {
+ description = "a 2D graphics library with support for multiple output devices";
+ website = "https://www.cairographics.org";
+ anitya = 247;
+
+ version# = "1.18.4";
+ source = remoteGitLab {
+ domain = "gitlab.freedesktop.org";
+ suffix = "cairo/cairo";
+ ref = version;
+ checksum = "_Ztw0ttmYLIiElqS27x2Iu4EneXOMNHp2or6bJA6suLeF3NRvORzUMPPQy9Wr5gT";
+ };
+
+ exec = meson {
+ setup = {
+ "Ddwrite": "enabled";
+ "Dfontconfig": "enabled";
+ "Dfreetype": "enabled";
+
+ "Dpng": "enabled";
+ "Dtee": "enabled";
+ "Dxcb": "enabled";
+ "Dxlib": "disabled";
+ "Dxlib-xcb": "disabled";
+ "Dzlib": "enabled";
+ };
+ // runs the entire test suite in a single meson test
+ interactiveTest = true;
+ // only works with specific dependency versions
+ skipTest = true;
+ };
+
+ inputs = [
+ gawk,
+
+ zlib,
+ libpng,
+ fontconfig,
+ freetype,
+ pixman,
+ xcb,
+ ];
+
+ runtime = [
+ zlib,
+ libpng,
+ fontconfig,
+ freetype,
+ pixman,
+ xcb,
+ ];
+}
diff --git a/internal/rosa/state.go b/internal/rosa/state.go
index e04027ec..1aa37ea9 100644
--- a/internal/rosa/state.go
+++ b/internal/rosa/state.go
@@ -819,11 +819,12 @@ 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("preCompile"): &attr.ScriptCompileEarly,
- k("postCompile"): &attr.ScriptCompiled,
- k("postInstall"): &attr.Script,
- k("setup"): &attr.Setup,
- k("skipTest"): &attr.SkipTest,
+ k("preCompile"): &attr.ScriptCompileEarly,
+ k("postCompile"): &attr.ScriptCompiled,
+ k("postInstall"): &attr.Script,
+ k("setup"): &attr.Setup,
+ k("skipTest"): &attr.SkipTest,
+ k("interactiveTest"): &attr.InteractiveTest,
}); err != nil {
return
}