view tool_dependencies.xml @ 5:83407422ec16 draft default tip

Uploaded
author wolma
date Sat, 11 Jun 2016 19:07:41 -0400
parents 5e5653b689ca
children
line wrap: on
line source

<?xml version="1.0"?>
<tool_dependency>
  <package name="zlib" version="1.2.8">
      <repository changeset_revision="63a4a902cda2" name="package_zlib_1_2_8" owner="iuc" prior_installation_required="True" toolshed="https://toolshed.g2.bx.psu.edu" />
  </package>
  
  <package name="sqlite" version="3.8.3">
    <repository changeset_revision="c8a5c11cc921" name="package_sqlite_3_8_3" owner="iuc" prior_installation_required="True" toolshed="https://toolshed.g2.bx.psu.edu" />
  </package>
  
  <package name="python3" version="3.4">
    <install version="1.0">
      <actions>
        <action type="download_by_url">https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz</action>

        <action type="set_environment_for_install">
          <repository changeset_revision="63a4a902cda2" name="package_zlib_1_2_8" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu">
            <package name="zlib" version="1.2.8" />
          </repository>
          <repository changeset_revision="c8a5c11cc921" name="package_sqlite_3_8_3" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu">
            <package name="sqlite" version="3.8.3" />
          </repository>
        </action>

        <action type="shell_command">
          # The python build system doesn't check CPATH / C(PLUS)_INCLUDE_PATH which is set by the depended-upon
          # tool definitions for these sources, but it does check CPPFLAGS / LDFLAGS
          # Currently not whitespace-safe, I haven't found a way yet to quote the *FLAGS values so that they are
          # correctly recognized by both the python build process and the compiler. But as galaxy itself isn't
          # whitespace-safe either it doesn't really matter (currently).
          oldifs="$IFS"
          IFS=":"
          for p in $CPLUS_INCLUDE_PATH
          do
              CPPFLAGS="$CPPFLAGS -I$p"
          done
          for p in $LD_LIBRARY_PATH
          do
              LDFLAGS="$LDFLAGS -L$p"
          done
          IFS="$oldifs"
          export CPPFLAGS
          export LDFLAGS

          # Clear variables that may be used in Galaxy's extenal python 2 environment
          unset PYTHONPATH
          unset PYTHONHOME

          echo "Python3 installation: preparing to install ..." \
          &amp;&amp; ./configure -q --prefix="$INSTALL_DIR" --without-ensurepip \
          &amp;&amp; echo "Python3 installation: entering build process ..." \
          &amp;&amp; make -s \
          &amp;&amp; echo "Python3 installation: installing ..." \
          &amp;&amp; make -s install
        </action>

        <action type="set_environment">
          <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable>
          <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$ENV[ZLIB_ROOT_PATH]/lib</environment_variable>
          <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$ENV[SQLITE_ROOT_DIR]/lib</environment_variable>
          <!-- clear PYTHONPATH, otherwise we will get Galaxy's Python 2 libraries in the Python 3 path. -->
          <environment_variable action="set_to" name="PYTHONPATH">$INSTALL_DIR</environment_variable>
          <environment_variable action="set_to" name="PYTHONHOME">$INSTALL_DIR</environment_variable>
          <environment_variable action="set_to" name="PYTHONNOUSERSITE">True</environment_variable>
          <environment_variable action="set_to" name="SITE_PACKAGES_RELPATH">lib/python3.4/site-packages</environment_variable>
          <environment_variable action="prepend_to" name="PKG_CONFIG_PATH">$INSTALL_DIR/lib/pkgconfig</environment_variable>
        </action>
      </actions>
    </install>
    
    <readme>
      The Python programming language version 3.4

      http://www.python.org


      A lean build of Python 3.4.x.
      
      This package receives bug fixes within the 3.4 release series!
      
      Currently, it contains the zlib and sqlite3 modules as the only stdlib 
      modules with external dependencies (handled in here by depending on 
      package_zlib_1_2_8 and package_sqlite_3_8_3). 
      
      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** !! 
      
      
      This version of Python 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:

      &lt;action type="set_environment_for_install"&gt;
        &lt;repository name="package_python_3_4_x_lean" owner="wolma"&gt;
          &lt;package name="python3" version="3.4" /&gt;
        &lt;/repository&gt;
        &lt;!-- other install time dependencies --&gt;
      &lt;/action&gt;

      &lt;action type="shell_command"&gt;       
        # Create virtual environment MY_TOOL_venv
        # pip cannot be used for installation because it depends on ssl, 
        # which this build does not provide
        
        python3 -m venv --without-pip $INSTALL_DIR/MY_TOOL_venv
        
        # optional: install setuptools if required
        
        # install python packages
        # assuming you are in the download directory of the package
        
        $INSTALL_DIR/MY_TOOL_venv/bin/python3 setup.py install 
      &lt;/action&gt;
      
      &lt;action type="set_environment"&gt;
        &lt;!-- prepend the bin directory of the virtual environment to PATH --&gt;
        &lt;environment_variable name="PATH" action="prepend_to"&gt;$INSTALL_DIR/MY_TOOL_venv/bin&lt;/environment_variable&gt;
        &lt;!-- prepend the site-packages directory of the virtual environment
        to PYTHONPATH; using SITE_PACKAGES_RELPATH here makes it easy to migrate to 
        a different version of Python --&gt;
        &lt;environment_variable name="PYTHONPATH" action="prepend_to"&gt;$INSTALL_DIR/MY_TOOL_venv/$SITE_PACKAGES_RELPATH&lt;/environment_variable&gt;
      &lt;/action&gt;
      
    Then, in your MY_TOOL.xml add the following requirements (in that order):

      &lt;requirements&gt;
        &lt;requirement name="package" version="3.4"&gt;python3&lt;/requirement&gt;
        &lt;requirement name="package" version="XXX"&gt;MY_TOOL&lt;/requirement&gt;
      &lt;/requirements&gt;
      
    For a concrete example look at the tool_dependencies file of:
    
        https://toolshed.g2.bx.psu.edu/view/wolma/mimodd
    
    </readme>
  </package>
</tool_dependency>