From patchwork Wed Nov 27 14:56:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148914 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7022145DB7; Wed, 27 Nov 2024 15:57:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6836B4064C; Wed, 27 Nov 2024 15:57:07 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 4717B4060A for ; Wed, 27 Nov 2024 15:57:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719426; x=1764255426; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=k7bZKaaddQfFZl7k3csSaXOZ8zRTHC6zafqbhlb0hm8=; b=n7ksyBXcvngNeub6DOto8mMYo5RkMu1IODd91posRMWCauOIppYNXJnr 0rDQXU6dNLnW7dmZ6Ge6Fj9+QWE0PTQ8blul3QefIjnFTXHW01iePIhC5 cObSNQnxSx2NAG7ibuLvA/oYwebsm9QUL8UzNoaMEEsbhnTGf2QTW0Aar abX8s3quXnj2XGxCjqbkIcwENlRlPchxXq0nbWnzHTE9UwtaxTl3lawH0 ZIF1A9AlNwcQmtBbXQ+dHuj/VMUa5kdJ8pSCx3h4SuLEw8ee1L0U7jdPF /9fGBElPVPR95SQrgI+m5FXriIAUo5yvBUU1sJ+d93ak5wPC+8NbEIk6I w==; X-CSE-ConnectionGUID: M2MdwvfHS/+MBq8+yE7E6w== X-CSE-MsgGUID: O+cbXEu1Rim1iPeLzrgzzA== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782124" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782124" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:05 -0800 X-CSE-ConnectionGUID: 5Z8n/vikRiOnhkpDGZoa9w== X-CSE-MsgGUID: O9wMmI7cRFujb5Qt/t9mdw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911427" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:03 -0800 From: Anatoly Burakov To: dev@dpdk.org, Reshma Pattan , Nicolas Chautru , Brian Dooley , Aman Singh , Akhil Goyal , Fan Zhang , David Hunt , Sivaprasad Tummala Subject: [PATCH v5 1/8] build: introduce optional internal dependencies Date: Wed, 27 Nov 2024 14:56:49 +0000 Message-ID: <40329352caf42b56109a3b36ca783811cd5f1e10.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Allow specifying internal dependencies as either mandatory or optional. Specifying a dependency as optional will mean that the component being built will not be skipped if said dependency is not being built. At build time, the build system will resolve any optional dependencies and add them to the list of dependencies to be built. Any source files requiring said optional depepdencies will still have to be added explicitly to the build by the respective component (e.g. adding BPF-related files when BPF support is being built). Signed-off-by: Bruce Richardson Signed-off-by: Anatoly Burakov --- Notes: v4 -> v5: - Automatically handle optional dependencies based on Bruce's earlier patch [1] [1] https://patches.dpdk.org/project/dpdk/patch/20231220142152.492556-4-bruce.richardson@intel.com/ app/meson.build | 14 ++++++- app/proc-info/meson.build | 4 +- app/test-bbdev/meson.build | 18 +++------ app/test-crypto-perf/meson.build | 4 +- app/test-pmd/meson.build | 56 +++++++++------------------ app/test/meson.build | 12 +++--- drivers/meson.build | 13 ++++++- examples/ethtool/meson.build | 4 +- examples/l2fwd-crypto/meson.build | 4 +- examples/l3fwd/meson.build | 4 +- examples/meson.build | 13 ++++++- examples/vm_power_manager/meson.build | 16 +++----- lib/meson.build | 13 ++++++- 13 files changed, 89 insertions(+), 86 deletions(-) diff --git a/app/meson.build b/app/meson.build index e2db888ae1..61202495bd 100644 --- a/app/meson.build +++ b/app/meson.build @@ -66,6 +66,7 @@ foreach app:apps # external package/library requirements ext_deps = [] deps = [] + optional_deps = [] if not enable_apps.contains(app) build = false @@ -83,10 +84,19 @@ foreach app:apps endif endif + # resolve any optional internal dependencies + def_lib = get_option('default_library') + foreach d: optional_deps + # if optional dependency is defined, add it to the deps list + if is_variable(def_lib + '_rte_' + d) + deps += [d] + endif + endforeach + if build dep_objs = [] foreach d:deps - var_name = get_option('default_library') + '_rte_' + d + var_name = def_lib + '_rte_' + d if not is_variable(var_name) build = false reason = 'missing internal dependency, "@0@"'.format(d) @@ -111,7 +121,7 @@ foreach app:apps dpdk_apps_enabled += app link_libs = [] - if get_option('default_library') == 'static' + if def_lib == 'static' link_libs = dpdk_static_libraries + dpdk_drivers endif diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build index 4f83f29a64..5fefb0857e 100644 --- a/app/proc-info/meson.build +++ b/app/proc-info/meson.build @@ -9,6 +9,4 @@ endif sources = files('main.c') deps += ['ethdev', 'security', 'eventdev'] -if dpdk_conf.has('RTE_LIB_METRICS') - deps += 'metrics' -endif +optional_deps += 'metrics' diff --git a/app/test-bbdev/meson.build b/app/test-bbdev/meson.build index 926e0a5271..bd38694eaf 100644 --- a/app/test-bbdev/meson.build +++ b/app/test-bbdev/meson.build @@ -14,15 +14,9 @@ sources = files( 'test_bbdev_vector.c', ) deps += ['bbdev', 'bus_vdev'] -if dpdk_conf.has('RTE_BASEBAND_FPGA_LTE_FEC') - deps += ['baseband_fpga_lte_fec'] -endif -if dpdk_conf.has('RTE_BASEBAND_FPGA_5GNR_FEC') - deps += ['baseband_fpga_5gnr_fec'] -endif -if dpdk_conf.has('RTE_BASEBAND_ACC') - deps += ['baseband_acc'] -endif -if dpdk_conf.has('RTE_BASEBAND_LA12XX') - deps += ['baseband_la12xx'] -endif +optional_deps += [ + 'baseband_fpga_lte_fec', + 'baseband_fpga_5gnr_fec', + 'baseband_acc', + 'baseband_la12xx' +] diff --git a/app/test-crypto-perf/meson.build b/app/test-crypto-perf/meson.build index 7b02b518f0..1ac0ac1099 100644 --- a/app/test-crypto-perf/meson.build +++ b/app/test-crypto-perf/meson.build @@ -20,6 +20,4 @@ sources = files( 'main.c', ) deps += ['cryptodev', 'net', 'security'] -if dpdk_conf.has('RTE_CRYPTO_SCHEDULER') - deps += 'crypto_scheduler' -endif +optional_deps += 'crypto_scheduler' diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build index f1c36529b4..bbb0c83fa5 100644 --- a/app/test-pmd/meson.build +++ b/app/test-pmd/meson.build @@ -34,47 +34,29 @@ sources = files( if dpdk_conf.has('RTE_HAS_JANSSON') ext_deps += jansson_dep endif - -deps += ['ethdev', 'cmdline'] -if dpdk_conf.has('RTE_CRYPTO_SCHEDULER') - deps += 'crypto_scheduler' -endif -if dpdk_conf.has('RTE_LIB_BITRATESTATS') - deps += 'bitratestats' -endif if dpdk_conf.has('RTE_LIB_BPF') sources += files('bpf_cmd.c') - deps += 'bpf' -endif -if dpdk_conf.has('RTE_LIB_GRO') - deps += 'gro' -endif -if dpdk_conf.has('RTE_LIB_GSO') - deps += 'gso' -endif -if dpdk_conf.has('RTE_LIB_LATENCYSTATS') - deps += 'latencystats' -endif -if dpdk_conf.has('RTE_LIB_METRICS') - deps += 'metrics' -endif -if dpdk_conf.has('RTE_LIB_PDUMP') - deps += 'pdump' -endif -if dpdk_conf.has('RTE_NET_BNXT') - deps += 'net_bnxt' -endif -if dpdk_conf.has('RTE_NET_I40E') - deps += 'net_i40e' -endif -if dpdk_conf.has('RTE_NET_IXGBE') - deps += 'net_ixgbe' -endif -if dpdk_conf.has('RTE_NET_DPAA') - deps += ['bus_dpaa', 'mempool_dpaa', 'net_dpaa'] endif +deps += ['ethdev', 'cmdline'] +optional_deps += [ + 'crypto_scheduler', + 'bitratestats', + 'bpf', + 'gro', + 'gso', + 'latencystats', + 'metrics', + 'pdump', + 'net_bnxt', + 'net_i40e', + 'net_ixgbe', + 'bus_dpaa', + 'mempool_dpaa', + 'net_dpaa' +] + # Driver-specific commands are located in driver directories. includes = include_directories('.') sources += testpmd_drivers_sources -deps += testpmd_drivers_deps +optional_deps += testpmd_drivers_deps diff --git a/app/test/meson.build b/app/test/meson.build index d5cb6a7f7a..36c2016a49 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -7,7 +7,7 @@ sources += files('commands.c', 'test.c') # optional dependencies: some files may use these - and so we should link them in - # but do not explicitly require them so they are not listed in the per-file lists below -optional_deps = ['crypto_scheduler', 'lpm'] +opt_deps = ['crypto_scheduler', 'lpm'] # some other utility C files, providing functions used by various tests # so we need to include these deps in the dependency list for the files using those fns. @@ -219,8 +219,8 @@ foreach f, f_deps : source_file_deps break else # technically we might not need this dep, but adding it is harmless - if d not in deps - deps += d + if d not in optional_deps and d not in deps + optional_deps += d endif endif endforeach @@ -241,9 +241,9 @@ foreach f, f_deps : source_file_deps endif endforeach # add the optional dependencies -foreach d:optional_deps - if is_variable(def_lib + '_rte_' + d) and d not in deps - deps += d +foreach d:opt_deps + if d not in optional_deps and d not in deps + optional_deps += d endif endforeach diff --git a/drivers/meson.build b/drivers/meson.build index 495e21b54a..63b0bc1e37 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -132,6 +132,7 @@ foreach subpath:subdirs includes = [include_directories(drv_path)] # set up internal deps. Drivers can append/override as necessary deps = std_deps + optional_deps = [] # ext_deps: Stores external library dependency got # using dependency() (preferred) or find_library(). # For the find_library() case (but not with dependency()) we also @@ -173,11 +174,21 @@ foreach subpath:subdirs # get dependency objs from strings shared_deps = ext_deps static_deps = ext_deps + + # resolve any optional internal dependencies + def_lib = get_option('default_library') + foreach d: optional_deps + # if optional dependency is defined, add it to the deps list + if is_variable(def_lib + '_rte_' + d) + deps += [d] + endif + endforeach + foreach d:deps if not build break endif - if not is_variable('shared_rte_' + d) + if not is_variable(def_lib + '_rte_' + d) build = false reason = 'missing internal dependency, "@0@"'.format(d) if dpdk_libs_deprecated.contains(d) diff --git a/examples/ethtool/meson.build b/examples/ethtool/meson.build index d7f63d48af..bb2a7fbb89 100644 --- a/examples/ethtool/meson.build +++ b/examples/ethtool/meson.build @@ -19,8 +19,6 @@ sources = files( includes = include_directories('lib', 'ethtool-app') deps += 'bus_pci' -if dpdk_conf.has('RTE_NET_IXGBE') - deps += 'net_ixgbe' -endif +optional_deps += 'net_ixgbe' allow_experimental_apis = true diff --git a/examples/l2fwd-crypto/meson.build b/examples/l2fwd-crypto/meson.build index bb44c88882..3081573f05 100644 --- a/examples/l2fwd-crypto/meson.build +++ b/examples/l2fwd-crypto/meson.build @@ -7,9 +7,7 @@ # DPDK instance, use 'make' deps += 'cryptodev' -if dpdk_conf.has('RTE_CRYPTO_SCHEDULER') - deps += 'crypto_scheduler' -endif +optional_deps += 'crypto_scheduler' allow_experimental_apis = true sources = files( 'main.c', diff --git a/examples/l3fwd/meson.build b/examples/l3fwd/meson.build index c25de77bba..9a5f487429 100644 --- a/examples/l3fwd/meson.build +++ b/examples/l3fwd/meson.build @@ -18,6 +18,4 @@ sources = files( 'l3fwd_lpm.c', 'main.c', ) -if dpdk_conf.has('RTE_LIB_EVENTDEV') - deps += 'eventdev' -endif +optional_deps += 'eventdev' diff --git a/examples/meson.build b/examples/meson.build index 8e8968a1fa..14b8aadf68 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -98,12 +98,23 @@ foreach example: examples ext_deps = [] includes = [include_directories(example, 'common')] deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline'] + optional_deps = [] subdir(example) if build dep_objs = ext_deps + + # resolve any optional internal dependencies + def_lib = get_option('default_library') + foreach d: optional_deps + # if optional dependency is defined, add it to the deps list + if is_variable(def_lib + '_rte_' + d) + deps += [d] + endif + endforeach + foreach d:deps - var_name = get_option('default_library') + '_rte_' + d + var_name = def_lib + '_rte_' + d if not is_variable(var_name) build = false message('Missing dependency "@0@" for example "@1@"'.format(d, name)) diff --git a/examples/vm_power_manager/meson.build b/examples/vm_power_manager/meson.build index dcf23198eb..ba39b2cfab 100644 --- a/examples/vm_power_manager/meson.build +++ b/examples/vm_power_manager/meson.build @@ -8,17 +8,11 @@ deps += ['power', 'power_kvm_vm'] -if dpdk_conf.has('RTE_NET_BNXT') - deps += ['net_bnxt'] -endif - -if dpdk_conf.has('RTE_NET_I40E') - deps += ['net_i40e'] -endif - -if dpdk_conf.has('RTE_NET_IXGBE') - deps += ['net_ixgbe'] -endif +optional_deps += [ + 'net_bnxt', + 'net_i40e', + 'net_ixgbe' +] allow_experimental_apis = true sources = files( diff --git a/lib/meson.build b/lib/meson.build index ce92cb5537..76bf849852 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -134,6 +134,7 @@ foreach l:libraries # external package/library requirements ext_deps = [] deps = [] + optional_deps = [] # eal is standard dependency once built if dpdk_conf.has('RTE_LIB_EAL') deps += ['eal'] @@ -171,11 +172,21 @@ foreach l:libraries shared_deps = ext_deps static_deps = ext_deps + + # resolve any optional internal dependencies + def_lib = get_option('default_library') + foreach d: optional_deps + # if optional dependency is defined, add it to the deps list + if is_variable(def_lib + '_rte_' + d) + deps += [d] + endif + endforeach + foreach d:deps if not build break endif - if not is_variable('shared_rte_' + d) + if not is_variable(def_lib + '_rte_' + d) build = false reason = 'missing internal dependency, "@0@"'.format(d) if dpdk_libs_deprecated.contains(d) From patchwork Wed Nov 27 14:56:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148915 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 520F145DB7; Wed, 27 Nov 2024 15:57:19 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8D69B4065C; Wed, 27 Nov 2024 15:57:08 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id DA1694060A for ; Wed, 27 Nov 2024 15:57:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719427; x=1764255427; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=3QvQPKW/pK19nTUWcmmPAIZsbJjADQ4mK2TmXoAWme0=; b=bKmn6C3XDqalkUWjbE9TxgWjtwHExreeYR9c9nhOI9HlF9P8Tz4jc31y GIZpHZUV4x643CLE3eqtvn8Ix6g57GZ1HL64KB/r/ZEccoSAlnlGylV0O lVBTpkYlQtQrwrz7xfqHJ7urroCMqBdR48dpjhE3WiZBZ4GdDP0DpvCWn +xh+sSEXPR3MDbjpCerT6x+1V8PwBWGfNBL8Rso/ekpE0tymJeENVYRuW Z4aXLGFvLyChX5nmNoyt9qgSQFFSEvrbflUJ/aByBmMCStPg5mGOIPy6L KSDVZIrXJZ0bsVswZplEhajWtMvCLAVNl0zWFJ3FC2K4GN+YWo6N0UPTB w==; X-CSE-ConnectionGUID: y+8IngO/TbOqQl8qli+cCQ== X-CSE-MsgGUID: zgwfX+xYS12IW6vh1P2ICg== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782129" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782129" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:07 -0800 X-CSE-ConnectionGUID: +b2B3qvpRo+/bop3UsDFBA== X-CSE-MsgGUID: BUmJ6MuySL6LwcBlyHYcLw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911429" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:05 -0800 From: Anatoly Burakov To: dev@dpdk.org Subject: [PATCH v5 2/8] build: output a dependency log in build directory Date: Wed, 27 Nov 2024 14:56:50 +0000 Message-ID: X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson As meson processes our DPDK source tree it manages dependencies specified by each individual driver. To enable future analysis of the dependency links between components, log the dependencies of each DPDK component as it gets processed. This could potentially allow other tools to automatically enable or disable components based on the desired end components to be built, e.g. if the user requests net/ice, ensure that common/iavf is also enabled in the drivers. The output file produced is in "dot" or "graphviz" format, which allows producing a graphical representation of the DPDK dependency tree if so desired. For example: "dot -Tpng -O build/deps.dot" to produce the image file "build/deps.dot.png". Signed-off-by: Bruce Richardson Acked-by: Konstantin Ananyev Signed-off-by: Anatoly Burakov --- Notes: v4 -> v5: - Change output format to include display name app/meson.build | 17 +++++++- buildtools/log-deps.py | 94 ++++++++++++++++++++++++++++++++++++++++++ buildtools/meson.build | 2 + drivers/meson.build | 14 +++++++ examples/meson.build | 18 +++++++- lib/meson.build | 14 +++++++ 6 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 buildtools/log-deps.py diff --git a/app/meson.build b/app/meson.build index 61202495bd..a971738d40 100644 --- a/app/meson.build +++ b/app/meson.build @@ -77,7 +77,22 @@ foreach app:apps endif if build + # call into subdir may update name so record it here + display_name = name + subdir(name) + app_name = 'dpdk-' + name + + # log mandatory dependencies + cmds = ['--type', 'app'] + cmds += ['--display-name', display_name] + run_command([log_deps_cmd, cmds, app_name, deps], check: false) + + # log optional dependencies, if any + if optional_deps.length() > 0 + cmds += ['--optional'] + run_command([log_deps_cmd, cmds, app_name, optional_deps], check: false) + endif if not build and require_apps error('Cannot build explicitly requested app "@0@".\n'.format(name) + '\tReason: ' + reason) @@ -125,7 +140,7 @@ foreach app:apps link_libs = dpdk_static_libraries + dpdk_drivers endif - exec = executable('dpdk-' + name, + exec = executable(app_name, [ sources, resources ], c_args: cflags, link_args: ldflags, diff --git a/buildtools/log-deps.py b/buildtools/log-deps.py new file mode 100644 index 0000000000..7a99b129d7 --- /dev/null +++ b/buildtools/log-deps.py @@ -0,0 +1,94 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +"""Utility script to build up a list of dependencies from meson.""" + +import os +import sys +import argparse +import typing as T + + +def file_to_list(filename: str) -> T.List[str]: + """Read file into a list of strings.""" + with open(filename, encoding="utf-8") as f: + return f.readlines() + + +def list_to_file(filename: str, lines: T.List[str]): + """Write a list of strings out to a file.""" + with open(filename, "w", encoding="utf-8") as f: + f.writelines(lines) + + +def gen_deps( + component_type: str, + optional: bool, + component: str, + display_name: T.Optional[str], + deps: T.List[str], +) -> str: + """Generate a dependency graph for meson.""" + dep_list_str = '", "'.join(deps) + deps_str = "" if not deps else f' -> {{ "{dep_list_str}" }}' + # we define custom attributes for the nodes + attr_str = f'dpdk_componentType="{component_type}"' + if optional: + # we use a dotted line to represent optional dependencies + attr_str += ',style="dotted"' + if display_name is not None: + attr_str += f',dpdk_displayName="{display_name}"' + return f'"{component}"{deps_str} [{attr_str}]\n' + + +def _main(): + depsfile = f'{os.environ["MESON_BUILD_ROOT"]}/deps.dot' + + # to reset the deps file on each build, the script is called without any params + if len(sys.argv) == 1: + os.remove(depsfile) + sys.exit(0) + + # we got arguments, parse them + parser = argparse.ArgumentParser( + description="Generate a dependency graph for meson." + ) + # type is required + parser.add_argument( + "--type", required=True, help="Type of dependency (lib, examples, etc.)" + ) + parser.add_argument( + "--optional", action="store_true", help="Whether the dependency is optional" + ) + parser.add_argument( + "--display-name", + help="Component name as it is used in the build system", + ) + # component is required + parser.add_argument("component", help="The component to add to the graph") + parser.add_argument("deps", nargs="*", help="The dependencies of the component") + + parsed = parser.parse_args() + + try: + contents = file_to_list(depsfile) + except FileNotFoundError: + contents = ["digraph {\n", "}\n"] + + # occasionally, component binary name may be different from what it appears in Meson. + display_name = parsed.display_name + + c_type = parsed.type + optional = parsed.optional + component = parsed.component + deps = parsed.deps + contents[-1] = gen_deps(c_type, optional, component, display_name, deps) + + contents.append("}\n") + + list_to_file(depsfile, contents) + + +if __name__ == "__main__": + _main() diff --git a/buildtools/meson.build b/buildtools/meson.build index 4e2c1217a2..13a0477245 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -26,6 +26,8 @@ header_gen_cmd = py3 + files('gen-header.py') has_hugepages_cmd = py3 + files('has-hugepages.py') cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') check_dts_requirements = py3 + files('check-dts-requirements.py') +log_deps_cmd = py3 + files('log-deps.py') +run_command(log_deps_cmd, check: false) # call with no parameters to reset the file # install any build tools that end-users might want also install_data([ diff --git a/drivers/meson.build b/drivers/meson.build index 63b0bc1e37..e9df747a24 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -157,6 +157,8 @@ foreach subpath:subdirs endif if build + # call into subdir may update name so record it here + display_name = '@0@/@1@'.format(class, name) # pull in driver directory which should update all the local variables subdir(drv_path) @@ -171,6 +173,18 @@ foreach subpath:subdirs +'\tReason: ' + reason) endif + # log mandatory dependencies + cmds = ['--type', 'drivers'] + cmds += ['--display-name', display_name] + drv_name = class + '_' + name + run_command([log_deps_cmd, cmds, drv_name, deps], check: false) + + # log optional dependencies, if any + if optional_deps.length() > 0 + cmds += ['--optional'] + run_command([log_deps_cmd, cmds, drv_name, optional_deps], check: false) + endif + # get dependency objs from strings shared_deps = ext_deps static_deps = ext_deps diff --git a/examples/meson.build b/examples/meson.build index 14b8aadf68..d1856dbafc 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -99,11 +99,27 @@ foreach example: examples includes = [include_directories(example, 'common')] deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline'] optional_deps = [] + + # call into subdir may update name so record it here + display_name = example + subdir(example) + example_name = 'dpdk-' + name if build dep_objs = ext_deps + # log mandatory dependencies + cmds = ['--type', 'examples'] + cmds += ['--display-name', display_name] + run_command([log_deps_cmd, cmds, example_name, deps], check: false) + + # log optional dependencies, if any + if optional_deps.length() > 0 + cmds += ['--optional'] + run_command([log_deps_cmd, cmds, example_name, optional_deps], check: false) + endif + # resolve any optional internal dependencies def_lib = get_option('default_library') foreach d: optional_deps @@ -135,7 +151,7 @@ foreach example: examples if allow_experimental_apis cflags += '-DALLOW_EXPERIMENTAL_API' endif - executable('dpdk-' + name, sources, + executable(example_name, sources, include_directories: includes, link_whole: link_whole_libs, link_args: ldflags, diff --git a/lib/meson.build b/lib/meson.build index 76bf849852..db0d121b3c 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -160,7 +160,21 @@ foreach l:libraries endif if build + # as per warning below, directory name should match library name but it is not considered an error + display_name = name + subdir(l) + + # log mandatory dependencies + cmds = ['--type', 'lib'] + cmds += ['--display-name', display_name] + run_command([log_deps_cmd, cmds, name, deps], check: false) + + # log optional dependencies, if any + if optional_deps.length() > 0 + cmds += ['--optional'] + run_command([log_deps_cmd, cmds, name, optional_deps], check: false) + endif if not build and require_libs error('Cannot build explicitly requested lib "@0@".\n'.format(name) +'\tReason: ' + reason) From patchwork Wed Nov 27 14:56:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148916 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DA4F945DB7; Wed, 27 Nov 2024 15:57:28 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 156F440662; Wed, 27 Nov 2024 15:57:12 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id E04D54060A for ; Wed, 27 Nov 2024 15:57:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719428; x=1764255428; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=1pw2gvhQIht+ZTtmaolkZt7gpSCfIFFG8pMCHJLW1gg=; b=VvfkXNKWUmgM053Z9vH+dDcXVE76lo1T+lzyF2RSCJa1KwepTFA7/RKS HhXZJevS4K36OWq1+2coWEyaTbm8J2m/ok7qTXtJM7kuF3O0CGcF8mJtH U/+XDK3bHuGBzoxnrIaJlM3n1GCu6WIPO/bqBSOv4lii//NE6VaNPHAeY 1knXEpG+HzfgRzJtmagATuv62+qRZQQMiX7psoKvUBD2SDdejOtz0CWC3 hXG2gQ7uwS2QZdLI/Sx9g9cggjCFTDF+yTF4ZTsZHppz1YvKWNNs650iz Zuq/s0mF8/H3o8iVpafZg83N8pDQtLw/bXGZE1YwFkueHy2w+EiNgM9b5 g==; X-CSE-ConnectionGUID: rKwCRlYSS82Mo63D2EfH/Q== X-CSE-MsgGUID: uTjMBk3QS6KOeXfHVhqnxA== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782133" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782133" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:08 -0800 X-CSE-ConnectionGUID: vRIHPzFyR82uAhZaCVq1cw== X-CSE-MsgGUID: YvUT0qATQ/C/cq3g/Ze/Xw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911442" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:07 -0800 From: Anatoly Burakov To: dev@dpdk.org Subject: [PATCH v5 3/8] devtools: add script to flag unneeded dependencies Date: Wed, 27 Nov 2024 14:56:51 +0000 Message-ID: X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson While not a serious problem, DPDK components often list more dependencies than are actually necessary to build, due to the use of recursive dependencies. In extreme cases, such as with core libraries, this can lead to longer configuration times due to meson having to deduplicate long lists of dependencies. Therefore we can add a script to identify when a component has got unnecessary dependencies listed. Signed-off-by: Bruce Richardson --- devtools/find-duplicate-deps.py | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 devtools/find-duplicate-deps.py diff --git a/devtools/find-duplicate-deps.py b/devtools/find-duplicate-deps.py new file mode 100755 index 0000000000..cbd0ca7196 --- /dev/null +++ b/devtools/find-duplicate-deps.py @@ -0,0 +1,62 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +"""Identify any superfluous dependencies listed in DPDK deps graph.""" + +import sys + +all_deps = {} + + +class dep: + """Holds a component and its dependencies.""" + + def __init__(self, name, dep_names): + """Create and process a component and its deps.""" + self.name = name.strip('" ') + self.base_deps = [all_deps[dn.strip('" ')] for dn in dep_names] + self.recursive_deps = [] + for d in self.base_deps: + self.recursive_deps.extend(d.base_deps) + self.recursive_deps.extend(d.recursive_deps) + self.extra_deps = [] + for d in self.base_deps: + if d in self.recursive_deps: + self.extra_deps.append(d.name) + if self.extra_deps: + print(f'{self.name}: extra deps {self.extra_deps}') + + def dict_add(self, d): + """Add this object to a dictionary by name.""" + d[self.name] = self + + +def remove_attrs(ln): + """Remove attributes from a line.""" + while ln.find("[") != -1: + start = ln.find("[") + end = ln.find("]") + ln = ln[:start] + ln[end + 1 :] + return ln.strip() + + +def main(argv): + """Read the dependency tree from a dot file and process it.""" + if len(argv) != 2: + print(f'Usage: {argv[0]} /deps.dot', file=sys.stderr) + sys.exit(1) + + with open(argv[1]) as f: + for ln in f.readlines(): + ln = remove_attrs(ln.strip()) + if '->' in ln: + name, deps = ln.split('->') + deps = deps.strip(' {}') + dep(name, deps.split(',')).dict_add(all_deps) + elif ln.startswith('"') and ln.endswith('"'): + dep(ln.strip('"'), []).dict_add(all_deps) + + +if __name__ == '__main__': + main(sys.argv) From patchwork Wed Nov 27 14:56:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148917 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 411D245DB7; Wed, 27 Nov 2024 15:57:36 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0D0D74067E; Wed, 27 Nov 2024 15:57:13 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 083D140662 for ; Wed, 27 Nov 2024 15:57:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719429; x=1764255429; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=//bsx283Ppj6wx5dsaJ+Mf4X5aoLtShqrn+u80OyLoY=; b=hRcULR/rJUmROYLB8SRaTvpneDzkgN+p4gLOUZHAWUBYWWxGkUIyJfnu W2wDW8AteB2LdXer54vACR2IOyQzPoXffx76iF2BH5mQSKKd1BSVjWyzs 6nxORpx+4P+yzONPOGU02PBgVu/KTRA6LvugrCBrAPRMvui2mhneCnkmL QBV/mLl0dZxh3uR0GB9vkhjdT8on/4MU2jc8LlcMgYHubrBRSxKYfEElQ eWWFBXccDjQNef+Ddvhkrq775/H8nlyxoaROa9Tj2TwIDO0J0BX3mXYDL tFseGA61xiKSUUZytEI4EhZ8+7JUXD0x44oYPqTDzfZlpC6Pwa0WDSxjN g==; X-CSE-ConnectionGUID: esRGFh/ZTmKYdIK4C4j7HA== X-CSE-MsgGUID: Pt9OblkxQSGHsTcuXJhlKg== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782136" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782136" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:09 -0800 X-CSE-ConnectionGUID: mtydG0+wSDi/t4DClMvJOQ== X-CSE-MsgGUID: vWCbQYwIS76UPw/9Kf8GeA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911444" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:08 -0800 From: Anatoly Burakov To: dev@dpdk.org Subject: [PATCH v5 4/8] build: remove kvargs from driver class dependencies Date: Wed, 27 Nov 2024 14:56:52 +0000 Message-ID: <6abf704f54550cd6a45cd8ec2e82187189b3a47b.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson The kvargs library is used by EAL, and therefore is implicitly a dependency of every DPDK driver. Remove it from the minimum set of dependencies for each driver class as it's unnecessary to call it out there. Signed-off-by: Bruce Richardson --- drivers/event/meson.build | 2 +- drivers/net/meson.build | 2 +- drivers/regex/meson.build | 2 +- drivers/vdpa/meson.build | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/event/meson.build b/drivers/event/meson.build index d6706b57f7..2708833adf 100644 --- a/drivers/event/meson.build +++ b/drivers/event/meson.build @@ -19,4 +19,4 @@ if not (toolchain == 'gcc' and cc.version().version_compare('<4.8.6') and dpdk_conf.has('RTE_ARCH_ARM64')) drivers += 'octeontx' endif -std_deps = ['eventdev', 'kvargs'] +std_deps = ['eventdev'] diff --git a/drivers/net/meson.build b/drivers/net/meson.build index dafd637ba4..3b388ead24 100644 --- a/drivers/net/meson.build +++ b/drivers/net/meson.build @@ -65,6 +65,6 @@ drivers = [ 'vmxnet3', 'zxdh', ] -std_deps = ['ethdev', 'kvargs'] # 'ethdev' also pulls in mbuf, net, eal etc +std_deps = ['ethdev'] # 'ethdev' also pulls in mbuf, net, eal etc std_deps += ['bus_pci'] # very many PMDs depend on PCI, so make std std_deps += ['bus_vdev'] # same with vdev bus diff --git a/drivers/regex/meson.build b/drivers/regex/meson.build index ff2a8fea89..10192e7c77 100644 --- a/drivers/regex/meson.build +++ b/drivers/regex/meson.build @@ -5,4 +5,4 @@ drivers = [ 'mlx5', 'cn9k', ] -std_deps = ['ethdev', 'kvargs', 'regexdev'] # 'ethdev' also pulls in mbuf, net, eal etc +std_deps = ['ethdev', 'regexdev'] # 'ethdev' also pulls in mbuf, net, eal etc diff --git a/drivers/vdpa/meson.build b/drivers/vdpa/meson.build index 896e8e0304..e01c277b9e 100644 --- a/drivers/vdpa/meson.build +++ b/drivers/vdpa/meson.build @@ -11,5 +11,5 @@ drivers = [ 'nfp', 'sfc', ] -std_deps = ['bus_pci', 'kvargs'] +std_deps = ['bus_pci'] std_deps += ['vhost'] From patchwork Wed Nov 27 14:56:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148918 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C2EC45DB7; Wed, 27 Nov 2024 15:57:43 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3083040665; Wed, 27 Nov 2024 15:57:20 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 41D0F40665 for ; Wed, 27 Nov 2024 15:57:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719439; x=1764255439; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=IY55eu0egPfbmpjBpr3oHImXShMVhz/SSL0iNiP4sWA=; b=H9X/OyHNHTRZmikZ8tiunyTDloLJzs/ooWu6q+Sn2Uj5rTBybwtP5Mqt vjNxxt1XQRYAKkCk4QlgRz2PvwSby9v/Mt0u2UA+Rt/xQvW1tBM5Zzhlb wEftpnUDH2sg5oNTX057jT3o15S0KIG60Y0vUPIHl7SUiz4SitiSSqEet dZeYS33Nsr6Zx+cSjUJ3vchI3aHaYBYq4g2kj06EDMVMKMayianI62TKw 5v17DQNI58d1IYdQaHfC1relGVlxFIdGCI046+57aBp/HvbyCvXgOSfpD rwQylLDtGJwY1TUy7R6ip337Wf/gFOlaAfLMIdBeBX+dVfJR20ztrtv1G A==; X-CSE-ConnectionGUID: K5tMXGhYSE+R6u6mKmbHEQ== X-CSE-MsgGUID: LLM22v04S+exfNWZ96Y4+A== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782149" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782149" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:17 -0800 X-CSE-ConnectionGUID: ilA1wk3XQb23QG5tR4NftA== X-CSE-MsgGUID: IyVjl51HQP6I5/4TCUbOCQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911470" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:09 -0800 From: Anatoly Burakov To: dev@dpdk.org, Chengwen Feng , Nicolas Chautru , Konstantin Ananyev , Fan Zhang , Ashish Gupta , Akhil Goyal , =?utf-8?q?Mattias_R=C3=B6nnblom?= , David Hunt , Kevin Laatz , Bruce Richardson , Byron Marohn , Yipeng Wang , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Jerin Jacob , Vladimir Medvedkin , Elena Agostini , Kiran Kumar K , Nithin Dabilpuram , Zhirun Yan , Jiayu Hu , Sameh Gobriel , Reshma Pattan , =?utf-8?q?Morten_Br=C3=B8rup?= , Srikanth Yalavarthi , Pavan Nikhilesh , Stephen Hemminger , Anoob Joseph , Volodymyr Fialko , Cristian Dumitrescu , Sivaprasad Tummala , Sachin Saxena , Hemant Agrawal , Honnappa Nagarahalli , Ori Kam , Maxime Coquelin , Chenbo Xia Subject: [PATCH v5 5/8] build: reduce library dependencies Date: Wed, 27 Nov 2024 14:56:53 +0000 Message-ID: <73e75848e3ca1ff6706ab3766f785cebaedc9503.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson Rather than having each library depend up on EAL + any extra libs, we can take advantage of recursive dependency support in meson and just assign the dependencies of each directory directly, rather than appending to the array. For libraries which only depend upon EAL, keep that as a default, but for libraries which depend upon even a single extra lib, that EAL dependency is unnecessary. Going further, we can identify using the find_duplicate_deps.py script any unnecessary deps in each library's list, and remove them to slim the dependency tree down. Reducing number of dependencies means that meson takes less time processing and deduplicating the dependency tree for each component, and also shrinks the dependency graph for DPDK itself. Signed-off-by: Bruce Richardson --- lib/argparse/meson.build | 2 +- lib/bbdev/meson.build | 2 +- lib/bitratestats/meson.build | 2 +- lib/bpf/meson.build | 2 +- lib/cmdline/meson.build | 2 +- lib/compressdev/meson.build | 2 +- lib/cryptodev/meson.build | 2 +- lib/dispatcher/meson.build | 2 +- lib/distributor/meson.build | 2 +- lib/dmadev/meson.build | 2 -- lib/eal/meson.build | 5 +---- lib/efd/meson.build | 2 +- lib/ethdev/meson.build | 2 +- lib/eventdev/meson.build | 3 +-- lib/fib/meson.build | 4 +--- lib/gpudev/meson.build | 2 +- lib/graph/meson.build | 2 +- lib/gro/meson.build | 2 +- lib/gso/meson.build | 2 +- lib/hash/meson.build | 4 +--- lib/ip_frag/meson.build | 2 +- lib/ipsec/meson.build | 2 +- lib/kvargs/meson.build | 2 +- lib/latencystats/meson.build | 2 +- lib/lpm/meson.build | 4 +--- lib/mbuf/meson.build | 2 +- lib/member/meson.build | 2 +- lib/mempool/meson.build | 2 +- lib/metrics/meson.build | 2 +- lib/mldev/meson.build | 2 +- lib/net/meson.build | 2 +- lib/node/meson.build | 2 +- lib/pcapng/meson.build | 2 +- lib/pdcp/meson.build | 2 +- lib/pdump/meson.build | 2 +- lib/pipeline/meson.build | 2 +- lib/port/meson.build | 2 +- lib/power/meson.build | 3 +-- lib/rawdev/meson.build | 2 -- lib/rcu/meson.build | 2 +- lib/regexdev/meson.build | 2 +- lib/reorder/meson.build | 2 +- lib/rib/meson.build | 2 +- lib/ring/meson.build | 1 - lib/sched/meson.build | 2 +- lib/security/meson.build | 2 +- lib/table/meson.build | 2 +- lib/telemetry/meson.build | 2 +- lib/vhost/meson.build | 2 +- 49 files changed, 46 insertions(+), 62 deletions(-) diff --git a/lib/argparse/meson.build b/lib/argparse/meson.build index b6a08ca049..96abc8766f 100644 --- a/lib/argparse/meson.build +++ b/lib/argparse/meson.build @@ -4,4 +4,4 @@ sources = files('rte_argparse.c') headers = files('rte_argparse.h') -deps += ['log'] +deps = ['log'] diff --git a/lib/bbdev/meson.build b/lib/bbdev/meson.build index 07685e7578..2e68aa7873 100644 --- a/lib/bbdev/meson.build +++ b/lib/bbdev/meson.build @@ -11,4 +11,4 @@ sources = files('rte_bbdev.c') headers = files('rte_bbdev.h', 'rte_bbdev_pmd.h', 'rte_bbdev_op.h') -deps += ['mbuf'] +deps = ['mbuf'] diff --git a/lib/bitratestats/meson.build b/lib/bitratestats/meson.build index ede7e0a579..8defcd53bf 100644 --- a/lib/bitratestats/meson.build +++ b/lib/bitratestats/meson.build @@ -3,4 +3,4 @@ sources = files('rte_bitrate.c') headers = files('rte_bitrate.h') -deps += ['ethdev', 'metrics'] +deps = ['metrics'] diff --git a/lib/bpf/meson.build b/lib/bpf/meson.build index aa258a9061..82127bc657 100644 --- a/lib/bpf/meson.build +++ b/lib/bpf/meson.build @@ -31,7 +31,7 @@ headers = files('bpf_def.h', 'rte_bpf.h', 'rte_bpf_ethdev.h') -deps += ['mbuf', 'net', 'ethdev'] +deps = ['ethdev'] dep = dependency('libelf', required: false, method: 'pkg-config') if dep.found() diff --git a/lib/cmdline/meson.build b/lib/cmdline/meson.build index 63fb69100d..4451f3da29 100644 --- a/lib/cmdline/meson.build +++ b/lib/cmdline/meson.build @@ -31,4 +31,4 @@ else sources += files('cmdline_os_unix.c') endif -deps += ['net'] +deps = ['net'] diff --git a/lib/compressdev/meson.build b/lib/compressdev/meson.build index c80295dc0d..4b86955baf 100644 --- a/lib/compressdev/meson.build +++ b/lib/compressdev/meson.build @@ -16,4 +16,4 @@ driver_sdk_headers = files( 'rte_compressdev_pmd.h', 'rte_compressdev_internal.h', ) -deps += ['kvargs', 'mbuf'] +deps = ['mbuf'] diff --git a/lib/cryptodev/meson.build b/lib/cryptodev/meson.build index 4734acf321..74e42ac700 100644 --- a/lib/cryptodev/meson.build +++ b/lib/cryptodev/meson.build @@ -20,4 +20,4 @@ driver_sdk_headers += files( 'cryptodev_pmd.h', ) -deps += ['kvargs', 'mbuf', 'rcu', 'telemetry'] +deps = ['mbuf', 'rcu'] diff --git a/lib/dispatcher/meson.build b/lib/dispatcher/meson.build index ffaef26a6d..4dc1759951 100644 --- a/lib/dispatcher/meson.build +++ b/lib/dispatcher/meson.build @@ -10,4 +10,4 @@ endif sources = files('rte_dispatcher.c') headers = files('rte_dispatcher.h') -deps += ['eventdev'] +deps = ['eventdev'] diff --git a/lib/distributor/meson.build b/lib/distributor/meson.build index 24988c5827..ba43273bc3 100644 --- a/lib/distributor/meson.build +++ b/lib/distributor/meson.build @@ -14,4 +14,4 @@ else sources += files('rte_distributor_match_generic.c') endif headers = files('rte_distributor.h') -deps += ['mbuf'] +deps = ['mbuf'] diff --git a/lib/dmadev/meson.build b/lib/dmadev/meson.build index e66dcb66b0..70b375f1cb 100644 --- a/lib/dmadev/meson.build +++ b/lib/dmadev/meson.build @@ -11,5 +11,3 @@ sources = files('rte_dmadev.c', 'rte_dmadev_trace_points.c') headers = files('rte_dmadev.h') indirect_headers += files('rte_dmadev_core.h', 'rte_dmadev_trace_fp.h') driver_sdk_headers += files('rte_dmadev_pmd.h') - -deps += ['telemetry'] diff --git a/lib/eal/meson.build b/lib/eal/meson.build index e1d6c4cf17..d25443d097 100644 --- a/lib/eal/meson.build +++ b/lib/eal/meson.build @@ -14,10 +14,7 @@ subdir(exec_env) subdir(arch_subdir) -deps += ['log', 'kvargs'] -if not is_windows - deps += ['telemetry'] -endif +deps = ['kvargs', 'telemetry'] if dpdk_conf.has('RTE_USE_LIBBSD') ext_deps += libbsd endif diff --git a/lib/efd/meson.build b/lib/efd/meson.build index 343f14e1f3..da0ee7f803 100644 --- a/lib/efd/meson.build +++ b/lib/efd/meson.build @@ -9,4 +9,4 @@ endif sources = files('rte_efd.c') headers = files('rte_efd.h') -deps += ['ring', 'hash'] +deps = ['hash'] diff --git a/lib/ethdev/meson.build b/lib/ethdev/meson.build index f1d2586591..fc53a9c309 100644 --- a/lib/ethdev/meson.build +++ b/lib/ethdev/meson.build @@ -53,7 +53,7 @@ if is_linux ) endif -deps += ['net', 'kvargs', 'meter', 'telemetry'] +deps = ['net', 'meter'] if is_freebsd annotate_locks = false diff --git a/lib/eventdev/meson.build b/lib/eventdev/meson.build index a04bb86f0f..237df998ce 100644 --- a/lib/eventdev/meson.build +++ b/lib/eventdev/meson.build @@ -38,5 +38,4 @@ driver_sdk_headers += files( 'event_timer_adapter_pmd.h', ) -deps += ['ring', 'ethdev', 'hash', 'mempool', 'mbuf', 'timer', 'cryptodev', 'dmadev'] -deps += ['telemetry'] +deps = ['ethdev', 'hash', 'timer', 'cryptodev', 'dmadev'] diff --git a/lib/fib/meson.build b/lib/fib/meson.build index 0c19cc8201..ac040d5372 100644 --- a/lib/fib/meson.build +++ b/lib/fib/meson.build @@ -10,9 +10,7 @@ endif sources = files('rte_fib.c', 'rte_fib6.c', 'dir24_8.c', 'trie.c') headers = files('rte_fib.h', 'rte_fib6.h') -deps += ['rib'] -deps += ['rcu'] -deps += ['net'] +deps = ['rib', 'rcu'] if dpdk_conf.has('RTE_ARCH_X86_64') if target_has_avx512 diff --git a/lib/gpudev/meson.build b/lib/gpudev/meson.build index d21fadc052..5d883b85a1 100644 --- a/lib/gpudev/meson.build +++ b/lib/gpudev/meson.build @@ -13,4 +13,4 @@ sources = files( 'gpudev.c', ) -deps += ['mbuf'] +deps = ['mbuf'] diff --git a/lib/graph/meson.build b/lib/graph/meson.build index 0cb15442ab..f58f107d52 100644 --- a/lib/graph/meson.build +++ b/lib/graph/meson.build @@ -25,4 +25,4 @@ indirect_headers += files( 'rte_graph_worker_common.h', ) -deps += ['eal', 'pcapng', 'mempool', 'ring'] +deps = ['pcapng'] diff --git a/lib/gro/meson.build b/lib/gro/meson.build index dbce05220d..c6de6ceebc 100644 --- a/lib/gro/meson.build +++ b/lib/gro/meson.build @@ -10,4 +10,4 @@ sources = files( 'gro_vxlan_udp4.c', ) headers = files('rte_gro.h') -deps += ['ethdev'] +deps = ['ethdev'] diff --git a/lib/gso/meson.build b/lib/gso/meson.build index 622411df8f..bc99109933 100644 --- a/lib/gso/meson.build +++ b/lib/gso/meson.build @@ -10,4 +10,4 @@ sources = files( 'rte_gso.c', ) headers = files('rte_gso.h') -deps += ['ethdev'] +deps = ['ethdev'] diff --git a/lib/hash/meson.build b/lib/hash/meson.build index 7ce504ee8b..e6cb1ebe3b 100644 --- a/lib/hash/meson.build +++ b/lib/hash/meson.build @@ -26,6 +26,4 @@ sources = files( 'rte_thash_gf2_poly_math.c', ) -deps += ['net'] -deps += ['ring'] -deps += ['rcu'] +deps = ['net', 'rcu'] diff --git a/lib/ip_frag/meson.build b/lib/ip_frag/meson.build index ea2de09f75..cacf391460 100644 --- a/lib/ip_frag/meson.build +++ b/lib/ip_frag/meson.build @@ -10,4 +10,4 @@ sources = files( 'ip_frag_internal.c', ) headers = files('rte_ip_frag.h') -deps += ['ethdev', 'hash'] +deps = ['ethdev', 'hash'] diff --git a/lib/ipsec/meson.build b/lib/ipsec/meson.build index 5c5a4aae78..7abbac5b6a 100644 --- a/lib/ipsec/meson.build +++ b/lib/ipsec/meson.build @@ -14,6 +14,6 @@ sources = files('esp_inb.c', 'esp_outb.c', headers = files('rte_ipsec.h', 'rte_ipsec_sa.h', 'rte_ipsec_sad.h') indirect_headers += files('rte_ipsec_group.h') -deps += ['mbuf', 'net', 'cryptodev', 'security', 'hash', 'telemetry'] +deps = ['security', 'hash'] annotate_locks = false diff --git a/lib/kvargs/meson.build b/lib/kvargs/meson.build index 7eae744a8f..7282b0ff8d 100644 --- a/lib/kvargs/meson.build +++ b/lib/kvargs/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -deps += 'log' +deps = ['log'] sources = files('rte_kvargs.c') headers = files('rte_kvargs.h') diff --git a/lib/latencystats/meson.build b/lib/latencystats/meson.build index 286558dd79..f8b9a8aeec 100644 --- a/lib/latencystats/meson.build +++ b/lib/latencystats/meson.build @@ -3,4 +3,4 @@ sources = files('rte_latencystats.c') headers = files('rte_latencystats.h') -deps += ['metrics', 'ethdev'] +deps = ['metrics'] diff --git a/lib/lpm/meson.build b/lib/lpm/meson.build index fae4f79fb9..5031b085c4 100644 --- a/lib/lpm/meson.build +++ b/lib/lpm/meson.build @@ -18,6 +18,4 @@ indirect_headers += files( 'rte_lpm_sse.h', 'rte_lpm_sve.h', ) -deps += ['hash'] -deps += ['rcu'] -deps += ['net'] +deps = ['hash'] diff --git a/lib/mbuf/meson.build b/lib/mbuf/meson.build index 2cee9057a5..22f5a3038b 100644 --- a/lib/mbuf/meson.build +++ b/lib/mbuf/meson.build @@ -20,4 +20,4 @@ headers = files( 'rte_mbuf_pool_ops.h', 'rte_mbuf_dyn.h', ) -deps += ['mempool'] +deps = ['mempool'] diff --git a/lib/member/meson.build b/lib/member/meson.build index 02ef59795e..b951aa566e 100644 --- a/lib/member/meson.build +++ b/lib/member/meson.build @@ -16,7 +16,7 @@ sources = files( 'rte_member_vbf.c', ) -deps += ['hash', 'ring'] +deps = ['hash'] # compile AVX512 version if: if dpdk_conf.has('RTE_ARCH_X86_64') and binutils_ok diff --git a/lib/mempool/meson.build b/lib/mempool/meson.build index 8099a56466..0c0b3ea0c5 100644 --- a/lib/mempool/meson.build +++ b/lib/mempool/meson.build @@ -19,4 +19,4 @@ headers = files( 'rte_mempool.h', 'rte_mempool_trace_fp.h', ) -deps += ['ring', 'telemetry'] +deps = ['ring'] diff --git a/lib/metrics/meson.build b/lib/metrics/meson.build index 8c1c4b4b49..5165967646 100644 --- a/lib/metrics/meson.build +++ b/lib/metrics/meson.build @@ -8,4 +8,4 @@ if dpdk_conf.has('RTE_HAS_JANSSON') ext_deps += jansson_dep endif -deps += ['ethdev', 'telemetry'] +deps = ['ethdev'] diff --git a/lib/mldev/meson.build b/lib/mldev/meson.build index 2c933baad6..6069fff1f0 100644 --- a/lib/mldev/meson.build +++ b/lib/mldev/meson.build @@ -41,7 +41,7 @@ driver_sdk_headers += files( 'mldev_utils.h', ) -deps += ['mempool', 'mbuf'] +deps = ['mbuf'] if get_option('buildtype').contains('debug') cflags += [ '-DRTE_LIBRTE_ML_DEV_DEBUG' ] diff --git a/lib/net/meson.build b/lib/net/meson.build index 8afcc4ed37..a99d57e514 100644 --- a/lib/net/meson.build +++ b/lib/net/meson.build @@ -37,7 +37,7 @@ sources = files( 'rte_net.c', 'rte_net_crc.c', ) -deps += ['mbuf'] +deps = ['mbuf'] if dpdk_conf.has('RTE_ARCH_X86_64') net_crc_sse42_cpu_support = (cc.get_define('__PCLMUL__', args: machine_args) != '') diff --git a/lib/node/meson.build b/lib/node/meson.build index 0bed97a96c..368ce1dc63 100644 --- a/lib/node/meson.build +++ b/lib/node/meson.build @@ -34,4 +34,4 @@ headers = files( # Strict-aliasing rules are violated by uint8_t[] to context size casts. cflags += '-fno-strict-aliasing' -deps += ['graph', 'mbuf', 'lpm', 'ethdev', 'mempool', 'cryptodev', 'ip_frag'] +deps = ['graph', 'lpm', 'cryptodev', 'ip_frag'] diff --git a/lib/pcapng/meson.build b/lib/pcapng/meson.build index 4549925d41..e8f059a9b0 100644 --- a/lib/pcapng/meson.build +++ b/lib/pcapng/meson.build @@ -4,4 +4,4 @@ sources = files('rte_pcapng.c') headers = files('rte_pcapng.h') -deps += ['ethdev'] +deps = ['ethdev'] diff --git a/lib/pdcp/meson.build b/lib/pdcp/meson.build index f4f9246bcb..f6f3d6237a 100644 --- a/lib/pdcp/meson.build +++ b/lib/pdcp/meson.build @@ -18,4 +18,4 @@ sources = files( headers = files('rte_pdcp.h') indirect_headers += files('rte_pdcp_group.h') -deps += ['mbuf', 'net', 'cryptodev', 'security', 'reorder'] +deps = ['security', 'reorder'] diff --git a/lib/pdump/meson.build b/lib/pdump/meson.build index da8d51b616..23d7db794b 100644 --- a/lib/pdump/meson.build +++ b/lib/pdump/meson.build @@ -9,4 +9,4 @@ endif sources = files('rte_pdump.c') headers = files('rte_pdump.h') -deps += ['ethdev', 'bpf', 'pcapng'] +deps = ['bpf', 'pcapng'] diff --git a/lib/pipeline/meson.build b/lib/pipeline/meson.build index fd5e0dc6bb..f08eca70d1 100644 --- a/lib/pipeline/meson.build +++ b/lib/pipeline/meson.build @@ -25,4 +25,4 @@ headers = files( 'rte_swx_extern.h', 'rte_swx_ctl.h', ) -deps += ['port', 'table', 'meter', 'sched', 'cryptodev', 'ipsec'] +deps = ['table', 'ipsec'] diff --git a/lib/port/meson.build b/lib/port/meson.build index b597772872..0524c3c049 100644 --- a/lib/port/meson.build +++ b/lib/port/meson.build @@ -40,7 +40,7 @@ headers = files( 'rte_swx_port_ring.h', 'rte_swx_port_source_sink.h', ) -deps += ['ethdev', 'sched', 'ip_frag', 'cryptodev', 'eventdev'] +deps = ['sched', 'ip_frag', 'eventdev'] if dpdk_conf.has('RTE_HAS_LIBPCAP') dpdk_conf.set('RTE_PORT_PCAP', 1) diff --git a/lib/power/meson.build b/lib/power/meson.build index b3a7bc7b2e..5673db4e5c 100644 --- a/lib/power/meson.build +++ b/lib/power/meson.build @@ -26,5 +26,4 @@ headers = files( 'rte_power_qos.h', 'rte_power_uncore.h', ) - -deps += ['timer', 'ethdev'] +deps = ['timer', 'ethdev'] diff --git a/lib/rawdev/meson.build b/lib/rawdev/meson.build index 7dfc3d5cf9..8841f003d7 100644 --- a/lib/rawdev/meson.build +++ b/lib/rawdev/meson.build @@ -9,5 +9,3 @@ endif sources = files('rte_rawdev.c') headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h') - -deps += ['telemetry'] diff --git a/lib/rcu/meson.build b/lib/rcu/meson.build index 71143f5210..b78f46fad7 100644 --- a/lib/rcu/meson.build +++ b/lib/rcu/meson.build @@ -10,4 +10,4 @@ endif sources = files('rte_rcu_qsbr.c') headers = files('rte_rcu_qsbr.h') -deps += ['ring'] +deps = ['ring'] diff --git a/lib/regexdev/meson.build b/lib/regexdev/meson.build index 426e764ece..3e20fa387d 100644 --- a/lib/regexdev/meson.build +++ b/lib/regexdev/meson.build @@ -10,4 +10,4 @@ endif sources = files('rte_regexdev.c') headers = files('rte_regexdev.h', 'rte_regexdev_driver.h') indirect_headers += files('rte_regexdev_core.h') -deps += ['mbuf'] +deps = ['mbuf'] diff --git a/lib/reorder/meson.build b/lib/reorder/meson.build index 03aed53d90..1e088a7d97 100644 --- a/lib/reorder/meson.build +++ b/lib/reorder/meson.build @@ -3,4 +3,4 @@ sources = files('rte_reorder.c') headers = files('rte_reorder.h') -deps += ['mbuf'] +deps = ['mbuf'] diff --git a/lib/rib/meson.build b/lib/rib/meson.build index e98f708481..70a9072255 100644 --- a/lib/rib/meson.build +++ b/lib/rib/meson.build @@ -4,4 +4,4 @@ sources = files('rte_rib.c', 'rte_rib6.c') headers = files('rte_rib.h', 'rte_rib6.h') -deps += ['net', 'mempool'] +deps = ['net'] diff --git a/lib/ring/meson.build b/lib/ring/meson.build index 7fca958ed7..c20685c689 100644 --- a/lib/ring/meson.build +++ b/lib/ring/meson.build @@ -18,4 +18,3 @@ indirect_headers += files ( 'rte_ring_rts.h', 'rte_ring_rts_elem_pvt.h', ) -deps += ['telemetry'] diff --git a/lib/sched/meson.build b/lib/sched/meson.build index df75db51ed..7ca8ec09df 100644 --- a/lib/sched/meson.build +++ b/lib/sched/meson.build @@ -15,4 +15,4 @@ headers = files( 'rte_sched_common.h', 'rte_pie.h', ) -deps += ['mbuf', 'meter'] +deps = ['mbuf', 'meter'] diff --git a/lib/security/meson.build b/lib/security/meson.build index 1034a7a299..e4545a8c72 100644 --- a/lib/security/meson.build +++ b/lib/security/meson.build @@ -3,4 +3,4 @@ sources = files('rte_security.c') headers = files('rte_security.h', 'rte_security_driver.h') -deps += ['mempool', 'cryptodev', 'net'] +deps = ['cryptodev', 'net'] diff --git a/lib/table/meson.build b/lib/table/meson.build index 9b3d9ac759..78d7e87eab 100644 --- a/lib/table/meson.build +++ b/lib/table/meson.build @@ -39,7 +39,7 @@ headers = files( 'rte_table_lpm_ipv6.h', 'rte_table_stub.h', ) -deps += ['mbuf', 'port', 'lpm', 'hash', 'acl'] +deps = ['port', 'lpm', 'acl'] indirect_headers += files( 'rte_lru_arm64.h', diff --git a/lib/telemetry/meson.build b/lib/telemetry/meson.build index 489d000047..3e3a2cfc32 100644 --- a/lib/telemetry/meson.build +++ b/lib/telemetry/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -deps += 'log' +deps = ['log'] sources = files('telemetry.c', 'telemetry_data.c', 'telemetry_legacy.c') headers = files('rte_telemetry.h') includes += include_directories('../metrics') diff --git a/lib/vhost/meson.build b/lib/vhost/meson.build index 51bcf17244..5103bca069 100644 --- a/lib/vhost/meson.build +++ b/lib/vhost/meson.build @@ -45,4 +45,4 @@ headers = files( driver_sdk_headers = files( 'vdpa_driver.h', ) -deps += ['ethdev', 'cryptodev', 'hash', 'pci', 'dmadev'] +deps = ['ethdev', 'cryptodev', 'hash', 'pci', 'dmadev'] From patchwork Wed Nov 27 14:56:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148919 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B31FE45DB7; Wed, 27 Nov 2024 15:57:51 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EEEA74066E; Wed, 27 Nov 2024 15:57:33 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 157324066E for ; Wed, 27 Nov 2024 15:57:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719452; x=1764255452; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=XAcDmyXmSgzQ7rQVLG2vaILzVxFGoACjtaR0z6T/XUk=; b=OqQwdR1fIAx2/3w+aSUwKr2JiqJkWQcoESoeog2yzOYaxNzKXzJKyKXr J43Ydf7l+cPiM54d6deP0wkHImwDI0Z8ygp256QKkMrYe6FkH8XFRRNK7 ziE/JVrHB8yYhC8kM5gQbRLicW58va8lB+PbATFahwdSqYmD+SMlSHtga xGcv5AHmXxTkoIdwGG8/a61XLlZ9imYkb3nLcpu3R53qsn+nIvJ/HPqn4 vD/GjuqYSgsGyR1GhRigj63eoLmwOdU7N1cOPAKFTOdZMvTROq7fYAq/f pOqrvIEjVejP+0aYxrXACCmS8/gnXM5n+362IhD1kUZWQIQbQi/8y0Xfe A==; X-CSE-ConnectionGUID: kAomBJUwRrit+3RJSLA/tA== X-CSE-MsgGUID: mxQUWpQGQdCmyH+dIr+aPA== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782200" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782200" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:30 -0800 X-CSE-ConnectionGUID: 0IP5ENfZS/y21uWircMg1Q== X-CSE-MsgGUID: bom8CfVNRiqy+G1mZi29mw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911514" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:18 -0800 From: Anatoly Burakov To: dev@dpdk.org, Nicolas Chautru , Gagandeep Singh , Hemant Agrawal , Parav Pandit , Xueming Li , Sachin Saxena , Rosen Xu , Chenbo Xia , Nipun Gupta , Tomasz Duszynski , Chengwen Feng , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Harman Kalra , Anoob Joseph , Jingjing Wu , Praveen Shetty , Dariusz Sosnowski , Viacheslav Ovsiienko , Bing Zhao , Ori Kam , Suanming Mou , Matan Azrad , Kai Ji , Fan Zhang , Ashish Gupta , Nagadheeraj Rottela , Ajit Khaparde , Vikas Gupta , Ankur Dwivedi , Tejasree Kondoj , Pablo de Lara , Srikanth Jampala , Vamsi Attunuru , Gowrishankar Muthukrishnan , Vidya Sagar Velumuri , Kevin Laatz , Bruce Richardson , Pavan Nikhilesh , Shijith Thotton , Pravin Pathak , Jerin Jacob , Harry van Haaren , Ashwin Sekhar T K , Srikanth Yalavarthi , Vladimir Medvedkin , Ian Stokes , Long Li , Wei Hu , Andrew Rybchenko , Cristian Dumitrescu , Maxime Coquelin , Jakub Palider , Yong Zhang , Liron Himi , Vijay Kumar Srivastava Subject: [PATCH v5 6/8] build: reduce driver dependencies Date: Wed, 27 Nov 2024 14:56:54 +0000 Message-ID: <8791f24718116e4a51e7e0be350a5a405ef4f455.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson Remove any unnecessary dependencies from the driver dependency lists. This will give each driver a near-minimum set of required dependencies. Signed-off-by: Bruce Richardson Reviewed-by: Rosen Xu --- drivers/baseband/fpga_5gnr_fec/meson.build | 2 +- drivers/baseband/fpga_lte_fec/meson.build | 2 +- drivers/baseband/la12xx/meson.build | 2 +- drivers/baseband/null/meson.build | 2 +- drivers/baseband/turbo_sw/meson.build | 2 +- drivers/bus/auxiliary/meson.build | 2 -- drivers/bus/dpaa/meson.build | 2 +- drivers/bus/fslmc/meson.build | 2 +- drivers/bus/ifpga/meson.build | 2 +- drivers/bus/pci/meson.build | 4 +--- drivers/bus/platform/meson.build | 1 - drivers/bus/uacce/meson.build | 2 -- drivers/bus/vdev/meson.build | 2 -- drivers/common/cnxk/meson.build | 4 ++-- drivers/common/cpt/meson.build | 2 +- drivers/common/idpf/meson.build | 2 +- drivers/common/mlx5/meson.build | 2 +- drivers/common/qat/meson.build | 3 ++- drivers/compress/mlx5/meson.build | 2 +- drivers/compress/nitrox/meson.build | 2 +- drivers/compress/octeontx/meson.build | 2 +- drivers/crypto/bcmfs/meson.build | 2 +- drivers/crypto/cnxk/meson.build | 2 +- drivers/crypto/dpaa_sec/meson.build | 2 +- drivers/crypto/ipsec_mb/meson.build | 2 +- drivers/crypto/mlx5/meson.build | 2 +- drivers/crypto/nitrox/meson.build | 2 +- drivers/dma/cnxk/meson.build | 2 +- drivers/dma/dpaa/meson.build | 2 +- drivers/dma/dpaa2/meson.build | 2 +- drivers/dma/odm/meson.build | 2 +- drivers/dma/skeleton/meson.build | 2 +- drivers/event/cnxk/meson.build | 2 +- drivers/event/dlb2/meson.build | 2 +- drivers/event/dpaa2/meson.build | 2 +- drivers/event/octeontx/meson.build | 3 +-- drivers/event/sw/meson.build | 2 +- drivers/mempool/cnxk/meson.build | 2 +- drivers/mempool/dpaa/meson.build | 2 +- drivers/mempool/dpaa2/meson.build | 2 +- drivers/mempool/octeontx/meson.build | 2 +- drivers/ml/cnxk/meson.build | 2 +- drivers/net/cnxk/meson.build | 4 +--- drivers/net/iavf/meson.build | 2 +- drivers/net/ice/meson.build | 2 +- drivers/net/mana/meson.build | 2 +- drivers/net/mlx5/meson.build | 2 +- drivers/net/sfc/meson.build | 2 +- drivers/net/softnic/meson.build | 2 +- drivers/net/virtio/meson.build | 2 +- drivers/raw/cnxk_bphy/meson.build | 2 +- drivers/raw/cnxk_gpio/meson.build | 2 +- drivers/raw/gdtc/meson.build | 2 +- drivers/raw/ntb/meson.build | 2 +- drivers/raw/skeleton/meson.build | 2 +- drivers/regex/cn9k/meson.build | 2 +- drivers/regex/mlx5/meson.build | 2 +- drivers/vdpa/ifc/meson.build | 2 +- drivers/vdpa/meson.build | 3 +-- drivers/vdpa/mlx5/meson.build | 2 +- drivers/vdpa/sfc/meson.build | 2 +- 61 files changed, 59 insertions(+), 71 deletions(-) diff --git a/drivers/baseband/fpga_5gnr_fec/meson.build b/drivers/baseband/fpga_5gnr_fec/meson.build index c3678d23eb..31b9e92fbb 100644 --- a/drivers/baseband/fpga_5gnr_fec/meson.build +++ b/drivers/baseband/fpga_5gnr_fec/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2020 Intel Corporation -deps += ['bus_vdev', 'ring', 'pci', 'bus_pci'] +deps += ['bus_vdev', 'bus_pci'] sources = files('rte_fpga_5gnr_fec.c') diff --git a/drivers/baseband/fpga_lte_fec/meson.build b/drivers/baseband/fpga_lte_fec/meson.build index 14e07826ef..fbf24755db 100644 --- a/drivers/baseband/fpga_lte_fec/meson.build +++ b/drivers/baseband/fpga_lte_fec/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Intel Corporation -deps += ['bus_vdev', 'ring', 'pci', 'bus_pci'] +deps += ['bus_vdev', 'bus_pci'] sources = files('fpga_lte_fec.c') diff --git a/drivers/baseband/la12xx/meson.build b/drivers/baseband/la12xx/meson.build index 7b7e41c961..e1dbdd0fa7 100644 --- a/drivers/baseband/la12xx/meson.build +++ b/drivers/baseband/la12xx/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright 2020-2021 NXP -deps += ['bus_vdev', 'ring'] +deps += ['bus_vdev'] sources = files('bbdev_la12xx.c') diff --git a/drivers/baseband/null/meson.build b/drivers/baseband/null/meson.build index 22863f0bd8..716d6c6fdb 100644 --- a/drivers/baseband/null/meson.build +++ b/drivers/baseband/null/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Luca Boccassi -deps += ['bus_vdev', 'ring'] +deps += ['bus_vdev'] sources = files('bbdev_null.c') diff --git a/drivers/baseband/turbo_sw/meson.build b/drivers/baseband/turbo_sw/meson.build index a9035a753e..ac18e8a9b6 100644 --- a/drivers/baseband/turbo_sw/meson.build +++ b/drivers/baseband/turbo_sw/meson.build @@ -26,5 +26,5 @@ if dep_dec5g.found() cflags += ['-DRTE_BBDEV_SDK_AVX512'] endif -deps += ['bus_vdev', 'ring'] +deps += ['bus_vdev'] sources = files('bbdev_turbo_software.c') diff --git a/drivers/bus/auxiliary/meson.build b/drivers/bus/auxiliary/meson.build index 10468fd130..a113f11743 100644 --- a/drivers/bus/auxiliary/meson.build +++ b/drivers/bus/auxiliary/meson.build @@ -13,5 +13,3 @@ if is_linux endif require_iova_in_mbuf = false - -deps += ['kvargs'] diff --git a/drivers/bus/dpaa/meson.build b/drivers/bus/dpaa/meson.build index 5506f2bffc..a2314fdebe 100644 --- a/drivers/bus/dpaa/meson.build +++ b/drivers/bus/dpaa/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['common_dpaax', 'eventdev'] +deps = ['common_dpaax', 'eventdev'] sources = files( 'base/fman/fman.c', 'base/fman/fman_hw.c', diff --git a/drivers/bus/fslmc/meson.build b/drivers/bus/fslmc/meson.build index 70098ad778..a0e11f7081 100644 --- a/drivers/bus/fslmc/meson.build +++ b/drivers/bus/fslmc/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['common_dpaax', 'eventdev', 'kvargs'] +deps = ['common_dpaax', 'eventdev'] sources = files( 'fslmc_bus.c', 'fslmc_vfio.c', diff --git a/drivers/bus/ifpga/meson.build b/drivers/bus/ifpga/meson.build index dedc94db2d..e87b08eaf4 100644 --- a/drivers/bus/ifpga/meson.build +++ b/drivers/bus/ifpga/meson.build @@ -7,6 +7,6 @@ if is_windows subdir_done() endif -deps += ['pci', 'kvargs', 'rawdev'] +deps = ['pci', 'rawdev'] driver_sdk_headers += files('bus_ifpga_driver.h') sources = files('ifpga_bus.c') diff --git a/drivers/bus/pci/meson.build b/drivers/bus/pci/meson.build index fede114dc7..776c3d1550 100644 --- a/drivers/bus/pci/meson.build +++ b/drivers/bus/pci/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -deps += ['pci'] +deps = ['pci'] headers = files('rte_bus_pci.h') driver_sdk_headers = files('bus_pci_driver.h') sources = files('pci_common.c', @@ -31,5 +31,3 @@ if is_windows endif require_iova_in_mbuf = false - -deps += ['kvargs'] diff --git a/drivers/bus/platform/meson.build b/drivers/bus/platform/meson.build index 8633cc4e75..2039c23ac6 100644 --- a/drivers/bus/platform/meson.build +++ b/drivers/bus/platform/meson.build @@ -10,7 +10,6 @@ endif require_iova_in_mbuf = false -deps += ['kvargs'] sources = files( 'platform_params.c', 'platform.c', diff --git a/drivers/bus/uacce/meson.build b/drivers/bus/uacce/meson.build index a659d65f23..130148a315 100644 --- a/drivers/bus/uacce/meson.build +++ b/drivers/bus/uacce/meson.build @@ -8,5 +8,3 @@ endif sources = files('uacce.c') driver_sdk_headers += files('bus_uacce_driver.h') - -deps += ['kvargs'] diff --git a/drivers/bus/vdev/meson.build b/drivers/bus/vdev/meson.build index 50f0c8918d..24993c88a3 100644 --- a/drivers/bus/vdev/meson.build +++ b/drivers/bus/vdev/meson.build @@ -9,5 +9,3 @@ headers = files('rte_bus_vdev.h') driver_sdk_headers = files('bus_vdev_driver.h') require_iova_in_mbuf = false - -deps += ['kvargs'] diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build index 9e3fd44317..e4ee9474f6 100644 --- a/drivers/common/cnxk/meson.build +++ b/drivers/common/cnxk/meson.build @@ -8,7 +8,7 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') subdir_done() endif -deps = ['eal', 'pci', 'bus_pci', 'mbuf', 'security'] +deps = ['bus_pci', 'security'] sources = files( 'roc_ae.c', 'roc_aes.c', @@ -105,7 +105,7 @@ elif soc_type == 'cn20k' dpdk_conf.set('ROC_PLATFORM_CN20K', 1) endif -deps += ['bus_pci', 'net', 'telemetry'] +deps += ['bus_pci'] require_iova_in_mbuf = false diff --git a/drivers/common/cpt/meson.build b/drivers/common/cpt/meson.build index c09824a651..a4b000dc37 100644 --- a/drivers/common/cpt/meson.build +++ b/drivers/common/cpt/meson.build @@ -9,5 +9,5 @@ endif sources = files('cpt_fpm_tables.c', 'cpt_pmd_ops_helper.c') -deps = ['kvargs', 'pci', 'cryptodev'] +deps = ['pci', 'cryptodev'] includes += include_directories('../../crypto/octeontx') diff --git a/drivers/common/idpf/meson.build b/drivers/common/idpf/meson.build index 46fd45c03b..e24daac761 100644 --- a/drivers/common/idpf/meson.build +++ b/drivers/common/idpf/meson.build @@ -7,7 +7,7 @@ endif includes += include_directories('../iavf') -deps += ['mbuf'] +deps = ['mbuf'] sources = files( 'idpf_common_device.c', diff --git a/drivers/common/mlx5/meson.build b/drivers/common/mlx5/meson.build index 1eefc02f06..b94c956495 100644 --- a/drivers/common/mlx5/meson.build +++ b/drivers/common/mlx5/meson.build @@ -12,7 +12,7 @@ if is_windows and not is_ms_linker and not meson.is_cross_build() subdir_done() endif -deps += ['hash', 'pci', 'bus_pci', 'bus_auxiliary', 'net', 'eal', 'kvargs'] +deps += ['hash', 'bus_pci', 'bus_auxiliary'] sources += files( 'mlx5_devx_cmds.c', 'mlx5_common.c', diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build index 5a8de16fe0..5ffb56fc93 100644 --- a/drivers/common/qat/meson.build +++ b/drivers/common/qat/meson.build @@ -71,7 +71,7 @@ else endif endif -deps += ['bus_pci', 'cryptodev', 'net', 'compressdev'] +deps += ['bus_pci'] sources += files( 'qat_common.c', 'qat_qp.c', @@ -101,6 +101,7 @@ if qat_compress ] sources += files(join_paths(qat_compress_relpath, f)) endforeach + deps += ['compressdev'] endif if qat_crypto diff --git a/drivers/compress/mlx5/meson.build b/drivers/compress/mlx5/meson.build index 26a0e0cd09..ddb9e0f82c 100644 --- a/drivers/compress/mlx5/meson.build +++ b/drivers/compress/mlx5/meson.build @@ -7,7 +7,7 @@ if not is_linux subdir_done() endif -deps += ['common_mlx5', 'eal', 'compressdev'] +deps += ['common_mlx5', 'compressdev'] if not dpdk_conf.has('RTE_COMMON_MLX5') # avoid referencing undefined variables from common/mlx5 subdir_done() diff --git a/drivers/compress/nitrox/meson.build b/drivers/compress/nitrox/meson.build index 1becc66912..c3db4ac2bb 100644 --- a/drivers/compress/nitrox/meson.build +++ b/drivers/compress/nitrox/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['common_nitrox', 'bus_pci', 'compressdev'] +deps += ['common_nitrox', 'compressdev'] sources += files( 'nitrox_comp.c', diff --git a/drivers/compress/octeontx/meson.build b/drivers/compress/octeontx/meson.build index 16f973f4d7..0ccde449e8 100644 --- a/drivers/compress/octeontx/meson.build +++ b/drivers/compress/octeontx/meson.build @@ -9,7 +9,7 @@ endif sources = files('otx_zip.c', 'otx_zip_pmd.c') includes += include_directories('include') -deps += ['mempool_octeontx', 'bus_pci'] +deps += ['mempool_octeontx'] ext_deps += dep require_iova_in_mbuf = false diff --git a/drivers/crypto/bcmfs/meson.build b/drivers/crypto/bcmfs/meson.build index 5842f83a3b..678bab7398 100644 --- a/drivers/crypto/bcmfs/meson.build +++ b/drivers/crypto/bcmfs/meson.build @@ -9,7 +9,7 @@ if is_windows subdir_done() endif -deps += ['eal', 'bus_vdev'] +deps += ['bus_vdev'] sources = files( 'bcmfs_logs.c', 'bcmfs_device.c', diff --git a/drivers/crypto/cnxk/meson.build b/drivers/crypto/cnxk/meson.build index aa840fb7bb..c5a5725e1a 100644 --- a/drivers/crypto/cnxk/meson.build +++ b/drivers/crypto/cnxk/meson.build @@ -25,7 +25,7 @@ sources = files( ) headers = files('rte_pmd_cnxk_crypto.h') -deps += ['bus_pci', 'common_cnxk', 'security', 'eventdev'] +deps += ['common_cnxk', 'eventdev'] includes += include_directories('../../../lib/net', '../../event/cnxk') if get_option('buildtype').contains('debug') diff --git a/drivers/crypto/dpaa_sec/meson.build b/drivers/crypto/dpaa_sec/meson.build index f87ad6c7e7..9efac952c4 100644 --- a/drivers/crypto/dpaa_sec/meson.build +++ b/drivers/crypto/dpaa_sec/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['bus_dpaa', 'mempool_dpaa', 'security'] +deps += ['mempool_dpaa', 'security'] sources = files('dpaa_sec.c', 'dpaa_sec_raw_dp.c') includes += include_directories('../../bus/dpaa/include') diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build index 89ee03454b..01198cca68 100644 --- a/drivers/crypto/ipsec_mb/meson.build +++ b/drivers/crypto/ipsec_mb/meson.build @@ -45,5 +45,5 @@ sources = files( 'pmd_snow3g.c', 'pmd_zuc.c', ) -deps += ['bus_vdev', 'net', 'security'] +deps += ['bus_vdev', 'security'] require_iova_in_mbuf = false diff --git a/drivers/crypto/mlx5/meson.build b/drivers/crypto/mlx5/meson.build index d7bc8ec967..595053d8cd 100644 --- a/drivers/crypto/mlx5/meson.build +++ b/drivers/crypto/mlx5/meson.build @@ -7,7 +7,7 @@ if not (is_linux or is_windows) subdir_done() endif -deps += ['common_mlx5', 'eal', 'cryptodev'] +deps += ['common_mlx5', 'cryptodev'] if not dpdk_conf.has('RTE_COMMON_MLX5') # avoid referencing undefined variables from common/mlx5 subdir_done() diff --git a/drivers/crypto/nitrox/meson.build b/drivers/crypto/nitrox/meson.build index f8887713d2..85e3ca2b28 100644 --- a/drivers/crypto/nitrox/meson.build +++ b/drivers/crypto/nitrox/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['common_nitrox', 'bus_pci', 'cryptodev'] +deps += ['common_nitrox', 'cryptodev'] sources += files( 'nitrox_sym.c', diff --git a/drivers/dma/cnxk/meson.build b/drivers/dma/cnxk/meson.build index 8ccc1c2cb7..738774d542 100644 --- a/drivers/dma/cnxk/meson.build +++ b/drivers/dma/cnxk/meson.build @@ -12,7 +12,7 @@ driver_sdk_headers = files( 'cnxk_dma_event_dp.h', ) -deps += ['bus_pci', 'common_cnxk', 'dmadev', 'eventdev'] +deps += ['common_cnxk', 'eventdev'] includes += include_directories('../../event/cnxk') diff --git a/drivers/dma/dpaa/meson.build b/drivers/dma/dpaa/meson.build index c31a6d91fe..fec4a45767 100644 --- a/drivers/dma/dpaa/meson.build +++ b/drivers/dma/dpaa/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on linux' endif -deps += ['dmadev', 'bus_dpaa'] +deps += ['bus_dpaa'] sources = files('dpaa_qdma.c') if cc.has_argument('-Wno-pointer-arith') diff --git a/drivers/dma/dpaa2/meson.build b/drivers/dma/dpaa2/meson.build index a523f5edb4..cc4a02440e 100644 --- a/drivers/dma/dpaa2/meson.build +++ b/drivers/dma/dpaa2/meson.build @@ -8,7 +8,7 @@ endif build = dpdk_conf.has('RTE_MEMPOOL_DPAA2') reason = 'missing dependency, DPDK DPAA2 mempool driver' -deps += ['dmadev', 'bus_fslmc', 'mempool_dpaa2', 'ring', 'kvargs'] +deps += ['mempool_dpaa2'] sources = files('dpaa2_qdma.c') if cc.has_argument('-Wno-pointer-arith') diff --git a/drivers/dma/odm/meson.build b/drivers/dma/odm/meson.build index d597762d37..959e7e685d 100644 --- a/drivers/dma/odm/meson.build +++ b/drivers/dma/odm/meson.build @@ -7,7 +7,7 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64') subdir_done() endif -deps += ['bus_pci', 'dmadev', 'eal', 'mempool', 'pci'] +deps += ['bus_pci', 'dmadev', 'mempool'] sources = files('odm_dmadev.c', 'odm.c') diff --git a/drivers/dma/skeleton/meson.build b/drivers/dma/skeleton/meson.build index 77055683ad..0d703a36eb 100644 --- a/drivers/dma/skeleton/meson.build +++ b/drivers/dma/skeleton/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2021 HiSilicon Limited -deps += ['dmadev', 'kvargs', 'ring', 'bus_vdev'] +deps += ['dmadev', 'ring', 'bus_vdev'] sources = files( 'skeleton_dmadev.c', ) diff --git a/drivers/event/cnxk/meson.build b/drivers/event/cnxk/meson.build index 8aaf8116f7..e944f4277f 100644 --- a/drivers/event/cnxk/meson.build +++ b/drivers/event/cnxk/meson.build @@ -311,7 +311,7 @@ foreach flag: extra_flags endforeach headers = files('rte_pmd_cnxk_eventdev.h') -deps += ['bus_pci', 'common_cnxk', 'net_cnxk', 'crypto_cnxk', 'dma_cnxk'] +deps += ['net_cnxk', 'crypto_cnxk', 'dma_cnxk'] require_iova_in_mbuf = false diff --git a/drivers/event/dlb2/meson.build b/drivers/event/dlb2/meson.build index c024edb311..2bb1b97686 100644 --- a/drivers/event/dlb2/meson.build +++ b/drivers/event/dlb2/meson.build @@ -39,4 +39,4 @@ endif headers = files('rte_pmd_dlb2.h') -deps += ['mbuf', 'mempool', 'ring', 'pci', 'bus_pci'] +deps += ['bus_pci'] diff --git a/drivers/event/dpaa2/meson.build b/drivers/event/dpaa2/meson.build index dd5063af43..7dae1da32b 100644 --- a/drivers/event/dpaa2/meson.build +++ b/drivers/event/dpaa2/meson.build @@ -5,7 +5,7 @@ if not is_linux build = false reason = 'only supported on Linux' endif -deps += ['bus_vdev', 'net_dpaa2', 'crypto_dpaa2_sec'] +deps += ['net_dpaa2', 'crypto_dpaa2_sec'] sources = files( 'dpaa2_hw_dpcon.c', 'dpaa2_eventdev.c', diff --git a/drivers/event/octeontx/meson.build b/drivers/event/octeontx/meson.build index eb17e059d8..1227b2e18d 100644 --- a/drivers/event/octeontx/meson.build +++ b/drivers/event/octeontx/meson.build @@ -17,5 +17,4 @@ sources = files( 'timvf_probe.c', ) -deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx'] -deps += ['crypto_octeontx'] +deps = ['net_octeontx', 'crypto_octeontx'] diff --git a/drivers/event/sw/meson.build b/drivers/event/sw/meson.build index 3a3ebd72a3..450969aa7a 100644 --- a/drivers/event/sw/meson.build +++ b/drivers/event/sw/meson.build @@ -8,5 +8,5 @@ sources = files( 'sw_evdev_xstats.c', 'sw_evdev.c', ) -deps += ['hash', 'bus_vdev'] +deps += ['bus_vdev'] require_iova_in_mbuf = false diff --git a/drivers/mempool/cnxk/meson.build b/drivers/mempool/cnxk/meson.build index e388cce26a..7bbed325df 100644 --- a/drivers/mempool/cnxk/meson.build +++ b/drivers/mempool/cnxk/meson.build @@ -18,5 +18,5 @@ sources = files( ) headers = files('rte_pmd_cnxk_mempool.h') -deps += ['eal', 'mbuf', 'kvargs', 'bus_pci', 'common_cnxk', 'mempool'] +deps = ['common_cnxk'] require_iova_in_mbuf = false diff --git a/drivers/mempool/dpaa/meson.build b/drivers/mempool/dpaa/meson.build index c4e9994b83..39fc312344 100644 --- a/drivers/mempool/dpaa/meson.build +++ b/drivers/mempool/dpaa/meson.build @@ -6,5 +6,5 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['bus_dpaa'] +deps = ['bus_dpaa'] sources = files('dpaa_mempool.c') diff --git a/drivers/mempool/dpaa2/meson.build b/drivers/mempool/dpaa2/meson.build index 3d16d44158..0099b20b97 100644 --- a/drivers/mempool/dpaa2/meson.build +++ b/drivers/mempool/dpaa2/meson.build @@ -6,7 +6,7 @@ if not is_linux reason = 'only supported on Linux' endif -deps += ['bus_fslmc'] +deps = ['bus_fslmc'] sources = files('dpaa2_hw_mempool.c') headers = files('rte_dpaa2_mempool.h') diff --git a/drivers/mempool/octeontx/meson.build b/drivers/mempool/octeontx/meson.build index 3ccecac75d..f97bcf4a5a 100644 --- a/drivers/mempool/octeontx/meson.build +++ b/drivers/mempool/octeontx/meson.build @@ -12,6 +12,6 @@ sources = files( 'rte_mempool_octeontx.c', ) -deps += ['mbuf', 'bus_pci', 'common_octeontx'] +deps = ['mbuf', 'bus_pci', 'common_octeontx'] require_iova_in_mbuf = false diff --git a/drivers/ml/cnxk/meson.build b/drivers/ml/cnxk/meson.build index 0680a0faa5..6c99f5b57b 100644 --- a/drivers/ml/cnxk/meson.build +++ b/drivers/ml/cnxk/meson.build @@ -55,7 +55,7 @@ sources = files( 'cnxk_ml_utils.c', ) -deps += ['mldev', 'common_cnxk', 'kvargs', 'hash'] +deps += ['mldev', 'common_cnxk', 'hash'] if enable_mvtvm diff --git a/drivers/net/cnxk/meson.build b/drivers/net/cnxk/meson.build index 32ff8aadc0..48a546adb8 100644 --- a/drivers/net/cnxk/meson.build +++ b/drivers/net/cnxk/meson.build @@ -320,9 +320,7 @@ sources += files( endif endif - -deps += ['bus_pci', 'cryptodev', 'eventdev', 'security'] -deps += ['common_cnxk', 'mempool_cnxk'] +deps = ['eventdev', 'mempool_cnxk'] # Allow implicit vector conversions and strict aliasing warning extra_flags = ['-flax-vector-conversions', '-Wno-strict-aliasing'] diff --git a/drivers/net/iavf/meson.build b/drivers/net/iavf/meson.build index b48bb83438..4849c2341a 100644 --- a/drivers/net/iavf/meson.build +++ b/drivers/net/iavf/meson.build @@ -9,7 +9,7 @@ includes += include_directories('../../common/iavf') testpmd_sources = files('iavf_testpmd.c') -deps += ['common_iavf', 'security', 'cryptodev'] +deps += ['common_iavf', 'security'] sources = files( 'iavf_ethdev.c', diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build index 1c9dc0cc6d..f9e37f5386 100644 --- a/drivers/net/ice/meson.build +++ b/drivers/net/ice/meson.build @@ -18,7 +18,7 @@ sources = files( testpmd_sources = files('ice_testpmd.c') -deps += ['hash', 'net', 'common_iavf'] +deps += ['hash', 'common_iavf'] includes += include_directories('base', '../../common/iavf') if arch_subdir == 'x86' diff --git a/drivers/net/mana/meson.build b/drivers/net/mana/meson.build index 4d163fc0f2..68f03fd60d 100644 --- a/drivers/net/mana/meson.build +++ b/drivers/net/mana/meson.build @@ -7,7 +7,7 @@ if not is_linux or not (dpdk_conf.has('RTE_ARCH_X86') or dpdk_conf.has('RTE_ARCH subdir_done() endif -deps += ['pci', 'bus_pci', 'net', 'eal', 'kvargs'] +deps += ['bus_pci'] sources += files( 'gdma.c', diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build index 78a8648b43..7c4a63524f 100644 --- a/drivers/net/mlx5/meson.build +++ b/drivers/net/mlx5/meson.build @@ -8,7 +8,7 @@ if not (is_linux or is_windows) subdir_done() endif -deps += ['hash', 'common_mlx5'] +deps += ['common_mlx5'] if not dpdk_conf.has('RTE_COMMON_MLX5') # avoid referencing undefined variables from common/mlx5 subdir_done() diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build index 5adde68517..820ee6c91e 100644 --- a/drivers/net/sfc/meson.build +++ b/drivers/net/sfc/meson.build @@ -71,7 +71,7 @@ if not cc.links(atomic_check_code) ext_deps += libatomic_dep endif -deps += ['common_sfc_efx', 'bus_pci', 'hash'] +deps += ['common_sfc_efx', 'hash'] sources = files( 'sfc_ethdev.c', 'sfc_kvargs.c', diff --git a/drivers/net/softnic/meson.build b/drivers/net/softnic/meson.build index 5dfbd16c77..1529ef38f9 100644 --- a/drivers/net/softnic/meson.build +++ b/drivers/net/softnic/meson.build @@ -15,4 +15,4 @@ sources = files( 'rte_eth_softnic_swq.c', 'rte_eth_softnic_thread.c', ) -deps += ['pipeline', 'port', 'table'] +deps += ['pipeline'] diff --git a/drivers/net/virtio/meson.build b/drivers/net/virtio/meson.build index 02742da5c2..ce23521ca2 100644 --- a/drivers/net/virtio/meson.build +++ b/drivers/net/virtio/meson.build @@ -21,7 +21,7 @@ sources += files( 'virtio_rxtx_simple.c', 'virtqueue.c', ) -deps += ['kvargs', 'bus_pci'] +deps += ['bus_pci'] if arch_subdir == 'x86' if cc_has_avx512 diff --git a/drivers/raw/cnxk_bphy/meson.build b/drivers/raw/cnxk_bphy/meson.build index bb5d2ffb80..b38b071697 100644 --- a/drivers/raw/cnxk_bphy/meson.build +++ b/drivers/raw/cnxk_bphy/meson.build @@ -2,7 +2,7 @@ # Copyright(C) 2021 Marvell. # -deps += ['bus_pci', 'common_cnxk', 'rawdev'] +deps += ['common_cnxk', 'rawdev'] sources = files( 'cnxk_bphy.c', 'cnxk_bphy_cgx.c', diff --git a/drivers/raw/cnxk_gpio/meson.build b/drivers/raw/cnxk_gpio/meson.build index 9d9a527392..6d17fe573f 100644 --- a/drivers/raw/cnxk_gpio/meson.build +++ b/drivers/raw/cnxk_gpio/meson.build @@ -2,7 +2,7 @@ # Copyright(C) 2021 Marvell. # -deps += ['bus_vdev', 'common_cnxk', 'rawdev', 'kvargs'] +deps += ['bus_vdev', 'common_cnxk', 'rawdev'] sources = files( 'cnxk_gpio.c', 'cnxk_gpio_irq.c', diff --git a/drivers/raw/gdtc/meson.build b/drivers/raw/gdtc/meson.build index 3e748ca58d..b86f9510ce 100644 --- a/drivers/raw/gdtc/meson.build +++ b/drivers/raw/gdtc/meson.build @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright 2024 ZTE Corporation -deps += ['rawdev', 'kvargs', 'mbuf', 'bus_pci'] +deps += ['rawdev', 'mbuf', 'bus_pci'] sources = files('gdtc_rawdev.c') diff --git a/drivers/raw/ntb/meson.build b/drivers/raw/ntb/meson.build index 9096f2b25a..8f79d3b16a 100644 --- a/drivers/raw/ntb/meson.build +++ b/drivers/raw/ntb/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Intel Corporation. -deps += ['rawdev', 'mbuf', 'mempool', 'pci', 'bus_pci'] +deps += ['rawdev', 'mbuf', 'bus_pci'] sources = files('ntb.c', 'ntb_hw_intel.c') headers = files('rte_pmd_ntb.h') diff --git a/drivers/raw/skeleton/meson.build b/drivers/raw/skeleton/meson.build index 9d5fcf6514..7d76fe71b3 100644 --- a/drivers/raw/skeleton/meson.build +++ b/drivers/raw/skeleton/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018 NXP -deps += ['rawdev', 'kvargs', 'mbuf', 'bus_vdev'] +deps += ['rawdev', 'mbuf', 'bus_vdev'] sources = files( 'skeleton_rawdev.c', 'skeleton_rawdev_test.c', diff --git a/drivers/regex/cn9k/meson.build b/drivers/regex/cn9k/meson.build index b22275928a..40aced4c62 100644 --- a/drivers/regex/cn9k/meson.build +++ b/drivers/regex/cn9k/meson.build @@ -13,4 +13,4 @@ sources = files( ) deps += ['bus_pci'] -deps += ['common_cnxk', 'mempool_cnxk'] +deps += ['mempool_cnxk'] diff --git a/drivers/regex/mlx5/meson.build b/drivers/regex/mlx5/meson.build index 6070b37501..f75bf2e084 100644 --- a/drivers/regex/mlx5/meson.build +++ b/drivers/regex/mlx5/meson.build @@ -7,7 +7,7 @@ if not is_linux subdir_done() endif -deps += ['common_mlx5', 'eal'] +deps += ['common_mlx5'] if not dpdk_conf.has('RTE_COMMON_MLX5') # avoid referencing undefined variables from common/mlx5 subdir_done() diff --git a/drivers/vdpa/ifc/meson.build b/drivers/vdpa/ifc/meson.build index f78d36a715..f4ed4f491f 100644 --- a/drivers/vdpa/ifc/meson.build +++ b/drivers/vdpa/ifc/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -deps += 'vhost' +deps += 'bus_pci' sources = files('ifcvf_vdpa.c', 'base/ifcvf.c') includes += include_directories('base') diff --git a/drivers/vdpa/meson.build b/drivers/vdpa/meson.build index e01c277b9e..747cdc7c55 100644 --- a/drivers/vdpa/meson.build +++ b/drivers/vdpa/meson.build @@ -11,5 +11,4 @@ drivers = [ 'nfp', 'sfc', ] -std_deps = ['bus_pci'] -std_deps += ['vhost'] +std_deps = ['vhost'] diff --git a/drivers/vdpa/mlx5/meson.build b/drivers/vdpa/mlx5/meson.build index e224d1bcc9..1263ac43a4 100644 --- a/drivers/vdpa/mlx5/meson.build +++ b/drivers/vdpa/mlx5/meson.build @@ -7,7 +7,7 @@ if not is_linux subdir_done() endif -deps += ['hash', 'common_mlx5', 'vhost', 'pci', 'eal', 'sched'] +deps += ['common_mlx5', 'vhost', 'sched'] if not dpdk_conf.has('RTE_COMMON_MLX5') # avoid referencing undefined variables from common/mlx5 subdir_done() diff --git a/drivers/vdpa/sfc/meson.build b/drivers/vdpa/sfc/meson.build index 933f3f18f3..465ca9f220 100644 --- a/drivers/vdpa/sfc/meson.build +++ b/drivers/vdpa/sfc/meson.build @@ -16,7 +16,7 @@ foreach flag: extra_flags endif endforeach -deps += ['common_sfc_efx', 'bus_pci'] +deps += ['common_sfc_efx'] sources = files( 'sfc_vdpa.c', 'sfc_vdpa_hw.c', From patchwork Wed Nov 27 14:56:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148920 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E85EA45DB7; Wed, 27 Nov 2024 15:57:59 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9088A40A82; Wed, 27 Nov 2024 15:57:36 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 03C234060A for ; Wed, 27 Nov 2024 15:57:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719453; x=1764255453; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=sUTvw//T7LnD9fnA/ZItOsqBIQN+JrPLXNWNOYHRd4g=; b=U7jRp9LVSIpf7bchyjTqHPqZxSx7oWzsXmS6TwPZnKtjz9hXVPbLX9mW anq32kQr0yFfRf4MhiNMMAUBRmJ/o/TKMJ+XRZLMwnfeokxZUhnlPRnIa tiYLDkEV7dN55Ol7EWkrxCpFSqVCdP7uHWjpcaImAsWOml/aKuODTfODj qrMZs62/iVOcA7CiV64mSXgT89Y3yhAC1okxJyDFHnxCAZHQ6gSId3MT9 lnH+aKvJBboqzayTA1ikZJA+kyuZ/5ns8LgU9YpC/tqFJTk5GikfYKrzy HdC1U1pSVH7Eea5tE6gPy+WdpoIY5FOjou2d5CPTPlLyZagNxkfIdGquc g==; X-CSE-ConnectionGUID: PRualL8KTlaqCoZhh/taeA== X-CSE-MsgGUID: sqix7JM8RtKwHEvMCdrWwg== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782219" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782219" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:33 -0800 X-CSE-ConnectionGUID: 5ktbygHETNK1IYGGUM1X4Q== X-CSE-MsgGUID: Z5dHXSZ8TGqRDBADYgiy7A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911528" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:31 -0800 From: Anatoly Burakov To: dev@dpdk.org, Reshma Pattan , Stephen Hemminger , Sunil Kumar Kori , Rakesh Kudurumalla , Brian Dooley , Vladimir Medvedkin , Konstantin Ananyev Subject: [PATCH v5 7/8] build: reduce app dependencies Date: Wed, 27 Nov 2024 14:56:55 +0000 Message-ID: <0334ffa604ec69e4b6f73738cd4f62b3520fff9d.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson Remove any unnecessary dependencies from the app dependency lists. This will give each app a near-minimum set of required dependencies. Signed-off-by: Bruce Richardson --- app/dumpcap/meson.build | 2 +- app/graph/meson.build | 2 +- app/pdump/meson.build | 2 +- app/proc-info/meson.build | 2 +- app/test-crypto-perf/meson.build | 2 +- app/test-fib/meson.build | 2 +- app/test-sad/meson.build | 2 +- app/test/meson.build | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/dumpcap/meson.build b/app/dumpcap/meson.build index 69c016c780..6204cf051a 100644 --- a/app/dumpcap/meson.build +++ b/app/dumpcap/meson.build @@ -14,4 +14,4 @@ endif ext_deps += pcap_dep sources = files('main.c') -deps += ['ethdev', 'pdump', 'pcapng', 'bpf'] +deps += ['pdump'] diff --git a/app/graph/meson.build b/app/graph/meson.build index 344e4a418f..9c4cd080d9 100644 --- a/app/graph/meson.build +++ b/app/graph/meson.build @@ -9,7 +9,7 @@ if not build subdir_done() endif -deps += ['graph', 'eal', 'lpm', 'ethdev', 'node', 'cmdline', 'net'] +deps += ['node', 'cmdline'] sources = files( 'cli.c', 'conn.c', diff --git a/app/pdump/meson.build b/app/pdump/meson.build index fb282bba1f..a10f9d6124 100644 --- a/app/pdump/meson.build +++ b/app/pdump/meson.build @@ -8,4 +8,4 @@ if is_windows endif sources = files('main.c') -deps += ['ethdev', 'kvargs', 'pdump'] +deps += ['pdump'] diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build index 5fefb0857e..3631d7a675 100644 --- a/app/proc-info/meson.build +++ b/app/proc-info/meson.build @@ -8,5 +8,5 @@ if is_windows endif sources = files('main.c') -deps += ['ethdev', 'security', 'eventdev'] +deps += ['security', 'eventdev'] optional_deps += 'metrics' diff --git a/app/test-crypto-perf/meson.build b/app/test-crypto-perf/meson.build index 1ac0ac1099..839d42e28d 100644 --- a/app/test-crypto-perf/meson.build +++ b/app/test-crypto-perf/meson.build @@ -19,5 +19,5 @@ sources = files( 'cperf_test_verify.c', 'main.c', ) -deps += ['cryptodev', 'net', 'security'] +deps += ['cryptodev'] optional_deps += 'crypto_scheduler' diff --git a/app/test-fib/meson.build b/app/test-fib/meson.build index eb36772cf3..25e2ea1a1d 100644 --- a/app/test-fib/meson.build +++ b/app/test-fib/meson.build @@ -8,4 +8,4 @@ if is_windows endif sources = files('main.c') -deps += ['fib', 'lpm', 'net'] +deps += ['fib', 'lpm'] diff --git a/app/test-sad/meson.build b/app/test-sad/meson.build index a50616a9c7..414e2a05cb 100644 --- a/app/test-sad/meson.build +++ b/app/test-sad/meson.build @@ -8,4 +8,4 @@ if is_windows endif sources = files('main.c') -deps += ['ipsec', 'net'] +deps += ['ipsec'] diff --git a/app/test/meson.build b/app/test/meson.build index 36c2016a49..a77c152ef3 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -2,7 +2,7 @@ # Copyright(c) 2017-2023 Intel Corporation # the main test files [test.c and commands.c] relies on these libraries -deps += ['cmdline', 'ring', 'mempool', 'mbuf'] +deps += ['cmdline'] sources += files('commands.c', 'test.c') # optional dependencies: some files may use these - and so we should link them in - From patchwork Wed Nov 27 14:56:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 148921 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9E5DB45DB7; Wed, 27 Nov 2024 15:58:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D43814069F; Wed, 27 Nov 2024 15:57:40 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by mails.dpdk.org (Postfix) with ESMTP id 41D19406B4 for ; Wed, 27 Nov 2024 15:57:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1732719455; x=1764255455; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=yFVLtlo+veGQz2CSSkuZrVjMsI6rLl5te2ZjGQ+6z5o=; b=DPjqnFC8bNkYBM928rOQBlWIkOS5JRhcX+FYsb2vft1XQeEhMrwkfnC8 urKS4gkQFOCZJsji4KGua7o0eWYh+ILmY/vI9+ksCyJEx6XDlEy7fOYzr euEqk+sm91IFdVkrD6TdGQsIB3JdS4gh2c8xCX6Nefu460RQyCr1R23Tj Narc7C/nN1iYNRJIKdzflSCwshMbwFMC5tooxKfQr/fVrTgMI7KzCC26b Um451lqECyzp1dCGx4Pl7YnppB+N9ufg4ugfFbQ2tuKHfDOswtYB1e79e rbX2uHYpzFGkniFrpMQd3uZ14DJQ7j/7ZHcp3TH5R9xB6FP0TokWWRC3N w==; X-CSE-ConnectionGUID: pidNemO4RDOV9HqL1t46WA== X-CSE-MsgGUID: vk5aCOSySHOFrlkKR8RBCQ== X-IronPort-AV: E=McAfee;i="6700,10204,11269"; a="32782226" X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="32782226" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2024 06:57:34 -0800 X-CSE-ConnectionGUID: 7dRijEeaRmS+6wD+TtD4Ow== X-CSE-MsgGUID: 0gwx4FpkSCyoSnfoprTr3A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,189,1728975600"; d="scan'208";a="96911531" Received: from silpixa00401119.ir.intel.com ([10.55.129.167]) by orviesa005.jf.intel.com with ESMTP; 27 Nov 2024 06:57:33 -0800 From: Anatoly Burakov To: dev@dpdk.org Subject: [PATCH v5 8/8] devtools: add script to generate DPDK dependency graphs Date: Wed, 27 Nov 2024 14:56:56 +0000 Message-ID: <904bd8ee5aa3e6e2a6444b625329dd3d5438761a.1732719309.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Bruce Richardson Rather than the single monolithic graph that would be output from the deps.dot file in a build directory, we can post-process that to generate simpler graphs for different tasks. This new "draw_dependency_graphs" script takes the "deps.dot" as input and generates an output file that has the nodes categorized, filtering them based off the requested node or category. For example, use "--match net/ice" to show the dependency tree from that driver, or "--match lib" to show just the library dependency tree. Signed-off-by: Bruce Richardson Signed-off-by: Anatoly Burakov --- devtools/draw-dependency-graphs.py | 223 +++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100755 devtools/draw-dependency-graphs.py diff --git a/devtools/draw-dependency-graphs.py b/devtools/draw-dependency-graphs.py new file mode 100755 index 0000000000..4fb765498d --- /dev/null +++ b/devtools/draw-dependency-graphs.py @@ -0,0 +1,223 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +import argparse +import collections +import sys +import typing as T + +# typedef for dependency data types +Deps = T.Set[str] +DepData = T.Dict[str, T.Dict[str, T.Dict[bool, Deps]]] + + +def parse_dep_line(line: str) -> T.Tuple[str, Deps, str, bool]: + """Parse digraph line into (component, {dependencies}, type, optional).""" + # extract attributes first + first, last = line.index("["), line.rindex("]") + edge_str, attr_str = line[:first], line[first + 1 : last] + # key=value, key=value, ... + attrs = { + key.strip('" '): value.strip('" ') + for attr_kv in attr_str.split(",") + for key, value in [attr_kv.strip().split("=", 1)] + } + # check if edge is defined as dotted line, meaning it's optional + optional = "dotted" in attrs.get("style", "") + try: + component_type = attrs["dpdk_componentType"] + except KeyError as _e: + raise ValueError(f"Error: missing component type: {line}") from _e + + # now, extract component name and any of its dependencies + deps: T.Set[str] = set() + try: + component, deps_str = edge_str.strip('" ').split("->", 1) + component = component.strip().strip('" ') + deps_str = deps_str.strip().strip("{}") + deps = {d.strip('" ') for d in deps_str.split(",")} + except ValueError as _e: + component = edge_str.strip('" ') + + return component, deps, component_type, optional + + +def gen_dep_line(component: str, deps: T.Set[str], optional: bool) -> str: + """Generate a dependency line for a component.""" + # we use dotted line to represent optional components + attr_str = ' [style="dotted"]' if optional else "" + dep_list_str = '", "'.join(deps) + deps_str = "" if not deps else f' -> {{ "{dep_list_str}" }}' + return f' "{component}"{deps_str}{attr_str}\n' + + +def read_deps_list(lines: T.List[str]) -> DepData: + """Read a list of dependency lines into a dictionary.""" + deps_data: T.Dict[str, T.Any] = {} + for ln in lines: + if ln.startswith("digraph") or ln == "}": + continue + + component, deps, component_type, optional = parse_dep_line(ln) + + # each component will have two sets of dependencies - required and optional + c_dict = deps_data.setdefault(component_type, {}).setdefault(component, {}) + c_dict[optional] = deps + return deps_data + + +def create_classified_graph(deps_data: DepData) -> T.Iterator[str]: + """Create a graph of dependencies with components classified by type.""" + yield "digraph dpdk_dependencies {\n overlap=false\n model=subset\n" + for n, deps_t in enumerate(deps_data.items()): + component_type, component_dict = deps_t + yield f' subgraph cluster_{n} {{\n label = "{component_type}"\n' + for component, optional_d in component_dict.items(): + for optional, deps in optional_d.items(): + yield gen_dep_line(component, deps, optional) + yield " }\n" + yield "}\n" + + +def parse_match(line: str, dep_data: DepData) -> T.List[str]: + """Extract list of components from a category string.""" + # if this is not a compound string, we have very few valid choices + if "/" not in line: + # is this a category? + if line in dep_data: + return list(dep_data[line].keys()) + # this isn't a category. maybe an app name? + maybe_app_name = f"dpdk-{line}" + if maybe_app_name in dep_data["app"]: + return [maybe_app_name] + if maybe_app_name in dep_data["examples"]: + return [maybe_app_name] + # this isn't an app name either, so just look for component with that name + for _, component_dict in dep_data.items(): + if line in component_dict: + return [line] + # nothing found still. one last try: maybe it's a driver? we have to be careful though + # because a driver name may not be unique, e.g. common/iavf and net/iavf. so, only pick + # a driver if we can find exactly one driver that matches. + found_drivers: T.List[str] = [] + for component in dep_data["drivers"].keys(): + _, drv_name = component.split("_", 1) + if drv_name == line: + found_drivers.append(component) + if len(found_drivers) == 1: + return found_drivers + # we failed to find anything, report error + raise ValueError(f"Error: unknown component: {line}") + + # this is a compound string, so we have to do some matching. we may have two or three levels + # of hierarchy, as driver/net/ice and net/ice should both be valid. + + # if there are three levels of hierarchy, this must be a driver + try: + ctype, drv_class, drv_name = line.split("/", 2) + component_name = f"{drv_class}_{drv_name}" + # we want to directly access the dict to trigger KeyError, and not catch them here + if component_name in dep_data[ctype]: + return [component_name] + else: + raise KeyError(f"Unknown category: {line}") + except ValueError: + # not three levels of hierarchy, try two + pass + + first, second = line.split("/", 1) + + # this could still be a driver, just without the "drivers" prefix + for component in dep_data["drivers"].keys(): + if component == f"{first}_{second}": + return [component] + # could be driver wildcard, e.g. drivers/net + if first == "drivers": + drv_match: T.List[str] = [ + drv_name + for drv_name in dep_data["drivers"] + if drv_name.startswith(f"{second}_") + ] + if drv_match: + return drv_match + # may be category + component + if first in dep_data: + # go through all components in the category + if second in dep_data[first]: + return [second] + # if it's an app or an example, it may have "dpdk-" in front + if first in ["app", "examples"]: + maybe_app_name = f"dpdk-{second}" + if maybe_app_name in dep_data[first]: + return [maybe_app_name] + # and nothing of value was found + raise ValueError(f"Error: unknown component: {line}") + + +def filter_deps(dep_data: DepData, criteria: T.List[str]) -> None: + """Filter dependency data to include only specified components.""" + # this is a two step process: when we get a list of components, we need to + # go through all of them and note any dependencies they have, and expand the + # list of components with those dependencies. then we filter. + + # walk the dependency list and include all possible dependencies + deps_seen: Deps = set() + deps_stack = collections.deque(criteria) + while deps_stack: + component = deps_stack.popleft() + if component in deps_seen: + continue + deps_seen.add(component) + for component_type, component_dict in dep_data.items(): + try: + deps = component_dict[component] + except KeyError: + # wrong component type + continue + for _, dep_list in deps.items(): + deps_stack.extend(dep_list) + criteria += list(deps_seen) + + # now, "components" has all the dependencies we need to include, so we can filter + for component_type, component_dict in dep_data.items(): + dep_data[component_type] = { + component: deps + for component, deps in component_dict.items() + if component in criteria + } + + +def main(): + parser = argparse.ArgumentParser( + description="Utility to generate dependency tree graphs for DPDK" + ) + parser.add_argument( + "--match", + type=str, + help="Output hierarchy for component or category, e.g. net/ice, lib, app, drivers/net, etc.", + ) + parser.add_argument( + "input_file", + type=argparse.FileType("r"), + help="Path to the deps.dot file from a DPDK build directory", + ) + parser.add_argument( + "output_file", + type=argparse.FileType("w"), + help="Path to the desired output dot file", + ) + args = parser.parse_args() + + deps = read_deps_list([ln.strip() for ln in args.input_file.readlines()]) + if args.match: + try: + filter_deps(deps, parse_match(args.match, deps)) + except (KeyError, ValueError) as e: + print(e, file=sys.stderr) + return + args.output_file.writelines(create_classified_graph(deps)) + + +if __name__ == "__main__": + main()