Developer guide

View On GitHub

In the build guide we discussed briefly how to create a build package. If you are a developer and have a custom setup of WebApollo or JBrowse, then you can use this guide to compile your own release package.

Pre-requisites for developers

You will need the system pre-requisites as well as some some additional dependencies for the javascript compilation (NodeJS).

The easiest way to get NodeJS on ubuntu is nodejs-legacy. On centos, it's easiest to use npm in the epel-release repository.

# install nodejs (debian/ubuntu)
sudo apt-get install git nodejs-legacy
# install nodejs (centOS/redhat)
sudo yum install epel-release
sudo yum install git npm
# install nodejs (macOSX/homebrew)
brew install node

We will also need two extra perl packages to run the build

# Used to make the build process smoother
cpanm DateTime Text::Markdown

Ant based compilation of the client-side code

The current preferred method for building a release is using the apollo script

apollo release

This will automatically call javascript minimization scripts and create a release package of jbrowse in src/main/webapp/jbrowse and the compiled WAR file in target/apollo-1.0.2.war (for example).

If you make changes to the javascript, you will probably need to delete src/main/webapp/jbrowse and recompile the release with "apollo release". Other changes can be simply updated using "apollo deploy" which will update the war file.

Makefile based compilation of the client-side code

As an alternative to the ant/maven workflow, Web Apollo client side code can be compiled using the Makefile which can be used for multiple Web Apollo deployments. Example:

make -f build/Makefile create-precompiled

This step will do the following

  • Clean any old builds
  • Download jbrowse from github
  • Compile and minimize the JBrowse and WebApollo javascript files
  • Output two packages, a release and debug package

Note: you can set your own JBrowse repo using JBROWSE_GIT_DIRECTORY on the command line if you don't want the Makefile to download jbrowse, e.g.:

make -f build/Makefile create-precompiled JBROWSE_GIT_DIRECTORY=/home/devel/jbrowse_repo/

This will use your custom jbrowse repository instead of taking the default action of cloning from https://github.com/GMOD/jbrowse.git.

Once the client is compiled, you can use apollo deploy or apollo run to complete the custom build. See the build guide for more details.