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"])
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)
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"])
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))
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)
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))
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)
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))
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)
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)