Example #1
0
def _install_galaxy_config(tool_env, bin_dirs, env_vars):
    """
    Setup galaxy tool config files (env.sh-es) and default version
    symbolic links.
    """
    install_dir = tool_env["system_install"]
    env_path = os.path.join(install_dir, "env.sh")
    bin_paths = [os.path.join(install_dir, bin_dir) for bin_dir in bin_dirs]
    path_pieces = [bin_path for bin_path in bin_paths if exists(bin_path)]
    if len(path_pieces) > 0 and not exists(env_path):
        path_addtion = ":".join(path_pieces)
        # Standard bin install, just add it to path
        sudo("echo 'PATH=%s:$PATH' > %s" % (path_addtion, env_path))
        venv_path = "%s/%s" % (install_dir, "venv")
        if exists(venv_path):
            #  Have env.sh activate virtualdirectory
            sudo("echo '. %s/bin/activate' >> %s" % (venv_path, env_path))
        sudo("chmod +x %s" % env_path)
        for env_var, env_var_value in env_vars.iteritems():
            env_var_template = Template(env_var_value)
            expanded_env_var_value = env_var_template.substitute(tool_env)
            sudo("echo 'export %s=%s' >> %s" %
                 (env_var, expanded_env_var_value, env_path))
        env.logger.debug("Added Galaxy env.sh file: %s" % env_path)

    _set_default_config(tool_env, install_dir)
    if _read_boolean(tool_env, "autoload_galaxy_tools",
                     False) and exists(env_path):
        # In this case, the web user (e.g. ubuntu) should auto-load all of
        # galaxy's default env.sh files so they are available for direct use
        # as well.
        _add_to_profiles(". %s" % env_path, profiles=["~/.bashrc"])
Example #2
0
def _install_applications(env, tools_conf):
    """Install external tools (galaxy tool dependencies).
    """
    applications = tools_conf["applications"] or {}
    for (name, versions) in applications.iteritems():
        if type(versions) is str:
            versions = [versions]
        for version_info in versions:
            if type(version_info) is str:
                _install_tool(env,
                              name,
                              version=version_info,
                              requirement_name=name)
            else:
                version = version_info["version"]
                bin_dirs = version_info.get("bin_dirs", ["bin"])
                env_vars = version_info.get("env_vars", {})
                # Some requirements (e.g. blast+) maybe not have valid python
                # identifiers as name. Use install_blast to setup but override
                # requirement directory name with requirement_name field.
                requirement_name = version_info.get("requirement_name", name)
                tool_env = _install_tool(env,
                                         name,
                                         version,
                                         bin_dirs=bin_dirs,
                                         env_vars=env_vars,
                                         requirement_name=requirement_name)
                symlink_versions = version_info.get("symlink_versions", [])
                if type(symlink_versions) is str:
                    symlink_versions = [symlink_versions]
                for symlink_version in symlink_versions:
                    _set_default_config(tool_env, tool_env["system_install"],
                                        symlink_version)
Example #3
0
def _install_galaxy_config(tool_env, bin_dirs, env_vars):
    """
    Setup galaxy tool config files (env.sh-es) and default version
    symbolic links.
    """
    install_dir = tool_env["system_install"]
    env_path = os.path.join(install_dir, "env.sh")
    bin_paths = [os.path.join(install_dir, bin_dir) for bin_dir in bin_dirs]
    path_pieces = [bin_path for bin_path in bin_paths if env.safe_exists(bin_path)]
    if len(path_pieces) > 0 and not env.safe_exists(env_path):
        path_addtion = ":".join(path_pieces)
        # Standard bin install, just add it to path
        env.safe_sudo("echo 'PATH=%s:$PATH' > %s" % (path_addtion, env_path))
        venv_path = "%s/%s" % (install_dir, "venv")
        if env.safe_exists(venv_path):
            #  Have env.sh activate virtualdirectory
            env.safe_sudo("echo '. %s/bin/activate' >> %s" % (venv_path, env_path))
        env.safe_sudo("chmod +x %s" % env_path)
        for env_var, env_var_value in env_vars.iteritems():
            env_var_template = Template(env_var_value)
            expanded_env_var_value = env_var_template.substitute(tool_env)
            env.safe_sudo("echo 'export %s=%s' >> %s" % (env_var, expanded_env_var_value, env_path))
        env.logger.debug("Added Galaxy env.sh file: %s" % env_path)

    # TODO: If a direct install (i.e. tool_install_dir specified instead of galaxy_tools_dir)
    # default is still setup. This is not really desired.
    _set_default_config(tool_env, install_dir)
    if _read_boolean(tool_env, "autoload_galaxy_tools", False) and env.safe_exists(env_path):
        # In this case, the web user (e.g. ubuntu) should auto-load all of
        # galaxy's default env.sh files so they are available for direct use
        # as well.
        _add_to_profiles(". %s" % env_path, profiles=["~/.bashrc"])
