# @file\r
#\r
# Copyright (c) Microsoft Corporation.\r
+# Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+# Copyright (c) 2020 - 2021, ARM Limited. All rights reserved.<BR>\r
# SPDX-License-Identifier: BSD-2-Clause-Patent\r
##\r
import os\r
self.ActualTargets = []\r
self.ActualArchitectures = []\r
self.ActualToolChainTag = ""\r
+ self.UseBuiltInBaseTools = None\r
+ self.ActualScopes = None\r
\r
# ####################################################################################### #\r
# Extra CmdLine configuration #\r
# ####################################################################################### #\r
\r
def AddCommandLineOptions(self, parserObj):\r
- pass\r
+ group = parserObj.add_mutually_exclusive_group()\r
+ group.add_argument("-force_piptools", "--fpt", dest="force_piptools", action="store_true", default=False, help="Force the system to use pip tools")\r
+ group.add_argument("-no_piptools", "--npt", dest="no_piptools", action="store_true", default=False, help="Force the system to not use pip tools")\r
\r
def RetrieveCommandLineOptions(self, args):\r
- pass\r
+ super().RetrieveCommandLineOptions(args)\r
+ if args.force_piptools:\r
+ self.UseBuiltInBaseTools = True\r
+ if args.no_piptools:\r
+ self.UseBuiltInBaseTools = False\r
\r
# ####################################################################################### #\r
# Default Support for this Ci Build #\r
''' return iterable of edk2 packages supported by this build.\r
These should be edk2 workspace relative paths '''\r
\r
- return ("ArmVirtPkg",\r
+ return ("ArmPkg",\r
+ "ArmPlatformPkg",\r
+ "ArmVirtPkg",\r
+ "DynamicTablesPkg",\r
+ "EmbeddedPkg",\r
"EmulatorPkg",\r
+ "IntelFsp2Pkg",\r
"MdePkg",\r
"MdeModulePkg",\r
"NetworkPkg",\r
"UefiCpuPkg",\r
"FmpDevicePkg",\r
"ShellPkg",\r
+ "StandaloneMmPkg",\r
"FatPkg",\r
"CryptoPkg",\r
+ "PrmPkg",\r
"UnitTestFrameworkPkg",\r
- "OvmfPkg"\r
+ "OvmfPkg",\r
+ "RedfishPkg",\r
+ "UefiPayloadPkg"\r
)\r
\r
def GetArchitecturesSupported(self):\r
''' return iterable of edk2 architectures supported by this build '''\r
- return ("IA32",\r
+ return (\r
+ "IA32",\r
"X64",\r
"ARM",\r
- "AARCH64")\r
+ "AARCH64",\r
+ "RISCV64")\r
\r
def GetTargetsSupported(self):\r
''' return iterable of edk2 target tags supported by this build '''\r
\r
def GetActiveScopes(self):\r
''' return tuple containing scopes that should be active for this process '''\r
- scopes = ("cibuild", "edk2-build", "host-based-test")\r
-\r
- self.ActualToolChainTag = shell_environment.GetBuildVars().GetValue("TOOL_CHAIN_TAG", "")\r
-\r
- if GetHostInfo().os.upper() == "WINDOWS":\r
- scopes += ('host-test-win',)\r
-\r
- if GetHostInfo().os.upper() == "LINUX" and self.ActualToolChainTag.upper().startswith("GCC"):\r
- if "AARCH64" in self.ActualArchitectures:\r
- scopes += ("gcc_aarch64_linux",)\r
- if "ARM" in self.ActualArchitectures:\r
- scopes += ("gcc_arm_linux",)\r
-\r
- return scopes\r
+ if self.ActualScopes is None:\r
+ scopes = ("cibuild", "edk2-build", "host-based-test")\r
+\r
+ self.ActualToolChainTag = shell_environment.GetBuildVars().GetValue("TOOL_CHAIN_TAG", "")\r
+\r
+ is_linux = GetHostInfo().os.upper() == "LINUX"\r
+\r
+ if self.UseBuiltInBaseTools is None:\r
+ is_linux = GetHostInfo().os.upper() == "LINUX"\r
+ # try and import the pip module for basetools\r
+ try:\r
+ import edk2basetools\r
+ self.UseBuiltInBaseTools = True\r
+ except ImportError:\r
+ self.UseBuiltInBaseTools = False\r
+ pass\r
+\r
+ if self.UseBuiltInBaseTools == True:\r
+ scopes += ('pipbuild-unix',) if is_linux else ('pipbuild-win',)\r
+ logging.warning("Using Pip Tools based BaseTools")\r
+ else:\r
+ logging.warning("Falling back to using in-tree BaseTools")\r
+\r
+ if is_linux and self.ActualToolChainTag.upper().startswith("GCC"):\r
+ if "AARCH64" in self.ActualArchitectures:\r
+ scopes += ("gcc_aarch64_linux",)\r
+ if "ARM" in self.ActualArchitectures:\r
+ scopes += ("gcc_arm_linux",)\r
+ if "RISCV64" in self.ActualArchitectures:\r
+ scopes += ("gcc_riscv64_unknown",)\r
+ self.ActualScopes = scopes\r
+ return self.ActualScopes\r
\r
def GetRequiredSubmodules(self):\r
''' return iterable containing RequiredSubmodule objects.\r
"MdeModulePkg/Library/BrotliCustomDecompressLib/brotli", False))\r
rs.append(RequiredSubmodule(\r
"BaseTools/Source/C/BrotliCompress/brotli", False))\r
+ rs.append(RequiredSubmodule(\r
+ "RedfishPkg/Library/JsonLib/jansson", False))\r
return rs\r
\r
def GetName(self):\r