annotate tool_dependencies.xml @ 0:9e19cc8ca87a draft

Uploaded
author wolma
date Tue, 12 Aug 2014 11:39:31 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
1 <?xml version="1.0"?>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
2 <tool_dependency>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
3 <package name="zlib" version="1.2.8">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
4 <repository changeset_revision="9d017266c41e" name="package_zlib_1_2_8" owner="wolma" prior_installation_required="True" toolshed="http://toolshed.g2.bx.psu.edu" />
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
5 </package>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
6
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
7 <package name="python3" version="3.4.1">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
8 <install version="1.0">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
9 <actions>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
10 <action type="download_by_url">https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz</action>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
11
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
12 <action type="set_environment_for_install">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
13 <repository changeset_revision="31f1e69aae89" name="package_zlib_1_2_8" owner="iuc" toolshed="http://toolshed.g2.bx.psu.edu">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
14 <package name="zlib" version="1.2.8" />
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
15 </repository>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
16 </action>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
17
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
18 <action type="shell_command">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
19 # The python build system doesn't check CPATH / C(PLUS)_INCLUDE_PATH which is set by the depended-upon
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
20 # tool definitions for these sources, but it does check CPPFLAGS / LDFLAGS
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
21 # Currently not whitespace-safe, I haven't found a way yet to quote the *FLAGS values so that they are
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
22 # correctly recognized by both the python build process and the compiler. But as galaxy itself isn't
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
23 # whitespace-safe either it doesn't really matter (currently).
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
24 oldifs="$IFS"
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
25 IFS=":"
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
26 for p in $CPLUS_INCLUDE_PATH
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
27 do
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
28 CPPFLAGS="$CPPFLAGS -I$p"
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
29 done
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
30 for p in $LD_LIBRARY_PATH
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
31 do
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
32 LDFLAGS="$LDFLAGS -L$p"
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
33 done
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
34 IFS="$oldifs"
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
35 export CPPFLAGS
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
36 export LDFLAGS
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
37
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
38 # Clear variables that may be used in Galaxy's extenal python 2 environment
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
39 unset PYTHONPATH
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
40 unset PYTHONHOME
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
41
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
42 ./configure --prefix="$INSTALL_DIR" --with-ensurepip \
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
43 &amp;&amp; make \
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
44 &amp;&amp; make install
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
45 </action>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
46
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
47 <action type="set_environment">
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
48 <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
49 <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$ENV[LD_LIBRARY_PATH]</environment_variable>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
50 <!-- clear PYTHONPATH, otherwise we will get Galaxy's Python 2 libraries in the Python 3 path. -->
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
51 <environment_variable action="set_to" name="PYTHONPATH" />
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
52 <environment_variable action="set_to" name="PYTHONHOME">$INSTALL_DIR</environment_variable>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
53 <environment_variable action="prepend_to" name="PKG_CONFIG_PATH">$INSTALL_DIR/lib/pkgconfig</environment_variable>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
54 </action>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
55 </actions>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
56 </install>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
57
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
58 <readme>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
59 Python 3.4.1
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
60
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
61 The Python programming language version 3.
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
62
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
63 http://www.python.org
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
64
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
65
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
66 A lean build of python 3.4.1. It does not include modules with external dependencies except for the zlib module, which requires the zlib library installed on your system. For a build with more such modules included look at https://toolshed.g2.bx.psu.edu/view/jankanis/package_python3_4 written by jankanis, of which this package is a shameless plagiarism.
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
67
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
68 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:
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
69
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
70 &lt;action type="set_environment_for_install"&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
71 &lt;repository name="python3" owner="wolma"&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
72 &lt;package name="python3" version="3.4.1" /&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
73 &lt;/repository&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
74 &lt;!-- other install time dependencies --&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
75 &lt;/action&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
76
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
77 &lt;action type="shell_command"&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
78 # Unset any saved environment settings from parent virtual
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
79 # environments, e.g. for python 2 or if Galaxy itself is running
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
80 # from within a virtual environment.
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
81 unset _OLD_VIRTUAL_PATH; unset _OLD_VIRTUAL_PYTHONHOME
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
82 # Create virtual environment MY_TOOL_venv
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
83 pyvenv MY_TOOL_venv
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
84 # install python packages
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
85 MY_TOOL_venv/bin/pip3 install {{NEEDED_PYTHON_PACKAGES}}
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
86 &lt;/action&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
87
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
88 &lt;action type="set_environment"&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
89
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
90 &lt;!-- Setting the PYTHONPATH correctly can be a bit tricky, because you must
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
91 make sure that the runtime PYTHONPATH from galaxy itself is not
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
92 included, as it probably points to python 2 code that can crash a
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
93 program if python 3 tries to load it.
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
94
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
95 If you only use a single virtual environment that is created
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
96 specifically for a tool you are creating, you can just use a set_to
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
97 like below.
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
98
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
99 If you create a virtual environment installation that is meant to be
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
100 reused by other packages, the virtual environment should probably
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
101 prepend its site-packages to the PYTHONPATH since a tool could be
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
102 using python modules from several virtual environments. But in such a
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
103 scenario the tool that uses these virtual environments should also
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
104 depend directly on the python3 package, and this dependency should be
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
105 listed before any virtual environment dependencies. This ensures that
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
106 the python3 environment settings that clear PYTHONPATH are sourced
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
107 first so galaxy's runtime PYTHONPATH is excluded. Virtual environments
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
108 can then prepend their PYTHONPATHs to each other. --&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
109 &lt;environment_variable name="PYTHONPATH" action="set_to"&gt;$INSTALL_DIR/MY_TOOL_venv/lib/python3.4/site-packages&lt;/environment_variable&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
110 &lt;!-- All that is really needed to use a specific virtual environment is that the
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
111 python interpreter in that environment is used, so add it to PATH --&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
112 &lt;environment_variable name="PATH" action="prepend_to"&gt;$INSTALL_DIR/MY_TOOL_venv/bin&lt;/environment_variable&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
113 &lt;!-- Clear incoming PYTHONHOME just like the venv's 'activate' command does --&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
114 &lt;environment_variable name="PYTHONHOME" action="set_to"&gt;&lt;/environment_variable&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
115 &lt;!-- To find shared libraries for python built-in modules such as libssl or libsqlite3
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
116 we need to re-export LD_LIBRARY_PATH --&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
117 &lt;environment_variable name="LD_LIBRARY_PATH" action="prepend_to"&gt;$ENV[LD_LIBRARY_PATH]&lt;/environment_variable&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
118 &lt;/action&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
119
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
120
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
121 Then, in your MY_TOOL.xml add the following requirement:
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
122
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
123 &lt;requirements&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
124 &lt;requirement name="package" version="XXX"&gt;MY_TOOL_venv&lt;/requirement&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
125 &lt;/requirements&gt;
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
126
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
127 </readme>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
128
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
129 </package>
9e19cc8ca87a Uploaded
wolma
parents:
diff changeset
130 </tool_dependency>