DynamicTablesPkg: Add EDK2 Core CI support

The TianoCore EDKII project has introduced a Core CI infrastructure
using TianoCore EDKII Tools PIP modules:
  * https://pypi.org/project/edk2-pytool-library/
  * https://pypi.org/project/edk2-pytool-extensions/

The edk2\.pytool\Readme.md provides information to configure the
environment and to run local builds.

This patch defines the necessary settings for enabling the Core CI
builds for DynamicTablesPkg.
 - Add DynamicTablesPkg.ci.yaml for Core CI
 - Update ReadMe.md for details and instructions

Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
This commit is contained in:
Sami Mujawar 2020-06-27 22:11:35 +01:00 committed by mergify[bot]
parent e3f8605a23
commit 2d0c42fdf2
2 changed files with 163 additions and 0 deletions

View File

@ -0,0 +1,92 @@
## @file
# CI configuration for DynamicTablesPkg
#
# Copyright (c) 2020, ARM Limited. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
## options defined .pytool/Plugin/CompilerPlugin
"CompilerPlugin": {
"DscPath": "DynamicTablesPkg.dsc"
},
## options defined .pytool/Plugin/HostUnitTestCompilerPlugin
"HostUnitTestCompilerPlugin": {
"DscPath": "" # Don't support this test
},
## options defined .pytool/Plugin/CharEncodingCheck
"CharEncodingCheck": {
"IgnoreFiles": []
},
## options defined .pytool/Plugin/DependencyCheck
"DependencyCheck": {
"AcceptableDependencies": [
"ArmPlatformPkg/ArmPlatformPkg.dec",
"EmbeddedPkg/EmbeddedPkg.dec",
"DynamicTablesPkg/DynamicTablesPkg.dec",
"MdeModulePkg/MdeModulePkg.dec",
"MdePkg/MdePkg.dec"
],
# For host based unit tests
"AcceptableDependencies-HOST_APPLICATION":[
"UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec"
],
# For UEFI shell based apps
"AcceptableDependencies-UEFI_APPLICATION":[],
"IgnoreInf": []
},
## options defined .pytool/Plugin/DscCompleteCheck
"DscCompleteCheck": {
"IgnoreInf": [],
"DscPath": "DynamicTablesPkg.dsc"
},
## options defined .pytool/Plugin/HostUnitTestDscCompleteCheck
"HostUnitTestDscCompleteCheck": {
"IgnoreInf": [""],
"DscPath": "" # Don't support this test
},
## options defined .pytool/Plugin/GuidCheck
"GuidCheck": {
"IgnoreGuidName": [],
"IgnoreGuidValue": [],
"IgnoreFoldersAndFiles": [],
"IgnoreDuplicates": [],
},
## options defined .pytool/Plugin/LibraryClassCheck
"LibraryClassCheck": {
"IgnoreHeaderFile": []
},
## options defined .pytool/Plugin/SpellCheck
"SpellCheck": {
"AuditOnly": False,
"IgnoreFiles": [], # use gitignore syntax to ignore errors
# in matching files
"ExtendWords": [
"CCIDX",
"CCSIDR",
"countof",
"EOBJECT",
"GTBLOCK",
"MPIDR",
"pytool",
"Roadmap",
"SMMUV",
"standardised",
"TABLEEX",
"TNSID",
"Vatos",
"WBINVD"
], # words to extend to the dictionary for this package
"IgnoreStandardPaths": [], # Standard Plugin defined paths that
# should be ignore
"AdditionalIncludePaths": [] # Additional paths to spell check
# (wildcards supported)
}
}

View File

@ -131,9 +131,80 @@ Ensure that the iASL compiler used for building *Dynamic Tables Framework* has t
This feature was made available in the *ACPICA Compiler update
[Version 20180508](https://www.acpica.org/node/156)*, dated 8 May 2018 (2018-05-08).
Running CI builds locally
-------------------------
The TianoCore EDKII project has introduced Core CI infrastructure using TianoCore EDKII Tools PIP modules:
- *[edk2-pytool-library](https://pypi.org/project/edk2-pytool-library)*
- *[edk2-pytool-extensions](https://pypi.org/project/edk2-pytool-extensions)*
The instructions to setup the CI environment are in *'edk2\\.pytool\\Readme.md'*
## Building DynamicTablesPkg with Pytools
1. [Optional] Create a Python Virtual Environment - generally once per workspace
```
python -m venv <name of virtual environment>
e.g. python -m venv edk2-ci
```
2. [Optional] Activate Virtual Environment - each time new shell/command window is opened
```
<name of virtual environment>/Scripts/activate
e.g. On a windows host PC run:
edk2-ci\Scripts\activate.bat
```
3. Install Pytools - generally once per virtual env or whenever pip-requirements.txt changes
```
pip install --upgrade -r pip-requirements.txt
```
4. Initialize & Update Submodules - only when submodules updated
```
stuart_setup -c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
e.g. stuart_setup -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5
```
5. Initialize & Update Dependencies - only as needed when ext_deps change
```
stuart_update -c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
e.g. stuart_update -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5
```
6. Compile the basetools if necessary - only when basetools C source files change
```
python BaseTools/Edk2ToolsBuild.py -t <ToolChainTag>
```
7. Compile DynamicTablesPkg
```
stuart_build-c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
e.g. stuart_ci_build -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5 -p DynamicTablesPkg -a AARCH64 --verbose
```
- use `stuart_build -c .pytool/CISettings.py -h` option to see help on additional options.
Documentation
-------------
Refer to the following presentation from *UEFI Plugfest Seattle 2018*:
[Dynamic Tables Framework: A Step Towards Automatic Generation of Advanced Configuration and Power Interface (ACPI) & System Management BIOS (SMBIOS) Tables](http://www.uefi.org/sites/default/files/resources/Arm_Dynamic%20Tables%20Framework%20A%20Step%20Towards%20Automatic%20Generation%20of%20Advanced%20Configuration%20and%20Power%20Interface%20%28ACPI%29%20%26%20System%20Management%20BIOS%20%28SMBIOS%29%20Tables%20_0.pdf)