Example #4
0
def _install_application(name, versions, tool_install_dir=None):
    """
    Install single custom tool as Galaxy dependency application.

    TODO: Rename versions and document options.
    """
    if type(versions) is str:
        versions = [versions]
    for version_info in versions:
        if type(version_info) is str:
            _install_tool(env,
                          name,
                          version=version_info,
                          requirement_name=name,
                          tool_install_dir=tool_install_dir)
        else:
            version = version_info["version"]
            bin_dirs = version_info.get("bin_dirs", ["bin"])
            env_vars = version_info.get("env_vars", {})
            provides = version_info.get("provides", [])
            if isinstance(provides, (str, unicode, six.string_types)):
                provides = [provides]
            for provide_conf in provides[:]:
                if isinstance(provide_conf, dict):
                    provides.remove(provide_conf)
                    if __check_conditional(provide_conf):
                        provies.append(provide_conf["name"])

            # Some requirements (e.g. blast+) maybe not have valid python
            # identifiers as name. Use install_blast to setup but override
            # requirement directory name with requirement_name field.
            requirement_name = version_info.get("requirement_name", name)
            tool_env = _install_tool(env,
                                     name,
                                     version,
                                     bin_dirs=bin_dirs,
                                     env_vars=env_vars,
                                     requirement_name=requirement_name,
                                     tool_install_dir=tool_install_dir)
            symlink_versions = version_info.get("symlink_versions", [])
            if type(symlink_versions) is str:
                symlink_versions = [symlink_versions]
            for symlink_version in symlink_versions:
                _set_default_config(tool_env, tool_env["system_install"],
                                    symlink_version)

            if provides:
                install_dir = tool_env["system_install"]
                ## Create additional symlinked packages from this one.
                tool_dir = "%s/.." % install_dir
                tools_dir = "%s/.." % tool_dir
                for package in provides:
                    link_dir = "%s/%s" % (tools_dir, package)
                    env.safe_sudo("ln -f -s '%s' '%s'" %
                                  (requirement_name, link_dir))
Example #5
0
def _install_galaxy_config(tool_env):
    """
    Setup galaxy tool config files (env.sh-es) and default version
    symbolic links.
    """
    install_dir = tool_env["system_install"]
    bin_dir = os.path.join(install_dir, "bin")
    env_path = os.path.join(install_dir, "env.sh")
    if exists(bin_dir) and not exists(env_path):
        # Standard bin install, just add it to path
        sudo("echo 'PATH=%s/bin:$PATH' > %s/env.sh" % (install_dir, install_dir))
        sudo("chmod +x %s/env.sh" % install_dir)
    _set_default_config(tool_env, install_dir)
