def __CreateToolAppConfig(args: Any, defaultPlatform: str, toolCommonArgConfig: ToolCommonArgConfig, defaultVSVersion: int) -> ToolAppConfig: # Configure the ToolAppConfig part toolAppConfig = ToolAppConfig() toolAppConfig.DefaultPlatformName = defaultPlatform toolAppConfig.AllowDevelopmentPlugins = True if args.dev else False if toolCommonArgConfig.AddPlatformArg: toolAppConfig.PlatformName = args.platform else: toolAppConfig.PlatformName = defaultPlatform if toolCommonArgConfig.ProcessRemainingArgs: toolAppConfig.RemainingArgs = args.RemainingArgs if toolCommonArgConfig.AllowForceClaimInstallArea: toolAppConfig.ForceClaimInstallArea = args.ForceClaimInstallArea toolAppConfig.VSVersion = int(args.VSVersion) #if toolCommonArgConfig.AllowVSVersion else defaultVSVersion if toolCommonArgConfig.AddBuildFiltering or toolCommonArgConfig.AddUseFeatures: toolAppConfig.BuildPackageFilters.FeatureNameList = ParseUtil.ParseFeatureList(args.UseFeatures) if toolCommonArgConfig.AddBuildFiltering: toolAppConfig.BuildPackageFilters.RequiredFeatureNameList = ParseUtil.ParseFeatureList(args.RequireFeatures) toolAppConfig.BuildPackageFilters.ExtensionNameList = ParseUtil.ParseExtensionList(args.UseExtensions) if toolCommonArgConfig.AddBuildVariants: toolAppConfig.BuildVariantsDict = ParseUtil.ParseVariantDict(args.Variants) if toolCommonArgConfig.AddBuildThreads: toolAppConfig.BuildThreads = BuildThreads.FromString(args.BuildThreads) if toolCommonArgConfig.AllowRecursive: toolAppConfig.Recursive = args.recursive return toolAppConfig
def __CreateToolAppConfig(args: Any, defaultPlatform: str, toolCommonArgConfig: ToolCommonArgConfig, defaultVSVersion: int) -> ToolAppConfig: # Configure the ToolAppConfig part toolAppConfig = ToolAppConfig() toolAppConfig.DefaultPlatformName = defaultPlatform toolAppConfig.AllowDevelopmentPlugins = True if args.dev else False if toolCommonArgConfig.AddPlatformArg: toolAppConfig.PlatformName = args.platform else: toolAppConfig.PlatformName = defaultPlatform if toolCommonArgConfig.ProcessRemainingArgs: toolAppConfig.RemainingArgs = args.RemainingArgs if toolCommonArgConfig.AllowForceClaimInstallArea: toolAppConfig.ForceClaimInstallArea = args.ForceClaimInstallArea toolAppConfig.VSVersion = int(args.VSVersion) if hasattr( args, 'VSVersion') else defaultVSVersion if toolCommonArgConfig.AddBuildFiltering or toolCommonArgConfig.AddUseFeatures: toolAppConfig.BuildPackageFilters.FeatureNameList = ParseUtil.ParseFeatureList( args.UseFeatures) if toolCommonArgConfig.AddBuildFiltering: toolAppConfig.BuildPackageFilters.RequiredFeatureNameList = ParseUtil.ParseFeatureList( args.RequireFeatures) toolAppConfig.BuildPackageFilters.ExtensionNameList = ParseUtil.ParseExtensionList( args.UseExtensions) toolAppConfig.BuildPackageFilters.RecipeFilterManager = ParseUtil.ParseRecipeList( args.Recipes) if toolCommonArgConfig.AddBuildVariants: toolAppConfig.BuildVariantsDict = ParseUtil.ParseVariantDict( args.Variants) if toolCommonArgConfig.AddBuildThreads: toolAppConfig.BuildThreads = BuildThreads.FromString(args.BuildThreads) if toolCommonArgConfig.AllowRecursive: toolAppConfig.Recursive = args.recursive if hasattr(args, 'Generator'): # Convert to the internal value instead of string toolAppConfig.Generator = GeneratorType.FromString(args.Generator) # Handle the CMake parameters if hasattr(args, 'CMakeBuildDir'): toolAppConfig.CMakeBuildDir = None if args.CMakeBuildDir is None else IOUtil.NormalizePath( args.CMakeBuildDir) if hasattr(args, 'CMakeInstallPrefix'): toolAppConfig.CMakeInstallPrefix = None if args.CMakeInstallPrefix is None else IOUtil.NormalizePath( args.CMakeInstallPrefix) if hasattr(args, 'CMakeGeneratorName'): toolAppConfig.CMakeGeneratorName = args.CMakeGeneratorName return toolAppConfig
def ProcessFromCommandLine(self, args: Any, currentDirPath: str, toolConfig: ToolConfig, userTag: Optional[object]) -> None: # Process the input arguments here, before calling the real work function parsedPackageType = ParseUtil.ParsePackageTypeList(args.PackageType) localToolConfig = LocalToolConfig(parsedPackageType) # Configure the ToolAppConfig part localToolConfig.SetToolAppConfigValues( self.ToolAppContext.ToolAppConfig) # Configure the local part localToolConfig.IgnoreNotSupported = args.IgnoreNotSupported localToolConfig.ListBuildVariants = args.ListBuildVariants localToolConfig.ListExtensions = args.ListExtensions localToolConfig.ListFeatures = args.ListFeatures localToolConfig.ListRecipes = args.ListRecipes localToolConfig.ListRequirements = args.ListRequirements localToolConfig.ListVariants = args.ListVariants localToolConfig.PackageConfigurationType = args.type localToolConfig.SaveJson = args.SaveJson localToolConfig.IncludeGeneratorReport = args.IncludeGeneratorReport self.Process(currentDirPath, toolConfig, localToolConfig)
def ProcessFromCommandLine(self, args: Any, currentDirPath: str, toolConfig: ToolConfig, userTag: Optional[object]) -> None: # Process the inpurt arguments here, before calling the real work function localToolConfig = LocalToolConfig() # Configure the ToolAppConfig part localToolConfig.SetToolAppConfigValues( self.ToolAppContext.ToolAppConfig) # Configure the local part localToolConfig.DryRun = args.DryRun localToolConfig.EnableContentBuilder = ParseUtil.ParseBool( args.ContentBuilder) localToolConfig.ForAllExe = args.ForAllExe localToolConfig.GenType = args.GenType localToolConfig.IgnoreNotSupported = args.IgnoreNotSupported localToolConfig.ListExtensions = args.ListExtensions localToolConfig.ListFeatures = args.ListFeatures localToolConfig.ListRequirements = args.ListRequirements localToolConfig.ListVariants = args.ListVariants localToolConfig.PackageConfigurationType = args.type localToolConfig.Command = CommandType.FromString(args.Command) self.Process(currentDirPath, toolConfig, localToolConfig)
def Process(self, currentDirPath: str, toolConfig: ToolConfig, localToolConfig: LocalToolConfig) -> None: # Check if a environment variable has been set to disable this tool # This is for example done by FslBuild to prevent multiple executions of content building. toolEnabled = IOUtil.TryGetEnvironmentVariable(CONFIG_FSLBUILDCONTENT_ENABLED) featureList = localToolConfig.BuildPackageFilters.FeatureNameList config = Config(self.Log, toolConfig, localToolConfig.PackageConfigurationType, localToolConfig.BuildVariantsDict, localToolConfig.AllowDevelopmentPlugins) # Get the platform and see if its supported buildVariantConfig = BuildVariantConfigUtil.GetBuildVariantConfig(localToolConfig.BuildVariantsDict) generator = self.ToolAppContext.PluginConfigContext.GetGeneratorPluginById(localToolConfig.PlatformName, localToolConfig.Generator, buildVariantConfig, False, config.ToolConfig.CMakeConfiguration, localToolConfig.GetUserCMakeConfig()) PlatformUtil.CheckBuildPlatform(generator.PlatformName) generatorContext = GeneratorContext(config, self.ErrorHelpManager, localToolConfig.BuildPackageFilters.RecipeFilterManager, config.ToolConfig.Experimental, generator) config.LogPrint("Active platform: {0}".format(generator.PlatformName)) discoverFeatureList = '*' in featureList topLevelPackage = None if discoverFeatureList or localToolConfig.Project is None: if discoverFeatureList: config.LogPrint("No features specified, so using package to determine them") topLevelPackage = self.__ResolveAndGetTopLevelPackage(generatorContext, config, currentDirPath, toolConfig.GetMinimalConfig(), localToolConfig.Recursive) if discoverFeatureList: featureList = [entry.Name for entry in topLevelPackage.ResolvedAllUsedFeatures] #if localToolConfig.Project is None: # executeablePackage = PackageListUtil.FindFirstExecutablePackage(packages) # localToolConfig.Project = executeablePackage.ShortName if localToolConfig.Validate: Validate.ValidatePlatform(config, localToolConfig.PlatformName, featureList) if topLevelPackage is None: topLevelPackage = self.__ResolveAndGetTopLevelPackage(generatorContext, config, currentDirPath, toolConfig.GetMinimalConfig(), localToolConfig.Recursive) RecipeBuilder.ValidateInstallationForPackages(config, generatorContext, topLevelPackage.ResolvedBuildOrder) if toolEnabled is not None and not ParseUtil.ParseBool(toolEnabled): if self.Log.Verbosity > 0: print("FslBuildContent has been disabled by environment variable {0} set to {1}".format(CONFIG_FSLBUILDCONTENT_ENABLED, toolEnabled)) return locations = toolConfig.PackageConfiguration[localToolConfig.PackageConfigurationType].Locations if not localToolConfig.Recursive or topLevelPackage is None: location = self.__TryFindLocation(locations, currentDirPath) if location is None: raise Exception("Could not locate location for {0}".format(currentDirPath)) packagePath = PackagePath(currentDirPath, location) ContentBuilder.Build(config, packagePath, featureList, localToolConfig.Output) else: # Location not found, but its ok since '-r' was specified and we have a top level package for foundPackage in topLevelPackage.ResolvedBuildOrder: if foundPackage.Type == PackageType.Executable: foundFeatureList = [entry.Name for entry in foundPackage.ResolvedAllUsedFeatures] if foundPackage.Path is None: raise Exception("Invalid package") ContentBuilder.Build(config, foundPackage.Path, foundFeatureList)
def ProcessFromCommandLine(self, args: Any, currentDirPath: str, toolConfig: ToolConfig, userTag: Optional[object]) -> None: # Process the input arguments here, before calling the real work function localToolConfig = LocalToolConfig() envList = None # type: Optional[List[str]] if args.Env is not None: envList = ParseUtil.ParseList(args.Env, "environment variable list", False) localToolConfig.Env = envList localToolConfig.AllowNotFound = args.AllowNotFound localToolConfig.Enclose = args.Enclose self.Process(currentDirPath, toolConfig, localToolConfig)
def Process(self, currentDirPath: str, toolConfig: ToolConfig, localToolConfig: LocalToolConfig) -> None: # Check if a environment variable has been set to disable this tool # This is for example done by FslBuild to prevent multiple executions of content building. toolEnabled = IOUtil.TryGetEnvironmentVariable( CONFIG_FSLBUILDCONTENT_ENABLED) featureList = localToolConfig.BuildPackageFilters.FeatureNameList config = Config(self.Log, toolConfig, localToolConfig.PackageConfigurationType, localToolConfig.BuildVariantsDict, localToolConfig.AllowDevelopmentPlugins) # Get the platform and see if its supported platform = PluginConfig.GetGeneratorPluginById( localToolConfig.PlatformName, False) PlatformUtil.CheckBuildPlatform(platform.Name) generatorContext = GeneratorContext(config, config.ToolConfig.Experimental, platform) config.LogPrint("Active platform: {0}".format(platform.Name)) discoverFeatureList = '*' in featureList topLevelPackage = None if discoverFeatureList or localToolConfig.Project is None: if discoverFeatureList: config.LogPrint( "No features specified, so using package to determine them" ) topLevelPackage = self.__ResolveAndGetTopLevelPackage( generatorContext, config, currentDirPath, toolConfig.GetMinimalConfig(), localToolConfig.Recursive) if discoverFeatureList: featureList = [ entry.Name for entry in topLevelPackage.ResolvedAllUsedFeatures ] #if localToolConfig.Project is None: # executeablePackage = PackageListUtil.FindFirstExecutablePackage(packages) # localToolConfig.Project = executeablePackage.ShortName if localToolConfig.Validate: Validate.ValidatePlatform(config, localToolConfig.PlatformName, featureList) if topLevelPackage is None: topLevelPackage = self.__ResolveAndGetTopLevelPackage( generatorContext, config, currentDirPath, toolConfig.GetMinimalConfig(), localToolConfig.Recursive) RecipeBuilder.ValidateInstallationForPackages( config, generatorContext, topLevelPackage.ResolvedBuildOrder) if toolEnabled is not None and not ParseUtil.ParseBool(toolEnabled): if self.Log.Verbosity > 0: print( "FslBuildContent has been disabled by environment variable %s set to %s" % (CONFIG_FSLBUILDCONTENT_ENABLED, toolEnabled)) return ContentBuilder.Build(config, currentDirPath, featureList)
def GetDefaultLocalConfig() -> LocalToolConfig: parsedPackageType = ParseUtil.ParsePackageTypeList( DefaultValue.PackageTypeList) return LocalToolConfig(parsedPackageType)