def processEasyconfig(path, log, onlyBlocks=None, regtest_online=False): """ Process easyconfig, returning some information for each block """ blocks = retrieveBlocksInSpec(path, log, onlyBlocks) packages = [] for spec in blocks: ## Process for dependencies and real installversionname ## - use mod? __init__ and importCfg are ignored. log.debug("Processing easyconfig %s" % spec) try: eb = EasyBlock(spec) except EasyBuildError, err: msg = "Failed to process easyconfig %s:\n%s" % (spec, err.msg) log.exception(msg) name = eb["name"] ## this app will appear as following module in the list package = {"spec": spec, "module": (eb.name(), eb.installversion()), "dependencies": []} if len(blocks) > 1: package["originalSpec"] = path for d in eb.dependencies(): dep = (d["name"], d["tk"]) log.debug("Adding dependency %s for app %s." % (dep, name)) package["dependencies"].append(dep) if eb.toolkit_name() != "dummy": dep = (eb.toolkit_name(), eb.toolkit_version()) log.debug("Adding toolkit %s as dependency for app %s." % (dep, name)) package["dependencies"].append(dep) del eb # this is used by the parallel builder package["unresolvedDependencies"] = copy.copy(package["dependencies"]) # ensure the pathname is equal to the module base_name, ext = os.path.splitext(os.path.basename(spec)) module_name = "-".join(package["module"]) if base_name.lower() != module_name.lower(): log.error("easyconfig file: %s does not contain module %s" % (spec, module_name)) packages.append(package)
def runTest(self): """ test other validations beside mandatory variables """ eb = EasyBlock(self.eb_file, validate=False) self.assertErrorRegex(EasyBuildError, "\w* provided \w* is not valid", eb.validate) eb['stop'] = 'patch' # this should now not crash eb.validate() eb['osdependencies'] = ['non-existent-dep'] self.assertErrorRegex(EasyBuildError, "OS dependencies were not found", eb.validate) # dummy toolkit, installversion == version self.assertEqual(eb.installversion(), "3.14") os.chmod(self.eb_file, 0000) self.assertErrorRegex(EasyBuildError, "Unexpected IOError", EasyBlock, self.eb_file) os.chmod(self.eb_file, 0755) self.contents += "\nsyntax_error'" self.setUp() self.assertErrorRegex(EasyBuildError, "SyntaxError", EasyBlock, self.eb_file)