Example #1
0
def configure(
    env,
    name,
    type,
    version,
    required_modules=[],
    optional_dependencies=[],
    optional_modules=[],
    required_dependencies=[],
):
    """Returns ok, version, found_optional_modules, found_optional_dependencies"""
    if not version:
        version = env["IMP_VERSION"]
    disabled = [x for x in env.get("disabledmodules", "").split(":")]
    if name in disabled:
        print type.capitalize(), name, "explicitly disabled "
        return (None, None, None, None)
    found_required_modules = data.get(env).get_found_modules(required_modules)
    for m in required_modules:
        if m not in found_required_modules:
            msg = "%s" + type.capitalize() + " " + name + " disabled due to disabled module IMP." + m + "%s"
            print msg % (env["IMP_COLORS"]["red"], env["IMP_COLORS"]["end"])
            return (None, None, None, None)
    for m in required_dependencies:
        if not data.get(env).dependencies[m].ok:
            msg = "%s" + type.capitalize() + " " + name + " disabled due to missing dependency " + m + "%s"
            print msg % (env["IMP_COLORS"]["red"], env["IMP_COLORS"]["end"])
            return (None, None, None, None)
    found_optional_modules = data.get(env).get_found_modules(optional_modules)
    found_optional_dependencies = data.get(env).get_found_dependencies(optional_dependencies)
    outversion = version
    if len(found_optional_dependencies + found_optional_modules) > 0:
        outversion = outversion + " with " + ", ".join(found_optional_dependencies + found_optional_modules)
    version = outversion
    msg = "%sConfiguring " + type + " " + name + "%s version " + version
    print msg % (env["IMP_COLORS"]["green"], env["IMP_COLORS"]["end"])
    # if len(required_modules+required_dependencies)>0:
    #    print "  (requires " +", ".join(required_modules+required_dependencies) +")"
    found_optional_modules.sort()
    found_optional_dependencies.sort()
    required_modules.sort()
    required_dependencies.sort()
    return (
        environment.get_named_environment(
            env, name, required_modules + found_optional_modules, required_dependencies + found_optional_dependencies
        ),
        version,
        found_optional_modules,
        found_optional_dependencies,
    )
Example #2
0
def configure_module(
    env,
    name,
    alias,
    libname,
    version,
    required_modules=[],
    optional_dependencies=[],
    optional_modules=[],
    required_dependencies=[],
):
    dta = data.get(env)
    if name in dta.modules.keys():
        if dta.modules[name].ok:
            return environment.get_named_environment(
                env, name, dta.modules[name].modules, dta.modules[name].dependencies
            )
        else:
            return None
    (nenv, version, found_optional_modules, found_optional_dependencies) = configure(
        env, name, "module", version, required_modules, optional_dependencies, optional_modules, required_dependencies
    )
    if nenv:
        modules = required_modules + found_optional_modules
        unfound_modules = [x for x in optional_modules if x not in found_optional_modules]
        dependencies = found_optional_dependencies + required_dependencies
        unfound_dependencies = [x for x in optional_dependencies if not x in found_optional_dependencies]
        dta.add_module(
            name,
            alias=alias,
            modules=modules,
            unfound_modules=unfound_modules,
            dependencies=dependencies,
            libname=libname,
            unfound_dependencies=unfound_dependencies,
            version=version,
        )
        return nenv
    else:
        dta.add_module(name, ok=False)
        return None
Example #3
0
def configure_application(
    env,
    name,
    link,
    version,
    required_modules=[],
    optional_dependencies=[],
    optional_modules=[],
    required_dependencies=[],
):
    dta = data.get(env)
    if name in dta.applications.keys():
        if dta.applications[name].ok:
            return environment.get_named_environment(
                env, name, dta.applications[name].modules, dta.applications[name].dependencies
            )
        else:
            return None
    (nenv, version, found_optional_modules, found_optional_dependencies) = configure(
        env,
        name,
        "application",
        version,
        required_modules,
        optional_dependencies,
        optional_modules,
        required_dependencies,
    )
    if nenv:
        data.get(env).add_application(
            name,
            link=link,
            dependencies=required_dependencies + found_optional_dependencies,
            unfound_dependencies=[x for x in optional_dependencies if not x in found_optional_dependencies],
            modules=required_modules + found_optional_modules,
            version=version,
        )
        return nenv
    else:
        return None