aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-02-17 17:34:25 +0900
committerOphestra <cat@gensokyo.uk>2026-02-17 17:34:25 +0900
commita883e57e7d59df263f7ee642f1f00b77b579d22d (patch)
tree7783efcb976d7797369a73a48b99ce911d8cdbc2 /internal
parentef9bd8ecbfb90932371b25d8c5e22725c82d8130 (diff)
internal/rosa: qemu artifact
This is still a quite minimal build. More features will be enabled as dependencies become available. The powerpc failure will be investigated if it is ever needed. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
-rw-r--r--internal/rosa/all.go2
-rw-r--r--internal/rosa/qemu.go102
2 files changed, 104 insertions, 0 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index 94fba474..e5b41ac4 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -68,6 +68,7 @@ const (
PyTest
Pygments
Python
+ QEMU
Rsync
Sed
Setuptools
@@ -178,6 +179,7 @@ func ResolveName(name string) (p PArtifact, ok bool) {
"pytest": PyTest,
"pygments": Pygments,
"python": Python,
+ "qemu": QEMU,
"rsync": Rsync,
"sed": Sed,
"setuptools": Setuptools,
diff --git a/internal/rosa/qemu.go b/internal/rosa/qemu.go
new file mode 100644
index 00000000..6ede43dd
--- /dev/null
+++ b/internal/rosa/qemu.go
@@ -0,0 +1,102 @@
+package rosa
+
+import (
+ "hakurei.app/internal/pkg"
+)
+
+func (t Toolchain) newQEMU() pkg.Artifact {
+ const (
+ version = "10.2.1"
+ checksum = "rjLTSgHJd3X3Vgpxrsus_ZZiaYLiNix1YhcHaGbLd_odYixwZjCcAIt8CVQPJGdZ"
+ )
+ return t.NewViaMake("qemu", version, t.NewPatchedSource(
+ "qemu", version, pkg.NewHTTPGetTar(
+ nil, "https://download.qemu.org/qemu-"+version+".tar.bz2",
+ mustDecode(checksum),
+ pkg.TarBzip2,
+ ), false, [2]string{"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
+ }
+`},
+ ), &MakeAttr{
+ // configure script uses source as scratch space
+ Writable: true,
+
+ ScriptEarly: `
+# tests expect /var/tmp/ to be available
+mkdir -p /var/tmp/
+
+# https://gitlab.com/qemu-project/qemu/-/issues/3145
+(cd /usr/src/qemu && 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
+)
+`,
+
+ Configure: [][2]string{
+ {"disable-download"},
+ {"disable-docs"},
+
+ {"target-list-exclude", "" +
+ // fails to load firmware
+ "ppc-linux-user," +
+ "ppc64-linux-user," +
+ "ppc64le-linux-user," +
+ "ppc-softmmu," +
+ "ppc64-softmmu"},
+ },
+
+ ScriptConfigured: `
+make "-j$(nproc)"
+`,
+ },
+ t.Load(Bash),
+ t.Load(Python),
+ t.Load(Ninja),
+ t.Load(Bzip2),
+ t.Load(PkgConfig),
+ t.Load(Diffutils),
+
+ t.Load(OpenSSL),
+ t.Load(Bzip2),
+ t.Load(XZ),
+
+ t.Load(Flex),
+ t.Load(Bison),
+ t.Load(M4),
+
+ t.Load(PCRE2),
+ t.Load(Libffi),
+ t.Load(Zlib),
+ t.Load(GLib),
+ t.Load(Zstd),
+ t.Load(DTC),
+ t.Load(KernelHeaders),
+ )
+}
+func init() { artifactsF[QEMU] = Toolchain.newQEMU }