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