コード例 #1
0
ファイル: easyblock.py プロジェクト: nudded/easybuild
    def runTest(self):
        """ test all possible ways of specifying dependencies """
        eb = EasyBlock(self.eb_file)
        # should include builddependencies
        self.assertEqual(len(eb.dependencies()), 4)
        self.assertEqual(len(eb.builddependencies()), 2)

        first = eb.dependencies()[0]
        second = eb.dependencies()[1]

        self.assertEqual(first['name'], "first")
        self.assertEqual(second['name'], "second")

        self.assertEqual(first['version'], "1.1")
        self.assertEqual(second['version'], "2.2")

        self.assertEqual(first['tk'], '1.1-GCC-4.6.3')
        self.assertEqual(second['tk'], '2.2-GCC-4.6.3')

        # same tests for builddependencies
        first = eb.builddependencies()[0]
        second = eb.builddependencies()[1]

        self.assertEqual(first['name'], "first")
        self.assertEqual(second['name'], "second")

        self.assertEqual(first['version'], "1.1")
        self.assertEqual(second['version'], "2.2")

        self.assertEqual(first['tk'], '1.1-GCC-4.6.3')
        self.assertEqual(second['tk'], '2.2-GCC-4.6.3')

        eb['dependencies'] = ["wrong type"]
        self.assertErrorRegex(EasyBuildError, "wrong type from unsupported type", eb.dependencies)

        eb['dependencies'] = [()]
        self.assertErrorRegex(EasyBuildError, "without name", eb.dependencies)
        eb['dependencies'] = [{'name': "test"}]
        self.assertErrorRegex(EasyBuildError, "without version", eb.dependencies)
コード例 #2
0
ファイル: build.py プロジェクト: nudded/easybuild
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)