- 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