Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/planemo/galaxy/run.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:26e78fe6e8c4 |
---|---|
1 """Utilities for calling Galaxy scripts.""" | |
2 import os | |
3 import string | |
4 | |
5 from galaxy.tool_util.deps.commands import shell | |
6 from six.moves import shlex_quote | |
7 | |
8 from planemo.io import info, shell_join | |
9 from planemo.virtualenv import ( | |
10 create_command, | |
11 DEFAULT_PYTHON_VERSION, | |
12 ) | |
13 | |
14 | |
15 # Activate galaxy's virtualenv if present (needed for tests say but not for | |
16 # server because run.sh does this). | |
17 ACTIVATE_COMMAND = 'if [ -e "$GALAXY_VIRTUAL_ENV" ]; then . "$GALAXY_VIRTUAL_ENV"/bin/activate; fi' | |
18 CREATE_COMMAND_TEMPLATE = string.Template( | |
19 'if [ ! -e "$GALAXY_VIRTUAL_ENV" ]; then $create_virtualenv; fi', | |
20 ) | |
21 PRINT_VENV_COMMAND = shell_join( | |
22 r'echo "Set \$GALAXY_VIRTUAL_ENV to $GALAXY_VIRTUAL_ENV"', | |
23 ('if [ -e "$GALAXY_VIRTUAL_ENV" ]; ' | |
24 'then echo "Virtual environment directory exists."; ' | |
25 'else echo "Virtual environment directory does not exist."; fi'), | |
26 ) | |
27 | |
28 | |
29 CACHED_VIRTUAL_ENV_COMMAND = ("if [ -d .venv ] || [ -f dist-eggs.ini ]; " | |
30 "then GALAXY_VIRTUAL_ENV=.venv; " | |
31 "else GALAXY_VIRTUAL_ENV=%s; fi") | |
32 UNCACHED_VIRTUAL_ENV_COMMAND = "GALAXY_VIRTUAL_ENV=.venv" | |
33 | |
34 | |
35 def setup_venv(ctx, kwds): | |
36 if kwds.get("skip_venv", False): | |
37 return "" | |
38 | |
39 create_template_params = { | |
40 'create_virtualenv': create_command("$GALAXY_VIRTUAL_ENV", kwds.get('galaxy_python_version')) | |
41 } | |
42 return shell_join( | |
43 locate_galaxy_virtualenv(ctx, kwds), | |
44 PRINT_VENV_COMMAND if ctx.verbose else None, | |
45 CREATE_COMMAND_TEMPLATE.safe_substitute(create_template_params), | |
46 PRINT_VENV_COMMAND if ctx.verbose else None, | |
47 ACTIVATE_COMMAND, | |
48 ) | |
49 | |
50 | |
51 def locate_galaxy_virtualenv(ctx, kwds): | |
52 if os.environ.get("GALAXY_VIRTUAL_ENV"): | |
53 venv_command = "" | |
54 elif not kwds.get("no_cache_galaxy", False): | |
55 workspace = ctx.workspace | |
56 galaxy_branch = kwds.get("galaxy_branch") or "master" | |
57 shared_venv_path = os.path.join(workspace, "gx_venv") | |
58 galaxy_python_version = kwds.get('galaxy_python_version') or DEFAULT_PYTHON_VERSION | |
59 if galaxy_python_version != DEFAULT_PYTHON_VERSION: | |
60 shared_venv_path = "%s_%s" % (shared_venv_path, galaxy_python_version) | |
61 if galaxy_branch != "master": | |
62 shared_venv_path = "%s_%s" % (shared_venv_path, galaxy_branch) | |
63 venv_command = CACHED_VIRTUAL_ENV_COMMAND % shlex_quote(shared_venv_path) | |
64 else: | |
65 venv_command = UNCACHED_VIRTUAL_ENV_COMMAND | |
66 return shell_join( | |
67 venv_command, | |
68 "export GALAXY_VIRTUAL_ENV", | |
69 ) | |
70 | |
71 | |
72 def shell_if_wheels(command): | |
73 """ Take a shell command and convert it to shell command that runs | |
74 only if Galaxy is new enough to use wheels. | |
75 """ | |
76 return "$(grep -q 'skip-venv' run_tests.sh) && %s" % command | |
77 | |
78 | |
79 def setup_common_startup_args(): | |
80 return _set_variable_if_wheels( | |
81 "COMMON_STARTUP_ARGS", "--dev-wheels" | |
82 ) | |
83 | |
84 | |
85 def _set_variable_if_wheels(var, if_wheels_val, else_val=""): | |
86 var_command = '${var}=${else_val}; ' | |
87 var_command += shell_if_wheels( | |
88 '${var}="${if_wheels_val}"; ' | |
89 ) | |
90 var_command += "export ${var}" | |
91 var_command += '; echo "Set ${var} to ${${var}}"' | |
92 return string.Template(var_command).safe_substitute( | |
93 var=var, | |
94 if_wheels_val=if_wheels_val, | |
95 else_val=else_val, | |
96 ) | |
97 | |
98 | |
99 def run_galaxy_command(ctx, command, env, action): | |
100 """Run Galaxy command with informative verbose logging.""" | |
101 message = "%s with command [%s]" % (action, command) | |
102 info(message) | |
103 ctx.vlog("With environment variables:") | |
104 ctx.vlog("============================") | |
105 for key, value in env.items(): | |
106 ctx.vlog('%s="%s"' % (key, value)) | |
107 ctx.vlog("============================") | |
108 exit_code = shell(command, env=env) | |
109 ctx.vlog("run command exited with return code %s" % exit_code) | |
110 return exit_code | |
111 | |
112 | |
113 __all__ = ( | |
114 "setup_venv", | |
115 "run_galaxy_command", | |
116 "setup_common_startup_args", | |
117 ) |