<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Courier New";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoPlainText">Hi Thomas,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Here are some questiones about your scripts:<o:p></o:p></p>
<p class="MsoPlainText">1. With the script "send-patch-report.sh", Can I send my perpatch build results to patchwork as checkpatch result in patchwork?<o:p></o:p></p>
<p class="MsoPlainText">Such as, generate the GUI as blow:<o:p></o:p></p>
<p class="MsoPlainText"><img width="384" height="153" id="Picture_x0020_2" src="cid:image001.png@01D24FCC.01E4A4D0"><o:p></o:p></p>
<p class="MsoPlainText">2. Must I create /etc/dpdk/ci.config before using your scripts?<o:p></o:p></p>
<p class="MsoPlainText">   Because when I run it, it prompted following error message:<o:p></o:p></p>
<p class="MsoPlainText">   /root/dpdk-cii/tools/load-ci-config.sh: line 5: /etc/dpdk/ci.config: No such file or directory<o:p></o:p></p>
<p class="MsoPlainText">   /root/dpdk-cii/tools/load-ci-config.sh: line 6: /etc/dpdk/ci.config: No such file or directory<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">3. Some confuse about the parameters in "send-patch-report.sh":<o:p></o:p></p>
<p class="MsoPlainText">           options:<o:p></o:p></p>
<p class="MsoPlainText">                -t title    subject of the patch email<o:p></o:p></p>
<p class="MsoPlainText">                -f from     sender of the patch email<o:p></o:p></p>
<p class="MsoPlainText">                -m msgid    id of the patch email<o:p></o:p></p>
<p class="MsoPlainText">                -p listid   mailing list publishing the patch<o:p></o:p></p>
<p class="MsoPlainText">                -l label    title of the test<o:p></o:p></p>
<p class="MsoPlainText">                -s status   one of these test results: SUCCESS, WARNING, FAILURE<o:p></o:p></p>
<p class="MsoPlainText">                -d desc     few words to better describe the status<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">For example, about patch <a href="http://www.dpdk.org/dev/patchwork/patch/17673/">
http://www.dpdk.org/dev/patchwork/patch/17673/</a><o:p></o:p></p>
<p class="MsoPlainText">-t title    subject of the patch email<o:p></o:p></p>
<p class="MsoPlainText">   Is it “[dpdk-dev,2/8] drivers/common/dpaa2: Sample descriptors for NXP DPAA2 SEC operations.”?<o:p></o:p></p>
<p class="MsoPlainText">-f from     sender of the patch email<o:p></o:p></p>
<p class="MsoPlainText">   Is it the author who send the patch? In patch 17673, is it
<a href="mailto:akhil.goyal@nxp.com">akhil.goyal@nxp.com</a>?<o:p></o:p></p>
<p class="MsoPlainText">-m msgid    id of the patch email<o:p></o:p></p>
<p class="MsoPlainText">   Is it the message-id of this patch? In patch 17673, is it
<span style="font-size:10.5pt;font-family:"Helvetica",sans-serif;color:#333333;background:white">
<a href="mailto:20161205125540.6419-3-akhil.goyal@nxp.com">20161205125540.6419-3-akhil.goyal@nxp.com</a>?<o:p></o:p></span></p>
<p class="MsoPlainText">-p listid   mailing list publishing the patch<o:p></o:p></p>
<p class="MsoPlainText">   Is it the receiver about this patch? In patch 17673, is it
<a href="mailto:dev@dpdk.org">dev@dpdk.org</a>?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I try to send my result with script “send-patch-report.sh” with below command, but nothing happened.<o:p></o:p></p>
<p class="MsoPlainText">echo "$report" | /root/dpdk-cii/tools/send-patch-report.sh -t "[dpdk-dev,2/8] drivers/common/dpaa2: Sample descriptors for NXP DPAA2 SEC operations." -f "akhil.goyal@nxp.com" -m "20161205125540.6419-3-akhil.goyal@nxp.com" -p "dev@dpdk.org"
 -l "Intel Per-patch compilation check" -s "SUCCESS" -d "Compilation OK"<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Best Regards<o:p></o:p></p>
