internal/rosa: qemu artifact
All checks were successful
Test / Create distribution (push) Successful in 1m1s
Test / Sandbox (push) Successful in 2m39s
Test / Hakurei (push) Successful in 3m58s
Test / ShareFS (push) Successful in 4m1s
Test / Hpkg (push) Successful in 4m30s
Test / Sandbox (race detector) (push) Successful in 4m59s
Test / Hakurei (race detector) (push) Successful in 5m53s
Test / Flake checks (push) Successful in 1m42s

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>
This commit is contained in:
2026-02-17 17:34:25 +09:00
parent ef9bd8ecbf
commit a883e57e7d
2 changed files with 104 additions and 0 deletions

102
internal/rosa/qemu.go Normal file
View File

@@ -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 }