## @file\r
# Check a patch for various format issues\r
#\r
-# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials are licensed and made\r
-# available under the terms and conditions of the BSD License which\r
-# accompanies this distribution. The full text of the license may be\r
-# found at http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"\r
-# BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER\r
-# EXPRESS OR IMPLIED.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
\r
from __future__ import print_function\r
print(prefix, line)\r
count += 1\r
\r
+ # Find 'contributed-under:' at the start of a line ignoring case and\r
+ # requires ':' to be present. Matches if there is white space before\r
+ # the tag or between the tag and the ':'.\r
+ contributed_under_re = \\r
+ re.compile(r'^\s*contributed-under\s*:', re.MULTILINE|re.IGNORECASE)\r
+\r
def check_contributed_under(self):\r
- cu_msg='Contributed-under: TianoCore Contribution Agreement 1.0'\r
- if self.msg.find(cu_msg) < 0:\r
- self.error('Missing Contributed-under! (Note: this must be ' +\r
- 'added by the code contributor!)')\r
+ match = self.contributed_under_re.search(self.msg)\r
+ if match is not None:\r
+ self.error('Contributed-under! (Note: this must be ' +\r
+ 'removed by the code contributor!)')\r
\r
@staticmethod\r
def make_signature_re(sig, re_input=False):\r
if self.state == START:\r
if line.startswith('diff --git'):\r
self.state = PRE_PATCH\r
- self.filename = line[13:].split(' ',1)[0]\r
+ self.filename = line[13:].split(' ', 1)[0]\r
self.is_newfile = False\r
self.force_crlf = not self.filename.endswith('.sh')\r
elif len(line.rstrip()) != 0:\r
print('Checking git commit:', commit)\r
patch = self.read_patch_from_git(commit)\r
self.ok &= CheckOnePatch(commit, patch).ok\r
+ if not commits:\r
+ print("Couldn't find commit matching: '{}'".format(rev_spec))\r
\r
def read_commit_list_from_git(self, rev_spec, max_count):\r
# Run git to get the commit patch\r
cmd.append('--max-count=' + str(max_count))\r
cmd.append(rev_spec)\r
out = self.run_git(*cmd)\r
- return out.split()\r
+ return out.split() if out else []\r
\r
def read_patch_from_git(self, commit):\r
# Run git to get the commit patch\r
p = subprocess.Popen(cmd,\r
stdout=subprocess.PIPE,\r
stderr=subprocess.STDOUT)\r
- return p.communicate()[0].decode('utf-8', 'ignore')\r
+ Result = p.communicate()\r
+ return Result[0].decode('utf-8', 'ignore') if Result[0] and Result[0].find(b"fatal")!=0 else None\r
\r
class CheckOnePatchFile:\r
"""Performs a patch check for a single file.\r