package rosa

import "hakurei.app/internal/pkg"

func (t Toolchain) newWayland() (pkg.Artifact, string) {
	const (
		version  = "1.25.0"
		checksum = "q-4dYXme46JPgLGtXAxyZGTy7udll9RfT0VXtcW2YRR1WWViUhvdZXZneXzLqpCg"
	)
	return t.NewPackage("wayland", version, newFromGitLab(
		"gitlab.freedesktop.org",
		"wayland/wayland",
		version,
		checksum,
	), &PackageAttr{
		Writable: true,
		ScriptEarly: `
cd /usr/src/wayland
chmod +w tests tests/sanity-test.c
echo 'int main(){}' > tests/sanity-test.c
`,
	}, &MesonHelper{
		Setup: []KV{
			{"Ddefault_library", "both"},
			{"Ddocumentation", "false"},
			{"Dtests", "true"},
		},
	},
		Gawk,
		Diffutils,

		Libffi,
		Libexpat,
		Libxml2,
	), version
}
func init() {
	artifactsM[Wayland] = Metadata{
		f: Toolchain.newWayland,

		Name:        "wayland",
		Description: "core Wayland window system code and protocol",
		Website:     "https://wayland.freedesktop.org/",

		Dependencies: P{
			Libffi,
			Libexpat,
			Libxml2,
		},

		ID: 10061,
	}
}

func (t Toolchain) newWaylandProtocols() (pkg.Artifact, string) {
	const (
		version  = "1.48"
		checksum = "xvfHCBIzXGwOqOu9b8dfhGw_U29Pd-g4JBwpYIaxee8SwEbxi6NaVU-Y1Q7wY4jK"
	)
	return t.NewPackage("wayland-protocols", version, newFromGitLab(
		"gitlab.freedesktop.org",
		"wayland/wayland-protocols",
		version,
		checksum,
	), &PackageAttr{
		Patches: []KV{
			{"build-only", `From 8b4c76275fa1b6e0a99a53494151d9a2c907144d Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Fri, 8 Nov 2024 11:27:25 -0600
Subject: [PATCH] tests: Make build-only tests actually build-only

The goal behind the pedantic compiler tests are to ensure that the code
that wayland-scanner is generating can be compiled in pedantic mode by
the system C compiler.

Trying to execute the built tests may fail because of undefined symbols.
This affects certain platforms more than others; Linux/musl and Darwin
are examples of platforms that cannot execute binaries with undefined
symbols.  This meant tests needlessly failed on these platforms.

Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
Closes: #48, #228
---
 tests/meson.build | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tests/meson.build b/tests/meson.build
index aa216ec2..5a93bb36 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,4 +1,5 @@
 prog_scan_sh = find_program('scan.sh')
+prog_true = find_program('true')
 
 libwayland = [
 	dependency('wayland-client'),
@@ -100,7 +101,7 @@ foreach protocol_file : protocol_files
 			test_source,
 			client_header,
 			server_header,
-			code
+			code,
 		],
 		link_args: extra_linker_flags,
 		dependencies: libwayland,
@@ -111,7 +112,7 @@ foreach protocol_file : protocol_files
 			'-Werror' ],
 		install: false,
 	)
-	test(test_name, pedantic_test_executable)
+	test(test_name, prog_true, depends : [pedantic_test_executable])
 
 	# Check that the header
 	if not protocol_file.contains('xdg-foreign-unstable-v1')
-- 
GitLab
`},
		},
	}, (*MesonHelper)(nil),
		Wayland,
	), version
}
func init() {
	artifactsM[WaylandProtocols] = Metadata{
		f: Toolchain.newWaylandProtocols,

		Name:        "wayland-protocols",
		Description: "Additional standard Wayland protocols",
		Website:     "https://wayland.freedesktop.org/",

		ID: 13997,
	}
}
