* [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS @ 2025-02-19 19:23 Philippe Mathieu-Daudé 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2025-02-19 19:23 UTC (permalink / raw) To: qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Philippe Mathieu-Daudé, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo Pierrick kindly helped me to resolve this issue which ended being trivial (to him!). Not tested on Windows so far. I'm still having some meson dependency problem, even on Linux: $ make check-functional-aarch64 ... Traceback (most recent call last): File "python/qemu/qmp/protocol.py", line 834, in _bh_close_stream await wait_closed(self._writer) File "python/qemu/qmp/util.py", line 130, in wait_closed await writer.wait_closed() File "/usr/lib/python3.10/asyncio/streams.py", line 343, in wait_closed await self._protocol._get_close_waiter(self) File "/usr/lib/python3.10/asyncio/selector_events.py", line 862, in _read_ready__data_received data = self._sock.recv(self.max_size) ConnectionResetError: [Errno 104] Connection reset by peer The above exception was the direct cause of the following exception: Traceback (most recent call last): File "python/qemu/machine/machine.py", line 448, in launch self._launch() File "python/qemu/machine/machine.py", line 497, in _launch self._post_launch() File "python/qemu/machine/machine.py", line 381, in _post_launch self._qmp.connect() File "python/qemu/qmp/legacy.py", line 153, in connect self._sync( File "python/qemu/qmp/legacy.py", line 102, in _sync return self._aloop.run_until_complete( File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete return future.result() File "/usr/lib/python3.10/asyncio/tasks.py", line 408, in wait_for return await fut File "python/qemu/qmp/protocol.py", line 382, in connect await self._session_guard( File "python/qemu/qmp/protocol.py", line 456, in _session_guard raise ConnectError(emsg, err) from err qemu.qmp.protocol.ConnectError: Failed to establish session: [Errno 104] Connection reset by peer The above exception was the direct cause of the following exception: Traceback (most recent call last): File "tests/functional/test_aarch64_tcg_plugins.py", line 80, in test_aarch64_virt_insn self.run_vm(kernel_path, kernel_command_line, File "tests/functional/test_aarch64_tcg_plugins.py", line 52, in run_vm raise excp File "tests/functional/test_aarch64_tcg_plugins.py", line 46, in run_vm vm.launch() File "python/qemu/machine/machine.py", line 461, in launch raise VMLaunchFailure( qemu.machine.machine.VMLaunchFailure: ConnectError: Failed to establish session: [Errno 104] Connection reset by peer Exit code: 1 Command: build/plugins/qemu-system-aarch64 -display none -vga none -chardev socket,id=mon,fd=6 -mon chardev=mon,mode=control -machine virt -chardev socket,id=console,fd=11 -serial chardev:console -cpu cortex-a53 -kernel /home/philippe.mathieu-daude/.cache/qemu/download/ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7 -append printk.time=1 panic=-1 console=ttyAMA0 -plugin tests/tcg/plugins/libinsn.so -d plugin -D /tmp/plugini36uailv.log -net none -no-reboot Output: qemu-system-aarch64: Could not load plugin tests/tcg/plugins/libinsn.so: tests/tcg/plugins/libinsn.so: cannot open shared object file: No such file or directory make[1]: *** [Makefile.mtest:26: do-meson-check] Error 1 I don't mind much building the plugins manually: $ make tests/tcg/plugins/libinsn.so [1/2] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o [2/2] Linking target tests/tcg/plugins/libinsn.so Then tests pass. Philippe Mathieu-Daudé (2): tests/functional: Introduce the dso_suffix() helper tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts tests/functional/qemu_test/__init__.py | 2 +- tests/functional/qemu_test/cmd.py | 6 ++++++ tests/functional/test_aarch64_tcg_plugins.py | 10 +++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) -- 2.47.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper 2025-02-19 19:23 [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Philippe Mathieu-Daudé @ 2025-02-19 19:23 ` Philippe Mathieu-Daudé 2025-02-19 19:28 ` Pierrick Bouvier 2025-02-20 5:59 ` Thomas Huth 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé 2025-02-19 20:30 ` [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Pierrick Bouvier 2 siblings, 2 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2025-02-19 19:23 UTC (permalink / raw) To: qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Philippe Mathieu-Daudé, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo Introduce a helper to get the default shared library suffix used on the host. Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- tests/functional/qemu_test/__init__.py | 2 +- tests/functional/qemu_test/cmd.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py index 5c972843a6d..e253288ee7f 100644 --- a/tests/functional/qemu_test/__init__.py +++ b/tests/functional/qemu_test/__init__.py @@ -8,7 +8,7 @@ from .asset import Asset from .config import BUILD_DIR -from .cmd import is_readable_executable_file, \ +from .cmd import is_readable_executable_file, dso_suffix, \ interrupt_interactive_console_until_pattern, wait_for_console_pattern, \ exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py index dc5f422b77d..c4704dfb7bc 100644 --- a/tests/functional/qemu_test/cmd.py +++ b/tests/functional/qemu_test/cmd.py @@ -14,6 +14,12 @@ import logging import os import os.path +import platform + +def dso_suffix(): + '''Return the dynamic libraries suffix for the current platform''' + DSO_SUFFIXES = { 'Linux': 'so', 'Darwin': 'dylib', 'Windows': 'dll' } + return DSO_SUFFIXES[platform.system()] def which(tool): -- 2.47.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé @ 2025-02-19 19:28 ` Pierrick Bouvier 2025-02-20 5:59 ` Thomas Huth 1 sibling, 0 replies; 11+ messages in thread From: Pierrick Bouvier @ 2025-02-19 19:28 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On 2/19/25 11:23, Philippe Mathieu-Daudé wrote: > Introduce a helper to get the default shared library > suffix used on the host. > > Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/qemu_test/__init__.py | 2 +- > tests/functional/qemu_test/cmd.py | 6 ++++++ > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py > index 5c972843a6d..e253288ee7f 100644 > --- a/tests/functional/qemu_test/__init__.py > +++ b/tests/functional/qemu_test/__init__.py > @@ -8,7 +8,7 @@ > > from .asset import Asset > from .config import BUILD_DIR > -from .cmd import is_readable_executable_file, \ > +from .cmd import is_readable_executable_file, dso_suffix, \ > interrupt_interactive_console_until_pattern, wait_for_console_pattern, \ > exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which > from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest > diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py > index dc5f422b77d..c4704dfb7bc 100644 > --- a/tests/functional/qemu_test/cmd.py > +++ b/tests/functional/qemu_test/cmd.py > @@ -14,6 +14,12 @@ > import logging > import os > import os.path > +import platform > + > +def dso_suffix(): > + '''Return the dynamic libraries suffix for the current platform''' > + DSO_SUFFIXES = { 'Linux': 'so', 'Darwin': 'dylib', 'Windows': 'dll' } > + return DSO_SUFFIXES[platform.system()] > > > def which(tool): Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé 2025-02-19 19:28 ` Pierrick Bouvier @ 2025-02-20 5:59 ` Thomas Huth 1 sibling, 0 replies; 11+ messages in thread From: Thomas Huth @ 2025-02-20 5:59 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On 19/02/2025 20.23, Philippe Mathieu-Daudé wrote: > Introduce a helper to get the default shared library > suffix used on the host. > > Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/qemu_test/__init__.py | 2 +- > tests/functional/qemu_test/cmd.py | 6 ++++++ > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py > index 5c972843a6d..e253288ee7f 100644 > --- a/tests/functional/qemu_test/__init__.py > +++ b/tests/functional/qemu_test/__init__.py > @@ -8,7 +8,7 @@ > > from .asset import Asset > from .config import BUILD_DIR > -from .cmd import is_readable_executable_file, \ > +from .cmd import is_readable_executable_file, dso_suffix, \ > interrupt_interactive_console_until_pattern, wait_for_console_pattern, \ > exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which > from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest > diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py > index dc5f422b77d..c4704dfb7bc 100644 > --- a/tests/functional/qemu_test/cmd.py > +++ b/tests/functional/qemu_test/cmd.py Maybe config.py would be a better place? Thomas > @@ -14,6 +14,12 @@ > import logging > import os > import os.path > +import platform > + > +def dso_suffix(): > + '''Return the dynamic libraries suffix for the current platform''' > + DSO_SUFFIXES = { 'Linux': 'so', 'Darwin': 'dylib', 'Windows': 'dll' } > + return DSO_SUFFIXES[platform.system()] > > > def which(tool): ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts 2025-02-19 19:23 [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Philippe Mathieu-Daudé 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé @ 2025-02-19 19:23 ` Philippe Mathieu-Daudé 2025-02-19 19:29 ` Pierrick Bouvier ` (2 more replies) 2025-02-19 20:30 ` [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Pierrick Bouvier 2 siblings, 3 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2025-02-19 19:23 UTC (permalink / raw) To: qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Philippe Mathieu-Daudé, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo Not all platforms use the '.so' suffix for shared libraries, which is how plugins are built. Use the recently introduced dso_suffix() helper to get the proper host suffix. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2804 Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Suggested-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- tests/functional/test_aarch64_tcg_plugins.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/test_aarch64_tcg_plugins.py index 7e8beacc833..306e46c7972 100755 --- a/tests/functional/test_aarch64_tcg_plugins.py +++ b/tests/functional/test_aarch64_tcg_plugins.py @@ -16,7 +16,7 @@ import re from qemu.machine.machine import VMLaunchFailure -from qemu_test import LinuxKernelTest, Asset +from qemu_test import LinuxKernelTest, Asset, dso_suffix class PluginKernelBase(LinuxKernelTest): @@ -62,6 +62,10 @@ class PluginKernelNormal(PluginKernelBase): ('https://storage.tuxboot.com/20230331/arm64/Image'), 'ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7') + def plugin_file(self, plugin_name): + suffix = dso_suffix() + return f'tests/tcg/plugins/{plugin_name}.{suffix}' + def test_aarch64_virt_insn(self): self.set_machine('virt') self.cpu='cortex-a53' @@ -74,7 +78,7 @@ def test_aarch64_virt_insn(self): suffix=".log") self.run_vm(kernel_path, kernel_command_line, - "tests/tcg/plugins/libinsn.so", plugin_log.name, + self.plugin_file('libinsn'), plugin_log.name, console_pattern) with plugin_log as lf, \ @@ -100,7 +104,7 @@ def test_aarch64_virt_insn_icount(self): suffix=".log") self.run_vm(kernel_path, kernel_command_line, - "tests/tcg/plugins/libinsn.so", plugin_log.name, + self.plugin_file('libinsn'), plugin_log.name, console_pattern, args=('-icount', 'shift=1')) -- 2.47.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé @ 2025-02-19 19:29 ` Pierrick Bouvier 2025-02-20 6:02 ` Thomas Huth 2025-02-24 9:56 ` Daniel P. Berrangé 2 siblings, 0 replies; 11+ messages in thread From: Pierrick Bouvier @ 2025-02-19 19:29 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On 2/19/25 11:23, Philippe Mathieu-Daudé wrote: > Not all platforms use the '.so' suffix for shared libraries, > which is how plugins are built. Use the recently introduced > dso_suffix() helper to get the proper host suffix. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2804 > Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/test_aarch64_tcg_plugins.py | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/test_aarch64_tcg_plugins.py > index 7e8beacc833..306e46c7972 100755 > --- a/tests/functional/test_aarch64_tcg_plugins.py > +++ b/tests/functional/test_aarch64_tcg_plugins.py > @@ -16,7 +16,7 @@ > import re > > from qemu.machine.machine import VMLaunchFailure > -from qemu_test import LinuxKernelTest, Asset > +from qemu_test import LinuxKernelTest, Asset, dso_suffix > > > class PluginKernelBase(LinuxKernelTest): > @@ -62,6 +62,10 @@ class PluginKernelNormal(PluginKernelBase): > ('https://storage.tuxboot.com/20230331/arm64/Image'), > 'ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7') > > + def plugin_file(self, plugin_name): > + suffix = dso_suffix() > + return f'tests/tcg/plugins/{plugin_name}.{suffix}' > + > def test_aarch64_virt_insn(self): > self.set_machine('virt') > self.cpu='cortex-a53' > @@ -74,7 +78,7 @@ def test_aarch64_virt_insn(self): > suffix=".log") > > self.run_vm(kernel_path, kernel_command_line, > - "tests/tcg/plugins/libinsn.so", plugin_log.name, > + self.plugin_file('libinsn'), plugin_log.name, > console_pattern) > > with plugin_log as lf, \ > @@ -100,7 +104,7 @@ def test_aarch64_virt_insn_icount(self): > suffix=".log") > > self.run_vm(kernel_path, kernel_command_line, > - "tests/tcg/plugins/libinsn.so", plugin_log.name, > + self.plugin_file('libinsn'), plugin_log.name, > console_pattern, > args=('-icount', 'shift=1')) > Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé 2025-02-19 19:29 ` Pierrick Bouvier @ 2025-02-20 6:02 ` Thomas Huth 2025-02-20 7:06 ` Stefan Weil via 2025-02-24 9:56 ` Daniel P. Berrangé 2 siblings, 1 reply; 11+ messages in thread From: Thomas Huth @ 2025-02-20 6:02 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On 19/02/2025 20.23, Philippe Mathieu-Daudé wrote: > Not all platforms use the '.so' suffix for shared libraries, > which is how plugins are built. Use the recently introduced > dso_suffix() helper to get the proper host suffix. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2804 > Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/test_aarch64_tcg_plugins.py | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/test_aarch64_tcg_plugins.py > index 7e8beacc833..306e46c7972 100755 > --- a/tests/functional/test_aarch64_tcg_plugins.py > +++ b/tests/functional/test_aarch64_tcg_plugins.py > @@ -16,7 +16,7 @@ > import re > > from qemu.machine.machine import VMLaunchFailure > -from qemu_test import LinuxKernelTest, Asset > +from qemu_test import LinuxKernelTest, Asset, dso_suffix > > > class PluginKernelBase(LinuxKernelTest): > @@ -62,6 +62,10 @@ class PluginKernelNormal(PluginKernelBase): > ('https://storage.tuxboot.com/20230331/arm64/Image'), > 'ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7') > > + def plugin_file(self, plugin_name): > + suffix = dso_suffix() > + return f'tests/tcg/plugins/{plugin_name}.{suffix}' Since you're adding support for the .DLL suffix on Windows, too: Maybe better to use os.path.join() for Windows that doesn't use the slash as path separator? Thomas ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts 2025-02-20 6:02 ` Thomas Huth @ 2025-02-20 7:06 ` Stefan Weil via 0 siblings, 0 replies; 11+ messages in thread From: Stefan Weil via @ 2025-02-20 7:06 UTC (permalink / raw) To: Thomas Huth, Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Pierrick Bouvier, Akihiko Odaki, Mahmoud Mandour, Alex Bennée, Paolo Bonzini, Alexandre Iooss, Yonggang Luo Am 20.02.25 um 07:02 schrieb Thomas Huth: > On 19/02/2025 20.23, Philippe Mathieu-Daudé wrote: >> @@ -62,6 +62,10 @@ class PluginKernelNormal(PluginKernelBase): >> ('https://storage.tuxboot.com/20230331/arm64/Image'), >> 'ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7') >> + def plugin_file(self, plugin_name): >> + suffix = dso_suffix() >> + return f'tests/tcg/plugins/{plugin_name}.{suffix}' > > Since you're adding support for the .DLL suffix on Windows, too: Maybe > better to use os.path.join() for Windows that doesn't use the slash as > path separator? > > Thomas That could be done, but should not be necessary. Microsoft supports the slash as path separator, too, since its earliest MSDOS, and it is still supported for Windows. But of course it might be confusing for many people to see a mix of different path separators in debug messages or log files. Stefan ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé 2025-02-19 19:29 ` Pierrick Bouvier 2025-02-20 6:02 ` Thomas Huth @ 2025-02-24 9:56 ` Daniel P. Berrangé 2 siblings, 0 replies; 11+ messages in thread From: Daniel P. Berrangé @ 2025-02-24 9:56 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, Pierrick Bouvier, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On Wed, Feb 19, 2025 at 08:23:40PM +0100, Philippe Mathieu-Daudé wrote: > Not all platforms use the '.so' suffix for shared libraries, > which is how plugins are built. Use the recently introduced > dso_suffix() helper to get the proper host suffix. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2804 > Suggested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/test_aarch64_tcg_plugins.py | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tests/functional/test_aarch64_tcg_plugins.py b/tests/functional/test_aarch64_tcg_plugins.py > index 7e8beacc833..306e46c7972 100755 > --- a/tests/functional/test_aarch64_tcg_plugins.py > +++ b/tests/functional/test_aarch64_tcg_plugins.py > @@ -16,7 +16,7 @@ > import re > > from qemu.machine.machine import VMLaunchFailure > -from qemu_test import LinuxKernelTest, Asset > +from qemu_test import LinuxKernelTest, Asset, dso_suffix > > > class PluginKernelBase(LinuxKernelTest): > @@ -62,6 +62,10 @@ class PluginKernelNormal(PluginKernelBase): > ('https://storage.tuxboot.com/20230331/arm64/Image'), > 'ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7') > > + def plugin_file(self, plugin_name): > + suffix = dso_suffix() > + return f'tests/tcg/plugins/{plugin_name}.{suffix}' > + IMHO this should be on the QemuBaseTest class with all the other similar path file helpers, since in the long run plugins are liable to be used for more than just this one test program. > def test_aarch64_virt_insn(self): > self.set_machine('virt') > self.cpu='cortex-a53' > @@ -74,7 +78,7 @@ def test_aarch64_virt_insn(self): > suffix=".log") > > self.run_vm(kernel_path, kernel_command_line, > - "tests/tcg/plugins/libinsn.so", plugin_log.name, > + self.plugin_file('libinsn'), plugin_log.name, > console_pattern) > > with plugin_log as lf, \ > @@ -100,7 +104,7 @@ def test_aarch64_virt_insn_icount(self): > suffix=".log") > > self.run_vm(kernel_path, kernel_command_line, > - "tests/tcg/plugins/libinsn.so", plugin_log.name, > + self.plugin_file('libinsn'), plugin_log.name, > console_pattern, > args=('-icount', 'shift=1')) > > -- > 2.47.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS 2025-02-19 19:23 [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Philippe Mathieu-Daudé 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé @ 2025-02-19 20:30 ` Pierrick Bouvier 2025-02-19 21:19 ` Philippe Mathieu-Daudé 2 siblings, 1 reply; 11+ messages in thread From: Pierrick Bouvier @ 2025-02-19 20:30 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Daniel P. Berrangé, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo Hi Philippe, On 2/19/25 11:23, Philippe Mathieu-Daudé wrote: > Pierrick kindly helped me to resolve this issue which ended > being trivial (to him!). Not tested on Windows so far. > > I'm still having some meson dependency problem, even on Linux: > > $ make check-functional-aarch64 > ... > Traceback (most recent call last): > File "python/qemu/qmp/protocol.py", line 834, in _bh_close_stream > await wait_closed(self._writer) > File "python/qemu/qmp/util.py", line 130, in wait_closed > await writer.wait_closed() > File "/usr/lib/python3.10/asyncio/streams.py", line 343, in wait_closed > await self._protocol._get_close_waiter(self) > File "/usr/lib/python3.10/asyncio/selector_events.py", line 862, in _read_ready__data_received > data = self._sock.recv(self.max_size) > ConnectionResetError: [Errno 104] Connection reset by peer > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "python/qemu/machine/machine.py", line 448, in launch > self._launch() > File "python/qemu/machine/machine.py", line 497, in _launch > self._post_launch() > File "python/qemu/machine/machine.py", line 381, in _post_launch > self._qmp.connect() > File "python/qemu/qmp/legacy.py", line 153, in connect > self._sync( > File "python/qemu/qmp/legacy.py", line 102, in _sync > return self._aloop.run_until_complete( > File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete > return future.result() > File "/usr/lib/python3.10/asyncio/tasks.py", line 408, in wait_for > return await fut > File "python/qemu/qmp/protocol.py", line 382, in connect > await self._session_guard( > File "python/qemu/qmp/protocol.py", line 456, in _session_guard > raise ConnectError(emsg, err) from err > qemu.qmp.protocol.ConnectError: Failed to establish session: [Errno 104] Connection reset by peer > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "tests/functional/test_aarch64_tcg_plugins.py", line 80, in test_aarch64_virt_insn > self.run_vm(kernel_path, kernel_command_line, > File "tests/functional/test_aarch64_tcg_plugins.py", line 52, in run_vm > raise excp > File "tests/functional/test_aarch64_tcg_plugins.py", line 46, in run_vm > vm.launch() > File "python/qemu/machine/machine.py", line 461, in launch > raise VMLaunchFailure( > qemu.machine.machine.VMLaunchFailure: ConnectError: Failed to establish session: [Errno 104] Connection reset by peer > Exit code: 1 > Command: build/plugins/qemu-system-aarch64 -display none -vga none -chardev socket,id=mon,fd=6 -mon chardev=mon,mode=control -machine virt -chardev socket,id=console,fd=11 -serial chardev:console -cpu cortex-a53 -kernel /home/philippe.mathieu-daude/.cache/qemu/download/ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7 -append printk.time=1 panic=-1 console=ttyAMA0 -plugin tests/tcg/plugins/libinsn.so -d plugin -D /tmp/plugini36uailv.log -net none -no-reboot > Output: qemu-system-aarch64: Could not load plugin tests/tcg/plugins/libinsn.so: tests/tcg/plugins/libinsn.so: cannot open shared object file: No such file or directory > make[1]: *** [Makefile.mtest:26: do-meson-check] Error 1 > > I don't mind much building the plugins manually: > > $ make tests/tcg/plugins/libinsn.so > [1/2] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o > [2/2] Linking target tests/tcg/plugins/libinsn.so > Meson tests dependency is missing for plugins, so we need to add it. By running: make check-functional-aarch64 V=1, you can see it's only building qemu-img, qemu-system and roms files. You can integrate this patch in your series: commit a375e9b560685bf4ccd6332cc23ce6850ec2fbbe Author: Pierrick Bouvier <pierrick.bouvier@linaro.org> Date: Wed Feb 19 12:26:53 2025 -0800 plugins: add explicit dependency in functional tests ./tests/functional/test_aarch64_tcg_plugins.py needs to have plugin libinsn built. However, it's not listed as a dependency, so meson can't know it needs to be built. Thus, we keep track of all plugins, and add them as an explicit dependency. Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> diff --git a/meson.build b/meson.build index 18b40a21a5a..80b9c8edd71 100644 --- a/meson.build +++ b/meson.build @@ -3658,6 +3658,7 @@ qtest_module_ss = ss.source_set() modules = {} target_modules = {} +plugin_modules = [] hw_arch = {} target_arch = {} target_system_arch = {} diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build index c4f5061a7b3..327b48c8886 100644 --- a/contrib/plugins/meson.build +++ b/contrib/plugins/meson.build @@ -27,3 +27,5 @@ if t.length() > 0 else run_target('contrib-plugins', command: find_program('true')) endif + +plugin_modules += t diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 21c7e2087e9..dcea5d41e10 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -364,7 +364,7 @@ foreach speed : ['quick', 'thorough'] # 'run_target' logic below & in Makefile.include test('func-' + testname, python, - depends: [test_deps, test_emulator, emulator_modules], + depends: [test_deps, test_emulator, emulator_modules, plugin_modules], env: test_env, args: [testpath], protocol: 'tap', diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build index 7f927357421..0e4d4f5d6af 100644 --- a/tests/tcg/plugins/meson.build +++ b/tests/tcg/plugins/meson.build @@ -19,3 +19,5 @@ if t.length() > 0 else run_target('test-plugins', command: find_program('true')) endif + +plugin_modules += t ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS 2025-02-19 20:30 ` [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Pierrick Bouvier @ 2025-02-19 21:19 ` Philippe Mathieu-Daudé 0 siblings, 0 replies; 11+ messages in thread From: Philippe Mathieu-Daudé @ 2025-02-19 21:19 UTC (permalink / raw) To: Pierrick Bouvier, qemu-devel Cc: Daniel P. Berrangé, Akihiko Odaki, Mahmoud Mandour, Stefan Weil, Alex Bennée, Thomas Huth, Paolo Bonzini, Alexandre Iooss, Yonggang Luo On 19/2/25 21:30, Pierrick Bouvier wrote: > Hi Philippe, > > On 2/19/25 11:23, Philippe Mathieu-Daudé wrote: >> Pierrick kindly helped me to resolve this issue which ended >> being trivial (to him!). Not tested on Windows so far. >> >> I'm still having some meson dependency problem, even on Linux: >> >> $ make check-functional-aarch64 >> ... >> Traceback (most recent call last): >> File "python/qemu/qmp/protocol.py", line 834, in _bh_close_stream >> await wait_closed(self._writer) >> File "python/qemu/qmp/util.py", line 130, in wait_closed >> await writer.wait_closed() >> File "/usr/lib/python3.10/asyncio/streams.py", line 343, in >> wait_closed >> await self._protocol._get_close_waiter(self) >> File "/usr/lib/python3.10/asyncio/selector_events.py", line 862, >> in _read_ready__data_received >> data = self._sock.recv(self.max_size) >> ConnectionResetError: [Errno 104] Connection reset by peer >> >> The above exception was the direct cause of the following exception: >> >> Traceback (most recent call last): >> File "python/qemu/machine/machine.py", line 448, in launch >> self._launch() >> File "python/qemu/machine/machine.py", line 497, in _launch >> self._post_launch() >> File "python/qemu/machine/machine.py", line 381, in _post_launch >> self._qmp.connect() >> File "python/qemu/qmp/legacy.py", line 153, in connect >> self._sync( >> File "python/qemu/qmp/legacy.py", line 102, in _sync >> return self._aloop.run_until_complete( >> File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in >> run_until_complete >> return future.result() >> File "/usr/lib/python3.10/asyncio/tasks.py", line 408, in wait_for >> return await fut >> File "python/qemu/qmp/protocol.py", line 382, in connect >> await self._session_guard( >> File "python/qemu/qmp/protocol.py", line 456, in _session_guard >> raise ConnectError(emsg, err) from err >> qemu.qmp.protocol.ConnectError: Failed to establish session: [Errno >> 104] Connection reset by peer >> >> The above exception was the direct cause of the following exception: >> >> Traceback (most recent call last): >> File "tests/functional/test_aarch64_tcg_plugins.py", line 80, in >> test_aarch64_virt_insn >> self.run_vm(kernel_path, kernel_command_line, >> File "tests/functional/test_aarch64_tcg_plugins.py", line 52, in >> run_vm >> raise excp >> File "tests/functional/test_aarch64_tcg_plugins.py", line 46, in >> run_vm >> vm.launch() >> File "python/qemu/machine/machine.py", line 461, in launch >> raise VMLaunchFailure( >> qemu.machine.machine.VMLaunchFailure: ConnectError: Failed to >> establish session: [Errno 104] Connection reset by peer >> Exit code: 1 >> Command: build/plugins/qemu-system-aarch64 -display none -vga >> none -chardev socket,id=mon,fd=6 -mon chardev=mon,mode=control - >> machine virt -chardev socket,id=console,fd=11 -serial chardev:console >> -cpu cortex-a53 -kernel /home/philippe.mathieu-daude/.cache/qemu/ >> download/ >> ce95a7101a5fecebe0fe630deee6bd97b32ba41bc8754090e9ad8961ea8674c7 - >> append printk.time=1 panic=-1 console=ttyAMA0 -plugin tests/tcg/ >> plugins/libinsn.so -d plugin -D /tmp/plugini36uailv.log -net none -no- >> reboot >> Output: qemu-system-aarch64: Could not load plugin tests/tcg/ >> plugins/libinsn.so: tests/tcg/plugins/libinsn.so: cannot open shared >> object file: No such file or directory >> make[1]: *** [Makefile.mtest:26: do-meson-check] Error 1 >> >> I don't mind much building the plugins manually: >> >> $ make tests/tcg/plugins/libinsn.so >> [1/2] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o >> [2/2] Linking target tests/tcg/plugins/libinsn.so >> > > Meson tests dependency is missing for plugins, so we need to add it. > > By running: make check-functional-aarch64 V=1, you can see it's only > building qemu-img, qemu-system and roms files. > > You can integrate this patch in your series: > > commit a375e9b560685bf4ccd6332cc23ce6850ec2fbbe > Author: Pierrick Bouvier <pierrick.bouvier@linaro.org> > Date: Wed Feb 19 12:26:53 2025 -0800 > > plugins: add explicit dependency in functional tests > > ./tests/functional/test_aarch64_tcg_plugins.py needs to have plugin > libinsn built. However, it's not listed as a dependency, so meson > can't > know it needs to be built. > > Thus, we keep track of all plugins, and add them as an explicit > dependency. > > Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> > > diff --git a/meson.build b/meson.build > index 18b40a21a5a..80b9c8edd71 100644 > --- a/meson.build > +++ b/meson.build > @@ -3658,6 +3658,7 @@ qtest_module_ss = ss.source_set() > > modules = {} > target_modules = {} > +plugin_modules = [] > hw_arch = {} > target_arch = {} > target_system_arch = {} > diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build > index c4f5061a7b3..327b48c8886 100644 > --- a/contrib/plugins/meson.build > +++ b/contrib/plugins/meson.build > @@ -27,3 +27,5 @@ if t.length() > 0 > else > run_target('contrib-plugins', command: find_program('true')) > endif > + > +plugin_modules += t > diff --git a/tests/functional/meson.build b/tests/functional/meson.build > index 21c7e2087e9..dcea5d41e10 100644 > --- a/tests/functional/meson.build > +++ b/tests/functional/meson.build > @@ -364,7 +364,7 @@ foreach speed : ['quick', 'thorough'] > # 'run_target' logic below & in Makefile.include > test('func-' + testname, > python, > - depends: [test_deps, test_emulator, emulator_modules], > + depends: [test_deps, test_emulator, emulator_modules, > plugin_modules], > env: test_env, > args: [testpath], > protocol: 'tap', > diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build > index 7f927357421..0e4d4f5d6af 100644 > --- a/tests/tcg/plugins/meson.build > +++ b/tests/tcg/plugins/meson.build > @@ -19,3 +19,5 @@ if t.length() > 0 > else > run_target('test-plugins', command: find_program('true')) > endif > + > +plugin_modules += t > [26/36] Compiling C object tests/tcg/plugins/libbb.so.p/bb.c.o [27/36] Linking target tests/tcg/plugins/libinsn.so [28/36] Compiling C object tests/tcg/plugins/libinline.so.p/inline.c.o [29/36] Linking target tests/tcg/plugins/libinline.so [30/36] Compiling C object tests/tcg/plugins/libmem.so.p/mem.c.o [31/36] Compiling C object tests/tcg/plugins/libempty.so.p/empty.c.o [32/36] Linking target tests/tcg/plugins/libempty.so [33/36] Linking target tests/tcg/plugins/libbb.so [34/36] Linking target tests/tcg/plugins/libmem.so [35/36] Compiling C object tests/tcg/plugins/libsyscall.so.p/syscall.c.o [36/36] Linking target tests/tcg/plugins/libsyscall.so Yes this works, thanks! For your embedded patch: > Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2025-02-24 9:57 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-19 19:23 [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Philippe Mathieu-Daudé 2025-02-19 19:23 ` [PATCH 1/2] tests/functional: Introduce the dso_suffix() helper Philippe Mathieu-Daudé 2025-02-19 19:28 ` Pierrick Bouvier 2025-02-20 5:59 ` Thomas Huth 2025-02-19 19:23 ` [PATCH 2/2] tests/functional: Allow running TCG plugins tests on non-Linux/BSD hosts Philippe Mathieu-Daudé 2025-02-19 19:29 ` Pierrick Bouvier 2025-02-20 6:02 ` Thomas Huth 2025-02-20 7:06 ` Stefan Weil via 2025-02-24 9:56 ` Daniel P. Berrangé 2025-02-19 20:30 ` [PATCH 0/2] tests/functional: Allow running TCG plugins tests on macOS Pierrick Bouvier 2025-02-19 21:19 ` Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).