]> git.proxmox.com Git - mirror_edk2.git/blobdiff - .pytool/CISettings.py
IntelFsp2Pkg: Add CI YAML file
[mirror_edk2.git] / .pytool / CISettings.py
index 077d65473209aca414199c94b3e9bc830adde6f2..dc3506769ffe5915a58e65d345585d97b111de66 100644 (file)
@@ -1,6 +1,8 @@
 # @file\r
 #\r
 # Copyright (c) Microsoft Corporation.\r
 # @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
 # SPDX-License-Identifier: BSD-2-Clause-Patent\r
 ##\r
 import os\r
@@ -20,16 +22,24 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
         self.ActualTargets = []\r
         self.ActualArchitectures = []\r
         self.ActualToolChainTag = ""\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
 \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
 \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
 \r
     # ####################################################################################### #\r
     #                        Default Support for this Ci Build                                #\r
@@ -39,7 +49,14 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
         ''' return iterable of edk2 packages supported by this build.\r
         These should be edk2 workspace relative paths '''\r
 \r
         ''' return iterable of edk2 packages supported by this build.\r
         These should be edk2 workspace relative paths '''\r
 \r
-        return ("MdePkg",\r
+        return ("ArmPkg",\r
+                "ArmPlatformPkg",\r
+                "ArmVirtPkg",\r
+                "DynamicTablesPkg",\r
+                "EmbeddedPkg",\r
+                "EmulatorPkg",\r
+                "IntelFsp2Pkg",\r
+                "MdePkg",\r
                 "MdeModulePkg",\r
                 "NetworkPkg",\r
                 "PcAtChipsetPkg",\r
                 "MdeModulePkg",\r
                 "NetworkPkg",\r
                 "PcAtChipsetPkg",\r
@@ -47,17 +64,24 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
                 "UefiCpuPkg",\r
                 "FmpDevicePkg",\r
                 "ShellPkg",\r
                 "UefiCpuPkg",\r
                 "FmpDevicePkg",\r
                 "ShellPkg",\r
+                "StandaloneMmPkg",\r
                 "FatPkg",\r
                 "CryptoPkg",\r
                 "FatPkg",\r
                 "CryptoPkg",\r
-                "UnitTestFrameworkPkg"\r
+                "PrmPkg",\r
+                "UnitTestFrameworkPkg",\r
+                "OvmfPkg",\r
+                "RedfishPkg",\r
+                "UefiPayloadPkg"\r
                 )\r
 \r
     def GetArchitecturesSupported(self):\r
         ''' return iterable of edk2 architectures supported by this build '''\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
                 "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 GetTargetsSupported(self):\r
         ''' return iterable of edk2 target tags supported by this build '''\r
@@ -118,20 +142,38 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
 \r
     def GetActiveScopes(self):\r
         ''' return tuple containing scopes that should be active for this process '''\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
 \r
     def GetRequiredSubmodules(self):\r
         ''' return iterable containing RequiredSubmodule objects.\r
@@ -148,6 +190,10 @@ class Settings(CiBuildSettingsManager, UpdateSettingsManager, SetupSettingsManag
             "MdeModulePkg/Universal/RegularExpressionDxe/oniguruma", False))\r
         rs.append(RequiredSubmodule(\r
             "MdeModulePkg/Library/BrotliCustomDecompressLib/brotli", False))\r
             "MdeModulePkg/Universal/RegularExpressionDxe/oniguruma", False))\r
         rs.append(RequiredSubmodule(\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
         return rs\r
 \r
     def GetName(self):\r