← Back to team overview

launchpad-dev team mailing list archive

Re: Problems with utilities/ec2 test -s "..." on Jaunty (and possibly on Karmic too)?

 

Gavin Panella wrote:
> The workaround:
> 
>   $ cd <your branch>
>   $ PYTHONPATH=lib python -c \
>       'from devscripts.ec2test.entrypoint import main; main()' \
>       test -s "..."
> 
> The explanation:
> 
> A prominent Launchpad developer - who does not wish to be named
> because he's still on Jaunty - reported some problems with using
> utilities/ec2 recently.

Would this developer's unix username be 'tom' by any chance? :-)

> A change had landed that made this script use
> the buildout managed libs and changed the interpreter to python2.4.

Right, there was a reason that it wasn't like that to start with...

> However, he now gets an error about not being able to import
> bzrlib.plugins.pqm.pqm_submit:
> 
>   Traceback (most recent call last):
>     File "./utilities/ec2", line 12, in ?
>       from devscripts.ec2test.entrypoint import main
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/entrypoint.py", line 17, in ?
>       from devscripts.ec2test import builtins
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/builtins.py", line 27, in ?
>       from devscripts.ec2test.testrunner import EC2TestRunner, TRUNK_BRANCH
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/testrunner.py", line 21, in ?
>       from bzrlib.plugins.pqm.pqm_submit import (
>   ImportError: No module named pqm.pqm_submit
> 
> This is because the bzrlib managed by buildout is masking the system
> installed bzr-pqm. One way round this is to install the pqm plugin
> into ~/.bazaar/plugins/pqm, but this caused another error on his
> Jaunty machine:
> 
>   Traceback (most recent call last):
>     File "./utilities/ec2", line 13, in ?
>       main()
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/entrypoint.py", line 43, in main
>       controller.run(args)
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/controller.py", line 145, in run
>       run_bzr(argv)
>     File "/home/tom/canonical/lp-sourcedeps/eggs/bzr-2.0.0_lp_1-py2.4-linux-i686.egg/bzrlib/commands.py", line 1037, in run_bzr
>       ret = run(*run_argv)
>     File "/home/tom/canonical/lp-sourcedeps/eggs/bzr-2.0.0_lp_1-py2.4-linux-i686.egg/bzrlib/commands.py", line 654, in run_argv_aliases
>       return self.run(**all_cmd_args)
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/builtins.py", line 293, in run
>       instance = EC2Instance.make(
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/instance.py", line 209, in make
>       account = credentials.connect(name)
>     File "/home/tom/canonical/lp-branches/trunk/lib/devscripts/ec2test/credentials.py", line 63, in connect
>       conn = boto.connect_ec2(self.identifier, self.secret)
>     File "/var/lib/python-support/python2.4/boto/__init__.py", line 94, in connect_ec2
>       from boto.ec2.connection import EC2Connection
>     File "/var/lib/python-support/python2.4/boto/ec2/connection.py", line 31, in ?
>       from boto.connection import AWSQueryConnection
>     File "/var/lib/python-support/python2.4/boto/connection.py", line 44, in ?
>       import hashlib
>   ImportError: No module named hashlib
> 
>>From previous attempts at using python2.4 with boto (via
> devscripts.ec2test), I know that trying to resolve this leads down a
> short rabbit hole with the conclusion that boto needs python2.5 or
> later on Jaunty. The boto README states:
> 
>   Efforts are made to keep boto compatible with Python 2.4.x but no
>   guarantees are made.
> 
> The version on Jaunty is 1.5b at present. The version on Karmic is
> 1.8d, which currently does seem to be compatible with python2.4, but
> it's not guaranteed to stay that way (and it may not be compatible for
> all operations).
> 
> I think this is the current state of things:
> 
>  * You're probably fine on Karmic: bzrlib.plugin.load_plugins seems
>    able to find the bzr-pqm plugin as long as it's either in
>    ~/.bazaar/plugins or a system path.

This is really a bug though; the buildout-managed bzrlib should not be
finding the system-installed bzr-pqm plugin, and indeed bzr.dev trunk
has fixed this bug so at some point we'll update bzr and break this again.

>  * On Jaunty this does not seem to be the case, and bzr-pqm needs to
>    be installed into ~/.bazaar/plugins:
> 
>      bzr branch lp:bzr-pqm ~/.bazaar/plugins/pqm
> 
>  * Either way, it's probably better to bypass the utilities/ec2 test
>    script altogether for now using the workaround at the top. It's not
>    worth fixing utilities/ec2 because:
> 
>  * Launchpad has been made to run on python2.5 and may be running on
>    python2.6 by the end of the week. Once that work has landed this
>    will cease to be an issue.

We'll still need to resolve the system bzr-pqm/buildout bzr problem
though.  Given that only devscripts.ec2test needs the pqm functionality,
that script can take steps to add pqm to the plugin path somehow or
other, or we could add bzr-pqm to sourcecode (you can't put a bzr plugin
in an egg) or we could remove the dependency on bzr-pqm somehow.

Cheers,
mwh



Follow ups

References