diff mbox series

[v2,2/3] tests/functional: Introduce the dso_suffix() helper

Message ID 20250220080215.49165-3-philmd@linaro.org
State New
Headers show
Series tests/functional: Allow running TCG plugins tests on macOS | expand

Commit Message

Philippe Mathieu-Daudé Feb. 20, 2025, 8:02 a.m. UTC
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>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
 tests/functional/qemu_test/__init__.py | 2 +-
 tests/functional/qemu_test/cmd.py      | 1 -
 tests/functional/qemu_test/config.py   | 6 ++++++
 3 files changed, 7 insertions(+), 2 deletions(-)

Comments

Philippe Mathieu-Daudé Feb. 20, 2025, 8:03 a.m. UTC | #1
On 20/2/25 09:02, 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>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>   tests/functional/qemu_test/__init__.py | 2 +-
>   tests/functional/qemu_test/cmd.py      | 1 -
>   tests/functional/qemu_test/config.py   | 6 ++++++
>   3 files changed, 7 insertions(+), 2 deletions(-)


> diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
> index dc5f422b77d..254e23ef748 100644
> --- a/tests/functional/qemu_test/cmd.py
> +++ b/tests/functional/qemu_test/cmd.py
> @@ -15,7 +15,6 @@
>   import os
>   import os.path
>   
> -

Oops, Alex, should I respin a v3 removing this change?

>   def which(tool):
>       """ looks up the full path for @tool, returns None if not found
>           or if @tool does not have executable permissions.
Thomas Huth Feb. 20, 2025, 8:05 a.m. UTC | #2
On 20/02/2025 09.02, 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>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>   tests/functional/qemu_test/__init__.py | 2 +-
>   tests/functional/qemu_test/cmd.py      | 1 -
>   tests/functional/qemu_test/config.py   | 6 ++++++
>   3 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
> index 5c972843a6d..45f7befa374 100644
> --- a/tests/functional/qemu_test/__init__.py
> +++ b/tests/functional/qemu_test/__init__.py
> @@ -7,7 +7,7 @@
>   
>   
>   from .asset import Asset
> -from .config import BUILD_DIR
> +from .config import BUILD_DIR, dso_suffix
>   from .cmd import is_readable_executable_file, \
>       interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
>       exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
> diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
> index dc5f422b77d..254e23ef748 100644
> --- a/tests/functional/qemu_test/cmd.py
> +++ b/tests/functional/qemu_test/cmd.py
> @@ -15,7 +15,6 @@
>   import os
>   import os.path
>   
> -
>   def which(tool):
>       """ looks up the full path for @tool, returns None if not found
>           or if @tool does not have executable permissions.

Please drop the change to cmd.py now.
With that fixed:
Reviewed-by: Thomas Huth <thuth@redhat.com>
Akihiko Odaki Feb. 27, 2025, 7:06 a.m. UTC | #3
On 2025/02/20 17:02, 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>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>   tests/functional/qemu_test/__init__.py | 2 +-
>   tests/functional/qemu_test/cmd.py      | 1 -
>   tests/functional/qemu_test/config.py   | 6 ++++++
>   3 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
> index 5c972843a6d..45f7befa374 100644
> --- a/tests/functional/qemu_test/__init__.py
> +++ b/tests/functional/qemu_test/__init__.py
> @@ -7,7 +7,7 @@
>   
>   
>   from .asset import Asset
> -from .config import BUILD_DIR
> +from .config import BUILD_DIR, dso_suffix
>   from .cmd import is_readable_executable_file, \
>       interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
>       exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
> diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
> index dc5f422b77d..254e23ef748 100644
> --- a/tests/functional/qemu_test/cmd.py
> +++ b/tests/functional/qemu_test/cmd.py
> @@ -15,7 +15,6 @@
>   import os
>   import os.path
>   
> -
>   def which(tool):
>       """ looks up the full path for @tool, returns None if not found
>           or if @tool does not have executable permissions.
> diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py
> index edd75b7fd06..0eab1baa541 100644
> --- a/tests/functional/qemu_test/config.py
> +++ b/tests/functional/qemu_test/config.py
> @@ -13,6 +13,7 @@
>   
>   import os
>   from pathlib import Path
> +import platform
>   
>   
>   def _source_dir():
> @@ -34,3 +35,8 @@ def _build_dir():
>       raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")
>   
>   BUILD_DIR = _build_dir()
> +
> +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()]

It may be too late to comment, but:
I'm a bit worried that this can break tests on platforms (BSDs?) not 
listed here though I don't know if plugin tests work on BSDs in the 
first place.
Alex Bennée Feb. 27, 2025, 7:55 a.m. UTC | #4
Akihiko Odaki <akihiko.odaki@daynix.com> writes:

> On 2025/02/20 17:02, 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>
>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>> ---
>>   tests/functional/qemu_test/__init__.py | 2 +-
>>   tests/functional/qemu_test/cmd.py      | 1 -
>>   tests/functional/qemu_test/config.py   | 6 ++++++
>>   3 files changed, 7 insertions(+), 2 deletions(-)
>> diff --git a/tests/functional/qemu_test/__init__.py
>> b/tests/functional/qemu_test/__init__.py
>> index 5c972843a6d..45f7befa374 100644
>> --- a/tests/functional/qemu_test/__init__.py
>> +++ b/tests/functional/qemu_test/__init__.py
>> @@ -7,7 +7,7 @@
>>       from .asset import Asset
>> -from .config import BUILD_DIR
>> +from .config import BUILD_DIR, dso_suffix
>>   from .cmd import is_readable_executable_file, \
>>       interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
>>       exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
>> diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
>> index dc5f422b77d..254e23ef748 100644
>> --- a/tests/functional/qemu_test/cmd.py
>> +++ b/tests/functional/qemu_test/cmd.py
>> @@ -15,7 +15,6 @@
>>   import os
>>   import os.path
>>   -
>>   def which(tool):
>>       """ looks up the full path for @tool, returns None if not found
>>           or if @tool does not have executable permissions.
>> diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py
>> index edd75b7fd06..0eab1baa541 100644
>> --- a/tests/functional/qemu_test/config.py
>> +++ b/tests/functional/qemu_test/config.py
>> @@ -13,6 +13,7 @@
>>     import os
>>   from pathlib import Path
>> +import platform
>>       def _source_dir():
>> @@ -34,3 +35,8 @@ def _build_dir():
>>       raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")
>>     BUILD_DIR = _build_dir()
>> +
>> +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()]
>
> It may be too late to comment, but:
> I'm a bit worried that this can break tests on platforms (BSDs?) not
> listed here though I don't know if plugin tests work on BSDs in the
> first place.

