Uncrustify release
https://github.com/tianocore/uncrustify/releases/tag/73.0.11
The only functional change in this release from 73.0.10 is to
reduce file parsing messages during execution:
```
uncrustify prints each file it is parsing at system error level,
which is by default printed. For MdeModulePkg along, this creates
1,000 lines of logs, just saying which file is being parsed.
This is noise in the log, so this commit downgrades the print to
user information, which is not printed by default.
```
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Tianocore uses a customized version of Uncrustify that previously
resided in https://dev.azure.com/projectmu/_git/Uncrustify.
An official fork in the Tianocore organization has been created
here https://github.com/tianocore/uncrustify.
The Tianocore fork publishes its releases to a GitHub release in
the repo. This is the first release from that repo:
https://github.com/tianocore/uncrustify/releases/tag/73.0.10
An advantage of this process is that the binaries for the release
are simply attached on the release page in a zip file.
For example, this is the zip file for that release:
https://github.com/tianocore/uncrustify/releases/download/73.0.10/uncrustify-release.zip
This eases consumption of the release, especially on non-Windows
hosts versus the previous distribution method with NuGet.
This change updates the external dependency in edk2 to consume the
binary from this zip file in the release of the Tianocore repo
instead of the previous NuGet feed in the Azure repo.
Note: The goal is to eliminate the Tianocore fork of Uncrustify, the
details for that are outside the scope of this commit.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
The EccCheck plugin currently fails if a file contains characters
outside the platform-dependent encoding returned from
locale.getencoding().
This change updates the encoding to utf-8 so the plugin is more
robust while continuing to support backward compatibility with the
ASCII range.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
The LicenseCheck plugin currently fails if a file contains characters
outside the platform-dependent encoding returned from
locale.getencoding().
This change updates the encoding to utf-8 so the plugin is more
robust while continuing to support backward compatibility with the
ASCII range.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
This PR updates the CI pipelines to use VS2022 instead of VS2019
as that is the latest supported VS toolchain on edk2.
Continuous-integration-options: PatchCheck.ignore-multi-package
Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
To simplify automatic formatting of new code, this feature lets a
local developer specify the `UNCRUSTIFY_IN_PLACE=TRUE` parameter on
the command line to automatically format files.
This is particularly useful when a large amount of new code needs
to be formatted in batch.
See the readme for more details.
Co-authored-by: Michael Kubacki <michael.kubacki@microsoft.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Shows code formatting errors directly in build output. Previously
only the filenames were in build output and the user had to look
at the test result file either locally or in CI to find details.
It is still recommended that users configure their local environment
to run Uncrustify so it can automatically fix problems as opposed
to manually correcting code based on the output shown in the
terminal. In any case, it is easier to see what is expected now.
Uncrustify reference material:
https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Code-Formattinghttps://github.com/tianocore/edk2/tree/master/.pytool/Plugin/UncrustifyCheck#readme
Some logging levels are also updated to refocus log output by current
message importance and relevance.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
The code changes in the patch is for trimming the leading path
to the modified directory in the .pytool/EccCheck script.
This is necessary when running Ecc on other repositories,
such as edk2-platforms, where the platform package is located
in a subfolder, like Platform/AMD/AmdPlatformPkg.
The EccCheck script checks for modified directories and expects them to start with the package name.
#
# Skip directory names that do not start with the package being scanned.
#
if file_dir.split('/')[0] != pkg:
continue
However, if the package name is in a subfolder,
the "git diff" command gives a relative path,
like Platform/AMD, which causes the condition to be false.
"M Platform/AMD/AmdPlatformPkg/Universal/LogoDxe/Logo.c"
As a result, EccCheck does not happen on modified files.
To fix this issue, the leading path needs to be trimmed
so that it starts from the directory name.
This change will not affect the existing check for the edk2 repository,
where all package names are at the first level directory.
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Joey Vagedes <joey.vagedes@gmail.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
BaseTools was moved out to a separate repo and consumed as a pip
module by edk2 CI. This process has not led to the desired goals
of doing so, so this patch removes the pip based BaseTools from
edk2 CI.
The original goal of moving BaseTools to a pip module was
primarily to speed up the development process, as the old edk2
mailing list was slow. However, with edk2 moving to PRs, it now
actually slows the BaseTools development process to have to do
a PR in another repo, publish the module, and then make a PR
in edk2 to consume the new BaseTools. It also holds up using
the features in a new BaseTools in other PRs.
There were other goals of moving, such as allowing projects to
use the BaseTools outside of edk2. This can still be accomplished
outside of this PR, this PR simply stops edk2 CI from using the
pip module.
Continuous-integration-options: PatchCheck.ignore-multi-package
Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
"MPIDR" is the Multiprocessor Affinity Register on Arm systems.
Add it the list of known words so that cspell doesn't flag it as a
misspelling.
Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Improves the CI output with more actionable messages and downgrades
some errors/warnings.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Allows ignore lines in the CI YAML file to use git ignore syntax.
This is especially useful for ignore files recursively in directories
like those that may exist in an external dependency folder.
Co-authored-by: Michael Kubacki <michael.kubacki@microsoft.com>
Signed-off-by: Joey Vagedes <joey.vagedes@gmail.com>
Pass build variables (those passed to build.py through -D) to the DSC
parser to provide a more accurate parsing of the DSC file.
Signed-off-by: Joey Vagedes <joey.vagedes@gmail.com>
Since a large number of CodeQL queries are being enabled to identify
issues that the community can collectively resolve, audit mode needs to
be enabled to prevent the build from failing.
In the future, this global audit mode can be disabled and individual
packages can enable/disable audit mode in their package CI YAML file
using the instructions in the CodeQL plugin readme.
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Sean Brogan <sean.brogan@microsoft.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
All ext_dep.yml files for gcc have been removed and gcc is expected to
be installed on the system (GCC5_*_PREFIX may indicate the location).
No need to adjust the toolchain scopes for Linux builds anymore.
Signed-off-by: Oliver Steffen <osteffen@redhat.com>
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Chris Fernald <chfernal@microsoft.com>
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
Currently UncrustifyCheck.py provides the following exclusion
options:
1. Override the type of files UncrustifyCheck operates against by
default (.c and .h files). Using the "IgnoreStandardPaths"
configuration option.
2. By default, UncrustifyCheck skips files in git submodules and
ignored by git (the "SkipGitExclusions" configuration option can
override this behavior).
The goal of UncrustifyCheck is to provide consistent formatting
across the codebase. In some rare circumstances, maintainers might
need to exclude a specific file (or file pattern) within their
package. For example, a small set of auto-generated files from
another repository.
This change adds a new configuration option that can be specified
in a package CI YAML file to describe a list of files within the
package that should be ignored by UncrustifyCheck.
The configuration option is called "IgnoreFiles" and it uses similar
syntax to git ignore to ignore a list of files.
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Sean Brogan <sean.brogan@microsoft.com>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>