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, )
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
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