def DoGetFiles(config: Config, toolMiniConfig: ToolMinimalConfig, currentDir: str, allowRecursiveScan: bool = False) -> List[str]: """ :param currentDir: currentDir must be part of a package root :param allowRecursiveScan: if True and not a sdk build all subdirectories will be scanned """ if allowRecursiveScan and config.IsSDKBuild: config.DoPrintWarning("recursive is ignored for sdk builds") if ToolConfigPackageRootUtil.TryFindRootDirectory( toolMiniConfig.RootDirectories, currentDir) is None: raise UsageErrorException( "the folder '{0}' does not reside inside one of the root dirs". format(currentDir)) theFiles = [] # type: List[str] if not config.IsSDKBuild: if allowRecursiveScan: theFiles += IOUtil.FindFileByName(currentDir, config.GenFileName, toolMiniConfig.IgnoreDirectories) else: theFile = IOUtil.Join(currentDir, config.GenFileName) if not os.path.isfile(theFile): raise Exception("File not found: '{0}'".format(theFile)) theFiles.append(theFile) return theFiles
def __ResolveAndGenerate(config: Config, errorHelpManager: ErrorHelpManager, platformGeneratorPlugin: GeneratorPlugin, packageLoader: PackageLoader, packageFilters: PackageFilters, isSDKBuild: bool, writeGraph: bool) -> List[Package]: generatorContext = GeneratorContext(config, errorHelpManager, packageFilters.RecipeFilterManager, config.ToolConfig.Experimental, platformGeneratorPlugin) process = PackageLoadAndResolveProcess(config, packageLoader, platformGeneratorPlugin, writeGraph=writeGraph) process.Resolve(generatorContext, packageFilters) if not isSDKBuild: for package in process.Packages: if not package.ResolvedPlatformSupported and package.Type != PackageType.TopLevel: notSupported = LocalUtil.BuildListOfDirectlyNotSupported( package) notSupportedNames = Util.ExtractNames(notSupported) config.DoPrintWarning( "{0} was marked as not supported on this platform by package: {1}" .format(package.Name, notSupportedNames)) return platformGeneratorPlugin.Generate(generatorContext, config, process.Packages)
def __DoResolveAllPackageDependencies(self, config: Config, package: Package) -> None: # FIX: we are doing some of the same checks twice here addedDict = {} # type: Dict[str, PackageDependency] # First we resolve all direct dependencies for dep in package.ResolvedDirectDependencies: if not dep.Name in addedDict: package.ResolvedAllDependencies.append(dep) addedDict[dep.Name] = dep else: # The package was already added so we need to check if this dependency is less restrictive than the old one oldDep = addedDict[dep.Name] if dep.Access < oldDep.Access: package.ResolvedAllDependencies.remove(oldDep) addedDict[dep.Name] = dep # Then we pull in the childrens dependencies resolvedDirectDependencies = list(package.ResolvedDirectDependencies) for directDep in resolvedDirectDependencies: for dep in directDep.Package.ResolvedAllDependencies: # ensure that anything we get via a non public access type keeps gets a access type that is >= directDep.Access if dep.Access < directDep.Access or dep.Access == AccessType.Private: #dep = PackageDependency(dep.Package, directDep.Access) dep = PackageDependency(dep.Package, AccessType.Link) if not dep.Name in addedDict: package.ResolvedAllDependencies.append(dep) addedDict[dep.Name] = dep else: # The package was already added so we need to check if this dependency is less restrictive than the old one oldDep = addedDict[dep.Name] if dep.Access < oldDep.Access: package.ResolvedAllDependencies.remove(oldDep) package.ResolvedAllDependencies.append(dep) addedDict[dep.Name] = dep foundDep = self.__TryFindDep( package.ResolvedDirectDependencies, dep) if foundDep is not None: config.DoPrintWarning( "Requested dependency access to '{0}', overwritten by dependency from '{1}'" .format(dep.Name, directDep.Name)) package.ResolvedDirectDependencies.remove(foundDep) package.ResolvedDirectDependencies.append(dep) package.ResolvedDirectDependencies.sort(key=lambda s: s.Name.lower()) package.ResolvedAllDependencies.sort(key=lambda s: s.Name.lower())