← Back to team overview

arsenal-user team mailing list archive

[Proposal] Deployment process of python modules to cranberry


One of the issues with adding dependencies to arsenal is that they have
to be installed on cranberry, and soliciting IS to install .debs
globally is difficult (and presumably slow).

The established workaround for that has been to just make bzr checkouts
of the needed components, placed whereever arsenal is installed.  There
are a few problems with this approach however:

  1.  Wastes disk space having N copies of each dependency present

  2.  Dependency versions can vary from one person to another

  3.  Running snapshots rather than official releases means more chances
      of running untested code and thus breaking.

  4.  Deployment of emergency fixes in a module (such as workarounds in
      lpltk to changed behaviors in Launchpad) is complicated since
      there are multiple instances and you may not have write-access to
      all of them.

  5.  Each arsenal user has to be involved in updating their
      dependencies manually.

I would like to propose the following process:

  1.  We use /srv/qa.ubuntu.com/usr/stable as $ARSENAL_USR

      Basically we just need a shared location we can all access,
      preferrably outside the www root so it's not visible via http.

      $ ARSENAL_USR=/srv/qa.ubuntu.com/usr/stable

  2.  Instead of running out of bzr checkouts, we run actual installed
      instances of each dependency.  Installation is done like this:

      $ python setup.py install --home=$ARSENAL_USR
      $ chmod -R g+w $ARSENAL_USR
      $ find $ARSENAL_USR | wc -l

  3.  Use the $PYTHONPATH environment variable to augment the include

      $ PYTHONPATH=$ARSENAL_USR $ARSENAL_USR/bin/current-ubuntu-stable-codename

  4.  For development versions of arsenal if we need newer versions of
      modules, these be placed in /srv/qa.ubuntu.com/usr/devel


  5.  We place the extracted tarballs or vcs checkouts in a common
      area, such as /srv/qa.ubuntu.com/src/{stable|devel}

      The reasoning for this is so if we need to do a reinstall, we can
      easily run through all the dependencies and do so.  In fact, we
      probably ought to script it so that we can delete and rebuild
      $ARSENAL_USR easily any time.

Thoughts on this?  Before we do it, I'd like to get 2-3 ACKs (including
one from Ursula) with no NAKs.


Follow ups