From nobody Wed May 1 23:51:07 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+60629+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60629+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1591172846; cv=none; d=zohomail.com; s=zohoarc; b=OcI2irIaauzggQ4S1qX/BnhLnGRI2GNjy4x6eakzwBumcKCyDDumIzOF+yzkllVJjXouHjvXJnHAQkpNSHmVBCiXzBlwiq45u8FOpC2wrwJFX+ZWAsEAxmSRfA75AwcROJucbNvjpn/DRuLKXMnFjanuEqtB4tKGxznqB85mBL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591172846; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=9wskQrzErjXx1XmI+xRSDG8/c/KtdoM7rLND5dqnC9w=; b=GW2szGiF0Leef6rsR13XwG6SseYRoUDjNlF8bl0MFVtKFepML14LSSAd+9zvEfYdKASTM78FHJf94eY9PI6l2mMoWLrqW2jOLlGnDvDEmpeThDM5ax6dVUKvC+J43F/l95n/eJUuwSmndiXZKnLJ7xjaICKYhBBM7vXTO80dJ+U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+60629+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1591172846556907.0398376914063; Wed, 3 Jun 2020 01:27:26 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id ecP3YY1788612x1TXed0J578; Wed, 03 Jun 2020 01:27:26 -0700 X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web12.9233.1591172845821564055 for ; Wed, 03 Jun 2020 01:27:25 -0700 IronPort-SDR: yLxGp5HTrPOP6rANIOrTei3z119oysiFG5S8+a+m/++gxK3nlw7SrFyRJ2i6++PWFAu+Lseq/y XCGIRVgj1Bxg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jun 2020 01:27:24 -0700 IronPort-SDR: 0HCclXctXoUFS/Cc7DwrOqXjUy4oruEL/7uIbWIVPKZng0m1hg6gR5PfPHYkT7TBaIBcO3bnx3 2MOedhiq6wvg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,467,1583222400"; d="scan'208";a="470969382" X-Received: from shenglei-dev.ccr.corp.intel.com ([10.239.158.52]) by fmsmga006.fm.intel.com with ESMTP; 03 Jun 2020 01:27:23 -0700 From: "Zhang, Shenglei" To: devel@edk2.groups.io Cc: Bob Feng , Liming Gao Subject: [edk2-devel] [PATCH v3] BaseTools/PatchCheck.py: Add LicenseCheck Date: Wed, 3 Jun 2020 16:27:21 +0800 Message-Id: <20200603082721.26752-1-shenglei.zhang@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,shenglei.zhang@intel.com X-Gm-Message-State: BTOCImylWTOQTvUxWNHxlkEwx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1591172846; bh=PcqiThHw0OhKJ/aCajZKzl//xTmunaEg5clnha215wk=; h=Cc:Date:From:Reply-To:Subject:To; b=jWdjHWs6W439FcjVXFHTEIwuIJftqKsDM5piqPspc8+XMlPlcrcXtrA487pP09gg2jI R/72QSit45axAvCtKJ5L9oPCCBOxQCFKIuvJ0UYjs7EjRV3CQ7GBfzxAUHzf3uTGcbxg5 NOT1nl//+jQKqtXsAK6enk8Xz6CU8VEJdgs= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2691 For files to be added to the tree, this feature will check whether it has BSD plus patent license. If not, licenses listed in Readme are also accepted but warning will be reported. Otherwise, it should be error. Cc: Bob Feng Cc: Liming Gao Signed-off-by: Shenglei Zhang --- v2: Update handling methods for different licenses. v3: Change the position of LicenseCheck(). No functional update. BaseTools/Scripts/PatchCheck.py | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/BaseTools/Scripts/PatchCheck.py b/BaseTools/Scripts/PatchCheck= .py index 13da6967785d..764e66ab7a89 100755 --- a/BaseTools/Scripts/PatchCheck.py +++ b/BaseTools/Scripts/PatchCheck.py @@ -304,12 +304,49 @@ class GitDiffCheck: self.line_num =3D 0 self.state =3D START self.new_bin =3D [] + self.LicenseCheck(self.lines, self.count) while self.line_num < self.count and self.format_ok: line_num =3D self.line_num self.run() assert(self.line_num > line_num) self.report_message_result() =20 + def LicenseCheck(self, lines, count): + self.ok =3D True + self.startcheck =3D False + self.license =3D True + line_index =3D 0 + for line in lines: + if line.startswith('--- /dev/null'): + nextline =3D lines[line_index + 1] + added_file =3D self.Readdedfileformat.search(nextline).gro= up(1) + added_file_extension =3D os.path.splitext(added_file)[1] + if added_file_extension in self.file_extension_list: + self.startcheck =3D True + self.license =3D False + if self.startcheck and self.license_format_preflix in line: + if self.bsd2_patent in line or self.bsd3_patent in line: + self.license =3D True + else: + for optional_license in self.license_optional_list: + if optional_license in line: + self.license =3D True + self.warning(added_file) + if line_index + 1 =3D=3D count or lines[line_index + 1].starts= with('diff --') and self.startcheck: + if not self.license: + error_message =3D "Invalid License in: " + added_file + self.error(error_message) + self.startcheck =3D False + self.license =3D True + line_index =3D line_index + 1 + + def warning(self, *err): + count =3D 0 + for line in err: + error_format =3D 'Warning: License accepted but not BSD plus p= atent license in' + print(error_format, line) + count +=3D 1 + def report_message_result(self): if Verbose.level < Verbose.NORMAL: return @@ -491,6 +528,18 @@ class GitDiffCheck: print(prefix, line) count +=3D 1 =20 + license_format_preflix =3D 'SPDX-License-Identifier' + + bsd2_patent =3D 'BSD-2-Clause-Patent' + + bsd3_patent =3D 'BSD-3-Clause-Patent' + + license_optional_list =3D ['BSD-2-Clause', 'BSD-3-Clause', 'MIT', 'Pyt= hon-2.0', 'Zlib'] + + Readdedfileformat =3D re.compile(r'\+\+\+ b\/(.*)\n') + + file_extension_list =3D [".c", ".h", ".inf", ".dsc", ".dec", ".py", ".= bat", ".sh", ".uni", ".yaml", ".fdf", ".inc"] + class CheckOnePatch: """Checks the contents of a git email formatted patch. =20 --=20 2.18.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#60629): https://edk2.groups.io/g/devel/message/60629 Mute This Topic: https://groups.io/mt/74645747/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-