← Back to team overview

arsenal-user team mailing list archive

Re: [Proposal] Deployment process of python modules to cranberry

 

Resending since there was no feedback from the first posting.
This is going to affect everyone so would like to ensure we have
consensus on the plan before rolling it out.

On Fri, May 18, 2012 at 05:23:59PM -0700, Bryce Harrington wrote:
> 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
>       71
> 
>   3.  Use the $PYTHONPATH environment variable to augment the include
>       path:
> 
>       $ PYTHONPATH=$ARSENAL_USR $ARSENAL_USR/bin/current-ubuntu-stable-codename
>       precise
> 
>   4.  For development versions of arsenal if we need newer versions of
>       modules, these be placed in /srv/qa.ubuntu.com/usr/devel
> 
>       $ ARSENAL_USR_DEVEL=$ARSENAL_USR/../devel
>       $ PYTHONPATH=$ARSENAL_USR_DEVEL:$ARSENAL_USR \
>           $ARSENAL_USR_DEVEL/bin/current-ubuntu-development-codename
>       quantal
> 
>   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.
> 
> Bryce


Follow ups

References