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 v2 1/5] devtools: script to remove unused headers includes
Date: Wed, 6 Oct 2021 14:30:06 +0100	[thread overview]
Message-ID: <YV2k3lS2eUSJc1KA@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <20211006111329.152938-2-sean.morrissey@intel.com>

On Wed, Oct 06, 2021 at 11:13:25AM +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 and tests the
> build after each removal by calling meson compile.
> 
> 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>
> ---

Some more comments inline.
When those are addresses you can add my reviewed-by.

Thanks,
/Bruce

>  devtools/process_iwyu.py | 114 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 114 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..c5b93c5ef3
> --- /dev/null
> +++ b/devtools/process_iwyu.py
> @@ -0,0 +1,114 @@
> +#!/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():
> +    "parse arguments and return the argument object back to main"
> +    parser = argparse.ArgumentParser(
> +        description="""This script can be used to remove
> +        includes which are not in use\n""")

While in general lines should be kept under 80 characters to satisfy the
flake8 script checks, literal strings are always the exception and should
not be split across lines without good reason, or an explicit break in
them. Most checkpatch and flake8 tools are aware of this and should not
omit a warning if a literal string crosses the line-length boundary.

Also, the "\n" should be unnecessary at the end of the description string.

> +    parser.add_argument('-b', '--build_dir', type=str,
> +                        help="""The path to the build directory in which
> +                        the IWYU tool was used in.""", default="build")

For these items, again don't split the string, but I suggest putting all
parameters bar the help text on one line, and the help text on its own on
the second line i.e. move the "default" option up a line, and put "help"
value all alone on second line.

> +    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.""")
> +
> +    return parser.parse_args()
> +
> +
> +def run_meson(args):
> +    "Runs a meson command logging output to process.log"
> +    with open('process_iwyu.log', 'a') as sys.stdout:
> +        ret = mesonmain.run(args, abspath('meson'))
> +    sys.stdout = sys.__stdout__
> +    return ret
> +
> +
> +def remove_includes(filename, include, build_dir):
> +    "Attempts to remove include, if it fails then revert to original state"
> +    filepath = filename
> +
> +    with open(filepath, 'r+') as f:

Not sure you need a mode here at all, since you are just reading the file.
"open(filepath) as f:" should work fine.

> +        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() != include:

I'd just point out that this will fail to remove any includes which have a
comment after them. Probably "startswith" is best used here instead of a
straight comparison: "if not ln.startswith(include)"

> +                f.write(ln)
> +
> +    # run test build -> call meson on the build folder, meson compile -C build
> +    ret = run_meson(['compile', '-C', 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')

Minor nit, I'd suggest dedenting (or de-indenting) the print one level, so
that it's not part of the "with" clause, but part of the "else".

[If you want to remove the else entirely, you can put a "return" after the
print success.]

> +
> +
> +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):
> +    "process the iwyu output on a set of files"
> +    filename = None
> +    build_dir = abspath(args.build_dir)
> +    directory = args.sub_dir
> +
> +    keep_str_fns = uses_libbsd(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)
> +    # turn on werror
> +    run_meson(['configure', build_dir, '-Dwerror=true'])
> +    # Use stdin if no iwyu_tool out file given
> +    for line in fileinput.input(args.file):
> +        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.

You don't need to word-wrap the comment above quite so aggressively. Having
lines a little longer would make it visually shorter and no harder to read.

> +            if (line.split()[0] != abspath(line.split()[0]) and
> +                    directory in line.split()[0]):
> +                filename = relpath(join(build_dir, line.split()[0]))

The python interpreter is going to split that line a lot of times! Use of a
temporary variable would be justified I think.

> +        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, build_dir)
> +        else:
> +            filename = None
> +
> +
> +def main():
> +    process(args_parse())
> +
> +
> +if __name__ == '__main__':
> +    main()
> -- 
> 2.25.1
> 

  reply	other threads:[~2021-10-06 13:30 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
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 [this message]
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=YV2k3lS2eUSJc1KA@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).