DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Sean Morrissey <sean.morrissey@intel.com>
Cc: dev@dpdk.org, Conor Fogarty <conor.fogarty@intel.com>
Subject: Re: [dpdk-dev] [PATCH v1 1/5] devtools: script to remove unused headers includes
Date: Mon, 4 Oct 2021 16:07:51 +0100	[thread overview]
Message-ID: <YVsYx43P57HaYQh9@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <20211004101058.2396458-2-sean.morrissey@intel.com>

On Mon, Oct 04, 2021 at 10:10:54AM +0000, Sean Morrissey wrote:
> 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.
> 
Since it also is importing meson and calling "meson compile" it appears to
be testing the build after each removal too. I think this should be called
out, to make it clear it's not a "blind" removal of headers.

Further review comments inline below.

/Bruce

> 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.')
> +

These lines are all very long. While the text strings shouldn't be split
across lines, you can break the line across multiple ones between
parameters. I suggest checking this whole script using "flake8" to check
for style errors.

> +    args = parser.parse_args()
> +
> +    return args
> +

"args" is unneeded here. "return parse.parse_args()" is shorter. :-)

> +
> +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
> +

I think process.log should be renamed to "process_iwyu.log" to match the
script name.
Also, it's nice to see a few functions like this with a docstring at the
start. It would be good to have a one-line summary at the start of every
fn in this file.

> +
> +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
You actually call "meson compile" rather than ninja -C build. Please make
sure the comments match the code as the code is reworked.

If you take the approach of adding a one-line string at the start of each
function, I'd suggest splitting up this comment into smaller comments
spread throughout the code, explaining each short block as it appears.
[Though I see it's reasonably well commented below as-is]

> +    # 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:
Strip without any parameters removes all whitespace, which is probably ok
here, so drop the explicit "\n".

> +                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]
This assumes that we are using the script from the devtools dir of the copy
of DPDK we want to edit. That's probably a fair enough assumption and good
enough, though I'd like more input on it.
The other alternative is to work of the build dir, which will have the
paths to the DPDK source code directory in it.  Running "meson configure"
in the build dir will print out the source directory location at the start:

$ meson configure | head
Core properties:
  Source dir /home/bruce/dpdk.org
  Build dir  /home/bruce/dpdk.org/build


> +    directory = args.sub_dir
> +    # Use stdin if no iwyu_tool out file given
> +    logfile = abspath(args.file) if str(args.file) != '-' else args.file

Not sure this line is necessary. Assuming that we don't chdir anywhere,
using args.file directly below in call to "fileinput.input" should work
perfectly.

> +
> +    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)
> +
Nit: again, args variable is unnecessary, and you can shorten to single
line if you like "process(args_parse())"

> +
> +if __name__ == '__main__':
> +    main()
> -- 
> 2.25.1
> 

  reply	other threads:[~2021-10-04 15:26 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 ` [dpdk-dev] [PATCH v1 1/5] devtools: script to remove unused headers includes Sean Morrissey
2021-10-04 15:07   ` Bruce Richardson [this message]
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=YVsYx43P57HaYQh9@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=conor.fogarty@intel.com \
    --cc=dev@dpdk.org \
    --cc=sean.morrissey@intel.com \
    /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).