Exemplo n.º 1
0
    def runTest(self):
        """ Test with some basic testcases (also check if he can find dependencies inside the given directory """
        package = {
            'spec': '_',
            'module': ("name", "version"),
            'dependencies': []
        }
        res = build.resolveDependencies([deepcopy(package)], None, self.log)
        self.assertEqual([package], res)

        package_dep = {
            'spec': '_',
            'module': ("name", "version"),
            'dependencies': [('gzip', '1.4')]
        }
        res = build.resolveDependencies([deepcopy(package_dep)], base_easyconfig_dir, self.log)
        # Dependency should be found
        self.assertEqual(len(res), 2)

        # here we have include a Dependency in the package list
        package['module'] = ("gzip", "1.4")

        res = build.resolveDependencies([deepcopy(package_dep), deepcopy(package)], None, self.log)
        # all dependencies should be resolved
        self.assertEqual(0, sum(len(pkg['dependencies']) for pkg in res))

        # this should not resolve (cannot find gzip-1.4.eb)
        self.assertRaises(EasyBuildError, build.resolveDependencies, [deepcopy(package_dep)], None, self.log)

        # test if dependencies of an automatically found file are also loaded
        package_dep['dependencies'] = [('gzip', "1.4-GCC-4.6.3")]
        res = build.resolveDependencies([deepcopy(package_dep)], base_easyconfig_dir, self.log)

        # GCC should be first (required by gzip dependency)
        self.assertEqual(('GCC', '4.6.3'), res[0]['module'])
        self.assertEqual(('name', 'version'), res[-1]['module'])
Exemplo n.º 2
0
            files += findEasyconfigs(path, log)
    else:
        # Default path
        path = "easybuild/easyconfigs/"
        files = findEasyconfigs(path, log)

    # process all the found easyconfig files
    packages = []
    for file in files:
        try:
            packages.extend(processEasyconfig(file, log, None))
        except EasyBuildError, err:
            test_results.append((file, 'eb-file error', err))

    if opts.parallel:
        resolved = resolveDependencies(packages, opts.robot, log)
        # use %%s so i can later replace it
        command = "cd %s && python %s %%s --no-parallel" % (cur_dir, sys.argv[0])
        parbuild.build_packages_in_parallel(command, resolved, output_dir, log)
    else:
        build_packages(packages, output_dir)


def perform_step(fase, obj, method):
    """
    Perform method on object if it can be build
    """
    if obj not in build_stopped:
        try:
            method(obj)
        except EasyBuildError, err: