DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v3] scripts: add git hook scripts for checkpatch and auto doc generation
Date: Mon,  7 Dec 2015 15:06:52 +0000	[thread overview]
Message-ID: <1449500812-28740-1-git-send-email-ferruh.yigit@intel.com> (raw)
In-Reply-To: <20151207133216.GA11273@sivlogin002.ir.intel.com>

These scripts are to automate some common tasks, scripts needs
to be deployed to specific folder to become active.

Scripts:
post-commit: Triggers after commit complete, re-generates api and
guides html documents. "RTE_DOC_OUT" environment variable configures
document output folder. Same script can be used on server side with
name "post-update", so documentation can auto updated after each push
to server.

post-merge: Same script as "post-commit", but triggered after git pull

pre-commit: Does a checkpatch check before commit started. This script
relies on scripts/checkpatches.sh script. checkpathes.sh should be
running well to use this git hook script.
This script can bypassed by commit "--no-verify" argument.

Deployment:
To make scripts active they need to be in <dpdk>/.git/hooks folder.
Alternatively "deploy.sh" script can be used, it simply links all
scripts into proper folder. Script names are significant and
shouldn't changed.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 mk/rte.sdkinstall.mk          |  6 +++++-
 scripts/checkpatches.sh       |  4 ++++
 scripts/git-hooks/deploy.sh   | 16 ++++++++++++++++
 scripts/git-hooks/post-commit | 14 ++++++++++++++
 scripts/git-hooks/post-merge  |  1 +
 scripts/git-hooks/pre-commit  | 13 +++++++++++++
 6 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100755 scripts/git-hooks/deploy.sh
 create mode 100755 scripts/git-hooks/post-commit
 create mode 120000 scripts/git-hooks/post-merge
 create mode 100755 scripts/git-hooks/pre-commit

diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
index c611d45..8e67c07 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -139,7 +139,11 @@ install-sdk:
 	    tar -xf -      -C $(DESTDIR)$(includedir) --strip-components=1 \
 		--keep-newer-files --warning=no-ignore-newer
 	$(Q)$(call rte_mkdir,                            $(DESTDIR)$(sdkdir))
-	$(Q)cp -a               $(RTE_SDK)/{mk,scripts}  $(DESTDIR)$(sdkdir)
+	$(Q)cp -a               $(RTE_SDK)/mk            $(DESTDIR)$(sdkdir)
+	$(Q)$(call rte_mkdir,                            $(DESTDIR)$(sdkdir)/scripts)
+	$(Q)tar -chf -     -C $(RTE_SDK) scripts --exclude git-hooks | \
+	    tar -xf -      -C $(DESTDIR)$(sdkdir)/scripts --strip-components=1 \
+		--keep-newer-files --warning=no-ignore-newer
 	$(Q)$(call rte_mkdir,                            $(DESTDIR)$(targetdir))
 	$(Q)cp -a               $O/.config               $(DESTDIR)$(targetdir)
 	$(Q)$(call rte_symlink, $(DESTDIR)$(includedir), $(DESTDIR)$(targetdir)/include)
diff --git a/scripts/checkpatches.sh b/scripts/checkpatches.sh
index afc611b..6e841ba 100755
--- a/scripts/checkpatches.sh
+++ b/scripts/checkpatches.sh
@@ -66,6 +66,10 @@ while getopts hqv ARG ; do
 done
 shift $(($OPTIND - 1))
 
+if [ -z "$@" ]; then
+	exec $DPDK_CHECKPATCH_PATH -q $options -
+fi
+
 status=0
 for p in "$@" ; do
 	! $verbose || printf '\n### %s\n\n' "$p"
diff --git a/scripts/git-hooks/deploy.sh b/scripts/git-hooks/deploy.sh
new file mode 100755
index 0000000..6b0147d
--- /dev/null
+++ b/scripts/git-hooks/deploy.sh
@@ -0,0 +1,16 @@
+
+SELF=$(basename $0)
+
+cd $(dirname $0)
+FILES=$(ls | grep -v ${SELF})
+
+TARGET_FOLDER="../../.git/hooks"
+SCRIPT_FOLDER="../../scripts/git-hooks"
+
+if [ ! -d ${TARGET_FOLDER} ]; then
+	exit 2
+fi
+
+for f in ${FILES}; do
+	ln -sf ${SCRIPT_FOLDER}/${f} ${TARGET_FOLDER}/${f}
+done
diff --git a/scripts/git-hooks/post-commit b/scripts/git-hooks/post-commit
new file mode 100755
index 0000000..882b3c2
--- /dev/null
+++ b/scripts/git-hooks/post-commit
@@ -0,0 +1,14 @@
+#
+# Create docs after each commit
+#
+
+# Load config options:
+# - DPDK_GITHOOK_DOC_OUT
+. scripts/load-devel-config.sh
+if [ -n "$DPDK_GITHOOK_DOC_OUT" ]; then
+	OUT_CMD="O=${DPDK_GITHOOK_DOC_OUT}"
+fi
+
+echo "Generating documents ..."
+make ${OUT_CMD} doc-guides-html > /dev/null
+make ${OUT_CMD} doc-api-html > /dev/null
diff --git a/scripts/git-hooks/post-merge b/scripts/git-hooks/post-merge
new file mode 120000
index 0000000..ace4560
--- /dev/null
+++ b/scripts/git-hooks/post-merge
@@ -0,0 +1 @@
+post-commit
\ No newline at end of file
diff --git a/scripts/git-hooks/pre-commit b/scripts/git-hooks/pre-commit
new file mode 100755
index 0000000..f3d6be4
--- /dev/null
+++ b/scripts/git-hooks/pre-commit
@@ -0,0 +1,13 @@
+#
+# Check patch with checkpatch script before commit
+#
+# If checkpatch fails, commit fails
+#
+# Relies on scripts/checkpathes.sh script as checkpatch.pl wrapper
+#
+# It is skipped with the option "--no-verify" of "git commit".
+#
+
+RTE_CHECKPATCH=$PWD/scripts/checkpatches.sh
+
+exec git diff --cached | ${RTE_CHECKPATCH}
-- 
2.5.0

      reply	other threads:[~2015-12-07 15:06 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-29 23:22 [dpdk-dev] [PATCH] " Ferruh Yigit
2015-11-06 13:48 ` Ferruh Yigit
2015-11-06 13:48   ` Ferruh Yigit
2015-11-24 17:44     ` Thomas Monjalon
2015-11-24 18:04       ` Ferruh Yigit
2015-11-06 14:03   ` Ferruh Yigit
2015-11-27 14:34 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit
2015-12-03 19:09   ` Thomas Monjalon
2015-12-07 13:32     ` Ferruh Yigit
2015-12-07 15:06       ` Ferruh Yigit [this message]

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=1449500812-28740-1-git-send-email-ferruh.yigit@intel.com \
    --to=ferruh.yigit@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).