[Buildbot-commits] [Buildbot] #2369: Hard to deploy buildbot in virtualenv with pip without network connection
Buildbot
nobody at buildbot.net
Fri Sep 14 05:23:55 UTC 2012
#2369: Hard to deploy buildbot in virtualenv with pip without network connection
-------------------+-----------------------
Reporter: dank | Owner:
Type: defect | Status: new
Priority: minor | Milestone: undecided
Version: master | Keywords:
-------------------+-----------------------
I'm using pip -emaster to deploy from source (since I'm trying to
help test before release), and this is complicated on isolated
machines by buildbot-master's use of the "setup_requires" keyword arg in
its setup.py.
I installed python and virtualenv with
sudo apt-get install python-dev python-virtualenv
and am using the commands
$ PIP_CACHE=$HOME/pip_cache
$ virtualenv --no-site-packages sandbox
$ cd sandbox
$ . bin/activate
$ pip install --no-install --use-mirrors -I --download=$PIP_CACHE
-emaster
to install buildbot from source while saving downloaded packages.
Then, on an isolated host, after copying ~/pip_cache, I run
$ PIP_CACHE=$HOME/pip_cache
$ virtualenv --no-site-packages sandbox
$ cd sandbox
$ . bin/activate
$ pip install --find-links=file://$PIP_CACHE --no-index --index-
url=file:///dev/null -emaster
in an attempt to get rid of the need for an internet connection.
( As recommended in the second answer in
stackoverflow.com/questions/4806448/how-do-i-install-from-a-local-cache-
with-pip )
This does fill the cache directory with some tarballs,
but sadly, installing on the isolated system fails with
Running setup.py egg_info for package from file:///home/buildbot/master-
state/sandbox/buildbot-git/master
Download error on http://pypi.python.org/simple/setuptools_trial/:
[Errno 101] Network is unreachable -- Some packages may not be found!
...
distutils.errors.DistutilsError: Could not find suitable distribution
for Requirement.parse('setuptools-trial')
According to the virtualenv guys:
-- snip --
This problem is caused by buildbot-master's use of the "setup_requires"
keyword arg in its setup.py. This kwarg causes setuptools to try to go
download the listed dependency immediately from PyPI whenever setup.py
is executed, without going through pip's package-finder at all. It's
quite difficult for pip to intervene here, since pip has to execute
setup.py in order to even obtain the most basic metadata about a package.
More explanation here: github.com/pypa/pip/issues/410
That issue also has a workaround that might help you - if a .egg file
for the named setup_requires dependency is already present in the
directory next to the setup.py that requires it, setuptools will use
that and not go to PyPI. So you should be able to just add a
setuptools-trial egg manually in master/ next to setup.py and avoid the
network access. (To be honest, I would recommend to the authors of
buildbot to simply check a setuptools-trial egg into git at that
location and pre-empt this problem for all users). "
-- snip --
I haven't tried the workaround yet (not sure what a setuptools-trial
egg is or where I'd get one :-).
--
Ticket URL: <http://trac.buildbot.net/ticket/2369>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the Commits
mailing list