DPDK patches and discussions
 help / color / mirror / Atom feed
From: Sean Morrissey <sean.morrissey@intel.com>
Cc: dev@dpdk.org, Sean Morrissey <sean.morrissey@intel.com>,
	Conor Fogarty <conor.fogarty@intel.com>
Subject: [dpdk-dev] [PATCH v1 1/5] devtools: script to remove unused headers includes
Date: Mon,  4 Oct 2021 10:10:54 +0000	[thread overview]
Message-ID: <20211004101058.2396458-2-sean.morrissey@intel.com> (raw)
In-Reply-To: <20211004101058.2396458-1-sean.morrissey@intel.com>

This script can be used for removing headers flagged for removal by the
include-what-you-use (IWYU) tool. The script has the ability to remove
headers from specified sub-directories or dpdk as a whole.

example usages:

Remove headers flagged by iwyu_tool output file
$ ./devtools/process_iwyu.py iwyu.out -b build

Remove headers flagged by iwyu_tool output file from sub-directory
$ ./devtools/process_iwyu.py iwyu.out -b build -d lib/kvargs

Remove headers directly piped from the iwyu_tool
$ iwyu_tool -p build | ./devtools/process_iwyu.py - -b build

Signed-off-by: Sean Morrissey <sean.morrissey@intel.com>
Signed-off-by: Conor Fogarty <conor.fogarty@intel.com>
---
 devtools/process_iwyu.py | 109 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)
 create mode 100755 devtools/process_iwyu.py

diff --git a/devtools/process_iwyu.py b/devtools/process_iwyu.py
new file mode 100755
index 0000000000..ddc4ceafa4
--- /dev/null
+++ b/devtools/process_iwyu.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2021 Intel Corporation
+#
+
+import argparse
+import fileinput
+import sys
+from os.path import abspath, relpath, join
+from pathlib import Path
+from mesonbuild import mesonmain
+
+def args_parse():
+    parser = argparse.ArgumentParser(description='This script can be used to remove includes which are not in use\n')
+    parser.add_argument('-b', '--build_dir', type=str, help='Name of the build directory in which the IWYU tool was used in.', default="build")
+    parser.add_argument('-d', '--sub_dir', type=str, help='The sub-directory to remove headers from.', default="")
+    parser.add_argument('file', type=Path, help='The path to the IWYU log file or output from stdin.')
+
+    args = parser.parse_args()
+
+    return args
+
+
+def run_meson(args):
+    "Runs a meson command logging output to process.log"
+    with open('process.log', 'a') as sys.stdout:
+        ret = mesonmain.run(args, abspath('meson'))
+    sys.stdout = sys.__stdout__
+    return ret
+
+
+def remove_includes(filename, include, dpdk_dir, build_dir):
+    # Load in file - readlines()
+    # loop through list once in mem -> make cpy of list with line removed
+    # write cpy  -> stored in memory so write cpy to file then check
+    # run test build -> call ninja on the build folder, ninja -C build, subprocess
+    # if fails -> write original back to file otherwise continue on
+    # newlist = [ln for ln in lines if not ln.startswith(...)] filters out one element
+    filepath = filename
+
+    with open(filepath, 'r+') as f:
+        lines = f.readlines()  # Read lines when file is opened
+
+    with open(filepath, 'w') as f:
+        for ln in lines:  # Removes the include passed in
+            if ln.strip("\n") != include:
+                f.write(ln)
+
+    ret = run_meson(['compile', '-C', join(dpdk_dir, build_dir)])
+    if (ret == 0):  # Include is not needed -> build is successful
+        print('SUCCESS')
+    else:
+        # failed, catch the error
+        # return file to original state
+        with open(filepath, 'w') as f:
+            f.writelines(lines)
+            print('FAILED')
+
+
+def get_build_config(builddir, condition):
+    "returns contents of rte_build_config.h"
+    with open(join(builddir, 'rte_build_config.h')) as f:
+        return [ln for ln in f.readlines() if condition(ln)]
+
+
+def uses_libbsd(builddir):
+    "return whether the build uses libbsd or not"
+    return bool(get_build_config(builddir, lambda ln: 'RTE_USE_LIBBSD' in ln))
+
+
+def process(args):
+    filename = None
+    build_dir = args.build_dir
+    dpdk_dir = abspath(__file__).split('/devtools')[0]
+    directory = args.sub_dir
+    # Use stdin if no iwyu_tool out file given
+    logfile = abspath(args.file) if str(args.file) != '-' else args.file
+
+    keep_str_fns = uses_libbsd(join(dpdk_dir, build_dir)) # check for libbsd
+    if keep_str_fns:
+        print('Warning: libbsd is present, build will fail to detect incorrect removal of rte_string_fns.h',
+              file=sys.stderr)
+    run_meson(['configure', dpdk_dir + "/" + build_dir, '-Dwerror=true'])  # turn on werror
+
+    for line in fileinput.input(logfile):
+        if 'should remove' in line:
+            # If the file path in the iwyu_tool output is an absolute path
+            # it means the file is outside of the dpdk directory, therefore ignore it
+            # Also check to see if the file is within the specified sub directory
+            if line.split()[0] != abspath(line.split()[0]) and directory in line.split()[0]:
+                filename = relpath(join(build_dir, line.split()[0]))
+        elif line.startswith('-') and filename:
+            include = '#include ' + line.split()[2]
+            print(f"Remove {include} from {filename} ... ", end='', flush=True)
+            if keep_str_fns and '<rte_string_fns.h>' in include:
+                print('skipped')
+                continue
+            remove_includes(filename, include, dpdk_dir, build_dir)
+        else:
+            filename = None
+
+
+def main():
+    args = args_parse()
+    process(args)
+
+
+if __name__ == '__main__':
+    main()
-- 
2.25.1


  reply	other threads:[~2021-10-04 10:11 UTC|newest]

