Applied, thanks!
Damien Zammit, le sam. 04 juil. 2026 03:58:42 +0000, a ecrit:
> This enables qemu unit tests to run on gnumach as xen dom0.
> However, it will skip running the tests if xen binary is missing.
> Therefore, the test suite will not fail if not intending to test xen.
> This is useful, for example on CI where we want to see a pass status
> for most of the tests without fully testing xen which is difficult to
> execute.
>
> This should make debugging easier for anyone interested in progressing
> the xen dom0 port of gnumach.
> ---
> tests/Makefrag.am | 5 +----
> tests/grub.cfg.xen.template | 5 +++++
> tests/run-qemu.sh.template | 8 +++++++-
> tests/test-multiboot.in | 6 ++++++
> tests/user-qemu.mk | 29 ++++++++++++++++++++++++++++-
> 5 files changed, 47 insertions(+), 6 deletions(-)
> create mode 100644 tests/grub.cfg.xen.template
>
> diff --git a/tests/Makefrag.am b/tests/Makefrag.am
> index ef5616a6..087aa2e2 100644
> --- a/tests/Makefrag.am
> +++ b/tests/Makefrag.am
> @@ -20,8 +20,6 @@
> # Tests.
> #
>
> -if !PLATFORM_xen
> -
> # Let user specify a kernel to test
> GNUMACH ?= gnumach
> export GNUMACH
> @@ -37,6 +35,7 @@ TESTS += \
> EXTRA_DIST += \
> tests/README \
> tests/grub.cfg.single.template \
> + tests/grub.cfg.xen.template \
> tests/run-qemu.sh.template \
> tests/include/syscalls.h \
> tests/include/testlib.h \
> @@ -50,5 +49,3 @@ EXTRA_DIST += \
>
> clean-local: $(USER_TESTS_CLEAN)
> rm -fr tests/include-mach tests/test-multiboot tests/errlist.c
> tests/mig-out
> -
> -endif # !PLATFORM_xen
> diff --git a/tests/grub.cfg.xen.template b/tests/grub.cfg.xen.template
> new file mode 100644
> index 00000000..083c4166
> --- /dev/null
> +++ b/tests/grub.cfg.xen.template
> @@ -0,0 +1,5 @@
> +echo TEST_START_MARKER
> +multiboot /boot/xen dom0_mem=2000M,max:2000M console=com1 noreboot
> +module /boot/gnumach GNUMACHARGS
> +module /boot/BOOTMODULE BOOTMODULE '${host-port}' '${device-port}'
> '$(task-create)' '$(task-resume)'
> +boot
> diff --git a/tests/run-qemu.sh.template b/tests/run-qemu.sh.template
> index a7ec426f..2fd558ad 100644
> --- a/tests/run-qemu.sh.template
> +++ b/tests/run-qemu.sh.template
> @@ -21,8 +21,14 @@ cmd="QEMU_BIN QEMU_OPTS -cdrom tests/test-TESTNAME.iso"
> log="tests/test-TESTNAME.raw"
>
> echo "temp log $log"
> +
> +if PLATFORM_XEN && [ ! -e 'XEN_BIN' ]; then
> + echo "skipping, XEN_BIN not found for xen tests"
> + exit 77
> +fi
> +
> if which QEMU_BIN >/dev/null ; then
> - if ! timeout -v --foreground --kill-after=3 60s $cmd \
> + if ! timeout -v --foreground --kill-after=3 120s $cmd \
> | tee $log | sed -n "/TEST_START_MARKER/"',$p' ; then
> exit 10 # timeout
> fi
> diff --git a/tests/test-multiboot.in b/tests/test-multiboot.in
> index 7693ab93..cc0f8d77 100644
> --- a/tests/test-multiboot.in
> +++ b/tests/test-multiboot.in
> @@ -18,6 +18,12 @@
> # with this program; if not, write to the Free Software Foundation, Inc.,
> # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
>
> +if $PLATFORM_XEN
> +then
> + # ignore this test
> + exit 77
> +fi
> +
> [ -n "$GNUMACH" ] || GNUMACH=gnumach
> if grub-file --help > /dev/null 2>&1
> then grub-file --is-x86-multiboot $GNUMACH
> diff --git a/tests/user-qemu.mk b/tests/user-qemu.mk
> index 7893c7d2..a01e1ead 100644
> --- a/tests/user-qemu.mk
> +++ b/tests/user-qemu.mk
> @@ -173,11 +173,18 @@ tests/module-%: $(srcdir)/tests/test-%.c $(SRC_TESTLIB)
> $(MACH_TESTINSTALL)
> # packaging of qemu bootable image and test runner
> #
>
> +XEN_BIN ?= /usr/share/xen/xen
> GRUB_MKRESCUE ?= grub-mkrescue
> GNUMACH_ARGS = console=com0
> -QEMU_OPTS = -m 2047 -nographic -no-reboot -boot d
> +QEMU_OPTS = -m 2047 -nographic -no-reboot -monitor none -serial stdio -boot d
> QEMU_GDB_PORT ?= 1234
>
> +if PLATFORM_xen
> +PLATFORM_XEN = true
> +QEMU_BIN = qemu-system-x86_64
> +QEMU_OPTS += -cpu core2duo-v1
> +else
> +PLATFORM_XEN = false
> if HOST_ix86
> QEMU_BIN = qemu-system-i386
> QEMU_OPTS += -cpu pentium3-v1
> @@ -186,10 +193,27 @@ if HOST_x86_64
> QEMU_BIN = qemu-system-x86_64
> QEMU_OPTS += -cpu core2duo-v1
> endif
> +endif
> +
> if enable_smp
> QEMU_OPTS += -smp 2
> endif
>
> +if PLATFORM_xen
> +tests/test-%.iso: tests/module-% $(GNUMACH)
> $(srcdir)/tests/grub.cfg.xen.template
> + rm -rf $(builddir)/tests/isofiles-$*
> + mkdir -p $(builddir)/tests/isofiles-$*/boot/grub/
> + < $(srcdir)/tests/grub.cfg.xen.template \
> + sed -e "s|BOOTMODULE|$(notdir $<)|g" \
> + -e "s/GNUMACHARGS/$(GNUMACH_ARGS)/g" \
> + -e "s/TEST_START_MARKER/$(TEST_START_MARKER)/g" \
> + >$(builddir)/tests/isofiles-$*/boot/grub/grub.cfg
> + cp $(GNUMACH) $(builddir)/tests/isofiles-$*/boot/gnumach
> + if [ -e "$(XEN_BIN)" ]; then cp $(XEN_BIN)
> $(builddir)/tests/isofiles-$*/boot/xen; fi
> + cp $< $(builddir)/tests/isofiles-$*/boot/
> + $(GRUB_MKRESCUE) -o $@ $(builddir)/tests/isofiles-$*
> + rm -rf $(builddir)/tests/isofiles-$*
> +else
> tests/test-%.iso: tests/module-% $(GNUMACH)
> $(srcdir)/tests/grub.cfg.single.template
> rm -rf $(builddir)/tests/isofiles-$*
> mkdir -p $(builddir)/tests/isofiles-$*/boot/grub/
> @@ -202,12 +226,15 @@ tests/test-%.iso: tests/module-% $(GNUMACH)
> $(srcdir)/tests/grub.cfg.single.temp
> cp $< $(builddir)/tests/isofiles-$*/boot/
> $(GRUB_MKRESCUE) -o $@ $(builddir)/tests/isofiles-$*
> rm -rf $(builddir)/tests/isofiles-$*
> +endif
>
> tests/test-%: tests/test-%.iso $(srcdir)/tests/run-qemu.sh.template
> < $(srcdir)/tests/run-qemu.sh.template \
> sed -e "s|TESTNAME|$(subst tests/test-,,$@)|g" \
> -e "s/QEMU_OPTS/$(QEMU_OPTS)/g" \
> -e "s/QEMU_BIN/$(QEMU_BIN)/g" \
> + -e "s|XEN_BIN|$(XEN_BIN)|g" \
> + -e "s/PLATFORM_XEN/$(PLATFORM_XEN)/g" \
> -e "s/TEST_START_MARKER/$(TEST_START_MARKER)/g" \
> -e "s/TEST_SUCCESS_MARKER/$(TEST_SUCCESS_MARKER)/g" \
> -e "s/TEST_FAILURE_MARKER/$(TEST_FAILURE_MARKER)/g" \
> --
> 2.47.3
>
>
>
--
Samuel
La carte réseau fournie par cybercable (sn2000) ne va-t-elle que sur
bus isa ou peut-on aussi la mettre sur bus PCI.
Merci de m'éclairer.
-+- JP in le Neuneu Pète un Câble : Une carte dans chaque port -+-