devtools: add script to get maintainers from patch
authorFerruh Yigit <ferruh.yigit@intel.com>
Fri, 4 Aug 2017 14:01:25 +0000 (15:01 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 7 Nov 2017 23:38:46 +0000 (00:38 +0100)
This is a wrapper to Linux kernel get_maintainer.pl file and only
supports parsing MAINTAINERS file (no git fallback etc..)

Requires DPDK_GETMAINTAINER_PATH devel config option set, please check
devtools/load-devel-config.

DPDK_GETMAINTAINER_PATH should be full path to the get_maintainer.pl
script, like:
DPDK_GETMAINTAINER_PATH=~/linux/scripts/get_maintainer.pl

Can be used individually:
./devtools/get-maintainer.sh <my.patch>

Or via git send-email, to add maintainers automatically:
git send-email --to-cmd ./devtools/get-maintainer.sh \
--cc dev@dpdk.org HEAD -4

Currently there is an ugly workaround to be able to use Linux script out
of the kernel tree, later better method can replace it.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
MAINTAINERS
devtools/get-maintainer.sh [new file with mode: 0755]
doc/guides/contributing/patches.rst

index bbcc9c4..8d45ad0 100644 (file)
@@ -47,6 +47,7 @@ F: devtools/check-maintainers.sh
 F: devtools/check-git-log.sh
 F: devtools/check-includes.sh
 F: devtools/checkpatches.sh
+F: devtools/get-maintainer.sh
 F: devtools/git-log-fixes.sh
 F: devtools/load-devel-config
 F: devtools/test-build.sh
diff --git a/devtools/get-maintainer.sh b/devtools/get-maintainer.sh
new file mode 100755 (executable)
index 0000000..5ae6b5a
--- /dev/null
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+#   BSD LICENSE
+#
+#   Copyright(c) 2017 Intel Corporation. All rights reserved.
+#   All rights reserved.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#     * Neither the name of Intel Corporation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# Load config options:
+# - DPDK_GETMAINTAINER_PATH
+. $(dirname $(readlink -e $0))/load-devel-config
+
+options="--no-git-fallback"
+options="$options --no-rolestats"
+
+print_usage () {
+       cat <<- END_OF_HELP
+       usage: $(basename $0) <patch>
+       END_OF_HELP
+}
+
+# Requires DPDK_GETMAINTAINER_PATH devel config option set,
+# please check devtools/load-devel-config.
+# DPDK_GETMAINTAINER_PATH should be full path to the get_maintainer.pl script,
+# like:
+#   DPDK_GETMAINTAINER_PATH=~/linux/scripts/get_maintainer.pl
+
+if [ ! -x "$DPDK_GETMAINTAINER_PATH" ] ; then
+       print_usage >&2
+       echo
+       echo 'Cannot execute DPDK_GETMAINTAINER_PATH' >&2
+       exit 1
+fi
+
+FILES="COPYING CREDITS Kbuild"
+FOLDERS="Documentation arch include fs init ipc kernel scripts"
+
+# Kernel script checks for some files and folders to run
+workaround () {
+       for f in $FILES; do
+               if [ ! -f $f ]; then touch $f; fi
+       done
+
+       for d in $FOLDERS; do
+               if [ ! -d $d ]; then mkdir $d; fi
+       done
+}
+
+fix_workaround () {
+       for f in $FILES; do if [ -f $f ]; then rm -f $f; fi; done
+       for d in $FOLDERS; do if [ -d $d ]; then rmdir $d; fi; done
+}
+
+# clean workaround on exit
+trap fix_workaround EXIT
+
+workaround
+$DPDK_GETMAINTAINER_PATH $options $@
+# fix_workaround called on exit by trap
index 446dfc7..40983c1 100644 (file)
@@ -403,6 +403,10 @@ The appropriate maintainer can be found in the ``MAINTAINERS`` file::
 
    git send-email --to maintainer@some.org --cc dev@dpdk.org 000*.patch
 
+Script ``get-maintainer.sh`` can be used to select maintainers automatically::
+
+  git send-email --to-cmd ./devtools/get-maintainer.sh --cc dev@dpdk.org 000*.patch
+
 New additions can be sent without a maintainer::
 
    git send-email --to dev@dpdk.org 000*.patch