From mboxrd@z Thu Jan 1 00:00:00 1970
Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182])
by mx.groups.io with SMTP id smtpd.web10.20067.1670430266245668301
for
+ Click to download Visual Studio 2022 Build Tools
+
+ Click to download Visual Studio 2019 Build Tools
+
+ Click to download Visual Studio 2017 Build Tools
+
+ Pre-requisites (Git, Python, Compiler)
+
+
+
+
git
to pull the edk2 source code onto your syste=
m, make changes in the code, and submit
+ your changes back to the GitHub repository.
+
+ Git Downlo=
ad Page
+ stuar=
t
, which is written in Python.
+
+ It is recommended you install a Python version that is equal to the ve=
rsion used in the
+ UsePythonVersion@0
step in this file
+ .azurepipelines/templat=
es/pr-gate-steps.yml.
+
+ That version is constantly tested against the code in the repository.
+
+ Python=
Download Page
+
+
Ubuntu GCC Installation Instructions
+ apt-get update && apt-get install -y build-essential git nas=
m wget m4 bison flex uuid-dev python unzip acpica-tools gcc-multilib
+
Visual Studio Installation Instructions (Windows)
+
+ Visual Studio 2022 Installation Instructions
+
+
+
+ vs_Bu=
ildTools.exe
file
+ (e.g. C:\Downloads
)
+
+
+ start /w vs_BuildTools.exe --quiet --wait --norestart --no=
cache --installPath C:\BuildTools ^
+ --add Microsoft.VisualStudio.Component.VC.CoreBuildTools -=
-add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
+ --add Microsoft.VisualStudio.Component.Windows11SDK.22000 =
--add Microsoft.VisualStudio.Component.VC.Tools.ARM ^
+ --add Microsoft.VisualStudio.Component.VC.Tools.ARM64
+
+
+ Visual Studio 2019 Installation Instructions
+
+
+
+ vs_Buil=
dTools.exe
file
+ (e.g. C:\Downloads
)
+
+
+ start /w vs_BuildTools.exe --quiet --wait --norestart --noca=
che --installPath C:\BuildTools ^
+ --add Microsoft.VisualStudio.Component.VC.CoreBuildTools --a=
dd Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
+ --add Microsoft.VisualStudio.Component.Windows10SDK.19041 --=
add Microsoft.VisualStudio.Component.VC.Tools.ARM ^
+ --add Microsoft.VisualStudio.Component.VC.Tools.ARM64
+
+
+ Visual Studio 2017 Installation Instructions
+
+
+
+ vs_BuildT=
ools.exe
file
+ (e.g. C:\Downloads
)
+
+
+ start /w vs_BuildTools.exe --quiet --wait --norestart --noca=
che --installPath C:\BuildTools ^
+ --add Microsoft.VisualStudio.Component.VC.CoreBuildTools --a=
dd Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
+ --add Microsoft.VisualStudio.Component.Windows10SDK.17763 --=
add Microsoft.VisualStudio.Component.VC.Tools.ARM ^
+ --add Microsoft.VisualStudio.Component.VC.Tools.ARM64
+
+
+
+
+
+ Download the Windows Software Development Kit (SDK) from + Windows Dev Center - Windows SDK +
++ Follow the default options until you reach the "Select t= he features you want to install" page. +
+ Select the following options: ++ Click Download and complete the installation pr= ocess. +
+python -m venv .venv
+ source .venv/bin/activate
+ py -m venv .venv
+ .venv\Scripts\activate.bat
+
+ The important parameter here is the -p
parameter which =
specifies that MdeModulePkg
+ should be built.
+
+ The example below uses: +
TOOL_CHAIN_TAG
parameter to specify the build s=
hould use VS2019
+ (Visual Studio 2019).
+ -a
parameter is used to specify that the =
IA32
and X64
architectures
+ should be built.
+ + OvmfPkg is considered a "platform firmware" for the + QEMU open-source= emulator. +
+stuart_build
instead of
+ stuart_ci_build
to compile the code
+
+ If you want to run CI checks such as CI plugins, you can use s=
tuart_ci_build
with the CI build file.
+
+ OvmfPkg is considered a "platform firmware" for the + QEMU open-source= emulator. +
+ +stuart_build
instead of
+ stuart_ci_build
+
+ To see what parameters are supported by this platform build file (at=
the time this page was written), we can pass
+ the --help
argument to the stuart_build
co=
mmand:
+
+ =E2=9D=AF stuart_build -c PlatformBuild.py --help + usage: stuart_build [-h] [--SKIPBUILD] [--SKIPPREBUILD] [--SKIPPOSTB= UILD] [--FLASHONLY] [--FLASHROM] + [--UPDATECONF] [--CLEAN] [--CLEANONLY] [--OUTPUT= CONFIG OUTPUTCONFIG] [-a BUILD_ARCH] + [--build-config BUILD_CONFIG] [--verbose] + + options: + -h, --help show this help message and exit + --SKIPBUILD, --skipbuild, --SkipBuild + Skip the build process + --SKIPPREBUILD, --skipprebuild, --SkipPrebuild + Skip prebuild process + --SKIPPOSTBUILD, --skippostbuild, --SkipPostBuild + Skip postbuild process + --FLASHONLY, --flashonly, --FlashOnly + Flash rom after build. + --FLASHROM, --flashrom, --FlashRom + Flash rom. Rom must be built previously. + --UPDATECONF, --updateconf, --UpdateConf + Update Conf. Builders Conf files will be rep= laced with latest template files + --CLEAN, --clean, --CLEAN + Clean. Remove all old build artifacts and in= termediate files + --CLEANONLY, --cleanonly, --CleanOnly + Clean Only. Do clean operation and don't bui= ld just exit. + --OUTPUTCONFIG OUTPUTCONFIG, --outputconfig OUTPUTCONFIG, --Output= Config OUTPUTCONFIG + Provide shell variables in a file + -a BUILD_ARCH, --arch BUILD_ARCH + Optional - CSV of architecture to build. IA3= 2 will use IA32 for Pei & Dxe. X64 will use + X64 for both PEI and DXE. IA32,X64 will use = IA32 for PEI and X64 for DXE. default is + IA32,X64 + --build-config BUILD_CONFIG + Provide shell variables in a file + --verbose, --VERBOSE, -v + verbose + + positional arguments: ++=3D - Set an env variable for the pre/pos= t build process + BLD_*_ =3D - Set a build flag for all build type= s + (key=3Dvalue will get passed to build = process) + BLD_ _ =3D - Set a build flag for build type of = + (key=3Dvalue will get passed to build = process for given build type) +
+ The --flashonly
and --flashrom
commands ar=
e especially useful with OvmfPkg. They
+ automatically load QEMU with the newly built firmware.
+
+ The example below uses: +
TOOL_CHAIN_TAG
parameter to specify that the bu=
ild should use GCC5
+ to build with GCC.
+ -a
parameter is used to specify the IA32<=
/code> and X64
architectures should be
+ built.
+
--flashrom
parameter is used to load the firmwa=
re in QEMU and boot QEMU after the firmware build
+ is completed.
+ + Example: + python BaseTools/Edk2ToolsBuild.py -t GCC5 +
+
+ The NO-TARGET
build target specifies that the actual fi=
rmware source code should not be built for any
+ particular target and, instead, the other parts of the CI process wi=
ll be active such as the non-compiler checks
+ (plugins).
+
+ In the following example, the CI plugins will be run against all pac= kages supported by the + CISettings.py file. +
+ stuart_ci_build -c .pytool/CISettings.py -t NO-TARGET +
+ The CI checks could be run against a single package (or a selection =
of packages) by passing the package names to
+ with the -p
parameter.
+
+ Plugins are automatically discovered in the workspace by stuart. +
++ The easiest way to have stuart only one run plugin if many others ar= e present (as is the case in edk2) is to simply + delete the other plugin directories so they are not discovered. You = can then test with the remaining plugins and + then use git to restore the deleted plugin directories back when don= e testing. +
+
+ For example, to only test with the SpellCheck
plugin, d=
elete every other plugin folder from
+ .pytool/Plugin in your
+ workspace.
+
+ Run the command to only perform CI checks:
+
+ stuart_ci_build -c .pytool/CISettings.py -t NO-TARGET
+
+ When done, restore the other plugin directories:
+
+ git restore .pytool/Plugin/**
+
+ Continuous integration is used in edk2 to test new contributions bef= ore they are merged to the edk2 main branch. + Stuart is used within the edk2 CI process to pull build dependencies= and build the code. +
++ You can use stuart to perform the same CI checks locally that are do= ne on the server (see the examples section). +
++ Also see EDK II Continuous = Integration. +
+A collection of build related tools for edk2.
++ Examples: + +
+ Each tool has a user manual located in Base= Tools/UserManuals. +
++ A more complete list of BaseTools is located in the EDK II Tools List. +
+A collection of Python code for working with edk2.
+
+ CISettings.py
is a common name given to a configuration=
file used with Stuart for CI. It is often
+ stored in a folder named .pytools
in the root of a repo=
sitory. So you'll likely encounter commands
+ like the following be used with the file:
+
+ PlatformBuild.py
is a common name given to a configurat=
ion file used with Stuart for platform build.
+ It is often stored in the root directory of the package it builds.
+
+ For example: +
++ Like Stuart CI has "CI plugins", the build process has "build plugin= s". These can hook into the build in + "pre-build" or "post-build". +
++ Note: Build plugins will also run during CI if a CompilerPlugin is p= resent that builds the code. ++
stuart_ci_build
and stuart_ci_build
- Runs CI plugins. By default, often =
runs CI on several packages at once. This
+ includes all of the checks needed to consider the code ready for i=
ntegration to the mainline.
+ stuart_build
- Does not run CI plugins. Builds one pl=
atform. Platforms often expose
+ platform-specific parameters as defined in their PlatformBui=
ld.py
file.
+ stuart_ci=
_build
do exactly?+ The Stuart CI process is composed of "CI plugins" that get discovere= d in the code tree at CI time and hook into + the CI process. Some examples of CI plugins are a host-based unit te= st compile and execution, spell checking the + code, performing markdown lint on the code, etc. Firmware (C code) c= ompilation is performed during CI by a compiler + CI plugin. +
+
+ Each plugin reports back a pass/fail status. If any plugin fails, CI=
fails. However, plugins usually provide some
+ level of customization in a "CI package configuration file". If this=
file is present, it is in the root of the
+ package with the naming convention PkgName.ci.yaml
. For=
example,
+ MdePkg.ci.yaml is
+ the CI package configuration file for MdePkg
. Sometimes=
, CI plugins will allow the plugin to be set to
+ run in "audit mode" so the plugin will run and report results but no=
t fail CI if errors are found. As an example,
+ some packages in edk2 currently use this file to run the spell check=
er CI plugin in audit mode.
+
+ The two main places to look for CI settings are: +
+ You can pass the -v
argument to Stuart commands to get =
more detailed output.
+
+ Also, look in your /Build
directory.
+
+ Each Stuart command produces a separate file. Open the file correspo= nding to the command you're using that has the + failure. +
+stuart_ci_setup
- CISETUP.txt
stuart_setup
- SETUPLOG.txt
stuart_update
- UPDATE_LOG.txt
stuart_ci_build
- CI_BUILDLOG.txt
stuart_build
- BUILDLOG_PACKAGENAME.txt
+ The different types of plugins supported by Stuart and details about= each type are available in the + edk2-pytoo= l-extensions Plugin Manager + page. +
++ Start in the + edk2-pytool-extensions User = Documentation. +
+