Example #6
0
def _install_application(name, versions, tool_install_dir=None):
    """
    Install single custom tool as Galaxy dependency application.

    TODO: Rename versions and document options.
    """
    if type(versions) is str:
        versions = [versions]
    for version_info in versions:
        if type(version_info) is str:
            _install_tool(env, name, version=version_info, requirement_name=name, tool_install_dir=tool_install_dir)
        else:
            version = version_info["version"]
            bin_dirs = version_info.get("bin_dirs", ["bin"])
            env_vars = version_info.get("env_vars", {})
            provides = version_info.get("provides", [])
            if isinstance(provides, (str, unicode, basestring)):
                provides = [provides]
            for provide_conf in provides[:]:
                if isinstance(provide_conf, dict):
                    provides.remove(provide_conf)
                    if __check_conditional(provide_conf):
                        provies.append(provide_conf["name"])

            # Some requirements (e.g. blast+) maybe not have valid python
            # identifiers as name. Use install_blast to setup but override
            # requirement directory name with requirement_name field.
            requirement_name = version_info.get("requirement_name", name)
            tool_env = _install_tool(
                env,
                name,
                version,
                bin_dirs=bin_dirs,
                env_vars=env_vars,
                requirement_name=requirement_name,
                tool_install_dir=tool_install_dir,
            )
            symlink_versions = version_info.get("symlink_versions", [])
            if type(symlink_versions) is str:
                symlink_versions = [symlink_versions]
            for symlink_version in symlink_versions:
                _set_default_config(tool_env, tool_env["system_install"], symlink_version)

            if provides:
                install_dir = tool_env["system_install"]
                ## Create additional symlinked packages from this one.
                tool_dir = "%s/.." % install_dir
                tools_dir = "%s/.." % tool_dir
                for package in provides:
                    link_dir = "%s/%s" % (tools_dir, package)
                    env.safe_sudo("ln -f -s '%s' '%s'" % (requirement_name, link_dir))
Example #7
0
def _install_galaxy_config(tool_env):
    """
    Setup galaxy tool config files (env.sh-es) and default version
    symbolic links.
    """
    install_dir = tool_env["system_install"]
    bin_dir = os.path.join(install_dir, "bin")
    env_path = os.path.join(install_dir, "env.sh")
    if exists(bin_dir) and not exists(env_path):
        # Standard bin install, just add it to path
        sudo("echo 'PATH=%s/bin:$PATH' > %s/env.sh" %
             (install_dir, install_dir))
        sudo("chmod +x %s/env.sh" % install_dir)
    _set_default_config(tool_env, install_dir)
Example #8
0
def _install_galaxy_config(tool_env, bin_dirs):
    """
    Setup galaxy tool config files (env.sh-es) and default version
    symbolic links.
    """
    install_dir = tool_env["system_install"]
    env_path = os.path.join(install_dir, "env.sh")
    bin_paths = [os.path.join(install_dir, bin_dir) for bin_dir in bin_dirs]
    path_pieces = [bin_path for bin_path in bin_paths if exists(bin_path)]
    if len(path_pieces) > 0 and not exists(env_path):
        path_addtion = ":".join(path_pieces)
        # Standard bin install, just add it to path
        sudo("echo 'PATH=%s:$PATH' > %s/env.sh" % (path_addtion, install_dir))
        sudo("chmod +x %s/env.sh" % install_dir)
    _set_default_config(tool_env, install_dir)
Example #9
0
def _install_applications(env, tools_conf):
    """Install external tools (galaxy tool dependencies).
    """
    applications = tools_conf["applications"] or {}
    for (name, versions) in applications.iteritems():
        if type(versions) is str:
            versions = [versions]
        for version_info in versions:
            if type(version_info) is str:
                _install_tool(env,
                              name,
                              version=version_info,
                              requirement_name=name)
            else:
                version = version_info["version"]
                bin_dirs = version_info.get("bin_dirs", ["bin"])
                env_vars = version_info.get("env_vars", {})
                provides = version_info.get("provides", [])
                if isinstance(provides, (str, unicode, basestring)):
                    provides = [provides]

                # Some requirements (e.g. blast+) maybe not have valid python
                # identifiers as name. Use install_blast to setup but override
                # requirement directory name with requirement_name field.
                requirement_name = version_info.get("requirement_name", name)
                tool_env = _install_tool(env,
                                         name,
                                         version,
                                         bin_dirs=bin_dirs,
                                         env_vars=env_vars,
                                         requirement_name=requirement_name)
                symlink_versions = version_info.get("symlink_versions", [])
                if type(symlink_versions) is str:
                    symlink_versions = [symlink_versions]
                for symlink_version in symlink_versions:
                    _set_default_config(tool_env, tool_env["system_install"],
                                        symlink_version)

                if provides:
                    install_dir = tool_env["system_install"]
                    ## Create additional symlinked packages from this one.
                    tool_dir = "%s/.." % install_dir
                    tools_dir = "%s/.." % tool_dir
                    for package in provides:
                        link_dir = "%s/%s" % (tools_dir, package)
                        env.safe_sudo("ln -f -s '%s' '%s'" %
                                      (requirement_name, link_dir))