Thread overview: 368+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-04 10:10 [dpdk-dev] [PATCH v1 0/5] introduce IWYU Sean Morrissey
2021-10-04 10:10 ` Sean Morrissey [this message]
2021-10-04 15:07   ` [dpdk-dev] [PATCH v1 1/5] devtools: script to remove unused headers includes Bruce Richardson
2021-10-06 13:37   ` Thomas Monjalon
2021-10-06 15:19     ` Morrissey, Sean
2021-10-06 16:28       ` Bruce Richardson
2021-10-06 16:44         ` Thomas Monjalon
2021-10-04 10:10 ` [dpdk-dev] [PATCH v1 2/5] lib/telemetry: remove unneeded header includes Sean Morrissey
2021-10-04 10:10 ` [dpdk-dev] [PATCH v1 3/5] lib/ring: " Sean Morrissey
2021-10-04 10:10 ` [dpdk-dev] [PATCH v1 4/5] lib/kvargs: " Sean Morrissey
2021-10-04 10:10 ` [dpdk-dev] [PATCH v1 5/5] lib/eal: " Sean Morrissey
2021-10-04 10:23   ` Van Haaren, Harry
2021-10-04 10:46     ` Mattias Rönnblom
2021-10-04 18:15   ` David Christensen
2021-10-04 15:55 ` [dpdk-dev] [PATCH v1 0/5] introduce IWYU Stephen Hemminger
2021-10-04 16:34   ` Bruce Richardson
2021-10-06 11:13 ` [dpdk-dev] [PATCH v2 " Sean Morrissey
2021-10-06 11:13   ` [dpdk-dev] [PATCH v2 1/5] devtools: script to remove unused headers includes Sean Morrissey
2021-10-06 13:30     ` Bruce Richardson
2021-10-06 11:13   ` [dpdk-dev] [PATCH v2 2/5] lib/telemetry: remove unneeded header includes Sean Morrissey
2021-10-06 12:34     ` Power, Ciara
2021-10-06 11:13   ` [dpdk-dev] [PATCH v2 3/5] lib/ring: " Sean Morrissey
2021-10-06 11:13   ` [dpdk-dev] [PATCH v2 4/5] lib/kvargs: " Sean Morrissey
2021-10-06 11:13   ` [dpdk-dev] [PATCH v2 5/5] lib/eal: " Sean Morrissey
2021-10-06 16:36     ` David Christensen
2021-10-07 10:25   ` [dpdk-dev] [PATCH v3 0/5] introduce IWYU Sean Morrissey
2021-10-07 10:25     ` [dpdk-dev] [PATCH v3 1/5] devtools: script to remove unused headers includes Sean Morrissey
2021-10-07 10:25     ` [dpdk-dev] [PATCH v3 2/5] lib/telemetry: remove unneeded header includes Sean Morrissey
2021-10-07 10:25     ` [dpdk-dev] [PATCH v3 3/5] lib/ring: " Sean Morrissey
2021-10-07 12:17       ` Ananyev, Konstantin
2021-10-07 10:25     ` [dpdk-dev] [PATCH v3 4/5] lib/kvargs: " Sean Morrissey
2021-10-15  9:00       ` Olivier Matz
2021-10-15  9:20         ` Morrissey, Sean
2021-10-15 12:24           ` Olivier Matz
2021-10-07 10:25     ` [dpdk-dev] [PATCH v3 5/5] lib/eal: " Sean Morrissey
2022-01-14 16:23     ` [PATCH v4 00/53] introduce IWYU Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 01/53] devtools: script to remove unused headers includes Sean Morrissey
2022-01-14 17:02         ` Stephen Hemminger
2022-01-14 17:36           ` Bruce Richardson
2022-01-14 16:23       ` [PATCH v4 02/53] telemetry: remove unneeded header includes Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 03/53] ring: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 04/53] kvargs: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 05/53] eal: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 06/53] vhost: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 07/53] timer: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 08/53] table: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 09/53] stack: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 10/53] security: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 11/53] sched: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 12/53] ring: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 13/53] rib: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 14/53] reorder: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 15/53] regexdev: " Sean Morrissey
2022-01-16  7:40         ` Ori Kam
2022-01-14 16:23       ` [PATCH v4 16/53] rcu: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 17/53] rawdev: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 18/53] power: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 19/53] port: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 20/53] pipeline: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 21/53] pdump: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 22/53] pci: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 23/53] pcapng: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 24/53] node: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 25/53] net: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 26/53] metrics: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 27/53] mempool: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 28/53] member: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 29/53] mbuf: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 30/53] lpm: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 31/53] latencystats: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 32/53] kvargs: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 33/53] kni: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 34/53] jobstats: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 35/53] ipsec: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 36/53] ip_frag: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 37/53] hash: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 38/53] gro: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 39/53] graph: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 40/53] gpudev: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 41/53] flow_classify: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 42/53] fib: " Sean Morrissey
2022-01-14 16:23       ` [PATCH v4 43/53] eventdev: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 44/53] efd: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 45/53] eal: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 46/53] dmadev: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 47/53] distributor: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 48/53] compressdev: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 49/53] cmdline: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 50/53] bpf: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 51/53] bbdev: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 52/53] cryptodev: " Sean Morrissey
2022-01-14 16:24       ` [PATCH v4 53/53] acl: " Sean Morrissey
2022-01-17 20:18       ` [PATCH v5 00/50] introduce IWYU Sean Morrissey
2022-01-17 20:18         ` [PATCH v5 01/50] devtools: script to remove unused headers includes Sean Morrissey
2022-01-20 15:00           ` Thomas Monjalon
2022-01-17 20:18         ` [PATCH v5 02/50] telemetry: remove unneeded header includes Sean Morrissey
2022-01-17 20:18         ` [PATCH v5 03/50] ring: " Sean Morrissey
2022-01-17 20:18         ` [PATCH v5 04/50] kvargs: " Sean Morrissey
2022-01-17 20:18         ` [PATCH v5 05/50] eal: " Sean Morrissey
2022-01-17 20:18         ` [PATCH v5 06/50] vhost: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 07/50] timer: " Sean Morrissey
2022-01-18 19:43           ` Carrillo, Erik G
2022-01-17 20:19         ` [PATCH v5 08/50] table: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 09/50] stack: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 10/50] security: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 11/50] sched: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 12/50] rib: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 13/50] reorder: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 14/50] regexdev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 15/50] rcu: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 16/50] rawdev: " Sean Morrissey
2022-01-24  5:14           ` Hemant Agrawal
2022-01-17 20:19         ` [PATCH v5 17/50] power: " Sean Morrissey
2022-01-25  8:45           ` David Hunt
2022-01-17 20:19         ` [PATCH v5 18/50] port: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 19/50] pipeline: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 20/50] pdump: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 21/50] pci: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 22/50] pcapng: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 23/50] node: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 24/50] net: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 25/50] metrics: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 26/50] mempool: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 27/50] member: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 28/50] mbuf: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 29/50] lpm: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 30/50] latencystats: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 31/50] kni: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 32/50] jobstats: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 33/50] ipsec: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 34/50] ip_frag: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 35/50] hash: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 36/50] gro: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 37/50] graph: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 38/50] gpudev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 39/50] flow_classify: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 40/50] fib: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 41/50] eventdev: " Sean Morrissey
2022-01-18 19:47           ` Carrillo, Erik G
2022-01-17 20:19         ` [PATCH v5 42/50] efd: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 43/50] dmadev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 44/50] distributor: " Sean Morrissey
2022-01-25  8:44           ` David Hunt
2022-01-17 20:19         ` [PATCH v5 45/50] compressdev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 46/50] cmdline: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 47/50] bpf: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 48/50] bbdev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 49/50] cryptodev: " Sean Morrissey
2022-01-17 20:19         ` [PATCH v5 50/50] acl: " Sean Morrissey
2022-01-20  8:29         ` [PATCH v5 00/50] introduce IWYU David Marchand
2022-02-02  9:47         ` [PATCH v6 " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 01/50] devtools: script to remove unused headers includes Sean Morrissey
2022-02-02 13:14             ` Thomas Monjalon
2022-02-02  9:47           ` [PATCH v6 02/50] telemetry: remove unneeded header includes Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 03/50] ring: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 04/50] kvargs: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 05/50] eal: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 06/50] vhost: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 07/50] timer: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 08/50] table: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 09/50] stack: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 10/50] security: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 11/50] sched: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 12/50] rib: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 13/50] reorder: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 14/50] regexdev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 15/50] rcu: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 16/50] rawdev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 17/50] power: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 18/50] port: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 19/50] pipeline: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 20/50] pdump: " Sean Morrissey
2022-02-02 15:54             ` Stephen Hemminger
2022-02-02 16:00               ` Bruce Richardson
2022-02-02 16:45                 ` Morten Brørup
2022-02-02 17:03                   ` Bruce Richardson
2022-02-02 17:28                     ` Stephen Hemminger
2022-02-02 18:21                       ` Morten Brørup
2022-02-03 10:42                         ` Bruce Richardson
2022-02-03 12:11                           ` Morten Brørup
2022-02-03 12:22                             ` Bruce Richardson
2022-02-02  9:47           ` [PATCH v6 21/50] pci: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 22/50] pcapng: " Sean Morrissey
2022-02-02 15:56             ` Stephen Hemminger
2022-02-02  9:47           ` [PATCH v6 23/50] node: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 24/50] net: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 25/50] metrics: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 26/50] mempool: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 27/50] member: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 28/50] mbuf: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 29/50] lpm: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 30/50] latencystats: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 31/50] kni: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 32/50] jobstats: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 33/50] ipsec: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 34/50] ip_frag: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 35/50] hash: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 36/50] gro: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 37/50] graph: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 38/50] gpudev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 39/50] flow_classify: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 40/50] fib: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 41/50] eventdev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 42/50] efd: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 43/50] dmadev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 44/50] distributor: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 45/50] compressdev: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 46/50] cmdline: " Sean Morrissey
2022-02-02  9:47           ` [PATCH v6 47/50] bpf: " Sean Morrissey
2022-02-02  9:48           ` [PATCH v6 48/50] bbdev: " Sean Morrissey
2022-02-02  9:48           ` [PATCH v6 49/50] cryptodev: " Sean Morrissey
2022-02-02  9:48           ` [PATCH v6 50/50] acl: " Sean Morrissey
2022-02-14 11:35           ` [PATCH v7 00/50] introduce IWYU Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 01/50] devtools: script to remove unused headers includes Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 02/50] telemetry: remove unneeded header includes Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 03/50] ring: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 04/50] kvargs: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 05/50] eal: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 06/50] vhost: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 07/50] timer: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 08/50] table: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 09/50] stack: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 10/50] security: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 11/50] sched: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 12/50] rib: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 13/50] reorder: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 14/50] regexdev: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 15/50] rcu: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 16/50] rawdev: " Sean Morrissey
2022-02-14 11:35             ` [PATCH v7 17/50] power: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 18/50] port: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 19/50] pipeline: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 20/50] pdump: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 21/50] pci: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 22/50] pcapng: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 23/50] node: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 24/50] net: " Sean Morrissey
2022-02-14 12:23               ` Ananyev, Konstantin
2022-02-14 11:36             ` [PATCH v7 25/50] metrics: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 26/50] mempool: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 27/50] member: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 28/50] mbuf: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 29/50] lpm: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 30/50] latencystats: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 31/50] kni: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 32/50] jobstats: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 33/50] ipsec: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 34/50] ip_frag: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 35/50] hash: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 36/50] gro: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 37/50] graph: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 38/50] gpudev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 39/50] flow_classify: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 40/50] fib: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 41/50] eventdev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 42/50] efd: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 43/50] dmadev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 44/50] distributor: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 45/50] compressdev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 46/50] cmdline: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 47/50] bpf: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 48/50] bbdev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 49/50] cryptodev: " Sean Morrissey
2022-02-14 11:36             ` [PATCH v7 50/50] acl: " Sean Morrissey
2022-02-14 14:43             ` [PATCH v8 00/50] introduce IWYU Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 01/50] devtools: script to remove unused headers includes Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 02/50] telemetry: remove unneeded header includes Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 03/50] ring: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 04/50] kvargs: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 05/50] eal: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 06/50] vhost: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 07/50] timer: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 08/50] table: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 09/50] stack: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 10/50] security: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 11/50] sched: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 12/50] rib: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 13/50] reorder: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 14/50] regexdev: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 15/50] rcu: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 16/50] rawdev: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 17/50] power: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 18/50] port: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 19/50] pipeline: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 20/50] pdump: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 21/50] pci: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 22/50] pcapng: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 23/50] node: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 24/50] net: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 25/50] metrics: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 26/50] mempool: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 27/50] member: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 28/50] mbuf: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 29/50] lpm: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 30/50] latencystats: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 31/50] kni: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 32/50] jobstats: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 33/50] ipsec: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 34/50] ip_frag: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 35/50] hash: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 36/50] gro: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 37/50] graph: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 38/50] gpudev: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 39/50] flow_classify: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 40/50] fib: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 41/50] eventdev: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 42/50] efd: " Sean Morrissey
2022-02-14 14:43               ` [PATCH v8 43/50] dmadev: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 44/50] distributor: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 45/50] compressdev: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 46/50] cmdline: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 47/50] bpf: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 48/50] bbdev: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 49/50] cryptodev: " Sean Morrissey
2022-02-14 14:44               ` [PATCH v8 50/50] acl: " Sean Morrissey
2022-02-15 12:29               ` [PATCH v9 00/50] introduce IWYU Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 01/50] devtools: script to remove unused headers includes Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 02/50] telemetry: remove unneeded header includes Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 03/50] ring: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 04/50] kvargs: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 05/50] eal: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 06/50] vhost: " Sean Morrissey
2022-02-17  7:54                   ` Xia, Chenbo
2022-02-15 12:29                 ` [PATCH v9 07/50] timer: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 08/50] table: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 09/50] stack: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 10/50] security: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 11/50] sched: " Sean Morrissey
2022-02-15 12:29                 ` [PATCH v9 12/50] rib: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 13/50] reorder: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 14/50] regexdev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 15/50] rcu: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 16/50] rawdev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 17/50] power: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 18/50] port: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 19/50] pipeline: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 20/50] pdump: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 21/50] pci: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 22/50] pcapng: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 23/50] node: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 24/50] net: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 25/50] metrics: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 26/50] mempool: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 27/50] member: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 28/50] mbuf: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 29/50] lpm: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 30/50] latencystats: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 31/50] kni: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 32/50] jobstats: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 33/50] ipsec: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 34/50] ip_frag: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 35/50] hash: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 36/50] gro: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 37/50] graph: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 38/50] gpudev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 39/50] flow_classify: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 40/50] fib: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 41/50] eventdev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 42/50] efd: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 43/50] dmadev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 44/50] distributor: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 45/50] compressdev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 46/50] cmdline: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 47/50] bpf: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 48/50] bbdev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 49/50] cryptodev: " Sean Morrissey
2022-02-15 12:30                 ` [PATCH v9 50/50] acl: " Sean Morrissey
2022-02-22  9:22                 ` [PATCH v9 00/50] introduce IWYU Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211004101058.2396458-2-sean.morrissey@intel.com \
    --to=sean.morrissey@intel.com \
    --cc=conor.fogarty@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).