support/scripts/get-developers: add new script
This script, and its companion library, is more-or-less Buildroot's
equivalent to the kernel get_maintainer.pl script: it allows to get the
list of developers to whom a set of patches should be sent to.
To do so, it first relies on a text file, named DEVELOPERS, at the root
of the Buildroot source tree (added in a followup commit) to list the
developers and the files they are interested in. The DEVELOPERS file's
format is simple:
N: Firstname Lastname <email>
F: path/to/file
F: path/to/another/file
This allows to associate developers with the files they are looking
after, be they related to a package, a defconfig, a filesystem image, a
package infrastructure, the documentation, or anything else.
When a directory is given, the tool assumes that the developer handles
all files and subdirectories in this directory. For example
"package/qt5/" can be used for the developers looking after all the Qt5
packages.
Conventional shell patterns can be used, so "package/python-*" can be
used for the developers who want to look after all packages matching
"python-*".
A few files are recognized specially:
- .mk files are parsed, and if they contain $(eval
$(<something>-package)), the developer is assumed to be looking after
the corresponding package. This way, autobuilder failures for this
package can be reported directly to this developer.
- arch/Config.in.<arch> files are recognized as "the developer is
looking after the <arch> architecture". In this case, get-developer
parses the arch/Config.in.<arch> to get the list of possible BR2_ARCH
values. This way, autobuilder failures for this package can be
reported directly to this developer.
- pkg/pkg-<infra>.mk are recognized as "the developer is looking after
the <infra> package infrastructure. In this case, any patch that adds
or touches a .mk file that uses this infrastructure will be sent to
this developer.
Examples of usage:
$ ./support/scripts/get-developers 0001-ffmpeg-fix-bfin-build.patch
git send-email--to buildroot@buildroot.org --to "Luca Ceresoli <luca@lucaceresoli.net>" --to "Bernd Kuhls <bernd.kuhls@t-online.de>"
$ ./support/scripts/get-developers -p imx-lib
Arnout Vandecappelle <arnout@mind.be>
Gary Bisson <gary.bisson@boundarydevices.com>
$ ./support/scripts/get-developers -a bfin
Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-09-12 22:54:52 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
import getdeveloperlib
|
|
|
|
|
|
|
|
def parse_args():
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument('patches', metavar='P', type=str, nargs='*',
|
|
|
|
help='list of patches')
|
|
|
|
parser.add_argument('-a', dest='architecture', action='store',
|
|
|
|
help='find developers in charge of this architecture')
|
|
|
|
parser.add_argument('-p', dest='package', action='store',
|
|
|
|
help='find developers in charge of this package')
|
|
|
|
parser.add_argument('-c', dest='check', action='store_const',
|
|
|
|
const=True, help='list files not handled by any developer')
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
def __main__():
|
|
|
|
devs = getdeveloperlib.parse_developers()
|
|
|
|
if devs is None:
|
|
|
|
sys.exit(1)
|
|
|
|
args = parse_args()
|
|
|
|
|
|
|
|
# Check that only one action is given
|
|
|
|
action = 0
|
|
|
|
if args.architecture is not None:
|
|
|
|
action += 1
|
|
|
|
if args.package is not None:
|
|
|
|
action += 1
|
|
|
|
if args.check:
|
|
|
|
action += 1
|
|
|
|
if len(args.patches) != 0:
|
|
|
|
action += 1
|
|
|
|
if action > 1:
|
|
|
|
print("Cannot do more than one action")
|
|
|
|
return
|
|
|
|
if action == 0:
|
|
|
|
print("No action specified")
|
|
|
|
return
|
|
|
|
|
|
|
|
# Handle the check action
|
|
|
|
if args.check:
|
|
|
|
files = getdeveloperlib.check_developers(devs)
|
|
|
|
for f in files:
|
|
|
|
print f
|
|
|
|
|
|
|
|
# Handle the architecture action
|
|
|
|
if args.architecture is not None:
|
|
|
|
for dev in devs:
|
|
|
|
if args.architecture in dev.architectures:
|
|
|
|
print(dev.name)
|
|
|
|
return
|
|
|
|
|
|
|
|
# Handle the package action
|
|
|
|
if args.package is not None:
|
|
|
|
for dev in devs:
|
|
|
|
if args.package in dev.packages:
|
|
|
|
print(dev.name)
|
|
|
|
return
|
|
|
|
|
|
|
|
# Handle the patches action
|
|
|
|
if len(args.patches) != 0:
|
|
|
|
(files, infras) = getdeveloperlib.analyze_patches(args.patches)
|
|
|
|
matching_devs = set()
|
|
|
|
for dev in devs:
|
|
|
|
# See if we have developers matching by package name
|
|
|
|
for f in files:
|
|
|
|
if dev.hasfile(f):
|
|
|
|
matching_devs.add(dev.name)
|
|
|
|
# See if we have developers matching by package infra
|
|
|
|
for i in infras:
|
|
|
|
if i in dev.infras:
|
|
|
|
matching_devs.add(dev.name)
|
|
|
|
|
|
|
|
result = "--to buildroot@buildroot.org"
|
|
|
|
for dev in matching_devs:
|
2016-10-17 19:01:31 +02:00
|
|
|
result += " --cc \"%s\"" % dev
|
support/scripts/get-developers: add new script
This script, and its companion library, is more-or-less Buildroot's
equivalent to the kernel get_maintainer.pl script: it allows to get the
list of developers to whom a set of patches should be sent to.
To do so, it first relies on a text file, named DEVELOPERS, at the root
of the Buildroot source tree (added in a followup commit) to list the
developers and the files they are interested in. The DEVELOPERS file's
format is simple:
N: Firstname Lastname <email>
F: path/to/file
F: path/to/another/file
This allows to associate developers with the files they are looking
after, be they related to a package, a defconfig, a filesystem image, a
package infrastructure, the documentation, or anything else.
When a directory is given, the tool assumes that the developer handles
all files and subdirectories in this directory. For example
"package/qt5/" can be used for the developers looking after all the Qt5
packages.
Conventional shell patterns can be used, so "package/python-*" can be
used for the developers who want to look after all packages matching
"python-*".
A few files are recognized specially:
- .mk files are parsed, and if they contain $(eval
$(<something>-package)), the developer is assumed to be looking after
the corresponding package. This way, autobuilder failures for this
package can be reported directly to this developer.
- arch/Config.in.<arch> files are recognized as "the developer is
looking after the <arch> architecture". In this case, get-developer
parses the arch/Config.in.<arch> to get the list of possible BR2_ARCH
values. This way, autobuilder failures for this package can be
reported directly to this developer.
- pkg/pkg-<infra>.mk are recognized as "the developer is looking after
the <infra> package infrastructure. In this case, any patch that adds
or touches a .mk file that uses this infrastructure will be sent to
this developer.
Examples of usage:
$ ./support/scripts/get-developers 0001-ffmpeg-fix-bfin-build.patch
git send-email--to buildroot@buildroot.org --to "Luca Ceresoli <luca@lucaceresoli.net>" --to "Bernd Kuhls <bernd.kuhls@t-online.de>"
$ ./support/scripts/get-developers -p imx-lib
Arnout Vandecappelle <arnout@mind.be>
Gary Bisson <gary.bisson@boundarydevices.com>
$ ./support/scripts/get-developers -a bfin
Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-09-12 22:54:52 +02:00
|
|
|
|
|
|
|
if result != "":
|
|
|
|
print("git send-email %s" % result)
|
|
|
|
|
|
|
|
__main__()
|
|
|
|
|