From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50127+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50127+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089236; cv=none; d=zoho.com; s=zohoarc; b=fbu1JP3ThKVvsxZdhSeHs8bO/0ALctQOEHVCLcpUIL6P2KXO8VetdwQlRmJ/UpFRGQxhIVAqftUwTwAdSnkgX313jATBJlMboeRS8fFH6R7wDzTlwnklDO6Sf3v4VBt/eOf/6/mAwABS5/4ydA/UyHHkn9bUdB6wgpC4d0JjrxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089236; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Ks0nQTonemPzHmmmzjlm5xkuQYWMKC4KvNAo86bwBOI=; b=E0jF03Oir+ZWPMVjAQGgnC8OS2DbZ+djYmwUnn8k/4s0RImldMHyFV+p1xb8NpIBm21pqDq27X+orvUG40ithfG1l6x6fo+mA6zXN/LM+POShlriJZ7llxbRyWJKw4PIZoKfTqXb/RpsocQQ4Be2fMOCsviK8flT9IsXWFXKf0E= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50127+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 15730892360608.153985234896481; Wed, 6 Nov 2019 17:13:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:55 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:54 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520570" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:53 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Andrew Fish , Laszlo Ersek , Leif Lindholm Subject: [edk2-devel] [Patch v4 01/22] Maintainers.txt: Add continuous integration(CI) directories Date: Wed, 6 Nov 2019 17:13:28 -0800 Message-Id: <20191107011349.16524-2-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089235; bh=98HDDLnN71zQX6ej7Z2tShvK/RFoc8Isd6VSHsmLgK4=; h=Cc:Date:From:Reply-To:Subject:To; b=e5qgYwTlud01VJWVLCuI121gyLavptxReCN964rxt8fBD9pyUhILVOonyJamceMrq91 SdPOIezYagQxJ1FjbmiiOVK7jlJK7E6zX4k1r7sC0nmTgJR9ZqTZEpA7sTERfO6Xqz2Zn lJ0GP5wbksB/NZtj28h8ItGJmy9cgTSqQXA= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add maintainers and reviewers for the directories associated with continuous integration steps. * .azurepipelines * .mergify * .pytool Cc: Andrew Fish Cc: Laszlo Ersek Cc: Leif Lindholm Signed-off-by: Michael D Kinney Reviewed-by: Leif Lindholm Reviewed-by: Laszlo Ersek --- Maintainers.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Maintainers.txt b/Maintainers.txt index 922cc664dd..180ad35d09 100644 --- a/Maintainers.txt +++ b/Maintainers.txt @@ -98,6 +98,29 @@ F: */Arm/ M: Leif Lindholm M: Ard Biesheuvel =20 +EDK II Continuous Integration: +------------------------------ +.azurepipelines/ +F: .azurepipelines/ +M: Sean Brogan +M: Bret Barkelew +R: Michael D Kinney +R: Liming Gao + +.mergify/ +F: .mergify/ +M: Michael D Kinney +M: Liming Gao +R: Sean Brogan +R: Bret Barkelew + +.pytool/ +F: .pytool/ +M: Sean Brogan +M: Bret Barkelew +R: Michael D Kinney +R: Liming Gao + EDK II Packages: ---------------- ArmPkg --=20 2.21.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 (#50127): https://edk2.groups.io/g/devel/message/50127 Mute This Topic: https://groups.io/mt/44874042/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50128+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50128+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089235; cv=none; d=zoho.com; s=zohoarc; b=JsWy2KyFScmGVsRCYHa4zkLdAeJsNTMzTwzwY/QTs9UtX52rzBAAOX/xyKjEyqsfyyiyJCo3wa467kbwO+LhQ0cU5jYeJ5TTv9iyLTV2Iy4liRfwPuObwyJTqD9kDIUhTiyBvTrmiF4rGfs6E3QOjsvENiVxrCuD3eSUaO27yz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089235; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=zjuOsS6y4hByNVoRRX6Y+gCkkU9LB0QARiRZj8UruFk=; b=J0hhcW2OvvlL6vp5X2XQhCPXSUkGAjU2LNW+TGFjSOszZ/5yW0J1QYoAZ6wzcUHGnznK5zlkHVasaO1C2uVDdQNwmH0u2vn9ji1P8SqpE4bqoJbIaHVORUY/AqnQWm7qHMi9sgOO83BQHUzyHn2OxRGgF28bU9gkkla5p1/eYMI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50128+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 1573089235977867.2661110821298; Wed, 6 Nov 2019 17:13:55 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:55 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:54 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520574" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Andrew Fish , Laszlo Ersek , Leif Lindholm , Kinney , Philippe Mathieu-Daude Subject: [edk2-devel] [Patch v4 02/22] .gitignore: Ignore python compiled files, extdeps, and vscode Date: Wed, 6 Nov 2019 17:13:29 -0800 Message-Id: <20191107011349.16524-3-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089235; bh=hOEHPW22t/UtDMXxqJnY+NGKOiXNICiaftRdniqPYks=; h=Cc:Date:From:Reply-To:Subject:To; b=ebzkZpyAuhTk83XjdisRNG3NRcT08mhCn2WOHRPdJ3VYFRuntfxk7sIVJ3kAbx6BTzL fCsC4O/zKOvegGWOltzmrtfidw07/q5Z6yEqyDYSqZ31BJV+1oAwsA74D7tzAycvcb7ut 7b7TzR4EEPSIimkKfdeJiy0Cb/1JDh/Wwlg= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Update .gitignore to ignore .pyc files and __pycache__ directories. Python based plugins can be added to any package or platform, so these files and directories may be present outside of BaseTools. Ignore _extdep directories that are generated by the pytool external dependency feature. Ignore .vscode directories generated by the VS Code editor. Cc: Andrew Fish Cc: Laszlo Ersek Cc: Leif Lindholm Signed-off-by: Kinney Reviewed-by: Leif Lindholm Reviewed-by: Philippe Mathieu-Daude Reviewed-by: Laszlo Ersek --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 97f22c348c..1dd30c1410 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ Build/ -tags/ .DS_Store +*_extdep/ +*.pyc +__pycache__/ +tags/ +.vscode/ --=20 2.21.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 (#50128): https://edk2.groups.io/g/devel/message/50128 Mute This Topic: https://groups.io/mt/44874048/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50129+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50129+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089236; cv=none; d=zoho.com; s=zohoarc; b=GdzZMMuChnrDeu0RV+BlxPJMPVxKszZxZmtleRx1ewgWVW/k7FrgljIt3xRhmgkjebnLpzX9MQ0yUtHtAaOfZLiNQE0SZJmfbxiWONfEOjneXxFmKngL4wlYprAZ2Xv3omI0EdLhm/SLCtWtIRStLxdTUnPeT372tumguCOxP2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089236; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=OY7gtttwf8+/l+oI41+Mjsnt6QFc/1q/vKSRKLl3YxY=; b=Az9ZgX5xHzsebq4cRjIFczxBPnj0lvjigIv1x294UPrL5uUQb6a0RX0kbHgcXQ1KIjJ19zrEU7Zzo8Z951Oli3ypVZVhaCJJG76uNBJDOH89vxHS9fdN8gb+OcjhZ7QgMbBlUDj5NIhmWupCUKZe9qniJmjyCVmw5ct9itDt7OY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50129+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 1573089236403564.2089012193549; Wed, 6 Nov 2019 17:13:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:54 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520576" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Andrew Fish , Laszlo Ersek , Leif Lindholm Subject: [edk2-devel] [Patch v4 03/22] requirements.txt: Add python pip requirements file Date: Wed, 6 Nov 2019 17:13:30 -0800 Message-Id: <20191107011349.16524-4-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=r3sFnDbKBTrkOOmu7M/Smy1WRhmbyp4sLNfbu8DAiMU=; h=Cc:Date:From:Reply-To:Subject:To; b=bXoT2b9LF1+5vP4spPSZSoX8qaFkm9dqvfC/DpjiTD93qx8+VemC5hLVLK0tTiGBc44 jA9vk5bkd/Bwj6SpgDeBvG4sOoz9Cy/e1hhtKrFXyktHxjnEjN65hN6Spiy8AGXgcTnjN nzAovSz1oypilThl0pCR1cRUdwy1YgeUa/0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add pip requirements file that is used to install the python pip modules build from the edk2-pytool-library and edk2-pytool-extensions repositories. These python modules provide the extensions required to perform EDK II Continuous Integration(CI) builds. Cc: Andrew Fish Cc: Laszlo Ersek Cc: Leif Lindholm Signed-off-by: Michael D Kinney --- requirements.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000..4ad72cfc98 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,17 @@ +## @file +# EDK II Python PIP requirements file +# +# This file provides the list of python components to install using PIP. +# +# Copyright (c) Microsoft Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# https://pypi.org/project/pip/ +# https://pip.pypa.io/en/stable/user_guide/#requirements-files +# https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-f= ormat +# +## + +edk2-pytool-library=3D=3D0.10.* +edk2-pytool-extensions=3D=3D0.12.* --=20 2.21.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 (#50129): https://edk2.groups.io/g/devel/message/50129 Mute This Topic: https://groups.io/mt/44874051/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50130+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50130+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089236; cv=none; d=zoho.com; s=zohoarc; b=UhKrA7HF7jhpnLyafV92++2t/XL6vbSmssFWz45+F3ZcU+4ykxXoofq7Omj6spaltbcOISz61GIYF75hURYL+Q2CPRazG9mHM/spQ70cfCS5pRAPp9kuFkj7jgV3D018bvmJyH7Ilc4oRvWcz0lP3J+iMxU9wT+bAS+/sG2BAyo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089236; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=rlQQrsKfYJZUUSjtPTyTCeo/1S+u1feRLt6bMfpmqts=; b=NpiR45WuSTXKsCBKvoP09r8DbDIHJDv6VDtjn+D0bswCUucKsXjaonrnl98nbGCMTL0B+kUNgVfM2wmhn9OjMjhMS7CukeYmhri7S6yenggrCtAgffrEZx179uhG7iLnd26S0fIU3uJ8V0sIBOgbgB8lqHwVrMperJo8Kcm1HKs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50130+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 1573089236681952.8150728582204; Wed, 6 Nov 2019 17:13:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:55 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520579" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bob Feng , Liming Gao Subject: [edk2-devel] [Patch v4 04/22] BaseTools: Add RC_PATH define for VS2017/2019 Date: Wed, 6 Nov 2019 17:13:31 -0800 Message-Id: <20191107011349.16524-5-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=a6Zlwf5gjVXOCnPOh+IOH+/Jn5X3wvvoDfksyv+da4M=; h=Cc:Date:From:Reply-To:Subject:To; b=dSH2TDX07Ext6YjdNvJ8hIFwxALs8I/VFs3LK3hVByRKwdFqQpNE0sKkUGz8iKhI/uc 6DJs5aLSgAiH/RqpNRveDSjw3odNMc9+1WnG1KpO+20GMRROJBQLDla81UK+pGfKoIZpa P9FQlRZ3Ea7PdLsR7A+q0ZT5D6fWkv0+STM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add use of RC_PATH define that provides the path to the resource compiler that is typically provided in a Windows SDK. The path changes with different Windows SDK releases. This define is set to the WINSDK_PATH_FOR_RC_EXE environment variable. This environment variable must be set to the path to the currently installed resource compiler (rc.exe). Update set_vsprefix_envs.bat to set WINSDK_PATH_FOR_RC_EXE if a Windows SDK is detected. Cc: Bob Feng Cc: Liming Gao Signed-off-by: Michael D Kinney --- BaseTools/Conf/tools_def.template | 18 ++++++++++++++++-- BaseTools/set_vsprefix_envs.bat | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.t= emplate index dce6c5875a..afa13a7cae 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -4,9 +4,18 @@ # Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.
# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
+# Copyright (c) Microsoft Corporation # # SPDX-License-Identifier: BSD-2-Clause-Patent # +# +# Increase this version tag any time you want user to get warning about up= dating this +# file in the Conf dir. By default it does not do update existing conf di= rs. +# +# 2.00 - Initial version with changes for CI +# - Change RC path to use plugin +# +#!VERSION=3D2.00 =20 IDENTIFIER =3D Default TOOL_CHAIN_CONF =20 @@ -71,6 +80,11 @@ DEFINE VS2019_BIN_X64 =3D DEF(VS2019_BIN)\HostDEF(VS= _HOST)\x64 DEFINE VS2019_BIN_ARM =3D DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm DEFINE VS2019_BIN_AARCH64 =3D DEF(VS2019_BIN)\HostDEF(VS_HOST)\arm64 =20 +# +# Resource compiler +# +DEFINE RC_PATH =3D ENV(WINSDK_PATH_FOR_RC_EXE)\rc.exe + DEFINE WINSDK_BIN =3D ENV(WINSDK_PREFIX) DEFINE WINSDKx86_BIN =3D ENV(WINSDKx86_PREFIX) =20 @@ -1566,7 +1580,7 @@ NOOPT_VS2015x86_X64_DLINK_FLAGS =3D /NOLOGO /NODEF= AULTLIB /IGNORE:4001 /OPT:REF =20 *_VS2017_*_MAKE_PATH =3D DEF(VS2017_BIN_HOST)\nmake.exe *_VS2017_*_MAKE_FLAG =3D /nologo -*_VS2017_*_RC_PATH =3D DEF(WINSDK10_BIN)\rc.exe +*_VS2017_*_RC_PATH =3D DEF(RC_PATH) =20 *_VS2017_*_MAKE_FLAGS =3D /nologo *_VS2017_*_SLINK_FLAGS =3D /NOLOGO /LTCG @@ -1729,7 +1743,7 @@ NOOPT_VS2017_AARCH64_DLINK_FLAGS =3D /NOLOGO /NODEF= AULTLIB /IGNORE:4001 /OPT:REF =20 *_VS2019_*_MAKE_PATH =3D DEF(VS2019_BIN_HOST)\nmake.exe *_VS2019_*_MAKE_FLAG =3D /nologo -*_VS2019_*_RC_PATH =3D DEF(WINSDK10_BIN)\rc.exe +*_VS2019_*_RC_PATH =3D DEF(RC_PATH) =20 *_VS2019_*_MAKE_FLAGS =3D /nologo *_VS2019_*_SLINK_FLAGS =3D /NOLOGO /LTCG diff --git a/BaseTools/set_vsprefix_envs.bat b/BaseTools/set_vsprefix_envs.= bat index 6dff25d930..9966a5a4ed 100644 --- a/BaseTools/set_vsprefix_envs.bat +++ b/BaseTools/set_vsprefix_envs.bat @@ -158,6 +158,11 @@ if defined VCToolsInstallDir ( ) ) ) +if not defined WINSDK_PATH_FOR_RC_EXE ( + if defined WINSDK10_PREFIX ( + set "WINSDK_PATH_FOR_RC_EXE=3D%WINSDK10_PREFIX%x86" + ) +) =20 :SetVS2017 if not defined VS150COMNTOOLS ( @@ -209,6 +214,11 @@ if defined VCToolsInstallDir ( ) ) ) +if not defined WINSDK_PATH_FOR_RC_EXE ( + if defined WINSDK10_PREFIX ( + set "WINSDK_PATH_FOR_RC_EXE=3D%WINSDK10_PREFIX%x86" + ) +) =20 :SetWinDDK if not defined WINDDK3790_PREFIX ( --=20 2.21.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 (#50130): https://edk2.groups.io/g/devel/message/50130 Mute This Topic: https://groups.io/mt/44874053/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50131+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50131+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089236; cv=none; d=zoho.com; s=zohoarc; b=Q1RG9dHc+ia9FTQy3MrTR6t9+eXVUAxaxr3//ZcVT62/Lthn5ed4g0lWfyaufKOpmClV/CnLN2YUiydUoL4v/hX2FzKmernbrixbEku9ohnzbdUaaMyVQf26ahRm2vr7kGF+7yx1pwnVDA6lY3ZoflgV0jy3MS7s85vYQQzSONw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089236; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=IBnTWWNI3/0rU3SpPATW+El0sVdoJD/x3lqmZgPu9EU=; b=adSqw10Eptr7Ouz8Qqt+8GXRDVcq2Rimals0r83oDVUXA2TTzOt37lQfbdl7m0E7b5Smek/PB2J7DHBJQFi+wuqpsYsGdiGg64ITN0L06oNNV7AA8XG+sAqySduoghQr5ae3eNyQhMpnpzfoVv7koHxdqZYqdLwpG+2bgj+pbCE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50131+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 1573089236708926.0874642797997; Wed, 6 Nov 2019 17:13:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:55 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520583" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bob Feng , Liming Gao Subject: [edk2-devel] [Patch v4 05/22] BaseTools: Add YAML files with path env and tool extdeps Date: Wed, 6 Nov 2019 17:13:32 -0800 Message-Id: <20191107011349.16524-6-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=KnwcvMYF4oq7BP5ghIdLEDKmbUqtrIvmqB6KLOuCCPI=; h=Cc:Date:From:Reply-To:Subject:To; b=rDN6WieT42AM9ne7WiUjoUHaNUVPMMjEsW67Dcw0IpdGEcZv2r3UDpkLnV0yOwFvIYf oFn3KUq2pBh94rOxPh2QRFq7YrCTNpKrWk3Ls7LjJNHdjQFhqFWnFDCkdRPRvExWeKqgI SsgcdKv7MK3oBvlLO+AOEMvP0Q2LbgiJTrg= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Cc: Bob Feng Cc: Liming Gao Signed-off-by: Michael D Kinney --- BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml | 21 +++ BaseTools/Bin/gcc_arm_linux_ext_dep.yaml | 21 +++ BaseTools/Bin/iasl_ext_dep.yaml | 21 +++ BaseTools/Bin/nasm_ext_dep.yaml | 18 ++ .../BinWrappers/PosixLike/posix_path_env.yaml | 10 ++ .../WindowsLike/win_build_tools_path_env.yaml | 10 ++ BaseTools/Edk2ToolsBuild.py | 163 ++++++++++++++++++ .../basetool_tiano_python_path_env.yaml | 11 ++ BaseTools/basetools_calling_path_env.yaml | 11 ++ BaseTools/basetools_path_env.yaml | 11 ++ 10 files changed, 297 insertions(+) create mode 100644 BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml create mode 100644 BaseTools/Bin/gcc_arm_linux_ext_dep.yaml create mode 100644 BaseTools/Bin/iasl_ext_dep.yaml create mode 100644 BaseTools/Bin/nasm_ext_dep.yaml create mode 100644 BaseTools/BinWrappers/PosixLike/posix_path_env.yaml create mode 100644 BaseTools/BinWrappers/WindowsLike/win_build_tools_path_= env.yaml create mode 100644 BaseTools/Edk2ToolsBuild.py create mode 100644 BaseTools/Source/Python/basetool_tiano_python_path_env.= yaml create mode 100644 BaseTools/basetools_calling_path_env.yaml create mode 100644 BaseTools/basetools_path_env.yaml diff --git a/BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml b/BaseTools/Bin/g= cc_aarch64_linux_ext_dep.yaml new file mode 100644 index 0000000000..69648c89d8 --- /dev/null +++ b/BaseTools/Bin/gcc_aarch64_linux_ext_dep.yaml @@ -0,0 +1,21 @@ +## +# Download GCC AARCH64 compiler from Linaro's release site +# Set shell variable GCC5_AARCH64_INSTALL to this folder +# +# This is only downloaded when a build activates scope gcc_aarch64_linux +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "gcc_aarch64_linux", + "type": "web", + "name": "gcc_aarch64_linux", + "source": "http://releases.linaro.org/components/toolchain/binaries/7.4-= 2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu= .tar.xz", + "version": "7.4.1", + "sha256": "27f1dc2c491ed61ae8f0d4b0c11de59cd2f7dd9c94761ee7153006fcac1bf= 9ab", + "compression_type": "tar", + "internal_path": "/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/", + "flags": ["set_shell_var", ], + "var_name": "GCC5_AARCH64_INSTALL" +} diff --git a/BaseTools/Bin/gcc_arm_linux_ext_dep.yaml b/BaseTools/Bin/gcc_a= rm_linux_ext_dep.yaml new file mode 100644 index 0000000000..e108aaad2a --- /dev/null +++ b/BaseTools/Bin/gcc_arm_linux_ext_dep.yaml @@ -0,0 +1,21 @@ +## +# Download GCC ARM compiler from Linaro's release site +# Set shell variable GCC5_ARM_INSTALL to this folder +# +# This is only downloaded when a build activates scope gcc_arm_linux +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "gcc_arm_linux", + "type": "web", + "name": "gcc_arm_linux", + "source": "https://releases.linaro.org/components/toolchain/binaries/7.4= -2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnue= abihf.tar.xz", + "version": "7.4.1", + "sha256": "3C951CF1941D0FA06D64CC0D5E88612B209D8123B273FA26C16D70BD7BC6B= 163", + "compression_type": "tar", + "internal_path": "/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/", + "flags": ["set_shell_var", ], + "var_name": "GCC5_ARM_INSTALL" +} diff --git a/BaseTools/Bin/iasl_ext_dep.yaml b/BaseTools/Bin/iasl_ext_dep.y= aml new file mode 100644 index 0000000000..1c63921367 --- /dev/null +++ b/BaseTools/Bin/iasl_ext_dep.yaml @@ -0,0 +1,21 @@ +## +# Download iasl executable tool from a nuget.org package +# - package contains different binaries based on host +# Add the folder with the tool to the path +# +# This is only downloaded for scope cibuild thus +# should have no impact on the asl compiler used by any +# given platform to build. +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "id": "iasl-ci-1", + "scope": "cibuild", + "type": "nuget", + "name": "iasl", + "source": "https://api.nuget.org/v3/index.json", + "version": "20190215.0.0", + "flags": ["set_path", "host_specific"] +} diff --git a/BaseTools/Bin/nasm_ext_dep.yaml b/BaseTools/Bin/nasm_ext_dep.y= aml new file mode 100644 index 0000000000..8894516b5a --- /dev/null +++ b/BaseTools/Bin/nasm_ext_dep.yaml @@ -0,0 +1,18 @@ +## +# Download nasm x86 assembler executable tool from a nuget.org package +# - package contains different binaries based on host +# Put on the tool on the path +# +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "id": "nasm-1", + "scope": "edk2-build", + "type": "nuget", + "name": "mu_nasm", + "source": "https://api.nuget.org/v3/index.json", + "version": "2.14.02", + "flags": ["set_path", "host_specific"] +} diff --git a/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml b/BaseTool= s/BinWrappers/PosixLike/posix_path_env.yaml new file mode 100644 index 0000000000..eec65ed7db --- /dev/null +++ b/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml @@ -0,0 +1,10 @@ +## +# Set this folder on the path for all linux builds +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global-nix", + "flags": ["set_path"] +} diff --git a/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yam= l b/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml new file mode 100644 index 0000000000..340724f39f --- /dev/null +++ b/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml @@ -0,0 +1,10 @@ +## +# Add this folder to the path on Windows +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global-win", + "flags": ["set_path"] +} diff --git a/BaseTools/Edk2ToolsBuild.py b/BaseTools/Edk2ToolsBuild.py new file mode 100644 index 0000000000..057d2e9e06 --- /dev/null +++ b/BaseTools/Edk2ToolsBuild.py @@ -0,0 +1,163 @@ +# @file Edk2ToolsBuild.py +# Invocable class that builds the basetool c files. +# +# Supports VS2017, VS2019, and GCC5 +## +# Copyright (c) Microsoft Corporation +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +import sys +import logging +import argparse +from edk2toolext import edk2_logging +from edk2toolext.environment import self_describing_environment +from edk2toolext.base_abstract_invocable import BaseAbstractInvocable +from edk2toollib.utility_functions import RunCmd +from edk2toollib.windows.locate_tools import QueryVcVariables + + +class Edk2ToolsBuild(BaseAbstractInvocable): + + def ParseCommandLineOptions(self): + ''' parse arguments ''' + ParserObj =3D argparse.ArgumentParser() + ParserObj.add_argument("-t", "--tool_chain_tag", dest=3D"tct", def= ault=3D"VS2017", + help=3D"Set the toolchain used to compile t= he build tools") + args =3D ParserObj.parse_args() + self.tool_chain_tag =3D args.tct + + def GetWorkspaceRoot(self): + ''' Return the workspace root for initializing the SDE ''' + + # this is the bastools dir...not the traditional EDK2 workspace ro= ot + return os.path.dirname(os.path.abspath(__file__)) + + def GetActiveScopes(self): + ''' return tuple containing scopes that should be active for this = process ''' + + # for now don't use scopes + return ('global',) + + def GetLoggingLevel(self, loggerType): + ''' Get the logging level for a given type (return Logging.Level) + base =3D=3D lowest logging level supported + con =3D=3D Screen logging + txt =3D=3D plain text file logging + md =3D=3D markdown file logging + ''' + if(loggerType =3D=3D "con"): + return logging.ERROR + else: + return logging.DEBUG + + def GetLoggingFolderRelativeToRoot(self): + ''' Return a path to folder for log files ''' + return "BaseToolsBuild" + + def GetVerifyCheckRequired(self): + ''' Will call self_describing_environment.VerifyEnvironment if thi= s returns True ''' + return True + + def GetLoggingFileName(self, loggerType): + ''' Get the logging file name for the type. + Return None if the logger shouldn't be created + + base =3D=3D lowest logging level supported + con =3D=3D Screen logging + txt =3D=3D plain text file logging + md =3D=3D markdown file logging + ''' + return "BASETOOLS_BUILD" + + def WritePathEnvFile(self, OutputDir): + ''' Write a PyTool path env file for future PyTool based edk2 buil= ds''' + content =3D '''## +# Set shell variable EDK_TOOLS_BIN to this folder +# +# Autogenerated by Edk2ToolsBuild.py +# +# Copyright (c), Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "id": "You-Built-BaseTools", + "scope": "edk2-build", + "flags": ["set_shell_var", "set_path"], + "var_name": "EDK_TOOLS_BIN" +} +''' + with open(os.path.join(OutputDir, "basetoolsbin_path_env.yaml"), "= w") as f: + f.write(content) + + def Go(self): + logging.info("Running Python version: " + str(sys.version_info)) + + (build_env, shell_env) =3D self_describing_environment.BootstrapEn= vironment( + self.GetWorkspaceRoot(), self.GetActiveScopes()) + + # # Bind our current execution environment into the shell vars. + ph =3D os.path.dirname(sys.executable) + if " " in ph: + ph =3D '"' + ph + '"' + shell_env.set_shell_var("PYTHON_HOME", ph) + # PYTHON_COMMAND is required to be set for using edk2 python build= s. + pc =3D sys.executable + if " " in pc: + pc =3D '"' + pc + '"' + shell_env.set_shell_var("PYTHON_COMMAND", pc) + + if self.tool_chain_tag.lower().startswith("vs"): + + # # Update environment with required VC vars. + interesting_keys =3D ["ExtensionSdkDir", "INCLUDE", "LIB"] + interesting_keys.extend( + ["LIBPATH", "Path", "UniversalCRTSdkDir", "UCRTVersion", "= WindowsLibPath", "WindowsSdkBinPath"]) + interesting_keys.extend( + ["WindowsSdkDir", "WindowsSdkVerBinPath", "WindowsSDKVersi= on", "VCToolsInstallDir"]) + vc_vars =3D QueryVcVariables( + interesting_keys, 'x86', vs_version=3Dself.tool_chain_tag.= lower()) + for key in vc_vars.keys(): + logging.debug(f"Var - {key} =3D {vc_vars[key]}") + if key.lower() =3D=3D 'path': + shell_env.insert_path(vc_vars[key]) + else: + shell_env.set_shell_var(key, vc_vars[key]) + + self.OutputDir =3D os.path.join( + shell_env.get_shell_var("EDK_TOOLS_PATH"), "Bin", "Win32") + + # compiled tools need to be added to path because antlr is ref= erenced + shell_env.insert_path(self.OutputDir) + + # Actually build the tools. + ret =3D RunCmd('nmake.exe', None, + workingdir=3Dshell_env.get_shell_var("EDK_TOOLS_P= ATH")) + if ret !=3D 0: + raise Exception("Failed to build.") + + self.WritePathEnvFile(self.OutputDir) + return ret + + elif self.tool_chain_tag.lower().startswith("gcc"): + ret =3D RunCmd("make", "-C .", workingdir=3Dshell_env.get_shel= l_var("EDK_TOOLS_PATH")) + if ret !=3D 0: + raise Exception("Failed to build.") + + self.OutputDir =3D os.path.join( + shell_env.get_shell_var("EDK_TOOLS_PATH"), "Source", "C", = "bin") + + self.WritePathEnvFile(self.OutputDir) + return ret + + logging.critical("Tool Chain not supported") + return -1 + + +def main(): + Edk2ToolsBuild().Invoke() + + +if __name__ =3D=3D "__main__": + main() diff --git a/BaseTools/Source/Python/basetool_tiano_python_path_env.yaml b/= BaseTools/Source/Python/basetool_tiano_python_path_env.yaml new file mode 100644 index 0000000000..1edc8810ce --- /dev/null +++ b/BaseTools/Source/Python/basetool_tiano_python_path_env.yaml @@ -0,0 +1,11 @@ +## +# Add this folder to the pypath so modules can be easily +# loaded +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global", + "flags": ["set_pypath"] +} diff --git a/BaseTools/basetools_calling_path_env.yaml b/BaseTools/basetool= s_calling_path_env.yaml new file mode 100644 index 0000000000..cfdbcea104 --- /dev/null +++ b/BaseTools/basetools_calling_path_env.yaml @@ -0,0 +1,11 @@ +## +# Set shell variable BASE_TOOL_PATH to this folder +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global", + "flags": ["set_shell_var"], + "var_name": "BASE_TOOLS_PATH" +} diff --git a/BaseTools/basetools_path_env.yaml b/BaseTools/basetools_path_e= nv.yaml new file mode 100644 index 0000000000..f64a3b8d45 --- /dev/null +++ b/BaseTools/basetools_path_env.yaml @@ -0,0 +1,11 @@ +## +# Set shell variable EDK_TOOL_PATH to this folder +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global", + "flags": ["set_shell_var", "set_build_var"], + "var_name": "EDK_TOOLS_PATH" +} --=20 2.21.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 (#50131): https://edk2.groups.io/g/devel/message/50131 Mute This Topic: https://groups.io/mt/44874054/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50132+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50132+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089236; cv=none; d=zoho.com; s=zohoarc; b=PjRwGYiW+H88l/ZZIXQ/2jvjBInidj+Mm3BuPsGv/qw8Q/I803yYXBCEzIYnGh+7SRmBS8wN1QqSDZ9nFVSWY+iFt9P90E/Uw5awZdYzv1t9MmlMup2/NoWaBHKpD+NdSyTc950a/Uk+mgzEEnSMLPFIFAzJh7UhMfPd9uVAUQw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089236; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=/S8BZXTF/5mQdUf/bUVn50thyreBnOqabgFlxwguBVc=; b=Ff89xTHNE9NlSkRX2jde2LfdBB2PjnUzTYUjvM7oc8hSUH35tiskd1UMJnK9DrBplQb3vIjTwbIuy1HocT4WTRLSpDqZRnyeD7kmT5JSqRga7g7RiMk5rjog9OxloY2jpsv+QdlA/MdQR7EHmzBwx6XfLr2zmmXc6k68ZXk6IkM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50132+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 1573089236827226.61115085825782; Wed, 6 Nov 2019 17:13:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:55 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520587" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:54 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bob Feng , Liming Gao Subject: [edk2-devel] [Patch v4 06/22] BaseTools: Add BaseTools plugins to support CI Date: Wed, 6 Nov 2019 17:13:33 -0800 Message-Id: <20191107011349.16524-7-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=q0awPuSDQISs3rmx1Th+StV46/1oKDLuEht8wzfnyRI=; h=Cc:Date:From:Reply-To:Subject:To; b=bOoutE9TEbjq6j9MdJ5ZIEtfLT6di6VIUxVTFlOERwHQM1brsjFESKTI49iKLKHW1HM BOhXKHkeQwXeaF+rnKkVXGf35qGGh8W7ZgJ0z8IHE0li/1z/Ysv3XZzXxcIYwHOZ31Vsx B/X3IhwJBW9hY9RUkrpGyNfUkWsR+6hsPTk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add the following plugins that are required to support EDK II Continuous Integration (CI) builds. These plugins are added to BaseTools because that support EDK II BaseTools features. * BuildToolsReportGenerator * LinuxGcc5ToolChain * WindowsResourceCompiler * WindowsVsToolChain Cc: Bob Feng Cc: Liming Gao Signed-off-by: Michael D Kinney --- .../BuildToolsReportGenerator.py | 69 ++++++++++ .../BuildToolsReportGenerator_plug_in.yaml | 12 ++ .../BuildToolsReport_Template.html | 126 ++++++++++++++++++ .../LinuxGcc5ToolChain/LinuxGcc5ToolChain.py | 85 ++++++++++++ .../LinuxGcc5ToolChain_plug_in.yaml | 12 ++ .../WindowsResourceCompiler/WinRcPath.py | 29 ++++ .../WinRcPath_plug_in.yaml | 13 ++ .../WindowsVsToolChain/WindowsVsToolChain.py | 126 ++++++++++++++++++ .../WindowsVsToolChain_plug_in.yaml | 11 ++ 9 files changed, 483 insertions(+) create mode 100644 BaseTools/Plugin/BuildToolsReport/BuildToolsReportGener= ator.py create mode 100644 BaseTools/Plugin/BuildToolsReport/BuildToolsReportGener= ator_plug_in.yaml create mode 100644 BaseTools/Plugin/BuildToolsReport/BuildToolsReport_Temp= late.html create mode 100644 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.= py create mode 100644 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_= plug_in.yaml create mode 100644 BaseTools/Plugin/WindowsResourceCompiler/WinRcPath.py create mode 100644 BaseTools/Plugin/WindowsResourceCompiler/WinRcPath_plug= _in.yaml create mode 100644 BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain.= py create mode 100644 BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain_= plug_in.yaml diff --git a/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator.py= b/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator.py new file mode 100644 index 0000000000..d5df9f2f9b --- /dev/null +++ b/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator.py @@ -0,0 +1,69 @@ +## +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +import logging +import json + +try: + from edk2toolext.environment.plugintypes.uefi_build_plugin import IUef= iBuildPlugin + + class BuildToolsReportGenerator(IUefiBuildPlugin): + def do_report(self, thebuilder): + try: + from edk2toolext.environment import version_aggregator + except ImportError: + logging.critical("Loading BuildToolsReportGenerator failed= , please update your Edk2-PyTool-Extensions") + return 0 + + OutputReport =3D os.path.join(thebuilder.env.GetValue("BUILD_O= UTPUT_BASE"), "BUILD_TOOLS_REPORT") + OutputReport =3D os.path.normpath(OutputReport) + if not os.path.isdir(os.path.dirname(OutputReport)): + os.makedirs(os.path.dirname(OutputReport)) + + Report =3D BuildToolsReport() + Report.MakeReport(version_aggregator.GetVersionAggregator().Ge= tAggregatedVersionInformation(), OutputReport=3DOutputReport) + + def do_pre_build(self, thebuilder): + self.do_report(thebuilder) + return 0 + + def do_post_build(self, thebuilder): + self.do_report(thebuilder) + return 0 + +except ImportError: + pass + + +class BuildToolsReport(object): + MY_FOLDER =3D os.path.dirname(os.path.realpath(__file__)) + VERSION =3D "1.00" + + def __init__(self): + pass + + def MakeReport(self, BuildTools, OutputReport=3D"BuildToolsReport"): + logging.info("Writing BuildToolsReports to {0}".format(OutputRepor= t)) + versions_list =3D [] + for key, value in BuildTools.items(): + versions_list.append(value) + versions_list =3D sorted(versions_list, key=3Dlambda k: k['type']) + json_dict =3D {"modules": versions_list, + "PluginVersion": BuildToolsReport.VERSION} + + htmlfile =3D open(OutputReport + ".html", "w") + jsonfile =3D open(OutputReport + ".json", "w") + template =3D open(os.path.join(BuildToolsReport.MY_FOLDER, "BuildT= oolsReport_Template.html"), "r") + + for line in template.readlines(): + if "%TO_BE_FILLED_IN_BY_PYTHON_SCRIPT%" in line: + line =3D line.replace("%TO_BE_FILLED_IN_BY_PYTHON_SCRIPT%"= , json.dumps(json_dict)) + htmlfile.write(line) + + jsonfile.write(json.dumps(versions_list, indent=3D4)) + + jsonfile.close() + template.close() + htmlfile.close() diff --git a/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator_pl= ug_in.yaml b/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator_pl= ug_in.yaml new file mode 100644 index 0000000000..50afd53926 --- /dev/null +++ b/BaseTools/Plugin/BuildToolsReport/BuildToolsReportGenerator_plug_in.y= aml @@ -0,0 +1,12 @@ +## +# Build Plugin used to output html report of all versions collected +# during the build +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global", + "name": "Build Tools Report Generator", + "module": "BuildToolsReportGenerator" +} diff --git a/BaseTools/Plugin/BuildToolsReport/BuildToolsReport_Template.ht= ml b/BaseTools/Plugin/BuildToolsReport/BuildToolsReport_Template.html new file mode 100644 index 0000000000..26350ab425 --- /dev/null +++ b/BaseTools/Plugin/BuildToolsReport/BuildToolsReport_Template.html @@ -0,0 +1,126 @@ + + + + + + Build Tools Report + + + + + + +
+

Build Tools Report

+ +
+
+ + + + + + + + + +
KeyValueType
+
+
+
+
+

+

+ Build Tools Report Template Version: 1.00
+ Build Tools Report Plugin Version:
+

+

License

+
+
+

+ Copyright (c) Mi= crosoft Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-= Patent + +

+
+
+
+

External Licenses

+
+
+
+
+
+ + + + + + + + + + + + diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py b/Ba= seTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py new file mode 100644 index 0000000000..c31641e931 --- /dev/null +++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py @@ -0,0 +1,85 @@ +# @file LinuxGcc5ToolChain.py +# Plugin to configures paths for GCC5 ARM/AARCH64 Toolchain +## +# This plugin works in conjuncture with the tools_def +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +import logging +from edk2toolext.environment.plugintypes.uefi_build_plugin import IUefiBui= ldPlugin +from edk2toolext.environment import shell_environment + + +class LinuxGcc5ToolChain(IUefiBuildPlugin): + + def do_post_build(self, thebuilder): + return 0 + + def do_pre_build(self, thebuilder): + self.Logger =3D logging.getLogger("LinuxGcc5ToolChain") + + # + # GCC5 - The ARM and AARCH64 compilers need their paths set if ava= ilable + if thebuilder.env.GetValue("TOOL_CHAIN_TAG") =3D=3D "GCC5": + + # Start with AARACH64 compiler + ret =3D self._check_aarch64() + if ret !=3D 0: + self.Logger.critical("Failed in check aarch64") + return ret + + # Check arm compiler + ret =3D self._check_arm() + if ret !=3D 0: + self.Logger.critical("Failed in check arm") + return ret + + return 0 + + def _check_arm(self): + # check to see if full path already configured + if shell_environment.GetEnvironment().get_shell_var("GCC5_ARM_PREF= IX") is not None: + self.Logger.info("GCC5_ARM_PREFIX is already set.") + + else: + # now check for install dir. If set then set the Prefix + install_path =3D shell_environment.GetEnvironment().get_shell_= var("GCC5_ARM_INSTALL") + if install_path is None: + return 0 + + # make GCC5_ARM_PREFIX to align with tools_def.txt + prefix =3D os.path.join(install_path, "bin", "arm-linux-gnueab= ihf-") + shell_environment.GetEnvironment().set_shell_var("GCC5_ARM_PRE= FIX", prefix) + + # now confirm it exists + if not os.path.exists(shell_environment.GetEnvironment().get_shell= _var("GCC5_ARM_PREFIX") + "gcc"): + self.Logger.error("Path for GCC5_ARM_PREFIX toolchain is inval= id") + return -2 + + return 0 + + def _check_aarch64(self): + # check to see if full path already configured + if shell_environment.GetEnvironment().get_shell_var("GCC5_AARCH64_= PREFIX") is not None: + self.Logger.info("GCC5_AARCH64_PREFIX is already set.") + + else: + # now check for install dir. If set then set the Prefix + install_path =3D shell_environment.GetEnvironment( + ).get_shell_var("GCC5_AARCH64_INSTALL") + if install_path is None: + return 0 + + # make GCC5_AARCH64_PREFIX to align with tools_def.txt + prefix =3D os.path.join(install_path, "bin", "aarch64-linux-gn= u-") + shell_environment.GetEnvironment().set_shell_var("GCC5_AARCH64= _PREFIX", prefix) + + # now confirm it exists + if not os.path.exists(shell_environment.GetEnvironment().get_shell= _var("GCC5_AARCH64_PREFIX") + "gcc"): + self.Logger.error( + "Path for GCC5_AARCH64_PREFIX toolchain is invalid") + return -2 + + return 0 diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in= .yaml b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml new file mode 100644 index 0000000000..91cfcfbb28 --- /dev/null +++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml @@ -0,0 +1,12 @@ +## +# Build Plugin used to set the path +# for the GCC5 ARM/AARCH64 downloaded compilers +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global-nix", + "name": "Linux GCC5 Tool Chain Support", + "module": "LinuxGcc5ToolChain" +} diff --git a/BaseTools/Plugin/WindowsResourceCompiler/WinRcPath.py b/BaseTo= ols/Plugin/WindowsResourceCompiler/WinRcPath.py new file mode 100644 index 0000000000..ec2f2d1298 --- /dev/null +++ b/BaseTools/Plugin/WindowsResourceCompiler/WinRcPath.py @@ -0,0 +1,29 @@ +## @file WinRcPath.py +# Plugin to find Windows SDK Resource Compiler rc.exe +## +# This plugin works in conjuncture with the tools_def to support rc.exe +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +from edk2toolext.environment.plugintypes.uefi_build_plugin import IUefiBui= ldPlugin +import edk2toollib.windows.locate_tools as locate_tools +from edk2toolext.environment import shell_environment +from edk2toolext.environment import version_aggregator + +class WinRcPath(IUefiBuildPlugin): + + def do_post_build(self, thebuilder): + return 0 + + def do_pre_build(self, thebuilder): + #get the locate tools module + path =3D locate_tools.FindToolInWinSdk("rc.exe") + if path is None: + thebuilder.logging.warning("Failed to find rc.exe") + else: + p =3D os.path.abspath(os.path.dirname(path)) + shell_environment.GetEnvironment().set_shell_var("WINSDK_PATH_= FOR_RC_EXE", p) + version_aggregator.GetVersionAggregator().ReportVersion("WINSD= K_PATH_FOR_RC_EXE", p, version_aggregator.VersionTypes.INFO) + return 0 diff --git a/BaseTools/Plugin/WindowsResourceCompiler/WinRcPath_plug_in.yam= l b/BaseTools/Plugin/WindowsResourceCompiler/WinRcPath_plug_in.yaml new file mode 100644 index 0000000000..030ebe776c --- /dev/null +++ b/BaseTools/Plugin/WindowsResourceCompiler/WinRcPath_plug_in.yaml @@ -0,0 +1,13 @@ +## +# Build Plugin used to set the path to rc.exe on windows. +# The plugin is able to use python to locate the tool as to avoid +# hard-coding the path +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global-win", + "name": "Windows RC Path Support", + "module": "WinRcPath" +} diff --git a/BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain.py b/Ba= seTools/Plugin/WindowsVsToolChain/WindowsVsToolChain.py new file mode 100644 index 0000000000..a8202e5992 --- /dev/null +++ b/BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain.py @@ -0,0 +1,126 @@ +## @file WindowsVsToolChain.py +# Plugin to configures paths for the VS2017 and VS2019 tool chain +## +# This plugin works in conjuncture with the tools_def +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +import logging +from edk2toolext.environment.plugintypes.uefi_build_plugin import IUefiBui= ldPlugin +import edk2toollib.windows.locate_tools as locate_tools +from edk2toollib.windows.locate_tools import FindWithVsWhere +from edk2toolext.environment import shell_environment +from edk2toolext.environment import version_aggregator + +class WindowsVsToolChain(IUefiBuildPlugin): + + def do_post_build(self, thebuilder): + return 0 + + def do_pre_build(self, thebuilder): + self.Logger =3D logging.getLogger("WindowsVsToolChain") + +# + # VS2017 - Follow VS2017 where there is potential for many version= s of the tools. + # If a specific version is required then the user must set both en= v variables: + ## VS150INSTALLPATH: base install path on system to VC install di= r. Here you will find the VC folder, etc + ## VS150TOOLVER: version number for the VC compiler tools + ## VS2017_PREFIX: path to MSVC compiler folder with trailing s= lash (can be used instead of two vars above) + if thebuilder.env.GetValue("TOOL_CHAIN_TAG") =3D=3D "VS2017": + + # check to see if full path already configured + if shell_environment.GetEnvironment().get_shell_var("VS2017_PR= EFIX") !=3D None: + self.Logger.info("VS2017_PREFIX is already set.") + + else: + install_path =3D self._get_vs_install_path("VS2017".lower(= ), "VS150INSTALLPATH") + vc_ver =3D self._get_vc_version(install_path, "VS150TOOLVE= R") + + if install_path is None or vc_ver is None: + self.Logger.error("Failed to configure environment for= VS2017") + return -1 + + version_aggregator.GetVersionAggregator().ReportVersion( + "Visual Studio Install Path", install_path, version_ag= gregator.VersionTypes.INFO) + version_aggregator.GetVersionAggregator().ReportVersion( + "VC Version", vc_ver, version_aggregator.VersionTypes.= TOOL) + + #make VS2017_PREFIX to align with tools_def.txt + prefix =3D os.path.join(install_path, "VC", "Tools", "MSVC= ", vc_ver) + prefix =3D prefix + os.path.sep + shell_environment.GetEnvironment().set_shell_var("VS2017_P= REFIX", prefix) + + # now confirm it exists + if not os.path.exists(shell_environment.GetEnvironment().get_s= hell_var("VS2017_PREFIX")): + self.Logger.error("Path for VS2017 toolchain is invalid") + return -2 + + # + # VS2019 - Follow VS2019 where there is potential for many version= s of the tools. + # If a specific version is required then the user must set both en= v variables: + ## VS160INSTALLPATH: base install path on system to VC install di= r. Here you will find the VC folder, etc + ## VS160TOOLVER: version number for the VC compiler tools + ## VS2019_PREFIX: path to MSVC compiler folder with trailing s= lash (can be used instead of two vars above) + elif thebuilder.env.GetValue("TOOL_CHAIN_TAG") =3D=3D "VS2019": + + # check to see if full path already configured + if shell_environment.GetEnvironment().get_shell_var("VS2019_PR= EFIX") !=3D None: + self.Logger.info("VS2019_PREFIX is already set.") + + else: + install_path =3D self._get_vs_install_path("VS2019".lower(= ), "VS160INSTALLPATH") + vc_ver =3D self._get_vc_version(install_path, "VS160TOOLVE= R") + + if install_path is None or vc_ver is None: + self.Logger.error("Failed to configure environment for= VS2019") + return -1 + + version_aggregator.GetVersionAggregator().ReportVersion( + "Visual Studio Install Path", install_path, version_ag= gregator.VersionTypes.INFO) + version_aggregator.GetVersionAggregator().ReportVersion( + "VC Version", vc_ver, version_aggregator.VersionTypes.= TOOL) + + #make VS2019_PREFIX to align with tools_def.txt + prefix =3D os.path.join(install_path, "VC", "Tools", "MSVC= ", vc_ver) + prefix =3D prefix + os.path.sep + shell_environment.GetEnvironment().set_shell_var("VS2019_P= REFIX", prefix) + + # now confirm it exists + if not os.path.exists(shell_environment.GetEnvironment().get_s= hell_var("VS2019_PREFIX")): + self.Logger.error("Path for VS2019 toolchain is invalid") + return -2 + + return 0 + + def _get_vs_install_path(self, vs_version, varname): + # check if already specified + path =3D shell_environment.GetEnvironment().get_shell_var(varname) + if(path is None): + # Not specified...find latest + (rc, path) =3D FindWithVsWhere(vs_version=3Dvs_version) + if rc =3D=3D 0 and path is not None and os.path.exists(path): + self.Logger.debug("Found VS instance for %s", vs_version) + else: + self.Logger.error("Failed to find VS instance with VsWhere= (%d)" % rc) + return path + + def _get_vc_version(self, path, varname): + # check if already specified + vc_ver =3D shell_environment.GetEnvironment().get_shell_var(varnam= e) + if (path is None): + self.Logger.critical("Failed to find Visual Studio tools. Mig= ht need to check for VS install") + return vc_ver + if(vc_ver is None): + # Not specified...find latest + p2 =3D os.path.join(path, "VC", "Tools", "MSVC") + if not os.path.isdir(p2): + self.Logger.critical( + "Failed to find VC tools. Might need to check for VS = install") + return vc_ver + vc_ver =3D os.listdir(p2)[-1].strip() # get last in list + self.Logger.debug("Found VC Tool version is %s" % vc_ver) + return vc_ver + + diff --git a/BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain_plug_in= .yaml b/BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain_plug_in.yaml new file mode 100644 index 0000000000..0d7acc2e6d --- /dev/null +++ b/BaseTools/Plugin/WindowsVsToolChain/WindowsVsToolChain_plug_in.yaml @@ -0,0 +1,11 @@ +## +# Build Plugin used to set the path to the visual studio tools chain +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "global-win", + "name": "Windows Visual Studio Tool Chain Support", + "module": "WindowsVsToolChain" +} --=20 2.21.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 (#50132): https://edk2.groups.io/g/devel/message/50132 Mute This Topic: https://groups.io/mt/44874057/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50133+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50133+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=cpDUeApbukC3QclPF9Tt0o+pXnjgoxUCJCFf1uNuH/HynTqf+qbF8sd+09NUlT+61vqj9rXjOFDgBsr+3EjytpJllcjpVdMnD//e4bMNUuZZMUvoNt6072oXGl81+n3+k6iLBNqcIIcJc25/3/T/WGo2/1tj0kC1tuHuvMT2o+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=+lZexXp2hdRIsTwzUXwCAVtO5nkDSQLRwZSRKfIFmk8=; b=B8J/qkBD+bd36/iZBdAwzuwj5NhVkUbDh2QncmbpDR8AKuaFUU7s4keAife67msJp5VqzLVS+6ZmKHv9cwmzBeJBqUZqMM1bXZb/mzkn2m91OA4/M6JJvATkLIxwmbaMc1YuWuSFc+d8rxdpdswwq8h1ABSHxiu+Zzk24HIgK+o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50133+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 157308923717335.59993962525891; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:55 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520592" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:55 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bret Barkelew , Liming Gao Subject: [edk2-devel] [Patch v4 07/22] .pytool/Plugin: Add CI plugins Date: Wed, 6 Nov 2019 17:13:34 -0800 Message-Id: <20191107011349.16524-8-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=Y0CACcJncoOk00oRwERw+DfCccvQv6Ms/7lvZk2EPTQ=; h=Cc:Date:From:Reply-To:Subject:To; b=tISGvqr5e3va02ojX4lS73N/q36S3A41wU5mT/tlHdoGdwF3SHr/AVNwtJRejhuL3bL S10Y16DcDTPZ5G9Qgb5p3rCprAdnr8GIAt+WKtT8MHZaUwPpPJT9SYZqYCHjUbSFC0+gR 8AvIlV4Z6Ikybcbp2jO0BivuNtgn2gtOJvI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add .pytool directory to the edk2 repository with the following plugins. These plugins are in a top level directory because that can be used with all packages and platforms. * CharEncodingCheck * CompilerPlugin * DependencyCheck * DscCompleteCheck * GuidCheck * LibraryClassCheck * SpellCheck Cc: Sean Brogan Cc: Bret Barkelew Cc: Liming Gao Signed-off-by: Michael D Kinney --- .../CharEncodingCheck/CharEncodingCheck.py | 118 ++++++++ .../CharEncodingCheck_plug_in.yaml | 11 + .pytool/Plugin/CharEncodingCheck/Readme.md | 13 + .../Plugin/CompilerPlugin/CompilerPlugin.py | 102 +++++++ .../CompilerPlugin/Compiler_plug_in.yaml | 11 + .../Plugin/DependencyCheck/DependencyCheck.py | 120 +++++++++ .../DependencyCheck_plug_in.yaml | 13 + .../DscCompleteCheck/DscCompleteCheck.py | 118 ++++++++ .../DscCompleteCheck_plug_in.yaml | 12 + .pytool/Plugin/DscCompleteCheck/readme.md | 22 ++ .pytool/Plugin/GuidCheck/GuidCheck.py | 251 ++++++++++++++++++ .../Plugin/GuidCheck/GuidCheck_plug_in.yaml | 11 + .pytool/Plugin/GuidCheck/Readme.md | 60 +++++ .../LibraryClassCheck/LibraryClassCheck.py | 153 +++++++++++ .../LibraryClassCheck_plug_in.yaml | 11 + .pytool/Plugin/LibraryClassCheck/readme.md | 22 ++ .pytool/Plugin/SpellCheck/Readme.md | 100 +++++++ .pytool/Plugin/SpellCheck/SpellCheck.py | 216 +++++++++++++++ .../Plugin/SpellCheck/SpellCheck_plug_in.yaml | 11 + .pytool/Plugin/SpellCheck/cspell.base.yaml | 165 ++++++++++++ 20 files changed, 1540 insertions(+) create mode 100644 .pytool/Plugin/CharEncodingCheck/CharEncodingCheck.py create mode 100644 .pytool/Plugin/CharEncodingCheck/CharEncodingCheck_plug= _in.yaml create mode 100644 .pytool/Plugin/CharEncodingCheck/Readme.md create mode 100644 .pytool/Plugin/CompilerPlugin/CompilerPlugin.py create mode 100644 .pytool/Plugin/CompilerPlugin/Compiler_plug_in.yaml create mode 100644 .pytool/Plugin/DependencyCheck/DependencyCheck.py create mode 100644 .pytool/Plugin/DependencyCheck/DependencyCheck_plug_in.= yaml create mode 100644 .pytool/Plugin/DscCompleteCheck/DscCompleteCheck.py create mode 100644 .pytool/Plugin/DscCompleteCheck/DscCompleteCheck_plug_i= n.yaml create mode 100644 .pytool/Plugin/DscCompleteCheck/readme.md create mode 100644 .pytool/Plugin/GuidCheck/GuidCheck.py create mode 100644 .pytool/Plugin/GuidCheck/GuidCheck_plug_in.yaml create mode 100644 .pytool/Plugin/GuidCheck/Readme.md create mode 100644 .pytool/Plugin/LibraryClassCheck/LibraryClassCheck.py create mode 100644 .pytool/Plugin/LibraryClassCheck/LibraryClassCheck_plug= _in.yaml create mode 100644 .pytool/Plugin/LibraryClassCheck/readme.md create mode 100644 .pytool/Plugin/SpellCheck/Readme.md create mode 100644 .pytool/Plugin/SpellCheck/SpellCheck.py create mode 100644 .pytool/Plugin/SpellCheck/SpellCheck_plug_in.yaml create mode 100644 .pytool/Plugin/SpellCheck/cspell.base.yaml diff --git a/.pytool/Plugin/CharEncodingCheck/CharEncodingCheck.py b/.pytoo= l/Plugin/CharEncodingCheck/CharEncodingCheck.py new file mode 100644 index 0000000000..54a2424875 --- /dev/null +++ b/.pytool/Plugin/CharEncodingCheck/CharEncodingCheck.py @@ -0,0 +1,118 @@ +# @file CharEncodingCheck.py +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + + +import os +import logging +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toolext.environment.var_dict import VarDict + +## +# map +## +EcodingMap =3D { + ".md": 'utf-8', + ".dsc": 'utf-8', + ".dec": 'utf-8', + ".c": 'utf-8', + ".h": 'utf-8', + ".asm": 'utf-8', + ".masm": 'utf-8', + ".nasm": 'utf-8', + ".s": 'utf-8', + ".inf": 'utf-8', + ".asl": 'utf-8', + ".uni": 'utf-8', + ".py": 'utf-8' +} + + +class CharEncodingCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that scans each file in the code tree and confirms the= encoding is correct. + + Configuration options: + "CharEncodingCheck": { + "IgnoreFiles": [] + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + testclassname: a descriptive string for the testcase can inclu= de whitespace + classname: should be patterned .. + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + """ + return ("Check for valid file encoding for " + packagename, packag= ename + ".CharEncodingCheck") + + ## + # External function of plugin. This function is used to perform the t= ask of the ci_build_plugin Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + overall_status =3D 0 + files_tested =3D 0 + + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath(packagename) + + if abs_pkg_path is None: + tc.SetSkipped() + tc.LogStdError("No Package folder {0}".format(abs_pkg_path)) + return 0 + + for (ext, enc) in EcodingMap.items(): + files =3D self.WalkDirectoryForExtension([ext], abs_pkg_path) + files =3D [Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(x) = for x in files] # make edk2relative path so can process ignores + + if "IgnoreFiles" in pkgconfig: + for a in pkgconfig["IgnoreFiles"]: + a =3D a.replace(os.sep, "/") + try: + tc.LogStdOut("Ignoring File {0}".format(a)) + files.remove(a) + except: + tc.LogStdError("CharEncodingCheck.IgnoreInf -> {0}= not found in filesystem. Invalid ignore file".format(a)) + logging.info("CharEncodingCheck.IgnoreInf -> {0} n= ot found in filesystem. Invalid ignore file".format(a)) + + files =3D [Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Relat= ivePath(x) for x in files] + for a in files: + files_tested +=3D 1 + if(self.TestEncodingOk(a, enc)): + logging.debug("File {0} Passed Encoding Check {1}".for= mat(a, enc)) + else: + tc.LogStdError("Encoding Failure in {0}. Not {1}".for= mat(a, enc)) + overall_status +=3D 1 + + tc.LogStdOut("Tested Encoding on {0} files".format(files_tested)) + if overall_status is not 0: + tc.SetFailed("CharEncoding {0} Failed. Errors {1}".format(pac= kagename, overall_status), "CHAR_ENCODING_CHECK_FAILED") + else: + tc.SetSuccess() + return overall_status + + def TestEncodingOk(self, apath, encodingValue): + try: + with open(apath, "rb") as fobj: + fobj.read().decode(encodingValue) + except Exception as exp: + logging.error("Encoding failure: file: {0} type: {1}".format(a= path, encodingValue)) + logging.debug("EXCEPTION: while processing {1} - {0}".format(e= xp, apath)) + return False + + return True diff --git a/.pytool/Plugin/CharEncodingCheck/CharEncodingCheck_plug_in.yam= l b/.pytool/Plugin/CharEncodingCheck/CharEncodingCheck_plug_in.yaml new file mode 100644 index 0000000000..915d3f4fdb --- /dev/null +++ b/.pytool/Plugin/CharEncodingCheck/CharEncodingCheck_plug_in.yaml @@ -0,0 +1,11 @@ +## +# CiBuildPlugin used to check char encoding +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Char Encoding Check Test", + "module": "CharEncodingCheck" +} diff --git a/.pytool/Plugin/CharEncodingCheck/Readme.md b/.pytool/Plugin/Ch= arEncodingCheck/Readme.md new file mode 100644 index 0000000000..8350542966 --- /dev/null +++ b/.pytool/Plugin/CharEncodingCheck/Readme.md @@ -0,0 +1,13 @@ +# Character Encoding Check Plugin + +This CiBuildPlugin scans all the files in a package to make sure each file= is correctly encoded and all characters can be read. Improper encoding ca= uses tools to fail in some situations especially in different locals. + +## Configuration + +The plugin can be configured to ignore certain files. + +``` yaml +"CharEncodingCheck": { + "IgnoreFiles": [] # optional - list of files to ignore +} +``` diff --git a/.pytool/Plugin/CompilerPlugin/CompilerPlugin.py b/.pytool/Plug= in/CompilerPlugin/CompilerPlugin.py new file mode 100644 index 0000000000..0a357309a4 --- /dev/null +++ b/.pytool/Plugin/CompilerPlugin/CompilerPlugin.py @@ -0,0 +1,102 @@ +# @file HostUnitTestCompiler_plugin.py +## +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +import logging +import os +import re +from edk2toollib.uefi.edk2.parsers.dsc_parser import DscParser +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toolext.environment.uefi_build import UefiBuilder +from edk2toolext import edk2_logging +from edk2toolext.environment.var_dict import VarDict + + +class CompilerPlugin(ICiBuildPlugin): + """ + A CiBuildPlugin that compiles the package dsc + from the package being tested. + + Configuration options: + "CompilerPlugin": { + "DscPath": "" + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + """ + target =3D environment.GetValue("TARGET") + return ("Compile " + packagename + " " + target, packagename + ".C= ompiler." + target) + + def RunsOnTargetList(self): + return ["DEBUG", "RELEASE"] + + ## + # External function of plugin. This function is used to perform the t= ask of the MuBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + self._env =3D environment + + # Parse the config for required DscPath element + if "DscPath" not in pkgconfig: + tc.SetSkipped() + tc.LogStdError("DscPath not found in config file. Nothing to = compile.") + return -1 + + AP =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2RelativePath(= packagename) + + APDSC =3D os.path.join(AP, pkgconfig["DscPath"].strip()) + AP_Path =3D Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(APDSC) + if AP is None or AP_Path is None or not os.path.isfile(APDSC): + tc.SetSkipped() + tc.LogStdError("Package Dsc not found.") + return -1 + + logging.info("Building {0}".format(AP_Path)) + self._env.SetValue("ACTIVE_PLATFORM", AP_Path, "Set in Compiler Pl= ugin") + + # Parse DSC to check for SUPPORTED_ARCHITECTURES + dp =3D DscParser() + dp.SetBaseAbsPath(Edk2pathObj.WorkspacePath) + dp.SetPackagePaths(Edk2pathObj.PackagePathList) + dp.ParseFile(AP_Path) + if "SUPPORTED_ARCHITECTURES" in dp.LocalVars: + SUPPORTED_ARCHITECTURES =3D dp.LocalVars["SUPPORTED_ARCHITECTU= RES"].split('|') + TARGET_ARCHITECTURES =3D environment.GetValue("TARGET_ARCH").s= plit(' ') + + # Skip if there is no intersection between SUPPORTED_ARCHITECT= URES and TARGET_ARCHITECTURES + if len(set(SUPPORTED_ARCHITECTURES) & set(TARGET_ARCHITECTURES= )) =3D=3D 0: + tc.SetSkipped() + tc.LogStdError("No supported architecutres to build") + return -1 + + uefiBuilder =3D UefiBuilder() + # do all the steps + # WorkSpace, PackagesPath, PInHelper, PInManager + ret =3D uefiBuilder.Go(Edk2pathObj.WorkspacePath, os.pathsep.join(= Edk2pathObj.PackagePathList), PLMHelper, PLM) + if ret !=3D 0: # failure: + tc.SetFailed("Compile failed for {0}".format(packagename), "Co= mpile_FAILED") + tc.LogStdError("{0} Compile failed with error code {1} ".forma= t(AP_Path, ret)) + return 1 + + else: + tc.SetSuccess() + return 0 diff --git a/.pytool/Plugin/CompilerPlugin/Compiler_plug_in.yaml b/.pytool/= Plugin/CompilerPlugin/Compiler_plug_in.yaml new file mode 100644 index 0000000000..4f9b3d3113 --- /dev/null +++ b/.pytool/Plugin/CompilerPlugin/Compiler_plug_in.yaml @@ -0,0 +1,11 @@ +## +# CiBuildPlugin used to compile each package +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Compiler Plugin", + "module": "CompilerPlugin" +} diff --git a/.pytool/Plugin/DependencyCheck/DependencyCheck.py b/.pytool/Pl= ugin/DependencyCheck/DependencyCheck.py new file mode 100644 index 0000000000..497914cf3a --- /dev/null +++ b/.pytool/Plugin/DependencyCheck/DependencyCheck.py @@ -0,0 +1,120 @@ +# @file dependency_check.py +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +import logging +import os +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toollib.uefi.edk2.parsers.inf_parser import InfParser +from edk2toolext.environment.var_dict import VarDict + + +class DependencyCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that finds all modules (inf files) in a package and re= views the packages used + to confirm they are acceptable. This is to help enforce layering and = identify improper + dependencies between packages. + + Configuration options: + "DependencyCheck": { + "AcceptableDependencies": [], # Package dec files that are allowed= in all INFs. Example: MdePkg/MdePkg.dec + "AcceptableDependencies-": [], # OPTIONAL Package dep= endencies for INFs that are HOST_APPLICATION + "AcceptableDependencies-HOST_APPLICATION": [], # EXAMPLE Package d= ependencies for INFs that are HOST_APPLICATION + "IgnoreInf": [] # Ignore INF if found in filesystem + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + testclassname: a descriptive string for the testcase can i= nclude whitespace + classname: should be patterned .. + """ + return ("Test Package Dependencies for modules in " + packagename,= packagename + ".DependencyCheck") + + ## + # External function of plugin. This function is used to perform the t= ask of the MuBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + overall_status =3D 0 + + # Get current platform + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath(packagename) + + # Get INF Files + INFFiles =3D self.WalkDirectoryForExtension([".inf"], abs_pkg_path) + INFFiles =3D [Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(x) f= or x in INFFiles] # make edk2relative path so can compare with Ignore List + + # Remove ignored INFs + if "IgnoreInf" in pkgconfig: + for a in pkgconfig["IgnoreInf"]: + a =3D a.replace(os.sep, "/") ## convert path sep in case = ignore list is bad. Can't change case + try: + INFFiles.remove(a) + tc.LogStdOut("IgnoreInf {0}".format(a)) + except: + logging.info("DependencyConfig.IgnoreInf -> {0} not fo= und in filesystem. Invalid ignore file".format(a)) + tc.LogStdError("DependencyConfig.IgnoreInf -> {0} not = found in filesystem. Invalid ignore file".format(a)) + + + # Get the AccpetableDependencies list + if "AcceptableDependencies" not in pkgconfig: + logging.info("DependencyCheck Skipped. No Acceptable Dependen= cies defined.") + tc.LogStdOut("DependencyCheck Skipped. No Acceptable Dependen= cies defined.") + tc.SetSkipped() + return -1 + + # Log dependencies + for k in pkgconfig.keys(): + if k.startswith("AcceptableDependencies"): + pkgstring =3D "\n".join(pkgconfig[k]) + if ("-" in k): + _, _, mod_type =3D k.partition("-") + tc.LogStdOut(f"Additional dependencies for MODULE_TYPE= {mod_type}:\n {pkgstring}") + else: + tc.LogStdOut(f"Acceptable Dependencies:\n {pkgstring}") + + # For each INF file + for file in INFFiles: + ip =3D InfParser() + logging.debug("Parsing " + file) + ip.SetBaseAbsPath(Edk2pathObj.WorkspacePath).SetPackagePaths(E= dk2pathObj.PackagePathList).ParseFile(file) + + if("MODULE_TYPE" not in ip.Dict): + tc.LogStdOut("Ignoring INF. Missing key for MODULE_TYPE {0= }".format(file)) + continue + + mod_type =3D ip.Dict["MODULE_TYPE"].upper() + for p in ip.PackagesUsed: + if p not in pkgconfig["AcceptableDependencies"]: + # If not in the main acceptable dependencies list then= check module specific + mod_specific_key =3D "AcceptableDependencies-" + mod_t= ype + if mod_specific_key in pkgconfig and p in pkgconfig[mo= d_specific_key]: + continue + + logging.error("Dependency Check: Invalid Dependency IN= F: {0} depends on pkg {1}".format(file, p)) + tc.LogStdError("Dependency Check: Invalid Dependency I= NF: {0} depends on pkg {1}".format(file, p)) + overall_status +=3D 1 + + # If XML object exists, add results + if overall_status is not 0: + tc.SetFailed("Failed with {0} errors".format(overall_status), = "DEPENDENCYCHECK_FAILED") + else: + tc.SetSuccess() + return overall_status diff --git a/.pytool/Plugin/DependencyCheck/DependencyCheck_plug_in.yaml b/= .pytool/Plugin/DependencyCheck/DependencyCheck_plug_in.yaml new file mode 100644 index 0000000000..fdb96d625b --- /dev/null +++ b/.pytool/Plugin/DependencyCheck/DependencyCheck_plug_in.yaml @@ -0,0 +1,13 @@ +## +# CiBuildPlugin used to check all infs within a package +# to confirm the packagesdependency are on the configured list of acceptab= le +# dependencies. +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Dependency Check Test", + "module": "DependencyCheck" +} diff --git a/.pytool/Plugin/DscCompleteCheck/DscCompleteCheck.py b/.pytool/= Plugin/DscCompleteCheck/DscCompleteCheck.py new file mode 100644 index 0000000000..dcd8946ca6 --- /dev/null +++ b/.pytool/Plugin/DscCompleteCheck/DscCompleteCheck.py @@ -0,0 +1,118 @@ +# @file DscCompleteCheck.py +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import logging +import os +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toollib.uefi.edk2.parsers.dsc_parser import DscParser +from edk2toollib.uefi.edk2.parsers.inf_parser import InfParser +from edk2toolext.environment.var_dict import VarDict + + +class DscCompleteCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that scans the package dsc file and confirms all modul= es (inf files) are + listed in the components sections. + + Configuration options: + "DscCompleteCheck": { + "DscPath": "" + "IgnoreInf": [] # Ignore INF if found in filesystem by not dsc + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + testclassname: a descriptive string for the testcase can i= nclude whitespace + classname: should be patterned .. + """ + return ("Check the " + packagename + " DSC for a being complete", = packagename + ".DscCompleteCheck") + + ## + # External function of plugin. This function is used to perform the t= ask of the MuBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - VarDict containing the shell environment Build Vars + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + overall_status =3D 0 + + # Parse the config for required DscPath element + if "DscPath" not in pkgconfig: + tc.SetSkipped() + tc.LogStdError("DscPath not found in config file. Nothing to = check.") + return -1 + + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath(packagename) + abs_dsc_path =3D os.path.join(abs_pkg_path, pkgconfig["DscPath"].s= trip()) + wsr_dsc_path =3D Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(a= bs_dsc_path) + + if abs_dsc_path is None or wsr_dsc_path is "" or not os.path.isfil= e(abs_dsc_path): + tc.SetSkipped() + tc.LogStdError("Package Dsc not found") + return 0 + + # Get INF Files + INFFiles =3D self.WalkDirectoryForExtension([".inf"], abs_pkg_path) + INFFiles =3D [Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(x) f= or x in INFFiles] # make edk2relative path so can compare with DSC + + # remove ignores + + if "IgnoreInf" in pkgconfig: + for a in pkgconfig["IgnoreInf"]: + a =3D a.replace(os.sep, "/") + try: + tc.LogStdOut("Ignoring INF {0}".format(a)) + INFFiles.remove(a) + except: + tc.LogStdError("DscCompleteCheck.IgnoreInf -> {0} not = found in filesystem. Invalid ignore file".format(a)) + logging.info("DscCompleteCheck.IgnoreInf -> {0} not fo= und in filesystem. Invalid ignore file".format(a)) + + # DSC Parser + dp =3D DscParser() + dp.SetBaseAbsPath(Edk2pathObj.WorkspacePath) + dp.SetPackagePaths(Edk2pathObj.PackagePathList) + dp.SetInputVars(environment.GetAllBuildKeyValues()) + dp.ParseFile(wsr_dsc_path) + + # Check if INF in component section + for INF in INFFiles: + if not any(INF.strip() in x for x in dp.ThreeMods) and \ + not any(INF.strip() in x for x in dp.SixMods) and \ + not any(INF.strip() in x for x in dp.OtherMods): + + infp =3D InfParser().SetBaseAbsPath(Edk2pathObj.WorkspaceP= ath) + infp.SetPackagePaths(Edk2pathObj.PackagePathList) + infp.ParseFile(INF) + if("MODULE_TYPE" not in infp.Dict): + tc.LogStdOut("Ignoring INF. Missing key for MODULE_TYP= E {0}".format(INF)) + continue + + if(infp.Dict["MODULE_TYPE"] =3D=3D "HOST_APPLICATION"): + tc.LogStdOut("Ignoring INF. Module type is HOST_APPLI= CATION {0}".format(INF)) + continue + + logging.critical(INF + " not in " + wsr_dsc_path) + tc.LogStdError("{0} not in {1}".format(INF, wsr_dsc_path)) + overall_status =3D overall_status + 1 + + # If XML object exists, add result + if overall_status is not 0: + tc.SetFailed("DscCompleteCheck {0} Failed. Errors {1}".format= (wsr_dsc_path, overall_status), "CHECK_FAILED") + else: + tc.SetSuccess() + return overall_status diff --git a/.pytool/Plugin/DscCompleteCheck/DscCompleteCheck_plug_in.yaml = b/.pytool/Plugin/DscCompleteCheck/DscCompleteCheck_plug_in.yaml new file mode 100644 index 0000000000..d84d57d973 --- /dev/null +++ b/.pytool/Plugin/DscCompleteCheck/DscCompleteCheck_plug_in.yaml @@ -0,0 +1,12 @@ +## +# CiBuildPlugin used to confirm all INFs are listed in +# the components section of package dsc +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Dsc Complete Check Test", + "module": "DscCompleteCheck" +} diff --git a/.pytool/Plugin/DscCompleteCheck/readme.md b/.pytool/Plugin/Dsc= CompleteCheck/readme.md new file mode 100644 index 0000000000..17e542b8d6 --- /dev/null +++ b/.pytool/Plugin/DscCompleteCheck/readme.md @@ -0,0 +1,22 @@ +# Dsc Complete Check Plugin + +This CiBuildPlugin scans all INF files from a package and confirms they ar= e listed in the package level DSC file. The test considers it an error if a= ny INF does not appear in the `Components` section of the package-level DSC= (indicating that it would not be built if the package were built). This is= critical because much of the CI infrastructure assumes that all modules wi= ll be listed in the DSC and compiled. + +## Configuration + +The plugin has a few configuration options to support the UEFI codebase. + +``` yaml +"DscCompleteCheck": { + "DscPath": "", # Path to dsc from root of package + "IgnoreInf": [] # Ignore INF if found in filesystem by not dsc + } +``` + +### DscPath + +Path to DSC to consider platform dsc + +### IgnoreInf + +Ignore error if Inf file is not listed in DSC file diff --git a/.pytool/Plugin/GuidCheck/GuidCheck.py b/.pytool/Plugin/GuidChe= ck/GuidCheck.py new file mode 100644 index 0000000000..467e17f3e8 --- /dev/null +++ b/.pytool/Plugin/GuidCheck/GuidCheck.py @@ -0,0 +1,251 @@ +# @file GuidCheck.py +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import logging +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toollib.uefi.edk2.guid_list import GuidList +from edk2toolext.environment.var_dict import VarDict + + +class GuidCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that scans the code tree and looks for duplicate guids + from the package being tested. + + Configuration options: + "GuidCheck": { + "IgnoreGuidName": [], # provide in format guidname=3Dguidvalue or = just guidname + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [] # Provide in format guidname=3Dguidname=3Dg= uidname... + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + testclassname: a descriptive string for the testcase can i= nclude whitespace + classname: should be patterned .. + """ + return ("Confirm GUIDs are unique in " + packagename, packagename = + ".GuidCheck") + + def _FindConflictingGuidValues(self, guidlist: list) -> list: + """ Find all duplicate guids by guid value and report them as erro= rs + """ + # Sort the list by guid + guidsorted =3D sorted( + guidlist, key=3Dlambda x: x.guid.upper(), reverse=3DTrue) + + previous =3D None # Store previous entry for comparison + error =3D None + errors =3D [] + for index in range(len(guidsorted)): + i =3D guidsorted[index] + if(previous is not None): + if i.guid =3D=3D previous.guid: # Error + if(error is None): + # Catch errors with more than 1 conflict + error =3D ErrorEntry("guid") + error.entries.append(previous) + errors.append(error) + error.entries.append(i) + else: + # no match. clear error + error =3D None + previous =3D i + return errors + + def _FindConflictingGuidNames(self, guidlist: list) -> list: + """ Find all duplicate guids by name and if they are not all + from inf files report them as errors. It is ok to have + BASE_NAME duplication. + + Is this useful? It would catch two same named guids in dec file + that resolve to different values. + """ + # Sort the list by guid + namesorted =3D sorted(guidlist, key=3Dlambda x: x.name.upper()) + + previous =3D None # Store previous entry for comparison + error =3D None + errors =3D [] + for index in range(len(namesorted)): + i =3D namesorted[index] + if(previous is not None): + # If name matches + if i.name =3D=3D previous.name: + if(error is None): + # Catch errors with more than 1 conflict + error =3D ErrorEntry("name") + error.entries.append(previous) + errors.append(error) + error.entries.append(i) + else: + # no match. clear error + error =3D None + previous =3D i + + # Loop thru and remove any errors where all files are infs as = it is ok if + # they have the same inf base name. + for e in errors[:]: + if len( [en for en in e.entries if not en.absfilepath.lowe= r().endswith(".inf")]) =3D=3D 0: + errors.remove(e) + + return errors + + ## + # External function of plugin. This function is used to perform the t= ask of the MuBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + Errors =3D [] + + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath( + packagename) + + if abs_pkg_path is None: + tc.SetSkipped() + tc.LogStdError("No package {0}".format(packagename)) + return -1 + + All_Ignores =3D ["/Build", "/Conf"] + # Parse the config for other ignores + if "IgnoreFoldersAndFiles" in pkgconfig: + All_Ignores.extend(pkgconfig["IgnoreFoldersAndFiles"]) + + # Parse the workspace for all GUIDs + gs =3D GuidList.guidlist_from_filesystem( + Edk2pathObj.WorkspacePath, ignore_lines=3DAll_Ignores) + + # Remove ignored guidvalue + if "IgnoreGuidValue" in pkgconfig: + for a in pkgconfig["IgnoreGuidValue"]: + try: + tc.LogStdOut("Ignoring Guid {0}".format(a.upper())) + for b in gs[:]: + if b.guid =3D=3D a.upper(): + gs.remove(b) + except: + tc.LogStdError("GuidCheck.IgnoreGuid -> {0} not found.= Invalid ignore guid".format(a.upper())) + logging.info("GuidCheck.IgnoreGuid -> {0} not found. = Invalid ignore guid".format(a.upper())) + + # Remove ignored guidname + if "IgnoreGuidName" in pkgconfig: + for a in pkgconfig["IgnoreGuidName"]: + entry =3D a.split("=3D") + if(len(entry) > 2): + tc.LogStdError("GuidCheck.IgnoreGuidName -> {0} Invali= d Format.".format(a)) + logging.info("GuidCheck.IgnoreGuidName -> {0} Invalid = Format.".format(a)) + continue + try: + tc.LogStdOut("Ignoring Guid {0}".format(a)) + for b in gs[:]: + if b.name =3D=3D entry[0]: + if(len(entry) =3D=3D 1): + gs.remove(b) + elif(len(entry) =3D=3D 2 and b.guid.upper() = =3D=3D entry[1].upper()): + gs.remove(b) + else: + c.LogStdError("GuidCheck.IgnoreGuidName ->= {0} incomplete match. Invalid ignore guid".format(a)) + + except: + tc.LogStdError("GuidCheck.IgnoreGuidName -> {0} not fo= und. Invalid ignore name".format(a)) + logging.info("GuidCheck.IgnoreGuidName -> {0} not foun= d. Invalid ignore name".format(a)) + + # Find conflicting Guid Values + Errors.extend(self._FindConflictingGuidValues(gs)) + + # Check if there are expected duplicates and remove it from the er= ror list + if "IgnoreDuplicates" in pkgconfig: + for a in pkgconfig["IgnoreDuplicates"]: + names =3D a.split("=3D") + if len(names) < 2: + tc.LogStdError("GuidCheck.IgnoreDuplicates -> {0} inva= lid format".format(a)) + logging.info("GuidCheck.IgnoreDuplicates -> {0} invali= d format".format(a)) + continue + + for b in Errors[:]: + if b.type !=3D "guid": + continue + ## Make a list of the names that are not in the names = list. If there + ## are any in the list then this error should not be i= gnored. + t =3D [x for x in b.entries if x.name not in names] + if(len(t) =3D=3D len(b.entries)): + ## did not apply to any entry + continue + elif(len(t) =3D=3D 0): + ## full match - ignore duplicate + tc.LogStdOut("GuidCheck.IgnoreDuplicates -> {0}".f= ormat(a)) + Errors.remove(b) + elif(len(t) < len(b.entries)): + ## partial match + tc.LogStdOut("GuidCheck.IgnoreDuplicates -> {0} in= complete match".format(a)) + logging.info("GuidCheck.IgnoreDuplicates -> {0} in= complete match".format(a)) + else: + tc.LogStdOut("GuidCheck.IgnoreDuplicates -> {0} un= known error.".format(a)) + logging.info("GuidCheck.IgnoreDuplicates -> {0} un= known error".format(a)) + + + + # Find conflicting Guid Names + Errors.extend(self._FindConflictingGuidNames(gs)) + + # Log errors for anything within the package under test + for er in Errors[:]: + InMyPackage =3D False + for a in er.entries: + if abs_pkg_path in a.absfilepath: + InMyPackage =3D True + break + if(not InMyPackage): + Errors.remove(er) + else: + logging.error(str(er)) + tc.LogStdError(str(er)) + + # add result to test case + overall_status =3D len(Errors) + if overall_status is not 0: + tc.SetFailed("GuidCheck {0} Failed. Errors {1}".format( + packagename, overall_status), "CHECK_FAILED") + else: + tc.SetSuccess() + return overall_status + + +class ErrorEntry(): + """ Custom/private class for reporting errors in the GuidList + """ + + def __init__(self, errortype): + self.type =3D errortype # 'guid' or 'name' depending on error type + self.entries =3D [] # GuidListEntry that are in error condition + + def __str__(self): + a =3D f"Error Duplicate {self.type}: " + if(self.type =3D=3D "guid"): + a +=3D f" {self.entries[0].guid}" + elif(self.type =3D=3D "name"): + a +=3D f" {self.entries[0].name}" + + a +=3D f" ({len(self.entries)})\n" + + for e in self.entries: + a +=3D "\t" + str(e) + "\n" + return a diff --git a/.pytool/Plugin/GuidCheck/GuidCheck_plug_in.yaml b/.pytool/Plug= in/GuidCheck/GuidCheck_plug_in.yaml new file mode 100644 index 0000000000..531efb7885 --- /dev/null +++ b/.pytool/Plugin/GuidCheck/GuidCheck_plug_in.yaml @@ -0,0 +1,11 @@ +## +# CiBuildPlugin used to check guid uniqueness +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Guid Check Test", + "module": "GuidCheck" +} diff --git a/.pytool/Plugin/GuidCheck/Readme.md b/.pytool/Plugin/GuidCheck/= Readme.md new file mode 100644 index 0000000000..c1bf3d728e --- /dev/null +++ b/.pytool/Plugin/GuidCheck/Readme.md @@ -0,0 +1,60 @@ +# Guid Check Plugin + +This CiBuildPlugin scans all the files in a code tree to find all the GUID= definitions. After collection it will then look for duplication in the pa= ckage under test. Uniqueness of all GUIDs are critical within the UEFI env= ironment. Duplication can cause numerous issues including locating the wron= g data structure, calling the wrong function, or decoding the wrong data me= mbers. + +Currently Scanned: + +* INF files are scanned for there Module guid +* DEC files are scanned for all of their Protocols, PPIs, and Guids as wel= l as the one package GUID. + +Any GUID value being equal to two names or even just defined in two files = is considered an error unless in the ignore list. + +Any GUID name that is found more than once is an error unless all occurren= ces are Module GUIDs. Since the Module GUID is assigned to the Module name= it is common to have numerous versions of the same module named the same. + +## Configuration + +The plugin has numerous configuration options to support the UEFI codebase. + +``` yaml +"GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [] + } +``` + +### IgnoreGuidName + +This list allows strings in two formats. + +* _GuidName_ + * This will remove any entry with this GuidName from the list of GUIDs t= herefore ignoring any error associated with this name. +* _GuidName=3DGuidValue_ + * This will also ignore the GUID by name but only if the value equals th= e GuidValue. + * GuidValue should be in registry format. + * This is the suggested format to use as it will limit the ignore to onl= y the defined case. + +### IgnoreGuidValue + +This list allows strings in guid registry format _GuidValue_. + +* This will remove any entry with this GuidValue from the list of GUIDs th= erefore ignoring any error associated with this value. +* GuidValue must be in registry format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + +### IgnoreFoldersAndFiles + +This supports .gitignore file and folder matching strings including wildca= rds + +* Any folder or file ignored will not be parsed and therefore any GUID def= ined will be ignored. +* The plugin will always ignores the following ["/Build", "/Conf"] + +### IgnoreDuplicates + +This supports strings in the format of _GuidName_=3D_GuidName_=3D_GuidName_ + +* For the error with the GuidNames to be ignored the list must match compl= etely with what is found during the code scan. + * For example if there are two GUIDs that are by design equal within the= code tree then it should be _GuidName_=3D_GuidName_ + * If instead there are three GUIDs then it must be _GuidName_=3D_GuidNam= e_=3D_GuidName_ +* This is the best ignore list to use because it is the most strict and wi= ll catch new problems when new conflicts are introduced. +* There are numerous places in the UEFI specification in which two GUID na= mes are assigned the same value. These names should be set in this ignore = list so that they don't cause an error but any additional duplication would= still be caught. diff --git a/.pytool/Plugin/LibraryClassCheck/LibraryClassCheck.py b/.pytoo= l/Plugin/LibraryClassCheck/LibraryClassCheck.py new file mode 100644 index 0000000000..33745dff11 --- /dev/null +++ b/.pytool/Plugin/LibraryClassCheck/LibraryClassCheck.py @@ -0,0 +1,153 @@ +# @file LibraryClassCheck.py +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import logging +import os +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toollib.uefi.edk2.parsers.dec_parser import DecParser +from edk2toollib.uefi.edk2.parsers.inf_parser import InfParser +from edk2toolext.environment.var_dict import VarDict + + +class LibraryClassCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that scans the code tree and library classes for undec= lared + files + + Configuration options: + "LibraryClassCheck": { + IgnoreHeaderFile: [], # Ignore a file found on disk + IgnoreLibraryClass: [] # Ignore a declaration found in dec file + } + """ + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + testclassname: a descriptive string for the testcase can inclu= de whitespace + classname: should be patterned .. + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + """ + return ("Check library class declarations in " + packagename, pack= agename + ".LibraryClassCheck") + + def __GetPkgDec(self, rootpath): + try: + allEntries =3D os.listdir(rootpath) + for entry in allEntries: + if entry.lower().endswith(".dec"): + return(os.path.join(rootpath, entry)) + except Exception: + logging.error("Unable to find DEC for package:{0}".format(root= path)) + + return None + + ## + # External function of plugin. This function is used to perform the t= ask of the MuBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + overall_status =3D 0 + LibraryClassIgnore =3D [] + + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath(packagename) + abs_dec_path =3D self.__GetPkgDec(abs_pkg_path) + wsr_dec_path =3D Edk2pathObj.GetEdk2RelativePathFromAbsolutePath(a= bs_dec_path) + + if abs_dec_path is None or wsr_dec_path is "" or not os.path.isfil= e(abs_dec_path): + tc.SetSkipped() + tc.LogStdError("No DEC file {0} in package {1}".format(abs_dec= _path, abs_pkg_path)) + return -1 + + # Get all include folders + dec =3D DecParser() + dec.SetBaseAbsPath(Edk2pathObj.WorkspacePath).SetPackagePaths(Edk2= pathObj.PackagePathList) + dec.ParseFile(wsr_dec_path) + + AllHeaderFiles =3D [] + + for includepath in dec.IncludePaths: + ## Get all header files in the library folder + AbsLibraryIncludePath =3D os.path.join(abs_pkg_path, includepa= th, "Library") + if(not os.path.isdir(AbsLibraryIncludePath)): + continue + + hfiles =3D self.WalkDirectoryForExtension([".h"], AbsLibraryIn= cludePath) + hfiles =3D [os.path.relpath(x,abs_pkg_path) for x in hfiles] = # make package root relative path + hfiles =3D [x.replace("\\", "/") for x in hfiles] # make pack= age relative path + + AllHeaderFiles.extend(hfiles) + + if len(AllHeaderFiles) =3D=3D 0: + tc.SetSkipped() + tc.LogStdError(f"No Library include folder in any Include path= ") + return -1 + + # Remove ignored paths + if "IgnoreHeaderFile" in pkgconfig: + for a in pkgconfig["IgnoreHeaderFile"]: + try: + tc.LogStdOut("Ignoring Library Header File {0}".format= (a)) + AllHeaderFiles.remove(a) + except: + tc.LogStdError("LibraryClassCheck.IgnoreHeaderFile -> = {0} not found. Invalid Header File".format(a)) + logging.info("LibraryClassCheck.IgnoreHeaderFile -> {0= } not found. Invalid Header File".format(a)) + + if "IgnoreLibraryClass" in pkgconfig: + LibraryClassIgnore =3D pkgconfig["IgnoreLibraryClass"] + + + ## Attempt to find library classes + for lcd in dec.LibraryClasses: + ## Check for correct file path separator + if "\\" in lcd.path: + tc.LogStdError("LibraryClassCheck.DecFilePathSeparator -> = {0} invalid.".format(lcd.path)) + logging.error("LibraryClassCheck.DecFilePathSeparator -> {= 0} invalid.".format(lcd.path)) + overall_status +=3D 1 + continue + + if lcd.name in LibraryClassIgnore: + tc.LogStdOut("Ignoring Library Class Name {0}".format(lcd.= name)) + LibraryClassIgnore.remove(lcd.name) + continue + + logging.debug(f"Looking for Library Class {lcd.path}") + try: + AllHeaderFiles.remove(lcd.path) + + except ValueError: + tc.LogStdError(f"Library {lcd.name} with path {lcd.path} n= ot found in package filesystem") + logging.error(f"Library {lcd.name} with path {lcd.path} no= t found in package filesystem") + overall_status +=3D 1 + + ## any remaining AllHeaderFiles are not described in DEC + for h in AllHeaderFiles: + tc.LogStdError(f"Library Header File {h} not declared in packa= ge DEC {wsr_dec_path}") + logging.error(f"Library Header File {h} not declared in packag= e DEC {wsr_dec_path}") + overall_status +=3D 1 + + ## Warn about any invalid library class names in the ignore list + for r in LibraryClassIgnore: + tc.LogStdError("LibraryClassCheck.IgnoreLibraryClass -> {0} no= t found. Library Class not found".format(r)) + logging.info("LibraryClassCheck.IgnoreLibraryClass -> {0} not = found. Library Class not found".format(r)) + + + # If XML object exists, add result + if overall_status is not 0: + tc.SetFailed("LibraryClassCheck {0} Failed. Errors {1}".forma= t(wsr_dec_path, overall_status), "CHECK_FAILED") + else: + tc.SetSuccess() + return overall_status diff --git a/.pytool/Plugin/LibraryClassCheck/LibraryClassCheck_plug_in.yam= l b/.pytool/Plugin/LibraryClassCheck/LibraryClassCheck_plug_in.yaml new file mode 100644 index 0000000000..9174453a86 --- /dev/null +++ b/.pytool/Plugin/LibraryClassCheck/LibraryClassCheck_plug_in.yaml @@ -0,0 +1,11 @@ +## +# CiBuildPlugin used to check that all library classes are declared correc= tly in dec file +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Library Class Check Test", + "module": "LibraryClassCheck" +} diff --git a/.pytool/Plugin/LibraryClassCheck/readme.md b/.pytool/Plugin/Li= braryClassCheck/readme.md new file mode 100644 index 0000000000..dedee16988 --- /dev/null +++ b/.pytool/Plugin/LibraryClassCheck/readme.md @@ -0,0 +1,22 @@ +# Library Class Check Plugin + +This CiBuildPlugin scans at all library header files found in the `Library= ` folders in all of the package's declared include directories and ensures = that all files have a matching LibraryClass declaration in the DEC file for= the package. Any missing declarations will cause a failure. + +## Configuration + +The plugin has a few configuration options to support the UEFI codebase. + +``` yaml +"LibraryClassCheck": { + IgnoreHeaderFile: [], # Ignore a file found on disk + IgnoreLibraryClass: [] # Ignore a declaration found in dec file +} +``` + +### IgnoreHeaderFile + +Ignore a file found on disk + +### IgnoreLibraryClass + +Ignore a declaration found in dec file diff --git a/.pytool/Plugin/SpellCheck/Readme.md b/.pytool/Plugin/SpellChec= k/Readme.md new file mode 100644 index 0000000000..e0ac835191 --- /dev/null +++ b/.pytool/Plugin/SpellCheck/Readme.md @@ -0,0 +1,100 @@ +# Spell Check Plugin + +This CiBuildPlugin scans all the files in a given package and checks for s= pelling errors. + +This plugin requires NodeJs and cspell. If the plugin doesn't find its re= quired tools then it will mark the test as skipped. + +* NodeJS: https://nodejs.org/en/ +* cspell: https://www.npmjs.com/package/cspell + * Src and doc available: https://github.com/streetsidesoftware/cspell + +## Configuration + +The plugin has a few configuration options to support the UEFI codebase. + +``` yaml + "SpellCheck": { + "AuditOnly": False, # If True, log all errors and then mark= as skipped + "IgnoreFiles": [], # use gitignore syntax to ignore errors= in matching files + "ExtendWords": [], # words to extend to the dictionary for= this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that sh= ould be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wild= cards supported) + } +``` + +### AuditOnly + +Boolean - Default is False. +If True run the test in an Audit only mode which will log all errors but i= nstead of failing the build it will set the test as skipped. This allows v= isibility into the failures without breaking the build. + +### IgnoreFiles + +This supports .gitignore file and folder matching strings including wildca= rds + +* All files will be parsed regardless but then any spelling errors found w= ithin ignored files will not be reported as an error. +* Errors in ignored files will still be output to the test results as info= rmational comments. + +### ExtendWords + +This list allows words to be added to the dictionary for the spell checker= when this package is tested. These follow the rules of the cspell config = words field. + +### IgnoreStandardPaths + +This plugin by default will check the below standard paths. If the packag= e would like to ignore any of them list that here. + +```python +[ +# C source +"*.c", +"*.h", + +# Assembly files +"*.nasm", +"*.asm", +"*.masm", +"*.s", + +# ACPI source language +"*.asl", + +# Edk2 build files +"*.dsc", "*.dec", "*.fdf", "*.inf", + +# Documentation files +"*.md", "*.txt" +] +``` + +### AdditionalIncludePaths + +If the package would to add additional path patterns to be included in spe= llchecking they can be defined here. + +## Other configuration + +In the cspell.base.json there are numerous other settings configured. The= re is no support to override these on a per package basis but future featur= es could make this available. One interesting configuration option is `min= WordLength`. Currently it is set to _5_ which means all 2,3, and 4 letter = words will be ignored. This helps minimize the number of technical acronym= s, register names, and other UEFI specific values that must be ignored . + +## False positives + +The cspell dictionary is not perfect and there are cases where technical w= ords or acronyms are not found in the dictionary. There are three ways to = resolve false positives and the choice for which method should be based on = how broadly the word should be accepted. + +### CSpell Base Config file + +If the change should apply to all UEFI code and documentation then it shou= ld be added to the base config file `words` section. The base config file = is adjacent to this file and titled `cspell.base.json`. This is a list of = accepted words for all spell checking operations on all packages. + +### Package Config + +In the package `*.ci.yaml` file there is a `SpellCheck` config section. T= his section allows files to be ignored as well as words that should be cons= idered valid for all files within this package. Add the desired words to t= he "ExtendedWords" member. + +### In-line File + +CSpell supports numerous methods to annotate your files to ignore words, s= ections, etc. This can be found in CSpell documentation. Suggestion here = is to use a c-style comment at the top of the file to add words that should= be ignored just for this file. Obviously this has the highest maintenance= cost so it should only be used for file unique words. + +``` c +// spell-checker:ignore unenroll, word2, word3 +``` + +or + +```ini +# spell-checker:ignore unenroll, word2, word3 +``` diff --git a/.pytool/Plugin/SpellCheck/SpellCheck.py b/.pytool/Plugin/Spell= Check/SpellCheck.py new file mode 100644 index 0000000000..94ca4cd071 --- /dev/null +++ b/.pytool/Plugin/SpellCheck/SpellCheck.py @@ -0,0 +1,216 @@ +# @file SpellCheck.py +# +# An edk2-pytool based plugin wrapper for cspell +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import logging +import json +import yaml +from io import StringIO +import os +from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPl= ugin +from edk2toollib.utility_functions import RunCmd +from edk2toolext.environment.var_dict import VarDict +from edk2toollib.gitignore_parser import parse_gitignore_lines +from edk2toolext.environment import version_aggregator + + +class SpellCheck(ICiBuildPlugin): + """ + A CiBuildPlugin that uses the cspell node module to scan the files + from the package being tested for spelling errors. The plugin contains + the base cspell.json file then thru the configuration options other se= ttings + can be changed or extended. + + Configuration options: + "SpellCheck": { + "AuditOnly": False, # Don't fail the build if there are e= rrors. Just log them + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + } + """ + + # + # A package can remove any of these using IgnoreStandardPaths + # + STANDARD_PLUGIN_DEFINED_PATHS =3D ["*.c", "*.h", + "*.nasm", "*.asm", "*.masm", "*.s", + "*.asl", + "*.dsc", "*.dec", "*.fdf", "*.inf", + "*.md", "*.txt" + ] + + def GetTestName(self, packagename: str, environment: VarDict) -> tuple: + """ Provide the testcase name and classname for use in reporting + + Args: + packagename: string containing name of package to build + environment: The VarDict for the test to run in + Returns: + a tuple containing the testcase name and the classname + (testcasename, classname) + testclassname: a descriptive string for the testcase can i= nclude whitespace + classname: should be patterned .. + """ + return ("Spell check files in " + packagename, packagename + ".Spe= llCheck") + + ## + # External function of plugin. This function is used to perform the t= ask of the CiBuild Plugin + # + # - package is the edk2 path to package. This means workspace/packa= gepath relative. + # - edk2path object configured with workspace and packages path + # - PkgConfig Object (dict) for the pkg + # - EnvConfig Object + # - Plugin Manager Instance + # - Plugin Helper Obj Instance + # - Junit Logger + # - output_stream the StringIO output stream from this plugin via lo= gging + + def RunBuildPlugin(self, packagename, Edk2pathObj, pkgconfig, environm= ent, PLM, PLMHelper, tc, output_stream=3DNone): + Errors =3D [] + + abs_pkg_path =3D Edk2pathObj.GetAbsolutePathOnThisSytemFromEdk2Rel= ativePath( + packagename) + + if abs_pkg_path is None: + tc.SetSkipped() + tc.LogStdError("No package {0}".format(packagename)) + return -1 + + # check for node + return_buffer =3D StringIO() + ret =3D RunCmd("node", "--version", outstream=3Dreturn_buffer) + if (ret !=3D 0): + tc.SetSkipped() + tc.LogStdError("NodeJs not installed. Test can't run") + logging.warning("NodeJs not installed. Test can't run") + return -1 + node_version =3D return_buffer.getvalue().strip() # format vXX.XX= .XX + tc.LogStdOut(f"Node version: {node_version}") + version_aggregator.GetVersionAggregator().ReportVersion( + "NodeJs", node_version, version_aggregator.VersionTypes.INFO) + + # Check for cspell + return_buffer =3D StringIO() + ret =3D RunCmd("cspell", "--version", outstream=3Dreturn_buffer) + if (ret !=3D 0): + tc.SetSkipped() + tc.LogStdError("cspell not installed. Test can't run") + logging.warning("cspell not installed. Test can't run") + return -1 + cspell_version =3D return_buffer.getvalue().strip() # format XX.X= X.XX + tc.LogStdOut(f"CSpell version: {cspell_version}") + version_aggregator.GetVersionAggregator().ReportVersion( + "CSpell", cspell_version, version_aggregator.VersionTypes.INFO) + + package_relative_paths_to_spell_check =3D SpellCheck.STANDARD_PLUG= IN_DEFINED_PATHS + + # + # Allow the ci.yaml to remove any of the above standard paths + # + if("IgnoreStandardPaths" in pkgconfig): + for a in pkgconfig["IgnoreStandardPaths"]: + if(a in package_relative_paths_to_spell_check): + tc.LogStdOut( + f"ignoring standard path due to ci.yaml ignore: {a= }") + package_relative_paths_to_spell_check.remove(a) + else: + tc.LogStdOut(f"Invalid IgnoreStandardPaths value: {a}") + + # + # check for any additional include paths defined by package config + # + if("AdditionalIncludePaths" in pkgconfig): + package_relative_paths_to_spell_check.extend( + pkgconfig["AdditionalIncludePaths"]) + + # + # Make the path string for cspell to check + # + relpath =3D os.path.relpath(abs_pkg_path) + cpsell_paths =3D " ".join( + [f"{relpath}/**/{x}" for x in package_relative_paths_to_spell_= check]) + + # Make the config file + config_file_path =3D os.path.join( + Edk2pathObj.WorkspacePath, "Build", packagename, "cspell_actua= l_config.json") + mydir =3D os.path.dirname(os.path.abspath(__file__)) + # load as yaml so it can have comments + base =3D os.path.join(mydir, "cspell.base.yaml") + with open(base, "r") as i: + config =3D yaml.safe_load(i) + + if("ExtendWords" in pkgconfig): + config["words"].extend(pkgconfig["ExtendWords"]) + with open(config_file_path, "w") as o: + json.dump(config, o) # output as json so compat with cspell + + All_Ignores =3D [] + # Parse the config for other ignores + if "IgnoreFiles" in pkgconfig: + All_Ignores.extend(pkgconfig["IgnoreFiles"]) + + # spell check all the files + ignore =3D parse_gitignore_lines(All_Ignores, os.path.join( + abs_pkg_path, "nofile.txt"), abs_pkg_path) + + # result is a list of strings like this + # C:\src\sp-edk2\edk2\FmpDevicePkg\FmpDevicePkg.dec:53:9 - Unknow= n word (Capule) + EasyFix =3D [] + results =3D self._check_spelling(cpsell_paths, config_file_path) + for r in results: + path, _, word =3D r.partition(" - Unknown word ") + if len(word) =3D=3D 0: + # didn't find pattern + continue + + pathinfo =3D path.rsplit(":", 2) # remove the line no info + if(ignore(pathinfo[0])): # check against ignore list + tc.LogStdOut(f"ignoring error due to ci.yaml ignore: {r}") + continue + + # real error + EasyFix.append(word.strip().strip("()")) + Errors.append(r) + + # Log all errors tc StdError + for l in Errors: + tc.LogStdError(l.strip()) + + # Helper - Log the syntax needed to add these words to dictionary + if len(EasyFix) > 0: + EasyFix =3D sorted(set(a.lower() for a in EasyFix)) + tc.LogStdOut("\n Easy fix:") + OneString =3D "If these are not errors add this to your ci.yam= l file.\n" + OneString +=3D '"SpellCheck": {\n "ExtendWords": [' + for a in EasyFix: + tc.LogStdOut(f'\n"{a}",') + OneString +=3D f'\n "{a}",' + logging.info(OneString.rstrip(",") + '\n ]\n}') + + # add result to test case + overall_status =3D len(Errors) + if overall_status !=3D 0: + if "AuditOnly" in pkgconfig and pkgconfig["AuditOnly"]: + # set as skipped if AuditOnly + tc.SetSkipped() + return -1 + else: + tc.SetFailed("SpellCheck {0} Failed. Errors {1}".format( + packagename, overall_status), "CHECK_FAILED") + else: + tc.SetSuccess() + return overall_status + + def _check_spelling(self, abs_file_to_check: str, abs_config_file_to_u= se: str) -> []: + output =3D StringIO() + ret =3D RunCmd( + "cspell", f"--config {abs_config_file_to_use} {abs_file_to_che= ck}", outstream=3Doutput) + if ret =3D=3D 0: + return [] + else: + return output.getvalue().strip().splitlines() diff --git a/.pytool/Plugin/SpellCheck/SpellCheck_plug_in.yaml b/.pytool/Pl= ugin/SpellCheck/SpellCheck_plug_in.yaml new file mode 100644 index 0000000000..161045e19e --- /dev/null +++ b/.pytool/Plugin/SpellCheck/SpellCheck_plug_in.yaml @@ -0,0 +1,11 @@ +## +# CiBuildPlugin used to check spelling +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "scope": "cibuild", + "name": "Spell Check Test", + "module": "SpellCheck" +} diff --git a/.pytool/Plugin/SpellCheck/cspell.base.yaml b/.pytool/Plugin/Sp= ellCheck/cspell.base.yaml new file mode 100644 index 0000000000..da6c5e5da7 --- /dev/null +++ b/.pytool/Plugin/SpellCheck/cspell.base.yaml @@ -0,0 +1,165 @@ +## +# CSpell configuration +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "version": "0.1", + "language": "en", + "dictionaries": [ + "companies ", + "softwareTerms", + "python", + "cpp" + ], + "ignorePaths": [ + "*.pdb", + "**/*_extdep/**", + "*.pdf", + "*.exe", + "*.jpg" + ], + "minWordLength": 5, + "allowCompoundWords": false, + "ignoreWords": [ + "muchange" + ], + "words": [ + "MTRRs", + "Microarchitecture", + "Goldmont", + "cpuid", + "mwait", + "cstate", + "smram", + "scrtm", + "smbus", + "selftest", + "socket", + "MMRAM", + "qword", + "ENDBR", + "SMBASE", + "FXSAVE", + "FXRSTOR", + "RDRAND", + "IOAPIC", + "ATAPI", + "movsb", + "iretw", + "XENSTORE", + "cdrom", + "oprom", + "oproms", + "varstore", + "EKU", + "ascii", + "nmake", + "NVDIMM", + "nasmb", + "Mtftp", + "Hypercall", + "hypercalls", + "IOMMU", + "QEMU", + "qemus", + "OVMF", + "tiano", + "tianocore", + "edkii", + "coreboot", + "uefipayload", + "bootloader", + "bootloaders", + "mdepkg", + "skuid", + "dxefv", + "toolchain", + "libraryclass", + "preboot", + "pythonpath", + "cygpath", + "nuget", + "basetools", + "prepi", + "OPTEE", + "stringid", + "peims", + "memmap", + "guids", + "uuids", + "smbios", + "certdb", + "certdbv", + "EfiSigList", + "depex", + "IHANDLE", + "Virtio", + "Mbytes", + "Citrix", + "initrd", + "semihost", + "Semihosting", + "Trustzone", + "Fastboot", + "framebuffer", + "genfw", + "TTYTERM", + "miniport", + "LFENCE", + "PCANSI", + "submodule", + "submodules", + "brotli", + "PCCTS", + "softfloat", + "whitepaper", + "ACPICA", + "plugfest", + "bringup", + "formset", #VFR + "ideqvallist", + "numberof", + "oneof", + "endformset", + "endnumeric", + "endoneof", + "disableif", + "guidid", + "classguid", + "efivarstore", + "formsetguid", + "formid", + "suppressif", + "grayoutif", + "ideqval", + "endform", + "endcheckbox", + "questionid", + "questionref", + "enddate", + "endstring", + "guidop", + "endguidop", + "langdef", + "dynamicex", + "tokenspace", + "tokenguid", + "pcd's", #seems like cspell bug + "peim's", + "autogen", + "Disasm", + "Torito", + "SRIOV", + "MRIOV", + "UARTs", + "Consplitter", # common module in UEFI + "FIFOs", + "ACPINVS", + "Endof", # due to of not being uppercase + "bootability", + "Sdhci", + "inmodule", + ] +} --=20 2.21.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 (#50133): https://edk2.groups.io/g/devel/message/50133 Mute This Topic: https://groups.io/mt/44874063/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50134+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50134+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=ivlL5JlglWbcr2flS0Szs5aWa4MzJaByhHNtp4Wd7ZPbqzWSOCbTazHrUqzCG2bzfCHGEJXMT+PkD1AupaVF37v/6ThzW96YrLybzHZUeOg3nDkfHTgseqFcvI0vZ2vQt9tsOKv+GDDOrx0wk+1KVf+PBWIHirF0wurxeXmpq6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=nDtvJhWgtdMRgPPnztbEKqoo5pKyMUtfYDCpJoJSxrA=; b=UswwAEAjADMLAWBQ22Xc6HKHn+RS7ItIO/x572+0fosh87iixVR6Mb7ScfijOGxbLbuCiL1sKWF6GmV6rWPp1TTDRQ7h55DQ8oVaa6MJYqxdJ7of5/gd6u1/qhRLyaMpyXI9vLaa3ls0MvnetJw75GPRpU02y3w3k/eK2beBsFs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50134+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 1573089237222873.4192431004933; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:56 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:55 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520595" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:55 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jian J Wang , Xiaoyu Lu , Kinney Subject: [edk2-devel] [Patch v4 08/22] CryptoPkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:35 -0800 Message-Id: <20191107011349.16524-9-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089236; bh=Rdu33y+5fk4hfTNEFuFO7saAWrBQPck8u0C3rFPsBGY=; h=Cc:Date:From:Reply-To:Subject:To; b=uNn8MCVrQxkVSNDo+CtVqnSUvaGSZLCTEHZw6czOm6Yo7kfZ0UDLmk4zSq8Mvw6dKQR 3CqvUNUBQ9UXtz7nAvwyNfNPcl5cowFPYoi5PgdFWVGSTFUgUKCmbxKRF6y7Dx8v/ugkv zNczwjH6cDspykgvXBWqmjbQFCXV2YVZ4xk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Jian J Wang Cc: Xiaoyu Lu Signed-off-by: Kinney Reviewed-by: Jian J Wang --- CryptoPkg/CryptoPkg.ci.yaml | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 CryptoPkg/CryptoPkg.ci.yaml diff --git a/CryptoPkg/CryptoPkg.ci.yaml b/CryptoPkg/CryptoPkg.ci.yaml new file mode 100644 index 0000000000..a20ac79d0e --- /dev/null +++ b/CryptoPkg/CryptoPkg.ci.yaml @@ -0,0 +1,48 @@ +## +# CI configuration for CryptoPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "CryptoPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "CryptoPkg/CryptoPkg.dec", + #"SecurityPkg/SecurityPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "CryptoPkg.dsc", + "IgnoreInf": [] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "skip": True, + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + } +} --=20 2.21.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 (#50134): https://edk2.groups.io/g/devel/message/50134 Mute This Topic: https://groups.io/mt/44874064/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50135+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50135+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=ROgIThXl3AM9PBHaNMaDaklfZYDE47HBofJFYydL1FrtdlV2y65955Y8D863r2XWuK6GgzyaXufwVgPhNU9CpOI8/xwlC01UTAbQYgVeEExAtkEJiM01ipiDJVZjvRa5kwISBhX+yvK4J/x2iM3q8j4xyZnRQYtky8Fey/CQT48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=HKm3VnQre1stVDeQ06KfeDQUt3gaEd8JTJEEG5ff9Ls=; b=AJvxIz7TeteefiXWnn7AdrRHZDwbxFNRglO7gOkRKUq032Ggl5Unxs5BJQ/7+Eo7A4Dr2eoCbRAnF2VeIV43qUmDDU4AqAaH+xu8hLCADpPD2a/MVc3kG1RAIU4WvkBSuVRkQcKGW89G7pzSpwFRREtej2SRqRnQsQwpkaGY5KA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50135+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 1573089237399574.587269478041; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:57 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:56 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520598" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:55 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Ray Ni Subject: [edk2-devel] [Patch v4 09/22] FatPkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:36 -0800 Message-Id: <20191107011349.16524-10-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089237; bh=WBUyfBgsekHHVNzyw4pSgN39uLla+lsClDJURQo6HcY=; h=Cc:Date:From:Reply-To:Subject:To; b=M8RroLCeHCBX3gvgeF1ZIQ0zFViaD+E0YMbQ4Dk6lTpvdeSuVQytQ+e7QGlskM2/2b5 nqcsm2j7512HVLMvlSDpYT9YcOJqxLQRmHafsFSKJDRmQdhprPYMI+Y1GRqB1uij3lF+0 ohK80qH86Df4wY1AAm5V0ub9pYPgJgjgQCg= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Ray Ni Signed-off-by: Michael D Kinney Acked-by: Ray Ni --- FatPkg/FatPkg.ci.yaml | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 FatPkg/FatPkg.ci.yaml diff --git a/FatPkg/FatPkg.ci.yaml b/FatPkg/FatPkg.ci.yaml new file mode 100644 index 0000000000..d584eea0a7 --- /dev/null +++ b/FatPkg/FatPkg.ci.yaml @@ -0,0 +1,50 @@ +## +# CI configuration for FatPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "FatPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "IgnoreInf": [], + "DscPath": "FatPkg.dsc" + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + "SpellCheck": { + "ExtendWords": [ + "ELTORITO", + "FHAND", + "IFILE", + "OFILE", + "FDISKed", + "Lfnbuffer", + "FFFFFFFFL", + "CDVOL", + "DMDEPKG" + ] + } +} --=20 2.21.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 (#50135): https://edk2.groups.io/g/devel/message/50135 Mute This Topic: https://groups.io/mt/44874068/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50136+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50136+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=hvJV09ewOEox+DhkrWTFk7pQtUHBRKUkEvT/LWE0robznqab1AcYY0fk8EbnyoPumgv6MTDy3xGvQt8JF/pbyS2ChlKaNUTcdnM7BJG7ZGGd8i/Xhl3Yb6MT2Nd0ivdQHk+TAaqT/LwwEDLg4lXvPrOrgRAfi8ohb+d3QsFjRZA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=HUcFXExOYajRcx8jSyHHaPZVGn6uo7RYGiuh1f0/XNs=; b=LImy90IsxfFuD5W/07AO3E6hxNKgdep1TxLhZmr76uvAv9y4FV31zklR72GeC+7GGAb+mKXWzz0jKXLCA6RXAIFLkyCZSyCVEnVYiggLwXM+GNexmP5LAP3HDtekgu1Kq/UkdpRsMs2BTdr7L5voHaYidDMdfWLKq6gr653+6J4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50136+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 1573089237571901.15179655773; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:57 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:56 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520602" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:55 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Liming Gao Subject: [edk2-devel] [Patch v4 10/22] FmpDevicePkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:37 -0800 Message-Id: <20191107011349.16524-11-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089237; bh=dPveH3fPgvy5U2VMd/0QUdYGbMyJ0fbtpky9Dg2JvWc=; h=Cc:Date:From:Reply-To:Subject:To; b=L8ow8X3cIY3ewIkqkcPrioTQQs0iovxgF3XhHIfHeMRO2FEP4v7FB51eReVfRbWiHWd C5mjFHQ3LaEPk8PygPKZ1/BIQefimmNjaiCBHy2aGafPoZpTFJCJfKJGaYMayWtcnua9K 4/zCioB4eC6iaGgiK/oZoCRoErJ8ZDq9o44= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Use BaseCryptLibNull for package CI builds to reduce package build times. Enabled with CONTINUOUS_INTEGRATION in YAML files. By default CONTINUOUS_INTEGRATION is not defined, and the original lib mappings are preserved. Cc: Liming Gao Signed-off-by: Michael D Kinney --- FmpDevicePkg/FmpDevicePkg.ci.yaml | 43 +++++++++++++++++++++++++++++++ FmpDevicePkg/FmpDevicePkg.dsc | 6 ++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 FmpDevicePkg/FmpDevicePkg.ci.yaml diff --git a/FmpDevicePkg/FmpDevicePkg.ci.yaml b/FmpDevicePkg/FmpDevicePkg.= ci.yaml new file mode 100644 index 0000000000..f089932556 --- /dev/null +++ b/FmpDevicePkg/FmpDevicePkg.ci.yaml @@ -0,0 +1,43 @@ +## +# CI configuration for FmpDevicePkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "FmpDevicePkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "FmpDevicePkg/FmpDevicePkg.dec", + "CryptoPkg/CryptoPkg.dec" + ], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "FmpDevicePkg.dsc", + "IgnoreInf": [] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + "SpellCheck": { + "ExtendWords": [ + "FMPSTATE", + ] + }, + "Defines": { + "BLD_*_CONTINUOUS_INTEGRATION": "TRUE", + } +} diff --git a/FmpDevicePkg/FmpDevicePkg.dsc b/FmpDevicePkg/FmpDevicePkg.dsc index 67b5aa7a32..f4093d3837 100644 --- a/FmpDevicePkg/FmpDevicePkg.dsc +++ b/FmpDevicePkg/FmpDevicePkg.dsc @@ -48,9 +48,13 @@ [LibraryClasses] DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseD= ebugPrintErrorLevelLib.inf PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAu= thenticationLibPkcs7.inf CapsuleUpdatePolicyLib|FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/C= apsuleUpdatePolicyLibNull.inf FmpPayloadHeaderLib|FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloa= dHeaderLibV1.inf --=20 2.21.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 (#50136): https://edk2.groups.io/g/devel/message/50136 Mute This Topic: https://groups.io/mt/44874071/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50137+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50137+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=PLGoG56NdoLjrJ/+JC/tIkPM2jIgUCwSDdgA0wx8Qew6AaHRx1V6YHdOXz1YT7LLzJ+NjeX5yisjNBI8cdQ0SL+ZHtBYPeZXKh7EgscQ7eFtesqVuVASDB64bQQJys13QW5WqPQFuCHVPr22aqxy/Sli2KtA2KKuHO547AOx2Ow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=QQcGn7bvJfBwBmfKGqf9NKvMD+6vIr4h/Y8/iFunXIo=; b=DRNeOMvopwq82R5bfngMXfY83OYKhHz0hM7vo5BCYncyDgKvTbmVESKNRIIcRHlgP2BRaGw0g6I22A3l6i3RMYEusuIHHqfSlEtjox+cRCkqoaP4211IIlcGjDumCGY7PEAbVkTs0H6DJNgB0ZLAymABZ3YAIChkq2ueuwWj4v0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50137+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 1573089237665696.741649826573; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:57 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:56 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520605" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:55 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu Subject: [edk2-devel] [Patch v4 11/22] MdeModulePkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:38 -0800 Message-Id: <20191107011349.16524-12-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089237; bh=hiul9eiYifaVbNAYBlGeK2KTJ6Xjd034MO0RZGllEsU=; h=Cc:Date:From:Reply-To:Subject:To; b=pU4wA6L6t6infpMWNgW+0sosRGFubTZ3hN3FOIVrsdOodA0UO3S6q90KaE8teWoa8zh kgq7YrPSfvIiRwB+Lens8iBfAdqS0d9blF9Tfe3NrXfgHUCLiMJFhPFU6tZTRUOVnFeI7 Lz6xtPO21ehu5ywFTzvCeo4J6Wpp1CpXn/o= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Jian J Wang Cc: Hao A Wu Signed-off-by: Michael D Kinney Reviewed-by: Hao A Wu --- MdeModulePkg/MdeModulePkg.ci.yaml | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 MdeModulePkg/MdeModulePkg.ci.yaml diff --git a/MdeModulePkg/MdeModulePkg.ci.yaml b/MdeModulePkg/MdeModulePkg.= ci.yaml new file mode 100644 index 0000000000..6ae58d5379 --- /dev/null +++ b/MdeModulePkg/MdeModulePkg.ci.yaml @@ -0,0 +1,81 @@ +## +# CI configuration for MdeModulePkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + ## options defined ci/Plugin/CompilerPlugin + "CompilerPlugin": { + "DscPath": "MdeModulePkg.dsc" + }, + + ## options defined ci/Plugin/CharEncodingCheck + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + + ## options defined ci/Plugin/DependencyCheck + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "StandaloneMmPkg/StandaloneMmPkg.dec", + "ArmPkg/ArmPkg.dec" # this should be fixed by promoting an ab= straction + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + + ## options defined ci/Plugin/DscCompleteCheck + "DscCompleteCheck": { + "IgnoreInf": [], + "DscPath": "MdeModulePkg.dsc" + }, + + ## options defined ci/Plugin/GuidCheck + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": ["00000000-0000-0000-0000-000000000000"], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [ + "gEdkiiFormBrowserExProtocolGuid=3DgEfiFormBrowserExProtocolGu= id", + "gEfiPeiMmAccessPpiGuid=3DgPeiSmmAccessPpiGuid", + "gPeiSmmControlPpiGuid=3DgEfiPeiMmControlPpiGuid", + "gEdkiiSerialPortLibVendorGuid=3DSerialDxe" # Is this a bug??= ?? + ] + }, + + ## options defined ci/Plugin/LibraryClassCheck + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "IgnoreStandardPaths": [ # Standard Plugin defined paths that = should be ignore + "*.c", "*.asm", "*.h", "*.nasm", "*.s", "*.asl", "*.inf" + ], + "IgnoreFiles": [ # use gitignore syntax to ignore erro= rs in matching files + "Library/LzmaCustomDecompressLib/Sdk/DOC/*" + ], + "ExtendWords": [ # words to extend to the dictionary for= this package + "LIGHTGRAY", + "DARKGRAY", + "LIGHTBLUE", + "LIGHTGREEN", + "LIGHTCYAN", + "LIGHTRED", + "LIGHTMAGENTA", + "FVMAIN", + "VARCHECKPCD", + "Getxx", + "lzturbo" + ], + "AdditionalIncludePaths": [] # Additional paths to spell check rel= ative to package root (wildcards supported) + } +} --=20 2.21.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 (#50137): https://edk2.groups.io/g/devel/message/50137 Mute This Topic: https://groups.io/mt/44874075/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50138+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50138+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089239; cv=none; d=zoho.com; s=zohoarc; b=V2/lqLKIetAG/NGqJ7C/KO+1N//XB4j/Kt+ktTPDHzaw9cUW8ofeUY3897fFN2H75RVXo6J6Vf8dy0IueyGdSfobD+Q5ezOBC9QtconXDV5NHotoL7til6hgF4NT4h+BxTll70isaEF4W2h5cPHlrfIhW5mGSGfYV7iRK26gLZk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089239; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=wcRKfcVh7JcxENAyHiXpAfg0R6Qx9Or0NgPNf2KAGPs=; b=Il9Gehjkd+gsD118RhhHjmTCyfgTgAUTIJcTv7Dgai49+7v/ARP8hO34Q0JRSAIfw0o6XuazXpbpj5IGIkbViW+2QkVJSzLV9ftqHl3Id63tkxNbjkaZEAxvATR+IymOmbp/R7lGx01cVrhY+O51dHHzGC+MDNn6h1LfU41ghOk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50138+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 1573089239593847.2579868633021; Wed, 6 Nov 2019 17:13:59 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:59 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:56 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520608" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Liming Gao Subject: [edk2-devel] [Patch v4 12/22] MdePkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:39 -0800 Message-Id: <20191107011349.16524-13-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089239; bh=JQVZ4hEK0yawmkMFZXLmuouExTnsyxet3a5GJsSlkOQ=; h=Cc:Date:From:Reply-To:Subject:To; b=Am3GWARtwfIAEkSJiKrGD43YRDwusq/nkhSohQ3BVLvbyscPs/4wtQ+UQL8/R29Lh04 iIMQNe/rtxEyh/MNmqFyzoHNBzM8p+yhxF4NYJmZAteCJI5qgryE/iaFlMRaUfBkXaKUh cNewd04zacpbLtOBUKxTu/XC9ssWLbvqLsI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Liming Gao Signed-off-by: Michael D Kinney --- MdePkg/MdePkg.ci.yaml | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 MdePkg/MdePkg.ci.yaml diff --git a/MdePkg/MdePkg.ci.yaml b/MdePkg/MdePkg.ci.yaml new file mode 100644 index 0000000000..4015c07f16 --- /dev/null +++ b/MdePkg/MdePkg.ci.yaml @@ -0,0 +1,90 @@ +## +# CI configuration for MdePkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + ## options defined ci/Plugin/CompilerPlugin + "CompilerPlugin": { + "DscPath": "MdePkg.dsc" + }, + + ## options defined ci/Plugin/CharEncodingCheck +"CharEncodingCheck": { + "IgnoreFiles": [] + }, + + ## options defined ci/Plugin/DependencyCheck + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + + ## options defined ci/Plugin/DscCompleteCheck + "DscCompleteCheck": { + "IgnoreInf": [], + "DscPath": "MdePkg.dsc" + }, + + ## options defined ci/Plugin/GuidCheck + "GuidCheck": { + "IgnoreGuidName": [ + "gEfiFirmwareVolumeTopFileGuid" # sec modules must be set to t= his guid + ], + "IgnoreGuidValue": ["00000000-0000-0000-0000-000000000000"], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [ + "gEfiFirmwareVolumeBlockProtocolGuid=3DgEfiFirmwareVolumeBlock= 2ProtocolGuid", + "gEfiMmAccessProtocolGuid=3DgEfiSmmAccess2ProtocolGuid", + "gEfiSmmCommunicationProtocolGuid=3DgEfiMmCommunicationProtoco= lGuid", + "gEfiMmPciRootBridgeIoProtocolGuid=3DgEfiSmmPciRootBridgeIoPro= tocolGuid", + "gEfiTrEEProtocolGuid=3DgEfiTcg2ProtocolGuid", + "gEfiSmmPowerButtonDispatch2ProtocolGuid=3DgEfiMmPowerButtonDi= spatchProtocolGuid", + "gEfiSmmBase2ProtocolGuid=3DgEfiMmBaseProtocolGuid", + "gEfiSmmUsbDispatch2ProtocolGuid=3DgEfiMmUsbDispatchProtocolGu= id", + "gEfiSmmCpuProtocolGuid=3DgEfiMmCpuProtocolGuid", + "gEfiAcpiTableGuid=3DgEfiAcpi20TableGuid", + "gEfiSmmControl2ProtocolGuid=3DgEfiMmControlProtocolGuid", + "gEfiSmmStandbyButtonDispatch2ProtocolGuid=3DgEfiMmStandbyButt= onDispatchProtocolGuid", + "gEfiSmmStatusCodeProtocolGuid=3DgEfiMmStatusCodeProtocolGuid", + "gEfiDxeSmmReadyToLockProtocolGuid=3DgEfiDxeMmReadyToLockProto= colGuid", + "gEfiSmmIoTrapDispatch2ProtocolGuid=3DgEfiMmIoTrapDispatchProt= ocolGuid", + "gEfiSmmReadyToLockProtocolGuid=3DgEfiMmReadyToLockProtocolGui= d", + "gEfiSmmSxDispatch2ProtocolGuid=3DgEfiMmSxDispatchProtocolGuid= ", + "gEfiPeiCapsulePpiGuid=3DgPeiCapsulePpiGuid", + "gEfiSmmCpuIo2ProtocolGuid=3DgEfiMmCpuIoProtocolGuid", + "gEfiSmmRscHandlerProtocolGuid=3DgEfiMmRscHandlerProtocolGuid", + "gEfiSmmConfigurationProtocolGuid=3DgEfiMmConfigurationProtoco= lGuid", + "gEfiSmmGpiDispatch2ProtocolGuid=3DgEfiMmGpiDispatchProtocolGu= id", + "gEfiSmmEndOfDxeProtocolGuid=3DgEfiMmEndOfDxeProtocolGuid", + "gEfiSmmSwDispatch2ProtocolGuid=3DgEfiMmSwDispatchProtocolGuid= ", + "gEfiDebugPortProtocolGuid=3DgEfiDebugPortVariableGuid=3DgEfiD= ebugPortDevicePathGuid", ## is this a bug + "gEfiProcessorSpecificErrorSectionGuid=3DgEfiIa32X64ProcessorE= rrorSectionGuid", ## is this a bug + "gEfiSmmPeriodicTimerDispatch2ProtocolGuid=3DgEfiMmPeriodicTim= erDispatchProtocolGuid", + "gEdkiiFormBrowserExProtocolGuid=3DgEfiFormBrowserExProtocolGu= id", + "gEfiPeiMmAccessPpiGuid=3DgPeiSmmAccessPpiGuid", + "gPeiSmmControlPpiGuid=3DgEfiPeiMmControlPpiGuid" + ] + }, + + ## options defined ci/Plugin/LibraryClassCheck + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + } +} --=20 2.21.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 (#50138): https://edk2.groups.io/g/devel/message/50138 Mute This Topic: https://groups.io/mt/44874077/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50139+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50139+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089237; cv=none; d=zoho.com; s=zohoarc; b=QbH11c9//3JhfRnHw0xAxczqNHO9HGQcaaAjOY3L4FuWT8ac9eN1AsmqQzYUcGBMCz0cX45Fd5BVN7VcTyJ4rIFm15rzZCQmL7lOLhzN9z6lI4XpMBwvtWHhgDSTkqES+WhFc8W3r7shbOvOHEXOMSKMExF4My9Wg6uKQFgvaS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089237; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=SgY3jLwP7oto67y4OfJPoMyxvBgG5fJu6ceuqgB2uBo=; b=eMcYSKSLR91JmbZM/THGZgGHoztSwHTr/uEa/PCm613X7VQLF9xFF+ITA7YXVut2tfFRMKD3Tf0515ZVVQq5sXRuveouqsQjhBEQXBJleIMgZHYUphrE0s9tr8SzO1xGwTgY4SllipzHK3CI9pGmBNgs05vpU8Q10T0x8APD44o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50139+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 1573089237989434.6493494589412; Wed, 6 Nov 2019 17:13:57 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:57 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520611" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jiaxin Wu , Siyuan Fu Subject: [edk2-devel] [Patch v4 13/22] NetworkPkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:40 -0800 Message-Id: <20191107011349.16524-14-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089237; bh=1YXyh6ndCsvvbRid5BYMt5zjzZKEG+gOnZU+yDjQD+8=; h=Cc:Date:From:Reply-To:Subject:To; b=sj/laW+kg2GHTSUDdpfmf00KROYD1azv161SoJwwElLcbxXWQoSu3NBui2Bee9Hp7MA IG3o/knhM+Fu0p1QI8LN7b/9d/w76JrO8hlC/8RfwjC3YujgdFlQMjz/XmgS8WcaM/Oza RqiCGUD6OmPfpjqdGAc5fiNguHIAABTfFJI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Use BaseCryptLibNull and TlsLibNull for package CI builds to reduce package build times. Enabled with CONTINUOUS_INTEGRATION in YAML files. By default CONTINUOUS_INTEGRATION is not defined, and the original lib mappings are preserved. Cc: Jiaxin Wu Cc: Siyuan Fu Signed-off-by: Michael D Kinney --- NetworkPkg/NetworkPkg.ci.yaml | 62 +++++++++++++++++++++++++++++++++++ NetworkPkg/NetworkPkg.dsc | 5 +++ 2 files changed, 67 insertions(+) create mode 100644 NetworkPkg/NetworkPkg.ci.yaml diff --git a/NetworkPkg/NetworkPkg.ci.yaml b/NetworkPkg/NetworkPkg.ci.yaml new file mode 100644 index 0000000000..ea41c9db66 --- /dev/null +++ b/NetworkPkg/NetworkPkg.ci.yaml @@ -0,0 +1,62 @@ +## +# CI configuration for NetworkPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "NetworkPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "NetworkPkg/NetworkPkg.dec", + "CryptoPkg/CryptoPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[ + "ShellPkg/ShellPkg.dec" + ], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "NetworkPkg.dsc", + "IgnoreInf": [] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + }, + + "Defines": { + "BLD_*_CONTINUOUS_INTEGRATION": "TRUE", + "BLD_*_NETWORK_ENABLE": "TRUE", + "BLD_*_NETWORK_SNP_ENABLE": "TRUE", + "BLD_*_NETWORK_VLAN_ENABLE": "TRUE", + "BLD_*_NETWORK_IP4_ENABLE": "TRUE", + "BLD_*_NETWORK_IP6_ENABLE": "TRUE", + "BLD_*_NETWORK_TLS_ENABLE": "TRUE", + "BLD_*_NETWORK_HTTP_BOOT_ENABLE": "TRUE", + "BLD_*_NETWORK_ISCSI_ENABLE": "TRUE", + } +} diff --git a/NetworkPkg/NetworkPkg.dsc b/NetworkPkg/NetworkPkg.dsc index 11a2981261..b149453d26 100644 --- a/NetworkPkg/NetworkPkg.dsc +++ b/NetworkPkg/NetworkPkg.dsc @@ -41,10 +41,15 @@ [LibraryClasses] DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableL= ib.inf SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf =20 +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf + TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf +!else BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf +!endif DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseD= ebugPrintErrorLevelLib.inf FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf --=20 2.21.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 (#50139): https://edk2.groups.io/g/devel/message/50139 Mute This Topic: https://groups.io/mt/44874085/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50140+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50140+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=glPS1UppAyUHl8LZBinV/oydlwSVqGQTSV5I0GFkKaky4jBzX1RasXOIUyw3F0MOFS6wcT9xLZ0AU5Y9Zn21xAcAEJEd/y0qPsFM1NYaOWz2TMJPGOXuzoz/CVUj+Vt5z2lY66G3IdWLfsolPRWL1GlbM3k/znZNaqtVwuZBynY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=T+TFFm+GDq+bdXy67meX+RPaxyhjZIEjpz/QO3eCtOg=; b=lTyVr8k8b2Kt4AOM+/jg4mwjyNRvmNSBaKWTGZjb82TpHvhwxqRCCowoy+OO8xSlexXBB5V91UeKmB5+QWHBG4cba1bAg4QORGPwYTldRBUuNNlQachh8/qn4T2uYUPCTavZXj3Mmsc2f6iWqtKniWnQIeJGYf0xyZds2b0QHU8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50140+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 1573089238044736.6184666146918; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:57 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520615" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Ray Ni Subject: [edk2-devel] [Patch v4 14/22] PcAtChipsetPkg: Add YAML files for CI builds Date: Wed, 6 Nov 2019 17:13:41 -0800 Message-Id: <20191107011349.16524-15-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089237; bh=NZGbpMwnMXe/Np/fm0sqZpNiVWUA1d4uFmxNiPNEtJI=; h=Cc:Date:From:Reply-To:Subject:To; b=r5oXSPOUEHMF1Rw7tDYhnLw7PiiyI33MBgV4o5WTBDGpbGo+grB+9mQ+SazDmUPet1e zzULv8uwWybzFXut/XtE0gHI9xZ7P3+Bc7FHozA+T0Tam0QCFrazLy3CgN9rn28BiClTW zvsbocBYm7gOANQqq11j106ZZ0wNb0+2mmo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Ray Ni Signed-off-by: Michael D Kinney Acked-by: Ray Ni --- PcAtChipsetPkg/PcAtChipsetPkg.ci.yaml | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 PcAtChipsetPkg/PcAtChipsetPkg.ci.yaml diff --git a/PcAtChipsetPkg/PcAtChipsetPkg.ci.yaml b/PcAtChipsetPkg/PcAtChi= psetPkg.ci.yaml new file mode 100644 index 0000000000..6ab9f11761 --- /dev/null +++ b/PcAtChipsetPkg/PcAtChipsetPkg.ci.yaml @@ -0,0 +1,46 @@ +## +# CI configuration for PcAtChipsetPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "PcAtChipsetPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "PcAtChipsetPkg/PcAtChipsetPkg.dec", + "UefiCpuPkg/UefiCpuPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "PcAtChipsetPkg.dsc", + "IgnoreInf": [] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + "SpellCheck": { + "ExtendWords": [ + "ENUMER", # this is part of an IDE enum + "PCATCHIPSET", + "TXRDY" + ] + } +} --=20 2.21.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 (#50140): https://edk2.groups.io/g/devel/message/50140 Mute This Topic: https://groups.io/mt/44874087/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50141+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50141+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=KsVvUayHwOfXSmUKZuR0lgtZ5gPmFGgzId+cWFOhQbRFovKdfn1bpw269h5Vn0ihc7d3eSAAEvXztlCFJ0feHx/qfJ2aigPhCgVTy4Kd2QPAdb7qpaIdTMKyKt2grMClWwIT84p4hAk28olsopa7QLaZqT3OxOPdQKo1zqFV4dA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=wteVD5/DZwrdxl6qwzJd+LuZVAdTJJ8e+0KrgA0Oi0Y=; b=A2jF2puC83ge0oMcH8JOM5U4Hl6DkgseBDZzJfXdQp/rqwCBQheiqtk1pimKYtcQQJAYQrsrvLsi0unJIEOdNYTDwjG+zbpa8GcfN7r3Ppi5hV2T6Hs+/RY+ztKrpvkBVWK22RXZ+jxo0JLNg6445rIF5JXoNZVYNlkoGnd1iuA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50141+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 1573089238495357.2210477734144; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web09.1524.1573089237097962011 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520618" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jiewen Yao , Jian J Wang , Chao Zhang Subject: [edk2-devel] [Patch v4 15/22] SecurityPkg: Add YAML files for CI builds Date: Wed, 6 Nov 2019 17:13:42 -0800 Message-Id: <20191107011349.16524-16-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=x/Me3HFl2Q4DVJ32LhWZGHjjdPtwrgnTWoYd8W9721w=; h=Cc:Date:From:Reply-To:Subject:To; b=suuWPthuzzzc5TvrBjq2Qr/fM9gYrpNv4N4EvDhitJ4k0J0mmDBqAZWgmvK4c5OxCjE sh30Lzxs3RlrUbF9rdzP1e06PUTtmszn/JURoWlRVv2s694X2i1QFpS+T92RA98seh6jl 6VFKNosfxutOP3TUPLdQlMgUJvwQiS+rYxU= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Use BaseCryptLibNull for package CI builds to reduce package build times. Enabled with CONTINUOUS_INTEGRATION in YAML files. By default CONTINUOUS_INTEGRATION is not defined, and the original lib mappings are preserved. Cc: Jiewen Yao Cc: Jian J Wang Cc: Chao Zhang Signed-off-by: Michael D Kinney Reviewed-by: Jian J Wang --- SecurityPkg/SecurityPkg.ci.yaml | 80 +++++++++++++++++++++++++++++++++ SecurityPkg/SecurityPkg.dsc | 32 ++++++++++++- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 SecurityPkg/SecurityPkg.ci.yaml diff --git a/SecurityPkg/SecurityPkg.ci.yaml b/SecurityPkg/SecurityPkg.ci.y= aml new file mode 100644 index 0000000000..c7e309fcda --- /dev/null +++ b/SecurityPkg/SecurityPkg.ci.yaml @@ -0,0 +1,80 @@ +## +# CI configuration for SecurityPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "SecurityPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "SecurityPkg/SecurityPkg.dec", + "CryptoPkg/CryptoPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "SecurityPkg.dsc", + "IgnoreInf": [] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": ["00000000-0000-0000-0000-000000000000"], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [ + "Tpm2InstanceLibDTpm=3DgEfiTpmDeviceInstanceTpm20DtpmGuid", # = by design + ] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "ExtendWords": [ # words to extend to the dictionary f= or this package + "shortformed", # tpm acpi + "autodetect", + "blocksid", + "comid", + "cpinsidpin", #OpalSScV2 + "ecdsa", # TPM + "ecschnorr", # TPM + "eisaid", # ACPI + "harddisk", + "hashall", + "hashto", + "kek's", + "lfanew", # PE/COFF + "pcrindex", + "pkglength", + "ppuser", + "preos", + "stclear", + "toctou", + "tpm's", + "tpmcmdbuflength", + "tpmcommlib", + "tpmnvvaluelength", + "wrlocked", + "xored" + ], + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + }, + + "Defines": { + "BLD_*_CONTINUOUS_INTEGRATION": "TRUE", + } +} diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc index 9a254087a3..a2eeadda7a 100644 --- a/SecurityPkg/SecurityPkg.dsc +++ b/SecurityPkg/SecurityPkg.dsc @@ -44,8 +44,6 @@ [LibraryClasses] HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServic= esLib.inf PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf TpmCommLib|SecurityPkg/Library/TpmCommLib/TpmCommLib.inf PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecu= reLibNull.inf @@ -84,7 +82,13 @@ [LibraryClasses.common.PEIM] PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/Pei= ServicesTablePointerLib.inf HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAlloc= ationLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf +!endif HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terPei.inf ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiRepor= tStatusCodeLib.inf Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm= .inf @@ -95,7 +99,13 @@ [LibraryClasses.common.PEIM] [LibraryClasses.common.DXE_DRIVER] HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeRepor= tStatusCodeLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terDxe.inf Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf @@ -110,13 +120,25 @@ [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.co= mmon.DXE_RUNTIME_DRIVER, Li =20 [LibraryClasses.common.DXE_RUNTIME_DRIVER] ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/R= untimeDxeReportStatusCodeLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf +!endif HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terDxe.inf Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf =20 [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION] +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRou= terDxe.inf Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf @@ -127,7 +149,13 @@ [LibraryClasses.common.DXE_SMM_DRIVER] MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmRepor= tStatusCodeLib.inf SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf +!endif Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.i= nf Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf Tcg2PhysicalPresenceLib|SecurityPkg/Library/SmmTcg2PhysicalPresenceLib/S= mmTcg2PhysicalPresenceLib.inf --=20 2.21.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 (#50141): https://edk2.groups.io/g/devel/message/50141 Mute This Topic: https://groups.io/mt/44874091/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50142+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50142+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=ZyEAwbs0F4vB5Ic7RI3ZGCsR3tiKOP8ECm1nUex0YoZgeHbiDTF8ARUi91h5TUQEiNZAiM1KedCRbKp2ssUlbFrQt1TLEj0AMCsg8LNM/BxSanWafh7U9OLfuXFnqLn8XVz2Qb+RXofYGCoY0YDlGzj2hPkI+AECMiaUX5Ca8yQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=d4GgJzl8s6jpz7mLuHDfj3YsepUbML9APaRSeitT8Ck=; b=dOXdzkYwTIV+kYmmoBuFjbc1FUyXxoiujUssWdmppTh+S2XyAhXX3q2XfytD1R0O2AaHPb4r7pZMvb/bcaWZzQaIbmd+BI4PVpSNi8nZ4NVXNIKU3lvnzSi7pJIwVqg823Y9akRFzqER/RWUBNFELOLJwX3HuwmhpusjB6VWDHE= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50142+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 15730892383621006.2966126620653; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520621" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Ray Ni , Zhichao Gao Subject: [edk2-devel] [Patch v4 16/22] ShellPkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:43 -0800 Message-Id: <20191107011349.16524-17-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=FYlfhvlfwU4TLaX6oMe44dyv0BjiL1UErZ7Y7glvLn0=; h=Cc:Date:From:Reply-To:Subject:To; b=kjHed7gqlafrjjG/zHOr7pxXJQJDsZniqCEbjC/5wYrQYyEQUvaR7uEm60OOGCrTkyv UdNkxpRNmWWXCTiYmUTBpEsN5U4nvhexs3rEbcI0x2JOasvQIkCpUy6Oc1hX2nxFzrAz7 DuqVJQKElw6Qr82w4le0BkTjvzHft6b9HFE= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Ray Ni Cc: Zhichao Gao Signed-off-by: Michael D Kinney Acked-by: Zhichao Gao Acked-by: Ray Ni --- ShellPkg/ShellPkg.ci.yaml | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ShellPkg/ShellPkg.ci.yaml diff --git a/ShellPkg/ShellPkg.ci.yaml b/ShellPkg/ShellPkg.ci.yaml new file mode 100644 index 0000000000..5bf7330c1a --- /dev/null +++ b/ShellPkg/ShellPkg.ci.yaml @@ -0,0 +1,55 @@ +## +# CI configuration for ShellPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "ShellPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "ShellPkg/ShellPkg.dec", + "NetworkPkg/NetworkPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "ShellPkg.dsc", + "IgnoreInf": [ + "ShellPkg/Application/ShellCTestApp/ShellCTestApp.inf", + "ShellPkg/Application/ShellExecTestApp/SA.inf", + "ShellPkg/Application/ShellSortTestApp/ShellSortTestApp.inf" + ] + }, + "GuidCheck": { + "IgnoreGuidName": [], + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [ + "Shell=3DgUefiShellFileGuid", # by design + ] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + } +} --=20 2.21.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 (#50142): https://edk2.groups.io/g/devel/message/50142 Mute This Topic: https://groups.io/mt/44874093/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50143+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50143+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=KJHbACLm7O27DmTe7M4eJJkIECQljgLJXicMHzXeJzYoEr+ya0eIjZL9AMSUIU+EHNc9U673ry0vrty3DyXrY+RxWpHc41ebdshKBKofOPYvVBqr95XX/UNfnjLJziPqjMyqANz9ISvBlySrkdyISq0fHZ1UrjzgLmi7luy+nMU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=NMvrHwc2+3z68NPqU7ZEKn3dj3cl1c6gQDCNnASAtOY=; b=PQVCNIX7Judr6znMUK/p56IL3clBjGyXsl7iiAFnZnAgoXuc4ufqAKMUHdo1mgI5rY0yjjlaLtFGvzR8A3YwcN8WR0YVWvrCKodGa0drMq1pelsBrg9nkpv2fW65BBNix70GtSsqS2AksNVh6moAgwHJzJcb5o3AJ/4V66/ZQag= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50143+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 1573089238509248.9586227460495; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520625" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:56 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Eric Dong , Ray Ni , Laszlo Ersek Subject: [edk2-devel] [Patch v4 17/22] UefiCpuPkg: Add YAML file for CI builds Date: Wed, 6 Nov 2019 17:13:44 -0800 Message-Id: <20191107011349.16524-18-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=jz2bhpr/9S4PHZ0wDGUhTDvHisSWSwu0QW/Twpt5Q4I=; h=Cc:Date:From:Reply-To:Subject:To; b=vJy1J8f3hJIxhEUzX727H+hWVFzW3C0H3GenQigUt6NZsGtoFNLa1u2T9RQoGhXC+XW 5DlTSiFPxEY2eHTTo2phFCxoKlSdF2GrsNmyq7j39b+nbFx4qDEGlkw4YuOA7Py931M9F hnbsP/1wY+E5F1+5FCzA7ggUIkdtDWdGT1A= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add YAML file to the package directory with the configuration of the checks to perform during a CI build. Cc: Eric Dong Cc: Ray Ni Cc: Laszlo Ersek Signed-off-by: Michael D Kinney Acked-by: Laszlo Ersek Acked-by: Ray Ni --- UefiCpuPkg/UefiCpuPkg.ci.yaml | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 UefiCpuPkg/UefiCpuPkg.ci.yaml diff --git a/UefiCpuPkg/UefiCpuPkg.ci.yaml b/UefiCpuPkg/UefiCpuPkg.ci.yaml new file mode 100644 index 0000000000..81da29b878 --- /dev/null +++ b/UefiCpuPkg/UefiCpuPkg.ci.yaml @@ -0,0 +1,51 @@ +## +# CI configuration for UefiCpuPkg +# +# Copyright (c) Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +{ + "CompilerPlugin": { + "DscPath": "UefiCpuPkg.dsc" + }, + "CharEncodingCheck": { + "IgnoreFiles": [] + }, + "DependencyCheck": { + "AcceptableDependencies": [ + "MdePkg/MdePkg.dec", + "MdeModulePkg/MdeModulePkg.dec", + "UefiCpuPkg/UefiCpuPkg.dec" + ], + # For host based unit tests + "AcceptableDependencies-HOST_APPLICATION":[], + # For UEFI shell based apps + "AcceptableDependencies-UEFI_APPLICATION":[], + "IgnoreInf": [] + }, + "DscCompleteCheck": { + "DscPath": "UefiCpuPkg.dsc", + "IgnoreInf": [ + "UefiCpuPkg/ResetVector/FixupVtf/Vtf.inf", + "UefiCpuPkg/ResetVector/Vtf0/Vtf0.inf" + ] + }, + "GuidCheck": { + "IgnoreGuidName": ["SecCore", "ResetVector"], # Expected duplicati= on for gEfiFirmwareVolumeTopFileGuid + "IgnoreGuidValue": [], + "IgnoreFoldersAndFiles": [], + "IgnoreDuplicates": [] + }, + "LibraryClassCheck": { + "IgnoreHeaderFile": [] + }, + + ## options defined ci/Plugin/SpellCheck + "SpellCheck": { + "AuditOnly": True, # Fails test but run in AuditOnly mod= e to collect log + "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files + "ExtendWords": [], # words to extend to the dictionary f= or this package + "IgnoreStandardPaths": [], # Standard Plugin defined paths that = should be ignore + "AdditionalIncludePaths": [] # Additional paths to spell check (wi= ldcards supported) + } +} --=20 2.21.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 (#50143): https://edk2.groups.io/g/devel/message/50143 Mute This Topic: https://groups.io/mt/44874095/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50144+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50144+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=NkHQk5jILsztOzkWkjqXqyJ0njCzbOfc4RfMmY6UrqMPKk+oB85d8EId0QQBeu3QmeGLZB6CuBf9wwCPnt7HeVSeZB7X7ccnUzQdUPOw23Zhija3nUWMwqPLikJSvextdCVGKvTTZ3Zde3n/Tb8LhhEIATcPA+xFzdUu9g7DDgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=HG1s8ZD5M7nKOFfxz3eY6QJ2rKxoYFX/qal3T5yXQOg=; b=Lwj1QyH/eA4HDY/KcNyOTwOTUFmNP8jli9rcJUk+6BwcfBK8Jq1CgohkIRiS3zTyXRc8M6al7KvzDGZf/17S7Rmc0jx/5jXLs2PUdIXb1RPyHwLeO9Z5t2FRfbgFDXvtTznnIrJd5edoRX187oIOcqoBK19YBPdSRn0/wMvC0dU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50144+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 1573089238709569.4752057399544; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web09.1524.1573089237097962011 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520628" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:57 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Jiewen Yao , Chao Zhang Subject: [edk2-devel] [Patch v4 18/22] SignedCapsulePkg: Use BaseCryptLibNull to reduce package CI time Date: Wed, 6 Nov 2019 17:13:45 -0800 Message-Id: <20191107011349.16524-19-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=Moa2C98zTK/pfbtGCD23DBecWNSyrjlZ+cxbxEesHr4=; h=Cc:Date:From:Reply-To:Subject:To; b=YyUQjR04SXVWF01mew2odslnao2Dr4NDI+eOmCmkd0p/TAvGMnQ8vwjKn+zLvzbc/D6 7Neb4Sl5Kq67bnrdoZlQleRmWSMEN0GW21NJq3KhrnhfKBAlT3AMQyQAP7EOJ6rNAUQ6v WpFRV12UIMgf20nzzEkCV/hXgtlRqVULzO8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Use BaseCryptLibNull for package CI builds to reduce package build times. Enabled with PYTOOL_CONTINUOUS_INTEGRATION in YAML files. By default PYTOOL_CONTINUOUS_INTEGRATION is not defined, and the original lib mappings are preserved. Cc: Jiewen Yao Cc: Chao Zhang Signed-off-by: Michael D Kinney --- SignedCapsulePkg/SignedCapsulePkg.dsc | 38 +++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/SignedCapsulePkg/SignedCapsulePkg.dsc b/SignedCapsulePkg/Signe= dCapsulePkg.dsc index 03f714f9a7..c5080ec1dd 100644 --- a/SignedCapsulePkg/SignedCapsulePkg.dsc +++ b/SignedCapsulePkg/SignedCapsulePkg.dsc @@ -87,8 +87,6 @@ [LibraryClasses] AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLib= Null.inf VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf - IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf =20 EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/Edk= iiSystemCapsuleLib.inf IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf @@ -116,7 +114,13 @@ [LibraryClasses.common.PEIM] HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAlloc= ationLib.inf LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf +!endif =20 [LibraryClasses.common.DXE_CORE] HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf @@ -125,7 +129,13 @@ [LibraryClasses.common.DXE_CORE] [LibraryClasses.common.DXE_DRIVER] HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif =20 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf =20 @@ -133,7 +143,13 @@ [LibraryClasses.common.DXE_RUNTIME_DRIVER] HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf +!endif =20 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf =20 @@ -150,19 +166,37 @@ [LibraryClasses.common.DXE_SMM_DRIVER] MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAlloc= ationLib.inf SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableL= ib.inf SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf +!endif =20 [LibraryClasses.common.UEFI_DRIVER] HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf DebugLib|MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif =20 [LibraryClasses.common.UEFI_APPLICATION] HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf +!ifdef CONTINUOUS_INTEGRATION + BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf +!else + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +!endif =20 [PcdsFixedAtBuild] gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f --=20 2.21.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 (#50144): https://edk2.groups.io/g/devel/message/50144 Mute This Topic: https://groups.io/mt/44874099/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50145+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50145+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089240; cv=none; d=zoho.com; s=zohoarc; b=PtieGZn9ddp8MPYzyUec4pVl4KYrALz5TsdgmyLs9KYrHIv0CCOPaKrjl64YnLsYaHJbTNQwzaFhtqpYoY3RMke6l0jbiylKQstNEaxAKvPkqrh4n4qtRRMgmSDTUu+eW0oz9l273CngKQI8nRi9BIhhqfS0nK7ab6JXSichJ+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089240; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=rfJNJXsLH6+dtzVYQ9rv97pma2dbgt5LlofmlaPwJKA=; b=biSvMYblITr2CBspAuCuYVPY8yyTSdmqwpkd/Lis5maj+zpvuDEk9AVHnAlITLYkIV/lfVG8cd2V5I096a8Hm83ZtmgEx1bhJePLv9dUuJrGmjzbx/zJ+kK6TnA0pJxMdyzckzL7Yh8uQ6yxUpEPgZ5ftzJK6zx0bD7weZJnriw= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50145+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 1573089240860545.2916222416893; Wed, 6 Nov 2019 17:14:00 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:14:00 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520633" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:57 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bret Barkelew , Liming Gao Subject: [edk2-devel] [Patch v4 19/22] .pytool: Add CISettings.py and Readme.md Date: Wed, 6 Nov 2019 17:13:46 -0800 Message-Id: <20191107011349.16524-20-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089240; bh=BhjRdlr3XtAnm5H2Oi33iqoBwYYKbpcc0l1jUPRJgp8=; h=Cc:Date:From:Reply-To:Subject:To; b=u7vwgmHymcNPe51Hj7vt5iVaC1gxF03JX1+kbVXamZ4ySqPrT8VDGRSHLYyBND1IwL7 8dlI5uwwMPNjW3Rpvt9wt/MX8tx3OUdPJOeQTp38yY42+8vdAMfd/5586DfZJh2Mw0yPJ PnR8dAWt9oKPoVVOZs+n0kLmEnJ485GLDKg= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add main python script for EDK II Continuous Integration (CI) builds along with a Readme.md that provides a summary of the packages, platforms, and checks performs during a CI build. Cc: Sean Brogan Cc: Bret Barkelew Cc: Liming Gao Signed-off-by: Michael D Kinney --- .pytool/CISettings.py | 173 ++++++++++++++++++++++++++++++++++++++ .pytool/Readme.md | 191 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 364 insertions(+) create mode 100644 .pytool/CISettings.py create mode 100644 .pytool/Readme.md diff --git a/.pytool/CISettings.py b/.pytool/CISettings.py new file mode 100644 index 0000000000..a78e8b974c --- /dev/null +++ b/.pytool/CISettings.py @@ -0,0 +1,173 @@ +# @file +# +# Copyright (c) 2018, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +import os +import logging +from edk2toolext.environment import shell_environment +from edk2toolext.invocables.edk2_ci_build import CiBuildSettingsManager +from edk2toolext.invocables.edk2_setup import SetupSettingsManager, Requir= edSubmodule +from edk2toolext.invocables.edk2_update import UpdateSettingsManager +from edk2toolext.invocables.edk2_pr_eval import PrEvalSettingsManager +from edk2toollib.utility_functions import GetHostInfo + + +class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSetting= sManager, PrEvalSettingsManager): + + def __init__(self): + self.ActualPackages =3D [] + self.ActualTargets =3D [] + self.ActualArchitectures =3D [] + self.ActualToolChainTag =3D "" + + # ####################################################################= ################### # + # Extra CmdLine configuration = # + # ####################################################################= ################### # + + def AddCommandLineOptions(self, parserObj): + pass + + def RetrieveCommandLineOptions(self, args): + pass + + # ####################################################################= ################### # + # Default Support for this Ci Build = # + # ####################################################################= ################### # + + def GetPackagesSupported(self): + ''' return iterable of edk2 packages supported by this build. + These should be edk2 workspace relative paths ''' + + return ("MdePkg", + "MdeModulePkg", + "NetworkPkg", + "PcAtChipsetPkg", + "SecurityPkg", + "UefiCpuPkg", + "FmpDevicePkg", + "ShellPkg", + "FatPkg", + "CryptoPkg" + ) + + def GetArchitecturesSupported(self): + ''' return iterable of edk2 architectures supported by this build = ''' + return ("IA32", + "X64", + "ARM", + "AARCH64") + + def GetTargetsSupported(self): + ''' return iterable of edk2 target tags supported by this build ''' + return ("DEBUG", "RELEASE", "NO-TARGET", "NOOPT") + + # ####################################################################= ################### # + # Verify and Save requested Ci Build Config = # + # ####################################################################= ################### # + + def SetPackages(self, list_of_requested_packages): + ''' Confirm the requested package list is valid and configure Sett= ingsManager + to build the requested packages. + + Raise UnsupportedException if a requested_package is not supported + ''' + unsupported =3D set(list_of_requested_packages) - \ + set(self.GetPackagesSupported()) + if(len(unsupported) > 0): + logging.critical( + "Unsupported Package Requested: " + " ".join(unsupported)) + raise Exception("Unsupported Package Requested: " + + " ".join(unsupported)) + self.ActualPackages =3D list_of_requested_packages + + def SetArchitectures(self, list_of_requested_architectures): + ''' Confirm the requests architecture list is valid and configure = SettingsManager + to run only the requested architectures. + + Raise Exception if a list_of_requested_architectures is not suppor= ted + ''' + unsupported =3D set(list_of_requested_architectures) - \ + set(self.GetArchitecturesSupported()) + if(len(unsupported) > 0): + logging.critical( + "Unsupported Architecture Requested: " + " ".join(unsuppor= ted)) + raise Exception( + "Unsupported Architecture Requested: " + " ".join(unsuppor= ted)) + self.ActualArchitectures =3D list_of_requested_architectures + + def SetTargets(self, list_of_requested_target): + ''' Confirm the request target list is valid and configure Setting= sManager + to run only the requested targets. + + Raise UnsupportedException if a requested_target is not supported + ''' + unsupported =3D set(list_of_requested_target) - \ + set(self.GetTargetsSupported()) + if(len(unsupported) > 0): + logging.critical( + "Unsupported Targets Requested: " + " ".join(unsupported)) + raise Exception("Unsupported Targets Requested: " + + " ".join(unsupported)) + self.ActualTargets =3D list_of_requested_target + + # ####################################################################= ################### # + # Actual Configuration for Ci Build = # + # ####################################################################= ################### # + + def GetActiveScopes(self): + ''' return tuple containing scopes that should be active for this = process ''' + scopes =3D ("cibuild","edk2-build") + + self.ActualToolChainTag =3D shell_environment.GetBuildVars().GetVa= lue("TOOL_CHAIN_TAG", "") + + if GetHostInfo().os.upper() =3D=3D "LINUX" and self.ActualToolChai= nTag.upper().startswith("GCC"): + if "AARCH64" in self.ActualArchitectures: + scopes +=3D ("gcc_aarch64_linux",) + if "ARM" in self.ActualArchitectures: + scopes +=3D ("gcc_arm_linux",) + + return scopes + + def GetRequiredSubmodules(self): + ''' return iterable containing RequiredSubmodule objects. + If no RequiredSubmodules return an empty iterable + ''' + rs=3D[] + rs.append(RequiredSubmodule( + "ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3", False)) + rs.append(RequiredSubmodule( + "CryptoPkg/Library/OpensslLib/openssl", False)) + return rs + + def GetName(self): + return "Edk2" + + def GetDependencies(self): + return [] + + def GetPackagesPath(self): + return () + + def GetWorkspaceRoot(self): + ''' get WorkspacePath ''' + return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def FilterPackagesToTest(self, changedFilesList: list, potentialPackag= esList: list) -> list: + ''' Filter potential packages to test based on changed files. ''' + build_these_packages=3D[] + possible_packages=3DpotentialPackagesList.copy() + for f in changedFilesList: + nodes=3Df.split("/") # split each part of path for comparison= later + + # python file change in .pytool folder causes building all + if f.endswith(".py") and ".pytool" in nodes: + build_these_packages =3D possible_packages + break + + # BaseTools files that might change the build + if "BaseTools" in nodes: + if os.path.splitext(f) not in [".txt", ".md"]: + build_these_packages =3D possible_packages + break + return build_these_packages diff --git a/.pytool/Readme.md b/.pytool/Readme.md new file mode 100644 index 0000000000..fa10628fcf --- /dev/null +++ b/.pytool/Readme.md @@ -0,0 +1,191 @@ +# Edk2 Continuous Integration + +## Basic Status + +| Package | Windows VS2019 | Ubuntu GCC | Known Is= sues | +| :---- | :----- | :---- | :--- = | +| ArmPkg | +| ArmPlatformPkg | +| ArmVirtPkg | +| CryptoPkg | :heavy_check_mark: | :heavy_check_mark: | New chan= ges for NULL basecryptlib and tlslib, add IntrinsicLib.inf to dsc +| DynamicTablesPkg | +| EmbeddedPkg | +| EmulatorPkg | +| FatPkg | :heavy_check_mark: | :heavy_check_mark: | +| FmpDevicePkg | :heavy_check_mark: | :heavy_check_mark: | +| IntelFsp2Pkg | +| IntelFsp2WrapperPkg | +| MdeModulePkg | :heavy_check_mark: | :heavy_check_mark: | DxeIpl d= ependency on ArmPkg, Missing Visual Studio AARCH64/ARM support for EBC +| MdePkg | :heavy_check_mark: | :heavy_check_mark: | Update D= SC to add UefiFileHandleLib, Update BaseIoLibIntrinsic to support MSFT ARM/= AARCH64 +| NetworkPkg | :heavy_check_mark: | :heavy_check_mark: | Librarie= s missing from components section for package dsc +| OvmfPkg | +| PcAtChipsetPkg | :heavy_check_mark: | :heavy_check_mark: | +| SecurityPkg | :heavy_check_mark: | :heavy_check_mark: | Incorrec= t libraryclass in dec +| ShellPkg | :heavy_check_mark: | :heavy_check_mark: | +| SignedCapsulePkg | +| SourceLevelDebugPkg | +| StandaloneMmPkg | +| UefiCpuPkg | :heavy_check_mark: | :heavy_check_mark: | +| UefiPayloadPkg | + +For more detailed status look at the test results of the latest CI run on = the +repo readme. + +## Background + +While a number of CI solutions exist, this proposal will focus on the usag= e of +Azure Dev Ops and Build Pipelines. For demonstration, a sample +[TianoCore repo](https://github.com/tianocore/edk2-staging.git) (branch ma= ster) +and [Dev Ops Pipeline](https://dev.azure.com/tianocore/edk2-ci-play/_build= ?definitionId=3D14) +have been set up. + +Furthermore, this proposal will leverage the TianoCore python tools PIP mo= dules: +[library](https://pypi.org/project/edk2-pytool-library/) and +[extensions](https://pypi.org/project/edk2-pytool-extensions/) (with repos +located [here](https://github.com/tianocore/edk2-pytool-library) and +[here](https://github.com/tianocore/edk2-pytool-extensions)). + +The primary execution flows can be found in the +`ci/AzurePipelines/Windows-VS2019.yml` and `ci/AzurePipelines/Ubuntu-GCC5.= yml` +files. These YAML files are consumed by the Azure Dev Ops Build Pipeline a= nd +dictate what server resources should be used, how they should be configure= d, and +what processes should be run on them. An overview of this schema can be fo= und +[here](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema= ?view=3Dazure-devops&tabs=3Dschema). + +Inspection of these files reveals the EDKII Tools commands that make up the +primary processes for the CI build: 'stuart_setup', 'stuart_update', and +'stuart_ci_build'. These commands come from the EDKII Tools PIP modules an= d are +configured as described below. More documentation on the stuart tools can = be +found [here](https://github.com/tianocore/edk2-pytool-extensions/blob/mast= er/docs/using.md) +and [here](https://github.com/tianocore/edk2-pytool-extensions/blob/master= /docs/features/feature_invocables.md). + +## Configuration + +Configuration of the CI process consists of (in order of precedence): + +* command-line arguments passed in via the Pipeline YAML +* a per-package configuration file (e.g. `.ci.yaml`) that is + detected by the CI system in EDKII Tools. +* a global configuration Python module (e.g. `CISetting.py`) passed in via= the + command-line + +The global configuration file is described in +[this readme](https://github.com/tianocore/edk2-pytool-extensions/blob/mas= ter/docs/usability/using_settings_manager.md) +from the EDKII Tools documentation. This configuration is written as a Pyt= hon +module so that decisions can be made dynamically based on command line +parameters and codebase state. + +The per-package configuration file can override most settings in the global +configuration file, but is not dynamic. This file can be used to skip or +customize tests that may be incompatible with a specific package. By defau= lt, +the global configuration will try to run all tests on all packages. + +## Current PyTool Test Capabilities + +All CI tests are instances of EDKII Tools plugins. Documentation on the pl= ugin +system can be found [here](https://github.com/tianocore/edk2-pytool-extens= ions/blob/master/docs/usability/using_plugin_manager.md) +and [here](https://github.com/tianocore/edk2-pytool-extensions/blob/master= /docs/features/feature_plugin_manager.md). +Upon invocation, each plugin will be passed the path to the current package +under test and a dictionary containing its targeted configuration, as asse= mbled +from the command line, per-package configuration, and global configuration. + +Note: CI plugins are considered unique from build plugins and helper plugi= ns, +even though some CI plugins may execute steps of a build. + +In the example, these plugins live alongside the code under test (in the +`ci/Plugin` directory), but may be moved to the 'edk2-test' repo if that +location makes more sense for the community. + +### Module Inclusion Test - DscCompleteCheck + +This test scans all available modules (via INF files) and compares them to= the +package-level DSC file for the package each module is contained within. Th= e test +considers it an error if any module does not appear in the `Components` se= ction +of at least one package-level DSC (indicating that it would not be built i= f the +package were built). + +### Code Compilation Test - CompilerPlugin + +Once the Module Inclusion Test has verified that all modules would be buil= t if +all package-level DSCs were built, the Code Compilation Test simply runs t= hrough +and builds every package-level DSC on every toolchain and for every archit= ecture +that is supported. Any module that fails to build is considered an error. + +### GUID Uniqueness Test - GuidCheck + +This test works on the collection of all packages rather than an individual +package. It looks at all FILE_GUIDs and GUIDs declared in DEC files and en= sures +that they are unique for the codebase. This prevents, for example, acciden= tal +duplication of GUIDs when using an existing INF as a template for a new mo= dule. + +### Cross-Package Dependency Test - DependencyCheck + +This test compares the list of all packages used in INFs files for a given +package against a list of "allowed dependencies" in plugin configuration f= or +that package. Any module that depends on a disallowed package will cause a= test +failure. + +### Library Declaration Test - LibraryClassCheck + +This test scans at all library header files found in the `Library` folders= in +all of the package's declared include directories and ensures that all fil= es +have a matching LibraryClass declaration in the DEC file for the package. = Any +missing declarations will cause a failure. + +### Invalid Character Test - CharEncodingCheck + +This test scans all files in a package to make sure that there are no inva= lid +Unicode characters that may cause build errors in some character +sets/localizations. + +### Spell Checking - cspell + +This test runs a spell checker on all files within the package. This is d= one +using the NodeJs cspell tool. For details check `ci/Plugin/SpellCheck`. = For +this plugin to run during ci you must install nodejs and cspell and have b= oth +available to the command line when running your CI. + +Install + +* Install nodejs from https://nodejs.org/en/ +* Install cspell + 1. Open cmd prompt with access to node and npm + 2. Run `npm install -g cspell` + + More cspell info: https://github.com/streetsidesoftware/cspell + +## Current Azure Pipeline Tests + +When adding a test it can be added as either a *PyTool* test or just added= to +the CI build process. This should be a deliberate choice. Any change add= ed as +a pipeline test is not as easily run on a private/local workspace. But th= ere +are times where this is still the preferred method. + +## PyTool Scopes + +Scopes are how the PyTool ext_dep, path_env, and plugins are activated. M= eaning +that if an invocable process has a scope active then those ext_dep and pat= h_env +will be active. To allow easy integration of PyTools capabilities there ar= e a +few standard scopes. + +| Scope | Invocable | Desc= ription | +| :---- | :----- | :---= - | +| global | edk2_invocable++ - should be base_abstract_invocable | Runn= ing an invocables | +| global-win | edk2_invocable++ | Runn= ing on Microsoft Windows | +| global-nix | edk2_invocable++ | Runn= ing on Linux based OS | +| edk2-build | | This= indicates that an invocable is building EDK2 based UEFI code | +| cibuild | set in .pytool/CISettings.py | Sugg= ested target for edk2 continuous integration builds. Tools used for CiBuil= ds can use this scope. Example: asl compiler | + +## Future investments + +* PatchCheck tests as plugins +* MacOS/xcode support +* Clang/LLVM support +* Visual Studio AARCH64 and ARM support +* BaseTools C tools CI/PR and binary release process +* BaseTools Python tools CI/PR process +* Host based unit testing +* Extensible private/closed source platform reporting +* Platform builds, validation +* UEFI SCTs +* Other automation --=20 2.21.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 (#50145): https://edk2.groups.io/g/devel/message/50145 Mute This Topic: https://groups.io/mt/44874101/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50146+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50146+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089238; cv=none; d=zoho.com; s=zohoarc; b=YxM3PLxfZ9508pQvE0Erl0TqM+1SSLnfNALn9bGUHSu+j3q91hZRENV77cYBLOSLPDHAdAQHxQU2iDB+t+TdMGHaIikumdynUk97hBSPbXLOxJgeevE/ErG0riUR6D3YSHMbVubPKPTFLUQqc3UFK7aVouj/KGY8G/WgIneCZKo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089238; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=WqJMm5Nqj059+0tGuNZ2RbZwqiPEx7m6mN/gPsaeTIk=; b=iwZ/Uji6QvAKuuOWtXZCvr8Lge+SdMXLiAEu7w1T7VZPHSKv6yHAJfpD/0KUB/pggyj/Xdb2XDlbvcY0LqU3RXAI9qOODgMlewQdnqqun54VbQthDhwNNPlVr0AtpXMt5tZc33KmjZG757fCKi6O7SxWcMsr1nBC4WUe+g0Mv8o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50146+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 1573089238985918.1064430637152; Wed, 6 Nov 2019 17:13:58 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1463.1573089233798338813 for ; Wed, 06 Nov 2019 17:13:57 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520636" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:57 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bret Barkelew , Liming Gao Subject: [edk2-devel] [Patch v4 20/22] .azurepipelines: Add Azure Pipelines YML configuration files Date: Wed, 6 Nov 2019 17:13:47 -0800 Message-Id: <20191107011349.16524-21-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=KYzE+pN4iw9jT8c/+89RGUcE4nwdqWfQUpt9qLj5V90=; h=Cc:Date:From:Reply-To:Subject:To; b=uAP7WlDsr29UKSCn75F4ayIjA2i5JmNZruDHhhBYERIxcAZFJ/vZXcZj7yZr23FRqGj uyXtUDwJeA2SnK+4Lui9MwwOalN+HiD3BtsT1bVNU46x1cY4XNsHbWrD5cM7mqjzaEvMX wMT8OfworB1H0Ld5C7sk9pL4yicY4WaoLto= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" From: Sean Brogan Add YML configuration files used to run the EDK II Continuous Integration (CI) checks on Azure Pipelines agents. Cc: Sean Brogan Cc: Bret Barkelew Cc: Liming Gao Signed-off-by: Michael D Kinney --- .azurepipelines/Ubuntu-GCC5.yml | 18 +++ .azurepipelines/Ubuntu-PatchCheck.yml | 32 +++++ .azurepipelines/Windows-VS2019.yml | 18 +++ .../templates/basetools-build-steps.yml | 36 +++++ .../templates/pr-gate-build-job.yml | 79 +++++++++++ .azurepipelines/templates/pr-gate-steps.yml | 129 ++++++++++++++++++ .../templates/spell-check-prereq-steps.yml | 21 +++ 7 files changed, 333 insertions(+) create mode 100644 .azurepipelines/Ubuntu-GCC5.yml create mode 100644 .azurepipelines/Ubuntu-PatchCheck.yml create mode 100644 .azurepipelines/Windows-VS2019.yml create mode 100644 .azurepipelines/templates/basetools-build-steps.yml create mode 100644 .azurepipelines/templates/pr-gate-build-job.yml create mode 100644 .azurepipelines/templates/pr-gate-steps.yml create mode 100644 .azurepipelines/templates/spell-check-prereq-steps.yml diff --git a/.azurepipelines/Ubuntu-GCC5.yml b/.azurepipelines/Ubuntu-GCC5.= yml new file mode 100644 index 0000000000..191bda8a91 --- /dev/null +++ b/.azurepipelines/Ubuntu-GCC5.yml @@ -0,0 +1,18 @@ +## +# Azure Pipeline build file for a build using ubuntu and GCC5 +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +trigger: +- master +pr: +- master + +jobs: +- template: templates/pr-gate-build-job.yml + parameters: + tool_chain_tag: 'GCC5' + vm_image: 'ubuntu-latest' + arch_list: "IA32,X64,ARM,AARCH64" + diff --git a/.azurepipelines/Ubuntu-PatchCheck.yml b/.azurepipelines/Ubuntu= -PatchCheck.yml new file mode 100644 index 0000000000..0d91d78fb2 --- /dev/null +++ b/.azurepipelines/Ubuntu-PatchCheck.yml @@ -0,0 +1,32 @@ +## @file +# Azure Pipielines YML file that evalues the patch series in a PR using the +# python script BaseTools/Scripts/PatchCheck.py. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# https://github.com/tianocore +# +## + +trigger: none + +pr: +- master + +pool: + vmImage: 'ubuntu-latest' + +steps: +- checkout: self + clean: true + +- task: UsePythonVersion@0 + inputs: + versionSpec: '3.7.x' + architecture: 'x64' + +- script: | + git fetch origin $(System.PullRequest.TargetBranch):$(System.PullReque= st.TargetBranch) + python BaseTools/Scripts/PatchCheck.py $(System.PullRequest.TargetBran= ch)..$(System.PullRequest.SourceCommitId) + displayName: 'Use PatchCheck.py to verify patch series in pull request' diff --git a/.azurepipelines/Windows-VS2019.yml b/.azurepipelines/Windows-V= S2019.yml new file mode 100644 index 0000000000..2143162e02 --- /dev/null +++ b/.azurepipelines/Windows-VS2019.yml @@ -0,0 +1,18 @@ +## +# Azure Pipeline build file for a build using Windows and VS2019 +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +trigger: +- master + +pr: +- master + +jobs: +- template: templates/pr-gate-build-job.yml + parameters: + tool_chain_tag: 'VS2019' + vm_image: 'windows-latest' + arch_list: "IA32,X64" diff --git a/.azurepipelines/templates/basetools-build-steps.yml b/.azurepi= pelines/templates/basetools-build-steps.yml new file mode 100644 index 0000000000..dad59e2a1f --- /dev/null +++ b/.azurepipelines/templates/basetools-build-steps.yml @@ -0,0 +1,36 @@ +# File templates/basetools-build-job.yml +# +# template file to build basetools +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## +parameters: + tool_chain_tag: '' + +steps: +- ${{ if contains(parameters.tool_chain_tag, 'GCC') }}: + - bash: sudo apt-get update + displayName: Update apt + condition: and(gt(variables.pkg_count, 0), succeeded()) + + - bash: sudo apt-get install gcc g++ make uuid-dev + displayName: Install required tools + condition: and(gt(variables.pkg_count, 0), succeeded()) + +- task: CmdLine@1 + displayName: Build Base Tools from source + inputs: + filename: python + arguments: BaseTools/Edk2ToolsBuild.py -t ${{ parameters.tool_chain_ta= g }} + condition: and(gt(variables.pkg_count, 0), succeeded()) + +- task: CopyFiles@2 + displayName: "Copy base tools build log" + inputs: + targetFolder: '$(Build.ArtifactStagingDirectory)' + SourceFolder: 'BaseTools/BaseToolsBuild' + contents: | + BASETOOLS_BUILD*.* + flattenFolders: true + condition: and(gt(variables.pkg_count, 0), succeededOrFailed()) diff --git a/.azurepipelines/templates/pr-gate-build-job.yml b/.azurepipeli= nes/templates/pr-gate-build-job.yml new file mode 100644 index 0000000000..523ce77544 --- /dev/null +++ b/.azurepipelines/templates/pr-gate-build-job.yml @@ -0,0 +1,79 @@ +# File templates/pr-gate-build-job.yml +# +# template file used to build supported packages. +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +parameters: + tool_chain_tag: '' + vm_image: '' + arch_list: '' + +# Build step +jobs: + +- job: Build_${{ parameters.tool_chain_tag }} + + #Use matrix to speed up the build process + strategy: + matrix: + TARGET_MDE_CPU: + Build.Pkgs: 'MdePkg,UefiCpuPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + TARGET_MDEMODULE_DEBUG: + Build.Pkgs: 'MdeModulePkg' + Build.Targets: 'DEBUG' + TARGET_MDEMODULE_RELEASE: + Build.Pkgs: 'MdeModulePkg' + Build.Targets: 'RELEASE,NO-TARGET' + TARGET_NETWORK: + Build.Pkgs: 'NetworkPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + TARGET_OTHER: + Build.Pkgs: 'PcAtChipsetPkg,ShellPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + TARGET_FMP: + Build.Pkgs: 'FmpDevicePkg,FatPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + TARGET_CRYPTO: + Build.Pkgs: 'CryptoPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + TARGET_SECURITY: + Build.Pkgs: 'SecurityPkg' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' + + workspace: + clean: all + + pool: + vmImage: ${{ parameters.vm_image }} + + steps: + - template: pr-gate-steps.yml + parameters: + tool_chain_tag: ${{ parameters.tool_chain_tag }} + build_pkgs: $(Build.Pkgs) + build_targets: $(Build.Targets) + build_archs: ${{ parameters.arch_list }} + +- job: FINISHED + dependsOn: Build_${{ parameters.tool_chain_tag }} + condition: succeeded() + steps: + - checkout: none + - script: | + echo FINISHED + sleep 10 + displayName: FINISHED + +- job: FAILED + dependsOn: Build_${{ parameters.tool_chain_tag }} + condition: failed() + steps: + - checkout: none + - script: | + echo FAILED + sleep 10 + displayName: FAILED diff --git a/.azurepipelines/templates/pr-gate-steps.yml b/.azurepipelines/= templates/pr-gate-steps.yml new file mode 100644 index 0000000000..d3c7eec4ad --- /dev/null +++ b/.azurepipelines/templates/pr-gate-steps.yml @@ -0,0 +1,129 @@ +# File templates/pr-gate-steps.yml +# +# template file containing the steps to build +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +parameters: + tool_chain_tag: '' + build_pkgs: '' + build_targets: '' + build_archs: '' + +steps: +- checkout: self + clean: true + fetchDepth: 1 + +- task: UsePythonVersion@0 + inputs: + versionSpec: '3.7.x' + architecture: 'x64' + +- script: pip install -r requirements.txt --upgrade + displayName: 'Install/Upgrade pip modules' + +# Set default +- bash: | + echo "##vso[task.setvariable variable=3Dpkgs_to_build]${{ parameters.b= uild_pkgs }}" + echo "##vso[task.setvariable variable=3Dpkg_count]${{ 1 }}" + +# trim the package list if this is a PR +- task: CmdLine@1 + displayName: Check if ${{ parameters.build_pkgs }} need testing + inputs: + filename: stuart_pr_eval + arguments: -c .pytool/CISettings.py -p ${{ parameters.build_pkgs }} --= pr-target origin/$(System.PullRequest.targetBranch) --output-csv-format-str= ing "##vso[task.setvariable variable=3Dpkgs_to_build;isOutpout=3Dtrue]{pkgc= sv}" --output-count-format-string "##vso[task.setvariable variable=3Dpkg_co= unt;isOutpout=3Dtrue]{pkgcount}" + condition: eq(variables['Build.Reason'], 'PullRequest') + +# build basetools +- template: basetools-build-steps.yml + parameters: + tool_chain_tag: ${{ parameters.tool_chain_tag }} + +# install spell check prereqs +- template: spell-check-prereq-steps.yml + +# Build repo +- task: CmdLine@1 + displayName: Setup ${{ parameters.build_pkgs }} ${{ parameters.build_arc= hs}} + inputs: + filename: stuart_setup + arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ paramet= ers.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=3D${{ pa= rameters.tool_chain_tag}} + condition: and(gt(variables.pkg_count, 0), succeeded()) + +- task: CmdLine@1 + displayName: Update ${{ parameters.build_pkgs }} ${{ parameters.build_ar= chs}} + inputs: + filename: stuart_update + arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ paramet= ers.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=3D${{ pa= rameters.tool_chain_tag}} + condition: and(gt(variables.pkg_count, 0), succeeded()) + +- task: CmdLine@1 + displayName: Build and Test ${{ parameters.build_pkgs }} ${{ parameters.= build_archs}} + inputs: + filename: stuart_ci_build + arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ paramet= ers.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=3D${{ pa= rameters.tool_chain_tag}} + condition: and(gt(variables.pkg_count, 0), succeeded()) + +# Publish Test Results to Azure Pipelines/TFS +- task: PublishTestResults@2 + displayName: 'Publish junit test results' + continueOnError: true + condition: and( succeededOrFailed(),gt(variables.pkg_count, 0)) + inputs: + testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit + testResultsFiles: 'Build/TestSuites.xml' + #searchFolder: '$(System.DefaultWorkingDirectory)' # Optional + mergeTestResults: true # Optional + testRunTitle: $(System.JobName) # Optional + #buildPlatform: # Optional + #buildConfiguration: # Optional + publishRunAttachments: true # Optional + +# Publish Test Results to Azure Pipelines/TFS +- task: PublishTestResults@2 + displayName: 'Publish host based test results for $(System.JobName)' + continueOnError: true + condition: and( succeededOrFailed(), gt(variables.pkg_count, 0)) + inputs: + testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit + testResultsFiles: 'Build/**/*.result.xml' + #searchFolder: '$(System.DefaultWorkingDirectory)' # Optional + mergeTestResults: false # Optional + testRunTitle: ${{ parameters.build_pkgs }} # Optional + #buildPlatform: # Optional + #buildConfiguration: # Optional + publishRunAttachments: true # Optional + +# Copy the build logs to the artifact staging directory +- task: CopyFiles@2 + displayName: "Copy build logs" + inputs: + targetFolder: '$(Build.ArtifactStagingDirectory)' + SourceFolder: 'Build' + contents: | + BUILDLOG_*.txt + BUILDLOG_*.md + CI_*.txt + CI_*.md + CISETUP.txt + SETUPLOG.txt + UPDATE_LOG.txt + PREVALLOG.txt + TestSuites.xml + **/BUILD_TOOLS_REPORT.html + **/OVERRIDELOG.TXT + flattenFolders: true + condition: succeededOrFailed() + +# Publish build artifacts to Azure Artifacts/TFS or a file share +- task: PublishBuildArtifacts@1 + continueOnError: true + displayName: "Publish build logs" + inputs: + pathtoPublish: '$(Build.ArtifactStagingDirectory)' + artifactName: 'Build Logs $(System.JobName)' + condition: succeededOrFailed() diff --git a/.azurepipelines/templates/spell-check-prereq-steps.yml b/.azur= epipelines/templates/spell-check-prereq-steps.yml new file mode 100644 index 0000000000..7d7797ffed --- /dev/null +++ b/.azurepipelines/templates/spell-check-prereq-steps.yml @@ -0,0 +1,21 @@ +# File templates/spell-check-prereq-steps.yml +# +# template file used to install spell checking prerequisits +# +# Copyright (c) 2019, Microsoft Corporation +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +parameters: + none: '' + +steps: +- task: NodeTool@0 + inputs: + versionSpec: '10.x' + #checkLatest: false # Optional + condition: and(gt(variables.pkg_count, 0), succeeded()) + +- script: npm install -g cspell + displayName: 'Install cspell npm' + condition: and(gt(variables.pkg_count, 0), succeeded()) --=20 2.21.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 (#50146): https://edk2.groups.io/g/devel/message/50146 Mute This Topic: https://groups.io/mt/44874104/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50147+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50147+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089239; cv=none; d=zoho.com; s=zohoarc; b=HvoYEVCYtVgMqJGVYcNFSxQ4hDnyates7LOYZdolE1XNGii495/RA+Azaaur93e8HM1oNrM1zQIRDXpUYjBkcqseT54gyTdvE/aHDxsuCB8vAANxDfGzMs0r3nNFQUsM2zz3YJy+y4uhDINQSuYgDJJ3i6X1LOWY5r2nBf1aFzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089239; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=mCLJJ11GaHCG+GDZ0mGyV1nhHDN+pkvvnXE82D0ggcg=; b=LrUXYhAv2ohFcHbEqm6ynrSm03BAaHCpVS98OndfU23ahzl5expyDVzv4dGX0XHK7cAnzte69yZ96LyeVi7g0RiRyr7wSSUQu4lbbFeGNGzo358af+S7WRXfw3Is6kfjgHw8drTdbEfhg1EsTfyKZ7b4SZhcXhROqXU37R1gRuA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50147+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 1573089239123539.9121017221097; Wed, 6 Nov 2019 17:13:59 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:58 -0800 X-Received: from mga09.intel.com (mga09.intel.com []) by mx.groups.io with SMTP id smtpd.web11.1464.1573089234838775507 for ; Wed, 06 Nov 2019 17:13:58 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520639" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:57 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Liming Gao , Sean Brogan , Bret Barkelew Subject: [edk2-devel] [Patch v4 21/22] .mergify: Add Mergify YML pull request rules configuration file Date: Wed, 6 Nov 2019 17:13:48 -0800 Message-Id: <20191107011349.16524-22-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089238; bh=UsgqKqa5gi/OobRFSJFmwgNEQKUoVU7CGACopAExyYU=; h=Cc:Date:From:Reply-To:Subject:To; b=TM7Zr3dADFlG84fwt94if8brkvrXMfWojEjHPxiuvWqnISyaCDgtPyfiHkiDAXPMH/3 NuOKwbAgIadKJgCk9jKB7p8ee3Zchukpql2GEq7U5tDGHqkXlzwpdcWUQBt3+c+6rDB/D jYNuULIsaWKQmPLy/A1Tn+PKXIr1Sh3W8Zc= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Add directory for the Mergify YML configuration files that provides rules and actions used to process a pull request. * Auto commit a PR from EDK II Maintainer with 'push' label set and all CI checks pass * Auto close a PR from any developers without 'push' label set and all CI checks pass. * Auto close a PR from a non EDK II Maintainer that has the 'push' label set. * Post a comment to a PR that has a merge conflict. Submitter can resolved conflicts and reopen the PR. * Post a comment to a PR that fails PatchCheck.py Submitter can resolve PatchCheck.py issues and reopen the PR. Cc: Liming Gao Cc: Sean Brogan Cc: Bret Barkelew Signed-off-by: Michael D Kinney --- .mergify/config.yml | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .mergify/config.yml diff --git a/.mergify/config.yml b/.mergify/config.yml new file mode 100644 index 0000000000..26583de0f6 --- /dev/null +++ b/.mergify/config.yml @@ -0,0 +1,97 @@ +## @file +# Mergify YML file that automatically merges a GitHub pull request against +# edk2-ci if all of the GitHub branch protections have passed. It also +# contains rules to: +# * auto close branches that are not from an EDK II Maintainer +# * post a comment on pull requests that have merge conflicts. +# * post a comment on pull requests that have PatchCheck.py errors. +# +# Configuration Notes: +# * Update the 'base=3Dedk2-ci' statements with the name of the branch to = merge +# pull requests. +# +# * Update the 'status-failure' statement with the name of the name of the= Azure +# Pipelines Build that performs the EDK II Maintainer check. +# +# * This file must be checked into the 'default' branch of a repo. Copies +# of this file on other branches of a repo are ignored by Mergify. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# https://github.com/apps/mergify +# https://doc.mergify.io/ +# +## + +pull_request_rules: + + - name: Automatically merge a PR when all required checks pass and 'push= ' label is present + conditions: + - base=3Dmaster + - label=3Dpush + - author=3D@tianocore/edk-ii-maintainers + - status-success=3Dtianocore.PatchCheck + - status-success=3DUbuntu GCC5 PR + - status-success=3DWindows VS2019 PR + actions: + merge: + strict: true + method: rebase + + - name: Automatically close a PR when all required checks pass and 'push= ' label is not present + conditions: + - base=3Dmaster + - -label=3Dpush + - -closed + - status-success=3Dtianocore.PatchCheck + - status-success=3DUbuntu GCC5 PR + - status-success=3DWindows VS2019 PR + - status-success=3DUbuntu GCC5 PR (FINISHED) + - status-success=3DWindows VS2019 PR (FINISHED) + actions: + close: + message: All checks passed. Auto close personal build. + + - name: Post a comment on a PR that can not be merged due to a merge con= flict + conditions: + - base=3Dmaster + - conflict + actions: + comment: + message: PR can not be merged due to conflict. Please rebase and = resubmit + + - name: Automatically close a PR that fails the EDK II Maintainers membe= rship check and 'push' label is present + conditions: + - base=3Dmaster + - label=3Dpush + - -author=3D@tianocore/edk-ii-maintainers + actions: + close: + message: PR submitter is not a member of the Tianocore EDK II Main= tainers team + + - name: Post a comment on a PR if PatchCheck fails + conditions: + - base=3Dmaster + - status-failure=3Dtianocore.PatchCheck + actions: + comment: + message: PR can not be merged due to a PatchCheck failure. Please= resolve and resubmit + + - name: Post a comment on a PR if Ubuntu GCC5 fails + conditions: + - base=3Dmaster + - status-failure=3DUbuntu GCC5 PR + - status-success=3DUbuntu GCC5 PR (FAILED) + actions: + comment: + message: PR can not be merged due to an Ubuntu GCC5 failure. Plea= se resolve and resubmit + + - name: Post a comment on a PR if Windows VS2019 fails + conditions: + - base=3Dmaster + - status-failure=3DWindows VS2019 PR + - status-success=3DWindows VS2019 PR (FAILED) + actions: + comment: + message: PR can not be merged due to a Windows VS2019 failure. Pl= ease resolve and resubmit --=20 2.21.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 (#50147): https://edk2.groups.io/g/devel/message/50147 Mute This Topic: https://groups.io/mt/44874110/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- From nobody Thu Mar 28 20:28:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+50148+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50148+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1573089239; cv=none; d=zoho.com; s=zohoarc; b=l+pKqp0zzYOR7/4P6Tao+JnpmuMexya+biUZPsWg43M0CqIp+KV2wVcg3vESVhyHziKzj+mcrmFFAjkQ7GYQ8yCWoCgljvufwEROCkQNXO+igSpN9IkCvdgi5Zu0fIH21JLMjSrcjO/RKZStDu77YfptIF1T6bxe6B3dUHPdNBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573089239; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=mif/vVhEWA+L8Mn8xexJb6w8L9V76Mff4XsX4MaxROs=; b=nllujnEmrgQec3pl4lRbdpStG7vFLRnYAF+mX+ZkBoSscv3tK/Vis4l3DM3BRm9893nkHQPs+57MWn6YOkohXSCsqgNf6W/hfg2njKtXxHDGTBsyi+Cj0xS0MrPDVh1xppiZRWh4AZERdeXeZ/nK+R8/tW/nWftRYBdxYeoLeOc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+50148+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 1573089239409478.31609001443667; Wed, 6 Nov 2019 17:13:59 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id aaaaYY1788612xaaaaaaaaaa; Wed, 06 Nov 2019 17:13:59 -0800 X-Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web11.1467.1573089238600517725 for ; Wed, 06 Nov 2019 17:13:58 -0800 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 17:13:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="205520640" X-Received: from unknown (HELO mdkinney-MOBL2.amr.corp.intel.com) ([10.241.98.74]) by orsmga003.jf.intel.com with ESMTP; 06 Nov 2019 17:13:58 -0800 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Andrew Fish , Laszlo Ersek , Leif Lindholm Subject: [edk2-devel] [Patch v4 22/22] Readme.md: Add CI build status badges Date: Wed, 6 Nov 2019 17:13:49 -0800 Message-Id: <20191107011349.16524-23-michael.d.kinney@intel.com> In-Reply-To: <20191107011349.16524-1-michael.d.kinney@intel.com> References: <20191107011349.16524-1-michael.d.kinney@intel.com> MIME-Version: 1.0 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,michael.d.kinney@intel.com X-Gm-Message-State: aaaaaaaaaaaaaaaaaaaaaaaax1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1573089239; bh=lkcAHEuerSyNMFlXvKiwhEq0o5RzjsMy7ldf4JLLE+M=; h=Cc:Date:From:Reply-To:Subject:To; b=fmnBleQ5Bs2JDH0x2hLXgC3aDX/sVrouY05i9zKtJBBCr5qK005XEztKcwoBcHqmNek NY8H3D66AhxeUVoPQaoY4in6rVDU4EoYKFx5fMtSGYo8f5ENiQM5EGIK/NScsGgi5/xs8 BHBootSOvoa/ujCtyap2dMMtwEyCmaTjSqw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" Update Readme.md with status badges from the most recent EDK II Continuous Integration(CI) build. Cc: Andrew Fish Cc: Laszlo Ersek Cc: Leif Lindholm Signed-off-by: Michael D Kinney Acked-by: Laszlo Ersek --- Readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Readme.md b/Readme.md index 27e4ce0771..0207923763 100644 --- a/Readme.md +++ b/Readme.md @@ -3,6 +3,17 @@ A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org. =20 +# Build Status + +| Host Type | Toolchain | Branch | Build Status | Test Status | Code Cove= rage | +| :-------- | :-------- | :------ | :----------- | :---------- | :--------= ---- | +| Windows | VS2019 | master | [![Build Status](https://dev.azure.com= /tianocore/edk2-ci-play/_apis/build/status/edk2-staging/Windows%20VS2019%20= CI?branchName=3Dmaster)](https://dev.azure.com/tianocore/edk2-ci-play/_buil= d/latest?definitionId=3D27&branchName=3Dmaster) | [![Azure DevOps tests](ht= tps://img.shields.io/azure-devops/tests/tianocore/edk2-ci-play/14.svg)](htt= ps://dev.azure.com/tianocore/edk2-ci-play/_build/latest?definitionId=3D27&b= ranchName=3Dmaster) | [![Code Coverage](https://img.shields.io/badge/covera= ge-coming_soon-blue)](https://dev.azure.com/tianocore/edk2-ci-play/_build/l= atest?definitionId=3D27&branchName=3Dmaster) | +| Ubuntu | GCC | master | [![Build Status](https://dev.azure.com= /tianocore/edk2-ci-play/_apis/build/status/edk2-staging/Ubuntu%20GCC5%20CI?= branchName=3Dmaster)](https://dev.azure.com/tianocore/edk2-ci-play/_build/l= atest?definitionId=3D26&branchName=3Dmaster) | [![Azure DevOps tests](ht= tps://img.shields.io/azure-devops/tests/tianocore/edk2-ci-play/15.svg)](htt= ps://dev.azure.com/tianocore/edk2-ci-play/_build/latest?definitionId=3D26&b= ranchName=3Dmaster) | [![Code Coverage](https://img.shields.io/badge/covera= ge-coming_soon-blue)](https://dev.azure.com/tianocore/edk2-ci-play/_build/l= atest?definitionId=3D26&branchName=3Dmaster) | + +[More CI Build information](.pytool/Readme.md) + +# License Details + The majority of the content in the EDK II open source project uses a [BSD-2-Clause Plus Patent License](License.txt). The EDK II open source p= roject contains the following components that are covered by additional licenses: --=20 2.21.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 (#50148): https://edk2.groups.io/g/devel/message/50148 Mute This Topic: https://groups.io/mt/44874114/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-