Currently we don't run any of the check-tcg tests on BSD. Mostly because
I couldn't find cross compilers packaged for BSD (and there is no
docker-like thing to bring them in) and for the "native" cross compiler
we currently block clang - although there are some fixes for that in my
current maintainer series.
Daniel P. Berrangé Feb. 27, 2025, 9 a.m. UTC | #5
On Thu, Feb 20, 2025 at 09:02:14AM +0100, 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>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>  tests/functional/qemu_test/__init__.py | 2 +-
>  tests/functional/qemu_test/cmd.py      | 1 -
>  tests/functional/qemu_test/config.py   | 6 ++++++
>  3 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
> index 5c972843a6d..45f7befa374 100644
> --- a/tests/functional/qemu_test/__init__.py
> +++ b/tests/functional/qemu_test/__init__.py
> @@ -7,7 +7,7 @@
>  
>  
>  from .asset import Asset
> -from .config import BUILD_DIR
> +from .config import BUILD_DIR, dso_suffix
>  from .cmd import is_readable_executable_file, \
>      interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
>      exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
> diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
> index dc5f422b77d..254e23ef748 100644
> --- a/tests/functional/qemu_test/cmd.py
> +++ b/tests/functional/qemu_test/cmd.py
> @@ -15,7 +15,6 @@
>  import os
>  import os.path
>  
> -
>  def which(tool):
>      """ looks up the full path for @tool, returns None if not found
>          or if @tool does not have executable permissions.
> diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py
> index edd75b7fd06..0eab1baa541 100644
> --- a/tests/functional/qemu_test/config.py
> +++ b/tests/functional/qemu_test/config.py
> @@ -13,6 +13,7 @@
>  
>  import os
>  from pathlib import Path
> +import platform
>  
>  
>  def _source_dir():
> @@ -34,3 +35,8 @@ def _build_dir():
>      raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")
>  
>  BUILD_DIR = _build_dir()
> +
> +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()]

Windows and Darwin are the two odd-ball platforms we target, Linux and
all the BSDs use .so, so it makes sense to use .so as the general
fallback, at which point I'm not sure the lookup table is worthwhile
compared to:

  if platform.system() == "Darwin"
    return "dylib"
  elif platform.system() == "Windows"
    return "dll"
  else
    return "so"

With regards,
Daniel
diff mbox series

Patch

diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
index 5c972843a6d..45f7befa374 100644
--- a/tests/functional/qemu_test/__init__.py
+++ b/tests/functional/qemu_test/__init__.py
@@ -7,7 +7,7 @@ 
 
 
 from .asset import Asset
-from .config import BUILD_DIR
+from .config import BUILD_DIR, dso_suffix
 from .cmd import is_readable_executable_file, \
     interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
     exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
diff --git a/tests/functional/qemu_test/cmd.py b/tests/functional/qemu_test/cmd.py
index dc5f422b77d..254e23ef748 100644
--- a/tests/functional/qemu_test/cmd.py
+++ b/tests/functional/qemu_test/cmd.py
@@ -15,7 +15,6 @@ 
 import os
 import os.path
 
-
 def which(tool):
     """ looks up the full path for @tool, returns None if not found
         or if @tool does not have executable permissions.
diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py
index edd75b7fd06..0eab1baa541 100644
--- a/tests/functional/qemu_test/config.py
+++ b/tests/functional/qemu_test/config.py
@@ -13,6 +13,7 @@ 
 
 import os
 from pathlib import Path
+import platform
 
 
 def _source_dir():
@@ -34,3 +35,8 @@  def _build_dir():
     raise Exception("Cannot identify build dir, set QEMU_BUILD_ROOT")
 
 BUILD_DIR = _build_dir()
+
+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()]