Wednesday, May 21, 2014

edx-platform - A first look at paver in Open edX

Yesterday, I noted that the edx team has moved the edx-platform build system away from rake and use paver instead:

And when I was trying to create a script to update my custom theme from the git repo, I got some feedback and advice to use the paver tool of edx-platform instead for the sake of simplicity :

So, I took a while to look into the /edx-platfrom/paverlib/ to see how to use paver, what are the available options of paver in Open edX? Here they are:

edxapp@demo:/edx/app/edxapp/edx-platform$ paver help
Usage: paver [global options] taskname [task options] [taskname [taskoptions]]

  --version             show program's version number and exit
  -n, --dry-run         don't actually do anything
  -v, --verbose         display all logging output
  -q, --quiet           display only errors
  -i, --interactive     enable prompting
  -f FILE, --file=FILE  read tasks from FILE []
  -h, --help            display this help information
                        propagate traceback, do not hide it under
                        BuildFailure(for debugging)

Tasks from paver.misctasks:
  paverdocs       - Open your web browser and display Paver's documentation.
Tasks from paver.tasks:
  help            - This help display.

Tasks from pavelib.servers:
  devstack        - Start the devstack lms or studio server

Tasks from pavelib.assets:
  watch_assets    - Watch for changes to asset files, and regenerate js/css

Tasks from pavelib.servers:
  celery          - Runs Celery workers
  check_settings  - Checks settings files

Tasks from pavelib.assets:
  update_assets   - Compile CoffeeScript and Sass, then collect static assets

Tasks from pavelib.servers:
  lms             - Run the LMS server

Tasks from paver.misctasks:
  generate_setup  - Generates a file that uses paver behind the scenes

Tasks from pavelib.servers:
  update_db       - Runs syncdb and then migrate

Tasks from pavelib.prereqs:
  install_prereqs - Installs Ruby, Node and Python prerequisites

Tasks from paver.misctasks:
  minilib         - Create a Paver mini library that contains enough for a simple to be installed using a generated

Tasks from pavelib.servers:
  run_all_servers - Runs Celery workers, Studio, and LMS
  studio          - Run the Studio server

Tasks from
  build_docs      - Invoke sphinx 'make build' to generate docs

For example, to compile the assets (theme):

paver update_assets lms --settings=aws

I also tried to add an option to pavelib/ update_assets to allow me to pull theme from the git repo:


paver update_assets lms --settings=aws --pull-repo

The above command will pull the theme from master branch of the git repo, and then doing the assets compiling.