Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
182 lines (144 sloc) 5.92 KB

Invenio Fabric

Fabric library tasks for working with Invenio



Important: Invenio Fabric requires you to already have system dependencies installed (e.g. OpenOffice etc). Please see or e.g. for how to install system dependencies on your system.

Python 2.4: If you are planning to use Pythonbrew with Python 2.4, you must install virtualenv 1.7.2 (or lower), as virtualenv 1.8 dropped support for Python 2.4.


  • Install Virtualenv

Run pip install virtualenv or install via your favourite package manager (e.g. sudo aptitude install python-virtualenv).

  • Install Virtualenvwrapper
pip install virtualenvwrapper
export WORKON_HOME=~/envs
mkdir -p $WORKON_HOME
source /usr/local/bin/

Add line 2 and 4 to your shell startup file. Also note that depending on your system might be installed at a different location than /usr/local/bin. For more elaborate documentation, see

  • Install Pythonbrew (optional)

Pythonbrew is optional, but it allows your to install several different python versions without messing up your system Python. To install Pythonbrew run:

curl -kL | bash

and add following to your shell startup file.

[[ -s $HOME/.pythonbrew/etc/bashrc ]] && source $HOME/.pythonbrew/etc/bashrc

For more elaborate installation instructions please see You should now be able to run e.g. pythonbrew list or to install Python 2.4.6 run pythonbrew install 2.4.6.


Create a new virtualenv (optional):

mkvirtualenv fabenv
workon fabenv

Then install invenio-fabric via PyPI:

pip install invenio-fabric
export CFG_SRCDIR=~/private/src

Add the last line to your shell startup file.

Important: CFG_SRCDIR should not point to your Invenio source directory, but to one level above. Also, your Invenio source code directory should be named invenio. See directory layout below.

$ export CFG_SRCDIR=~/src
$ ls -1
$ cd CFG_SRCDIR/invenio/
$ ls -1

Note, you do not need to specify CFG_SRCDIR, in which case the Fabric task will checkout a fresh copy from the GIT repository.

Usage example

To install Invenio master branch

workon fabenv
cd share/atlantis/
fab loc bootstrap
fab loc invenio_create_demosite
workon atlantis

or alternatively to bootstrap Invenio next:

fab loc:py=27,ref=next bootstrap
fab loc:py=27,ref=next devserver_install_flask
workon atlantis27next

Invenio Fabric is only a library of Fabric tasks, so for most projects you need to create your own For a complete example for Atlantis Institute of Fictive Science please see examples/atlantis/.

Following is an example of basic for Atlantis.

from fabric.api import task
from inveniofab.api import *
import os

def loc(activate=True, py=None, ref=None, **kwargs):
    """ Local environment (example: loc:py=24,ref=maint-1.1) """
    if 'name' not in kwargs:
        kwargs['name'] = env_make_name('atlantis', py or '', ref or '')
    env = env_create('loc', activate=activate, python=py, **kwargs)
    return env_override(env, 'invenio', ref)

With that you have the following commands available:

    apache_restart           Restart Apache
    apache_start             Restart Apache
    apache_stop              Restart Apache
    bootstrap                Bootstrap Invenio installation
    devserver_conf           Upload and update Invenio configuration
    devserver_install_flask  Install a Flask devserver
    drop                     Remove installation
    dump                     Archive installation
    install                  Install changes
    invenio_conf             Upload and update Invenio configuration
    invenio_create_demosite  Create Invenio demo site
    invenio_createdb         Create Invenio tables
    invenio_upgrade          Upgrade Invenio
    load                     Load archived installation
    loc                      Local environment (example: loc:py=24,ref=maint-1.1)
    mysql_copy               Copy database from latest available dump.
    mysql_createdb           Create database and user
    mysql_dropdb             Drop database and user
    mysql_dump               Dump database to file
    mysql_load               Load MySQL dump file
    repo_configure           Configure repository
    repo_install             Run configure and make
    repo_make                Run make in repository
    repo_prepare             Prepare source code after fresh checkout
    repo_setup               Clone repository
    repo_update              Pull repository updates
    test_clean               Clean Invenio logs and temporary files
    test_dump                Dump a test environment
    test_load                Load test environment
    test_reset_admin         Reset admin password
    venv_create              Create virtualenv environment
    venv_drop                Drop virtualenv environment
    venv_dump                Archive a virtualenv
    venv_load                Load an archived virtualenv
    venv_pyuno_install       Install Python OpenOffice binding
    venv_requirements        Install Python requirements

Command Reference

Many commands takes some parameters. For now, please look in the source code, until I get time to document them.