changeset 7:5cfafaafa263 draft default tip

streamlined documentation
author wolma
date Fri, 12 Dec 2014 06:40:11 -0500
parents 79f0803e3bbb
children
files tool_dependencies.xml
diffstat 1 files changed, 22 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/tool_dependencies.xml	Wed Aug 13 08:30:38 2014 -0400
+++ b/tool_dependencies.xml	Fri Dec 12 06:40:11 2014 -0500
@@ -63,67 +63,41 @@
       http://www.python.org
 
 
-      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. 
+      A lean build of python 3.4.1. It does not include modules with external dependencies except for the zlib module (handled in here by depending on package_zlib_1_2_8). 
+      
+      In particular, this build does not compile Python's ssl module, which would cause dependency on openssl and, in turn, on Perl. This means that **the pip installation tool will not be available with this build**. 
+      
+      For a build with more modules (and also ssl) 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. 
 
       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:
 
       <action type="set_environment_for_install">
-        <repository name="python3" owner="wolma">
+        <repository name="package_python3_zlib_dependent_1_0" owner="wolma">
           <package name="python3" version="3.4.1" />
         </repository>
         <!-- other install time dependencies -->
       </action>
 
-      <action type="shell_command">
-        # Unset any saved environment settings from parent virtual
-        # environments, e.g. for python 2 or if Galaxy itself is running
-        # from within a virtual environment.
-        unset _OLD_VIRTUAL_PATH; unset _OLD_VIRTUAL_PYTHONHOME
+      <action type="shell_command">        
+        
         # Create virtual environment MY_TOOL_venv
-        pyvenv MY_TOOL_venv
+        # pip cannot be used for installation because it depends on ssl, 
+        # which this build does not provide
+        
+        pyvenv --without-pip $INSTALL_DIR/MY_TOOL_venv
+        
         # install python packages
-        MY_TOOL_venv/bin/pip3 install {{NEEDED_PYTHON_PACKAGES}}
+        # assuming you are in the download directory of the package
+        
+        $INSTALL_DIR/MY_TOOL_venv/bin/python3 setup.py install 
       </action>
-
-      <action type="set_environment">
-
-	<!-- Setting the PYTHONPATH correctly can be a bit tricky, because you must
-             make sure that the runtime PYTHONPATH from galaxy itself is not
-             included, as it probably points to python 2 code that can crash a
-             program if python 3 tries to load it.
-
-             If you only use a single virtual environment that is created
-             specifically for a tool you are creating, you can just use a set_to
-             like below.
-
-             If you create a virtual environment installation that is meant to be
-             reused by other packages, the virtual environment should probably
-             prepend its site-packages to the PYTHONPATH since a tool could be
-             using python modules from several virtual environments. But in such a
-             scenario the tool that uses these virtual environments should also
-             depend directly on the python3 package, and this dependency should be
-             listed before any virtual environment dependencies. This ensures that
-             the python3 environment settings that clear PYTHONPATH are sourced
-             first so galaxy's runtime PYTHONPATH is excluded. Virtual environments
-             can then prepend their PYTHONPATHs to each other. -->
-        <environment_variable name="PYTHONPATH" action="set_to">$INSTALL_DIR/MY_TOOL_venv/lib/python3.4/site-packages</environment_variable>
-        <!-- All that is really needed to use a specific virtual environment is that the
-             python interpreter in that environment is used, so add it to PATH -->
-        <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/MY_TOOL_venv/bin</environment_variable>
-        <!-- Clear incoming PYTHONHOME just like the venv's 'activate' command does -->
-        <environment_variable name="PYTHONHOME" action="set_to"></environment_variable>
-        <!-- To find shared libraries for python built-in modules such as libssl or libsqlite3
-             we need to re-export LD_LIBRARY_PATH -->
-        <environment_variable name="LD_LIBRARY_PATH" action="prepend_to">$ENV[LD_LIBRARY_PATH]</environment_variable>
-      </action>
-
-
-      Then, in your MY_TOOL.xml add the following requirement:
-
-      <requirements>
-        <requirement name="package" version="XXX">MY_TOOL_venv</requirement>
-      </requirements>
       
+    For an example of how this could used by a package look at:
+    
+    https://testtoolshed.g2.bx.psu.edu/view/wolma/package_mimodd_0_1_5
+    
     </readme>
 
   </package>