package rosa

import "hakurei.app/internal/pkg"

func (t Toolchain) newQEMU() (pkg.Artifact, string) {
	const (
		version  = "11.0.0"
		checksum = "C64gdi_Tkdg2fTwD9ERxtWGcf8vNn_6UvczW0c-x0KW1NZtd3NbEOIrlDhYGn15n"
	)
	return t.NewPackage("qemu", version, newTar(
		"https://download.qemu.org/qemu-"+version+".tar.bz2",
		checksum,
		pkg.TarBzip2,
	), &PackageAttr{
		Patches: []KV{
			{"disable-mcast-test", `diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c
index b731af0ad9..b5cbed4801 100644
--- a/tests/qtest/netdev-socket.c
+++ b/tests/qtest/netdev-socket.c
@@ -401,7 +401,7 @@ static void test_dgram_inet(void)
     qtest_quit(qts0);
 }
 
-#if !defined(_WIN32) && !defined(CONFIG_DARWIN)
+#if 0
 static void test_dgram_mcast(void)
 {
     QTestState *qts;
@@ -513,7 +513,7 @@ int main(int argc, char **argv)
     if (has_ipv4) {
         qtest_add_func("/netdev/stream/inet/ipv4", test_stream_inet_ipv4);
         qtest_add_func("/netdev/dgram/inet", test_dgram_inet);
-#if !defined(_WIN32) && !defined(CONFIG_DARWIN)
+#if 0
         qtest_add_func("/netdev/dgram/mcast", test_dgram_mcast);
 #endif
     }
`},
		},

		// configure script uses source as scratch space
		Writable: true,
		Chmod:    true,

		ScriptEarly: `
# tests expect /var/tmp/ to be available
mkdir -p /var/tmp/

# https://gitlab.com/qemu-project/qemu/-/issues/3145
sed -i \
	's,Input/output error,I/O error,g' \
	tests/qemu-iotests/[0-9][0-9][0-9]* \
	tests/qemu-iotests/tests/copy-before-write \
	tests/qemu-iotests/tests/file-io-error.out
cat << EOF > tests/qemu-iotests/150
#!/bin/sh
_notrun 'appears to spuriously fail on zfs'
EOF
`,
	}, &MakeHelper{
		Configure: []KV{
			{"disable-download"},
			{"disable-docs"},

			{"static"},
			{"target-list-exclude", "" +
				// fails to load firmware
				"ppc-linux-user," +
				"ppc64-linux-user," +
				"ppc64le-linux-user," +
				"ppc-softmmu," +
				"ppc64-softmmu"},
		},
	},
		Bash,
		Python,
		PythonSetuptools,
		PythonWheel,
		Ninja,
		PkgConfig,
		Diffutils,

		OpenSSL,
		XZ,

		Flex,
		Bison,
		M4,

		GLib,
		Zstd,
		DTC,
		KernelHeaders,
	), version
}
func init() {
	artifactsM[QEMU] = Metadata{
		f: Toolchain.newQEMU,

		Name:        "qemu",
		Description: "a generic and open source machine emulator and virtualizer",
		Website:     "https://www.qemu.org/",

		Dependencies: P{
			GLib,
			Zstd,
		},

		ID: 13607,
	}
}
