Example #1
0
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)
Example #2
0
    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)