Galaxy Dependencies Management

πŸ“Š View as slides

Learning Questions

  • How does Galaxy manage dependencies?

  • What is the virtualenv used for?

  • Where do JavaScript dependencies come from?

Learning Objectives

  • Understand Python dependency management

  • Understand JavaScript dependency management

  • Learn about the wheels server

Dependencies - Python

script/common_startup.sh sets up a virtualenv with required dependencies in $GALAXY_ROOT/.venv (or $GALAXY_VIRTUAL_ENV if set).

  • Check for existing virtual environment, if it doesn’t exist check for virtualenv.

  • If virtualenv exists, use it. Otherwise download it as a script and setup a virtual environment using it.

  • . "$GALAXY_VIRTUAL_ENV/bin/activate"

  • Upgrade to latest pip to allow use of binary wheels.

  • pip install -r requirements.txt --index-url [https://wheels.galaxyproject.org/simple](https://wheels.galaxyproject.org/simple`)

  • Install dozens of dependencies.

Dependencies - JavaScript

  • Dependencies are defined in client/package.json.

  • These are fetched from npm and compiled into bundles as part of make client and related Makefile targets.

Key Takeaways

  • Python: virtualenv with pip and wheels from galaxyproject.org

  • JavaScript: npm/yarn with package.json

  • No compilation required by default

  • Binary wheels for fast installation