annotate tool_dependencies.xml @ 0:7de6ae338d6c draft default tip

Uploaded
author jankanis
date Mon, 02 Jun 2014 10:27:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
1 <?xml version="1.0"?>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
2 <tool_dependency>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
3 <package name="zlib" version="1.2.8">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
4 <repository changeset_revision="12711c8cada7" name="package_zlib_1_2_8" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
5 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
6
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
7 <package name="readline" version="6.2">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
8 <repository changeset_revision="246f31787ca1" name="package_readline_6_2" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
9 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
10
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
11 <package name="bzlib" version="1.0.6">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
12 <repository changeset_revision="2dec91192fc7" name="package_bzlib_1_0" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
13 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
14
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
15 <package name="xz" version="5.0.5">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
16 <repository changeset_revision="b6876995a7e8" name="package_xz_5_0_5" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
17 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
18
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
19 <package name="openssl" version="1.0.1g">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
20 <repository changeset_revision="1c0d2868aa06" name="package_openssl_1_0" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
21 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
22
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
23 <package name="sqlite" version="3.8.3">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
24 <repository changeset_revision="e3729818491f" name="package_sqlite_3_8_3" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
25 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
26
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
27 <package name="gdbm" version="1.11">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
28 <repository changeset_revision="7367119a4afc" name="package_gdbm_1_11" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
29 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
30
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
31 <package name="ncurses" version="5.9">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
32 <repository changeset_revision="f62fa47b852d" name="package_ncurses_5_9" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
33 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
34
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
35
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
36 <package name="python3" version="3.4.1">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
37 <install version="1.0">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
38 <actions>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
39 <action type="download_by_url">https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz</action>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
40
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
41 <action type="set_environment_for_install">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
42 <repository changeset_revision="12711c8cada7" name="package_zlib_1_2_8" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
43 <package name="zlib" version="1.2.8" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
44 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
45 <repository changeset_revision="246f31787ca1" name="package_readline_6_2" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
46 <package name="readline" version="6.2" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
47 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
48 <repository changeset_revision="2dec91192fc7" name="package_bzlib_1_0" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
49 <package name="bzlib" version="1.0.6" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
50 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
51 <repository changeset_revision="b6876995a7e8" name="package_xz_5_0_5" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
52 <package name="xz" version="5.0.5" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
53 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
54 <repository changeset_revision="1c0d2868aa06" name="package_openssl_1_0" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
55 <package name="openssl" version="1.0.1g" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
56 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
57 <repository changeset_revision="e3729818491f" name="package_sqlite_3_8_3" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
58 <package name="sqlite" version="3.8.3" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
59 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
60 <repository changeset_revision="7367119a4afc" name="package_gdbm_1_11" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
61 <package name="gdbm" version="1.11" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
62 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
63 <repository changeset_revision="f62fa47b852d" name="package_ncurses_5_9" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
64 <package name="ncurses" version="5.9" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
65 </repository>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
66 </action>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
67
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
68 <action type="shell_command">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
69 # The python build system doesn't check CPATH / C(PLUS)_INCLUDE_PATH which is set by the depended-upon
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
70 # tool definitions for these sources, but it does check CPPFLAGS / LDFLAGS
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
71 # Currently not whitespace-safe, I haven't found a way yet to quote the *FLAGS values so that they are
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
72 # correctly recognized by both the python build process and the compiler. But as galaxy itself isn't
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
73 # whitespace-safe either it doesn't really matter (currently).
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
74 oldifs="$IFS"
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
75 IFS=":"
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
76 for p in $CPLUS_INCLUDE_PATH
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
77 do
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
78 CPPFLAGS="$CPPFLAGS -I$p"
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
79 done
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
80 for p in $LD_LIBRARY_PATH
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
81 do
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
82 LDFLAGS="$LDFLAGS -L$p"
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
83 done
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
84 IFS="$oldifs"
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
85 export CPPFLAGS
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
86 export LDFLAGS
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
87
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
88 # Clear variables that may be used in Galaxy's extenal python 2 environment
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
89 unset PYTHONPATH
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
90 unset PYTHONHOME
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
91
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
92 ./configure --prefix="$INSTALL_DIR" --with-ensurepip --enable-loadable-sqlite-extensions \
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
93 &amp;&amp; make \
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
94 &amp;&amp; make install
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
95 </action>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
96
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
97 <action type="set_environment">
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
98 <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
99 <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$ENV[LD_LIBRARY_PATH]</environment_variable>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
100 <!-- clear PYTHONPATH, otherwise we will get Galaxy's Python 2 libraries in the Python 3 path. -->
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
101 <environment_variable action="set_to" name="PYTHONPATH" />
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
102 <environment_variable action="set_to" name="PYTHONHOME">$INSTALL_DIR</environment_variable>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
103 <environment_variable action="prepend_to" name="PKG_CONFIG_PATH">$INSTALL_DIR/lib/pkgconfig</environment_variable>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
104 </action>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
105 </actions>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
106 </install>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
107
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
108 <readme>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
109 Python 3.4.1
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
110
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
111 The Python programming language version 3.
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
112
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
113 http://www.python.org
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
114
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
115
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
116 This build of python is configured with --enable-loadable-sqlite-extensions, any other settings are default. This build does not include modules for lzma and Tkinter, but does include ssl, (g)dbm and sqlite. Adding the missing modules should not be very difficult but requires wrapping the external sources that these modules require inside galaxy.
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
117
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
118 Python as of version 3.3 includes a built-in virtual environment manager. To create a python 3 virtual env, include the following actions in your tool_dependencies.xml, e.g. for a package MY_TOOL_venv:
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
119
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
120 &lt;action type="set_environment_for_install"&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
121 &lt;repository name="python3" owner="jankanis"&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
122 &lt;package name="python3" version="3.4.1" /&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
123 &lt;/repository&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
124 &lt;!-- ... other install time dependencies ... --&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
125 &lt;/action&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
126
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
127 &lt;action type="shell_command"&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
128 # Unset any saved environment settings from parent virtual
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
129 # environments, e.g. for python 2 or if Galaxy itself is running
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
130 # from within a virtual environment.
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
131 unset _OLD_VIRTUAL_PATH; unset _OLD_VIRTUAL_PYTHONHOME
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
132 # Create virtual environment MY_TOOL_venv
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
133 pyvenv MY_TOOL_venv
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
134 # install python packages
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
135 MY_TOOL_venv/bin/pip3 install {{NEEDED_PYTHON_PACKAGES}}
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
136 &lt;/action&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
137
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
138 &lt;action type="set_environment"&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
139
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
140 &lt;!-- Setting the PYTHONPATH correctly can be a bit tricky, because you must
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
141 make sure that the runtime PYTHONPATH from galaxy itself is not
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
142 included, as it probably points to python 2 code that can crash a
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
143 program if python 3 tries to load it.
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
144
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
145 If you only use a single virtual environment that is created
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
146 specifically for a tool you are creating, you can just use a set_to
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
147 like below.
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
148
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
149 If you create a virtual environment installation that is meant to be
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
150 reused by other packages, the virtual environment should probably
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
151 prepend its site-packages to the PYTHONPATH since a tool could be
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
152 using python modules from several virtual environments. But in such a
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
153 scenario the tool that uses these virtual environments should also
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
154 depend directly on the python3 package, and this dependency should be
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
155 listed before any virtual environment dependencies. This ensures that
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
156 the python3 environment settings that clear PYTHONPATH are sourced
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
157 first so galaxy's runtime PYTHONPATH is excluded. Virtual environments
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
158 can then prepend their PYTHONPATHs to each other. --&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
159 &lt;environment_variable name="PYTHONPATH" action="set_to"&gt;$INSTALL_DIR/MY_TOOL_venv/lib/python3.4/site-packages&lt;/environment_variable&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
160 &lt;!-- All that is really needed to use a specific virtual environment is that the
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
161 python interpreter in that environment is used, so add it to PATH --&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
162 &lt;environment_variable name="PATH" action="prepend_to"&gt;$INSTALL_DIR/MY_TOOL_venv/bin&lt;/environment_variable&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
163 &lt;!-- Clear incoming PYTHONHOME just like the venv's 'activate' command does --&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
164 &lt;environment_variable name="PYTHONHOME" action="set_to"&gt;&lt;/environment_variable&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
165 &lt;!-- To find shared libraries for python built-in modules such as libssl or libsqlite3
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
166 we need to re-export LD_LIBRARY_PATH --&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
167 &lt;environment_variable name="LD_LIBRARY_PATH" action="prepend_to"&gt;$ENV[LD_LIBRARY_PATH]&lt;/environment_variable&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
168 &lt;/action&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
169
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
170
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
171 Then, in your MY_TOOL.xml add the following requirement:
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
172
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
173 &lt;requirements&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
174 &lt;requirement name="package" version="XXX"&gt;MY_TOOL_venv&lt;/requirement&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
175 &lt;/requirements&gt;
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
176
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
177 </readme>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
178
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
179 </package>
7de6ae338d6c Uploaded
jankanis
parents:
diff changeset
180 </tool_dependency>