<p class="MsoPlainText">Fangfang<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><a name="_MailEndCompose"><o:p> </o:p></a></p>
<p class="MsoPlainText"><a name="_____replyseparator"></a>-----Original Message-----<br>
From: ci [mailto:ci-bounces@dpdk.org] On Behalf Of Thomas Monjalon<br>
Sent: Monday, December 5, 2016 9:26 PM<br>
To: ci@dpdk.org<br>
Subject: [dpdk-ci] [PATCH v4 7/7] tests: add checkpatch</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">This is the first test in this repository.<o:p></o:p></p>
<p class="MsoPlainText">It runs on dpdk.org and use checkpatch.pl of Linux.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Note that the patch is not applied on a git tree for this basic test.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Signed-off-by: Thomas Monjalon <<a href="mailto:thomas.monjalon@6wind.com"><span style="color:windowtext;text-decoration:none">thomas.monjalon@6wind.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">---<o:p></o:p></p>
<p class="MsoPlainText">tests/checkpatch.sh | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">1 file changed, 70 insertions(+)<o:p></o:p></p>
<p class="MsoPlainText">create mode 100755 tests/checkpatch.sh<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">diff --git a/tests/checkpatch.sh b/tests/checkpatch.sh new file mode 100755 index 0000000..319da1e<o:p></o:p></p>
<p class="MsoPlainText">--- /dev/null<o:p></o:p></p>
<p class="MsoPlainText">+++ b/tests/checkpatch.sh<o:p></o:p></p>
<p class="MsoPlainText">@@ -0,0 +1,70 @@<o:p></o:p></p>
<p class="MsoPlainText">+#! /bin/sh -e<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+# BSD LICENSE<o:p></o:p></p>
<p class="MsoPlainText">+#<o:p></o:p></p>
<p class="MsoPlainText">+# Copyright 2016 6WIND S.A.<o:p></o:p></p>
<p class="MsoPlainText">+#<o:p></o:p></p>
<p class="MsoPlainText">+# Redistribution and use in source and binary forms, with or without #
<o:p></o:p></p>
<p class="MsoPlainText">+modification, are permitted provided that the following conditions #
<o:p></o:p></p>
<p class="MsoPlainText">+are met:<o:p></o:p></p>
<p class="MsoPlainText">+#<o:p></o:p></p>
<p class="MsoPlainText">+#   * Redistributions of source code must retain the above copyright<o:p></o:p></p>
<p class="MsoPlainText">+#     notice, this list of conditions and the following disclaimer.<o:p></o:p></p>
<p class="MsoPlainText">+#   * Redistributions in binary form must reproduce the above copyright<o:p></o:p></p>
<p class="MsoPlainText">+#     notice, this list of conditions and the following disclaimer in<o:p></o:p></p>
<p class="MsoPlainText">+#     the documentation and/or other materials provided with the<o:p></o:p></p>
<p class="MsoPlainText">+#     distribution.<o:p></o:p></p>
<p class="MsoPlainText">+#   * Neither the name of 6WIND S.A. nor the names of its<o:p></o:p></p>
<p class="MsoPlainText">+#     contributors may be used to endorse or promote products derived<o:p></o:p></p>
<p class="MsoPlainText">+#     from this software without specific prior written permission.<o:p></o:p></p>
<p class="MsoPlainText">+#<o:p></o:p></p>
<p class="MsoPlainText">+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
<o:p></o:p></p>
<p class="MsoPlainText">+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT #
<o:p></o:p></p>
<p class="MsoPlainText">+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR #
<o:p></o:p></p>
<p class="MsoPlainText">+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT #
<o:p></o:p></p>
<p class="MsoPlainText">+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, #
<o:p></o:p></p>
<p class="MsoPlainText">+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT #
<o:p></o:p></p>
<p class="MsoPlainText">+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, #
<o:p></o:p></p>
<p class="MsoPlainText">+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY #
<o:p></o:p></p>
<p class="MsoPlainText">+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT #
<o:p></o:p></p>
<p class="MsoPlainText">+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE #
<o:p></o:p></p>
<p class="MsoPlainText">+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+print_usage () {<o:p></o:p></p>
<p class="MsoPlainText">+    cat <<- END_OF_HELP<o:p></o:p></p>
<p class="MsoPlainText">+    usage: $(basename $0) dpdk_dir < email<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+    Check email-formatted patch from stdin.<o:p></o:p></p>
<p class="MsoPlainText">+    This test runs checkpatch.pl of Linux via a script in dpdk_dir.<o:p></o:p></p>
<p class="MsoPlainText">+    END_OF_HELP<o:p></o:p></p>
<p class="MsoPlainText">+}<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+while getopts h arg ; do<o:p></o:p></p>
<p class="MsoPlainText">+    case $arg in<o:p></o:p></p>
<p class="MsoPlainText">+          h ) print_usage ; exit 0 ;;<o:p></o:p></p>
<p class="MsoPlainText">+          ? ) print_usage >&2 ; exit 1 ;;<o:p></o:p></p>
<p class="MsoPlainText">+    esac<o:p></o:p></p>
<p class="MsoPlainText">+done<o:p></o:p></p>
<p class="MsoPlainText">+shift $(($OPTIND - 1))<o:p></o:p></p>
<p class="MsoPlainText">+toolsdir=$(dirname $(readlink -m $0))/../tools<o:p></o:p></p>
<p class="MsoPlainText">+dpdkdir=$1<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+email=/tmp/$(basename $0 sh)$$<o:p></o:p></p>
<p class="MsoPlainText">+$toolsdir/filter-patch-email.sh >$email trap "rm -f $email" INT EXIT<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+eval $($toolsdir/parse-email.sh $email) # normal exit if no valid patch
<o:p></o:p></p>
<p class="MsoPlainText">+in the email [ -n "$subject" -a -n "$from" ] || exit 0<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+failed=false<o:p></o:p></p>
<p class="MsoPlainText">+report=$($dpdkdir/scripts/checkpatches.sh -q $email) || failed=true
<o:p></o:p></p>
<p class="MsoPlainText">+report=$(echo "$report" | sed '1,/^###/d')<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+label='checkpatch'<o:p></o:p></p>
<p class="MsoPlainText">+$failed && status='WARNING' || status='SUCCESS'<o:p></o:p></p>
<p class="MsoPlainText">+$failed && desc='coding style issues' || desc='coding style OK'<o:p></o:p></p>
<p class="MsoPlainText">+<o:p></o:p></p>
<p class="MsoPlainText">+echo "$report" | $toolsdir/send-patch-report.sh \<o:p></o:p></p>
<p class="MsoPlainText">+    -t "$subject" -f "$from" -m "$msgid" -p "$listid" \<o:p></o:p></p>
<p class="MsoPlainText">+    -l "$label" -s "$status" -d "$desc"<o:p></o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">2.7.0<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>