Example #10
0
def _install_applications(env, tools_conf):
    """Install external tools (galaxy tool dependencies).
    """
    applications = tools_conf["applications"] or {}
    for (name, versions) in applications.iteritems():
        if type(versions) is str:
            versions = [versions]
        for version_info in versions:
            if type(version_info) is str:
                _install_tool(env, name, version_info)
            else:
                version = version_info["version"]
                bin_dirs = version_info.get("bin_dirs", ["bin"])
                tool_env = _install_tool(env, name, version, bin_dirs)
                symlink_versions = version_info.get("symlink_versions", [])
                if type(symlink_versions) is str:
                    symlink_versions = [symlink_versions]
                for symlink_version in symlink_versions:
                    _set_default_config(tool_env, tool_env["system_install"], symlink_version)
Example #11
0
def _install_applications(env, tools_conf):
    """Install external tools (galaxy tool dependencies).
    """
    applications = tools_conf["applications"] or {}
    for (name, versions) in applications.iteritems():
        if type(versions) is str:
            versions = [versions]
        for version_info in versions:
            if type(version_info) is str:
                _install_tool(env, name, version=version_info, requirement_name=name)
            else:
                version = version_info["version"]
                bin_dirs = version_info.get("bin_dirs", ["bin"])
                env_vars = version_info.get("env_vars", {})
                provides = version_info.get("provides", [])
                if isinstance(provides, (str, unicode, basestring)):
                    provides = [provides]

                # Some requirements (e.g. blast+) maybe not have valid python
                # identifiers as name. Use install_blast to setup but override
                # requirement directory name with requirement_name field.
                requirement_name = version_info.get("requirement_name", name)
                tool_env = _install_tool(env, name, version, bin_dirs=bin_dirs, env_vars=env_vars, requirement_name=requirement_name)
                symlink_versions = version_info.get("symlink_versions", [])
                if type(symlink_versions) is str:
                    symlink_versions = [symlink_versions]
                for symlink_version in symlink_versions:
                    _set_default_config(tool_env, tool_env["system_install"], symlink_version)

                if provides:
                    install_dir = tool_env["system_install"]
                    ## Create additional symlinked packages from this one.
                    tool_dir = "%s/.." % install_dir
                    tools_dir = "%s/.." % tool_dir
                    for package in provides:
                        link_dir = "%s/%s" % (tools_dir, package)
                        env.safe_sudo("ln -f -s '%s' '%s'" % (requirement_name, link_dir))
Example #12
0
def _install_applications(env, tools_conf):
    """Install external tools (galaxy tool dependencies).
    """
    applications = tools_conf["applications"] or {}
    for (name, versions) in applications.iteritems():
        if type(versions) is str:
            versions = [versions]
        for version_info in versions:
            if type(version_info) is str:
                _install_tool(env, name, version=version_info, requirement_name=name)
            else:
                version = version_info["version"]
                bin_dirs = version_info.get("bin_dirs", ["bin"])
                env_vars = version_info.get("env_vars", {})
                # Some requirements (e.g. blast+) maybe not have valid python
                # identifiers as name. Use install_blast to setup but override
                # requirement directory name with requirement_name field.
                requirement_name = version_info.get("requirement_name", name)
                tool_env = _install_tool(env, name, version, bin_dirs=bin_dirs, env_vars=env_vars, requirement_name=requirement_name)
                symlink_versions = version_info.get("symlink_versions", [])
                if type(symlink_versions) is str:
                    symlink_versions = [symlink_versions]
                for symlink_version in symlink_versions:
                    _set_default_config(tool_env, tool_env["system_install"], symlink_version)
Example #13
0
def _update_default(env, install_dir):
    sudo("touch %s/env.sh" % install_dir)
    sudo("chmod +x %s/env.sh" % install_dir)
    _set_default_config(env, install_dir)
Example #14
0
def _update_default(env, install_dir):
    sudo("touch %s/env.sh" % install_dir)
    sudo("chmod +x %s/env.sh" % install_dir)
    _set_default_config(env, install_dir)