Recheck-request: github-robot: build

On Tue, Jun 9, 2026 at 10:36 AM Koushik Bhargav Nimoji <[email protected]>
wrote:

> This patch adds the ability to specify build arguments when building DPDK
> through DTS. Doing so allows users to build DPDK with the desired build
> arguments, which allows for a more configurable DTS run.
>
> Signed-off-by: Koushik Bhargav Nimoji <[email protected]>
> ---
>  dts/configurations/test_run.example.yaml | 13 +++++++++++++
>  dts/framework/config/test_run.py         |  2 ++
>  dts/framework/remote_session/dpdk.py     | 12 ++++++++----
>  dts/framework/utils.py                   | 21 ++++++++++++++++++++-
>  4 files changed, 43 insertions(+), 5 deletions(-)
>
> diff --git a/dts/configurations/test_run.example.yaml
> b/dts/configurations/test_run.example.yaml
> index ee641f5dce..0bd5151801 100644
> --- a/dts/configurations/test_run.example.yaml
> +++ b/dts/configurations/test_run.example.yaml
> @@ -16,6 +16,8 @@
>  #       `precompiled_build_dir` or `build_options` can be defined, but
> not both.
>  #   `compiler_wrapper`:
>  #       Optional, adds a compiler wrapper if present.
> +#   `build_args`:
> +#       The additional build arguments to be used when building DPDK.
>  #   `func_traffic_generator` & `perf_traffic_generator`:
>  #       Define `func_traffic_generator` when `func` set to true.
>  #       Define `perf_traffic_generator` when `perf` set to true.
> @@ -40,6 +42,17 @@ dpdk:
>        # the combination of the following two makes CC="ccache gcc"
>        compiler: gcc
>        compiler_wrapper: ccache # see `Optional Fields`
> +      # arguments to be used when building DPDK
> +      # build_args:
> +      #   c_args:
> +      #     - O3
> +      #     - g
> +      #   b_coverage:
> +      #     - "true"
> +      #   buildtype:
> +      #     - release
> +      #   flags:
> +      #     - strip
>  func_traffic_generator:
>    type: SCAPY
>  # perf_traffic_generator:
> diff --git a/dts/framework/config/test_run.py
> b/dts/framework/config/test_run.py
> index 76e24d1785..eab12041fc 100644
> --- a/dts/framework/config/test_run.py
> +++ b/dts/framework/config/test_run.py
> @@ -191,6 +191,8 @@ class DPDKBuildOptionsConfiguration(FrozenModel):
>      #: This string will be put in front of the compiler when executing
> the build. Useful for adding
>      #: wrapper commands, such as ``ccache``.
>      compiler_wrapper: str = ""
> +    #: The build arguments to build dpdk with
> +    build_args: dict[str, list[str]] = {}
>
>
>  class DPDKUncompiledBuildConfiguration(BaseDPDKBuildConfiguration):
> diff --git a/dts/framework/remote_session/dpdk.py
> b/dts/framework/remote_session/dpdk.py
> index 865f97f6ca..4dc0ceeaaf 100644
> --- a/dts/framework/remote_session/dpdk.py
> +++ b/dts/framework/remote_session/dpdk.py
> @@ -100,8 +100,8 @@ def setup(self) -> None:
>          match self.config:
>              case
> DPDKPrecompiledBuildConfiguration(precompiled_build_dir=build_dir):
>                  self._set_remote_dpdk_build_dir(build_dir)
> -            case
> DPDKUncompiledBuildConfiguration(build_options=build_options):
> -                self._configure_dpdk_build(build_options)
> +            case DPDKUncompiledBuildConfiguration():
> +                self._configure_dpdk_build(self.config.build_options)
>                  self._build_dpdk()
>
>      def teardown(self) -> None:
> @@ -277,16 +277,20 @@ def _build_dpdk(self) -> None:
>          `remote_dpdk_tree_path` has already been set on the SUT node.
>          """
>          ctx = get_ctx()
> +        build_options = getattr(self.config, "build_options")
>          # If the SUT is an ice driver device, make sure to build with 16B
> descriptors.
>          if (
>              ctx.topology.sut_port_ingress
>              and ctx.topology.sut_port_ingress.config.os_driver == "ice"
>          ):
>              meson_args = MesonArgs(
> -                default_library="static", libdir="lib",
> c_args="-DRTE_NET_INTEL_USE_16BYTE_DESC"
> +                build_options.build_args,
> +                default_library="static",
> +                libdir="lib",
> +                c_args="-DRTE_NET_INTEL_USE_16BYTE_DESC",
>              )
>          else:
> -            meson_args = MesonArgs(default_library="static", libdir="lib")
> +            meson_args = MesonArgs(build_options.build_args,
> default_library="static", libdir="lib")
>
>          if SETTINGS.code_coverage:
>              meson_args._add_arg("-Db_coverage=true")
> diff --git a/dts/framework/utils.py b/dts/framework/utils.py
> index 38da88cd9c..e0ed35066c 100644
> --- a/dts/framework/utils.py
> +++ b/dts/framework/utils.py
> @@ -99,10 +99,16 @@ class MesonArgs:
>
>      _default_library: str
>
> -    def __init__(self, default_library: str | None = None, **dpdk_args:
> str | bool):
> +    def __init__(
> +        self,
> +        dpdk_build_args: dict[str, list[str]],
> +        default_library: str | None = None,
> +        **dpdk_args: str | bool,
> +    ):
>          """Initialize the meson arguments.
>
>          Args:
> +            dpdk_build_args: The DPDK build arguments specified in the
> test run configuration file.
>              default_library: The default library type, Meson supports
> ``shared``, ``static`` and
>                  ``both``. Defaults to :data:`None`, in which case the
> argument won't be used.
>              dpdk_args: The arguments found in ``meson_options.txt`` in
> root DPDK directory.
> @@ -121,6 +127,19 @@ def __init__(self, default_library: str | None =
> None, **dpdk_args: str | bool):
>              )
>          )
>
> +        arguments = []
> +        for option, value in dpdk_build_args.items():
> +            if option == "c_args":
> +                values = " ".join(f"-{val}" for val in value)
> +                arguments.append(f'-D{option}="{values}"')
> +            elif option == "flags":
> +                values = " ".join(f"--{val}" for val in value)
> +                arguments.append(values)
> +            else:
> +                arguments.append(f" -D{option}={value[0]}")
> +
> +        self._dpdk_args = " ".join(arguments)
> +
>      def __str__(self) -> str:
>          """The actual args."""
>          return " ".join(f"{self._default_library}
> {self._dpdk_args}".split())
> --
> 2.54.0
>
>

Reply via email to