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 }