A modern, feature-rich, cross-platform firmware development environment\r
for the UEFI and PI specifications from www.uefi.org.\r
\r
-Contributions to the EDK II open source project are covered by the\r
-[TianoCore Contribution Agreement 1.1](Contributions.txt)\r
+# Build Status\r
+\r
+<table>\r
+ <tr>\r
+ <th>Host Type</th>\r
+ <th>Toolchain</th>\r
+ <th>Branch</th>\r
+ <th>Build Status</th>\r
+ <th>Test Status</th>\r
+ <th>Code Coverage</th>\r
+ </tr>\r
+ <tr>\r
+ <td>Windows</td>\r
+ <td>VS2019</td>\r
+ <td>master</td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=32&branchName=master">\r
+ <img src="https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Windows%20VS2019%20CI?branchName=master"/></a>\r
+ </td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=32&branchName=master">\r
+ <img src="https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/32.svg"/></a>\r
+ </td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=32&branchName=master">\r
+ <img src="https://img.shields.io/badge/coverage-coming_soon-blue"/></a>\r
+ </td>\r
+ </tr>\r
+ <tr>\r
+ <td>Ubuntu</td>\r
+ <td>GCC</td>\r
+ <td>master</td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master">\r
+ <img src="https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Ubuntu%20GCC5%20CI?branchName=master"/></a>\r
+ </td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master">\r
+ <img src="https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/31.svg"/></a>\r
+ </td>\r
+ <td>\r
+ <a href="https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master">\r
+ <img src="https://img.shields.io/badge/coverage-coming_soon-blue"/></a>\r
+ </td>\r
+ </tr>\r
+</table>\r
+\r
+[More CI Build information](.pytool/Readme.md)\r
+\r
+# License Details\r
\r
The majority of the content in the EDK II open source project uses a\r
-[BSD 2-Clause License](License.txt). The EDK II open source project contains\r
-the following components that are covered by additional licenses:\r
-* [AppPkg/Applications/Python/Python-2.7.2/Tools/pybench](AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE)\r
-* [AppPkg/Applications/Python/Python-2.7.2](AppPkg/Applications/Python/Python-2.7.2/LICENSE)\r
-* [AppPkg/Applications/Python/Python-2.7.10](AppPkg/Applications/Python/Python-2.7.10/LICENSE)\r
+[BSD-2-Clause Plus Patent License](License.txt). The EDK II open source project\r
+contains the following components that are covered by additional licenses:\r
* [BaseTools/Source/C/BrotliCompress](BaseTools/Source/C/BrotliCompress/LICENSE)\r
* [MdeModulePkg/Library/BrotliCustomDecompressLib](MdeModulePkg/Library/BrotliCustomDecompressLib/LICENSE)\r
+* [BaseTools/Source/C/LzmaCompress](BaseTools/Source/C/LzmaCompress/LZMA-SDK-README.txt)\r
+* [MdeModulePkg/Library/LzmaCustomDecompressLib](MdeModulePkg/Library/LzmaCustomDecompressLib/LZMA-SDK-README.txt)\r
+* [IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Sdk](IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LZMA-SDK-README.txt)\r
+* [BaseTools/Source/C/VfrCompile/Pccts](BaseTools/Source/C/VfrCompile/Pccts/RIGHTS)\r
+* [MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma](MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README)\r
* [OvmfPkg](OvmfPkg/License.txt)\r
-* [CryptoPkg/Library/OpensslLib/openssl](CryptoPkg/Library/OpensslLib/openssl/LICENSE)\r
+* [CryptoPkg/Library/OpensslLib/openssl](https://github.com/openssl/openssl/blob/50eaac9f3337667259de725451f201e784599687/LICENSE)\r
+* [ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3](https://github.com/ucb-bar/berkeley-softfloat-3/blob/b64af41c3276f97f0e181920400ee056b9c88037/COPYING.txt)\r
\r
The EDK II Project is composed of packages. The maintainers for each package\r
are listed in [Maintainers.txt](Maintainers.txt).\r
* [TianoCore Bugzilla](https://bugzilla.tianocore.org)\r
* [How To Contribute](https://github.com/tianocore/tianocore.github.io/wiki/How-To-Contribute)\r
* [Release Planning](https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planning)\r
-* [UDK2017](https://github.com/tianocore/edk2/releases/tag/vUDK2017)\r
-* [UDK2018](https://github.com/tianocore/edk2/releases/tag/vUDK2018)\r
-* [edk2-stable201811](https://github.com/tianocore/edk2/releases/tag/edk2-stable201811)\r
+\r
+# Code Contributions\r
+To make a contribution to a TianoCore project, follow these steps.\r
+1. Create a change description in the format specified below to\r
+ use in the source control commit log.\r
+2. Your commit message must include your `Signed-off-by` signature\r
+3. Submit your code to the TianoCore project using the process\r
+ that the project documents on its web page. If the process is\r
+ not documented, then submit the code on development email list\r
+ for the project.\r
+4. It is preferred that contributions are submitted using the same\r
+ copyright license as the base project. When that is not possible,\r
+ then contributions using the following licenses can be accepted:\r
+ * BSD (2-clause): http://opensource.org/licenses/BSD-2-Clause\r
+ * BSD (3-clause): http://opensource.org/licenses/BSD-3-Clause\r
+ * MIT: http://opensource.org/licenses/MIT\r
+ * Python-2.0: http://opensource.org/licenses/Python-2.0\r
+ * Zlib: http://opensource.org/licenses/Zlib\r
+\r
+ For documentation:\r
+ * FreeBSD Documentation License\r
+ https://www.freebsd.org/copyright/freebsd-doc-license.html\r
+\r
+ Contributions of code put into the public domain can also be\r
+ accepted.\r
+\r
+ Contributions using other licenses might be accepted, but further\r
+ review will be required.\r
+\r
+# Developer Certificate of Origin\r
+\r
+Your change description should use the standard format for a\r
+commit message, and must include your `Signed-off-by` signature.\r
+\r
+In order to keep track of who did what, all patches contributed must\r
+include a statement that to the best of the contributor's knowledge\r
+they have the right to contribute it under the specified license.\r
+\r
+The test for this is as specified in the [Developer's Certificate of\r
+Origin (DCO) 1.1](https://developercertificate.org/). The contributor\r
+certifies compliance by adding a line saying\r
+\r
+ Signed-off-by: Developer Name <developer@example.org>\r
+\r
+where `Developer Name` is the contributor's real name, and the email\r
+address is one the developer is reachable through at the time of\r
+contributing.\r
+\r
+```\r
+Developer's Certificate of Origin 1.1\r
+\r
+By making a contribution to this project, I certify that:\r
+\r
+(a) The contribution was created in whole or in part by me and I\r
+ have the right to submit it under the open source license\r
+ indicated in the file; or\r
+\r
+(b) The contribution is based upon previous work that, to the best\r
+ of my knowledge, is covered under an appropriate open source\r
+ license and I have the right under that license to submit that\r
+ work with modifications, whether created in whole or in part\r
+ by me, under the same open source license (unless I am\r
+ permitted to submit under a different license), as indicated\r
+ in the file; or\r
+\r
+(c) The contribution was provided directly to me by some other\r
+ person who certified (a), (b) or (c) and I have not modified\r
+ it.\r
+\r
+(d) I understand and agree that this project and the contribution\r
+ are public and that a record of the contribution (including all\r
+ personal information I submit with it, including my sign-off) is\r
+ maintained indefinitely and may be redistributed consistent with\r
+ this project or the open source license(s) involved.\r
+```\r
+\r
+# Sample Change Description / Commit Message\r
+\r
+```\r
+From: Contributor Name <contributor@example.com>\r
+Subject: [Repository/Branch PATCH] Pkg-Module: Brief-single-line-summary\r
+\r
+Full-commit-message\r
+\r
+Signed-off-by: Contributor Name <contributor@example.com>\r
+```\r
+\r
+## Notes for sample patch email\r
+\r
+* The first line of commit message is taken from the email's subject\r
+ line following `[Repository/Branch PATCH]`. The remaining portion of the\r
+ commit message is the email's content.\r
+* `git format-patch` is one way to create this format\r
+\r
+## Definitions for sample patch email\r
+\r
+* `Repository` is the identifier of the repository the patch applies.\r
+ This identifier should only be provided for repositories other than\r
+ `edk2`. For example `edk2-BuildSpecification` or `staging`.\r
+* `Branch` is the identifier of the branch the patch applies. This\r
+ identifier should only be provided for branches other than `edk2/master`.\r
+ For example `edk2/UDK2015`, `edk2-BuildSpecification/release/1.27`, or\r
+ `staging/edk2-test`.\r
+* `Module` is a short identifier for the affected code or documentation. For\r
+ example `MdePkg`, `MdeModulePkg/UsbBusDxe`, `Introduction`, or\r
+ `EDK II INF File Format`.\r
+* `Brief-single-line-summary` is a short summary of the change.\r
+* The entire first line should be less than ~70 characters.\r
+* `Full-commit-message` a verbose multiple line comment describing\r
+ the change. Each line should be less than ~70 characters.\r
+* `Signed-off-by` is the contributor's signature identifying them\r
+ by their real/legal name and their email address.\r
+\r
+# Submodules\r
+\r
+Submodule in EDK II is allowed but submodule chain should be avoided\r
+as possible as we can. Currently EDK II contains the following submodules\r
+\r
+- CryptoPkg/Library/OpensslLib/openssl\r
+- ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3\r
+\r
+ArmSoftFloatLib is actually required by OpensslLib. It's inevitable\r
+in openssl-1.1.1 (since stable201905) for floating point parameter\r
+conversion, but should be dropped once there's no such need in future\r
+release of openssl.\r
+\r
+To get a full, buildable EDK II repository, use following steps of git\r
+command\r
+\r
+```\r
+$ git clone https://github.com/tianocore/edk2.git\r
+$ cd edk2\r
+$ git submodule update --init\r
+$ cd ..\r
+```\r
+\r
+If there's update for submodules, use following git commands to get the\r
+latest submodules code.\r
+\r
+```\r
+$ cd edk2\r
+$ git pull\r
+$ git submodule update\r
+```\r
+\r
+Note: When cloning submodule repos, '--recursive' option is not\r
+recommended. EDK II itself will not use any code/feature from\r
+submodules in above submodules. So using '--recursive' adds a\r
+dependency on being able to reach servers we do not actually want\r
+any code from, as well as needlessly downloading code we will not\r
+use.\r