We're using easy_install 0.6c9 or greater. Our systems are behind a firewall with a custom cheeseshop. All required packages are available on the cheeseshop. However, we seem to be unable to install source distributions, because the dependencies specified in setup_requires aren't resolved with the parameters (allow-hosts and find-links) passed to easy_install. Here's a transcript of what happens (with #comments).
(sandbox)jason.coombs@host:~/sandbox$ easy_install -mZ -H cheeseshop.company.com -f http://cheeseshop.company.com jaraco.compat Searching for jaraco.compat Reading http://cheeseshop.company.com Best match: jaraco.compat 0.1 Downloading http://cheeseshop.company.com/jaraco.compat-0.1.tar.gz Processing jaraco.compat-0.1.tar.gz # it found the source distribution, and now runs setup.py from it Running jaraco.compat-0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-WMIHzo/jaraco.compat-0.1/egg-dist-tmp-XrEJAr # the source distribution specifies setup_requires="hgtools>=0.4" Searching for hgtools>=0.4 Reading http://pypi.python.org/simple/hgtools/ # it stalls here for a long time trying to reach a host which is not accessible due to the firewall Download error: (110, 'Connection timed out') -- Some packages may not be found! Couldn't find index page for 'hgtools' (maybe misspelled?) Scanning index of all packages (this may take a while) Reading http://pypi.python.org/simple/ # same thing - stalls a long time Download error: (110, 'Connection timed out') -- Some packages may not be found! No local packages or download links found for hgtools>=0.4 Best match: None Traceback (most recent call last): # details omitted AttributeError: 'NoneType' object has no attribute 'clone' # I think this is the error for "not found" when mercurial is present
I understand the challenge here - setuptools is launching setup.py from the source distribution for jaraco.compat, and setup.py doesn't accept parameters for 'allow_hosts' and 'find_links'.
Is there any way that we can use source distributions in this environment (without customizing each source distribution for the environment)? If not, perhaps an improvement could be added to setuptools to populate a setup.cfg file when installing source distributions to include the easy_install flags supplied to the requiring install.
In other words, the command "easy_install -f http://foo.org -H foo.org source.package" would
1) Download the source package. 2) Expand it to a temporary directory. 3) Create or customize the setup.cfg for that package (or use --command and --option) to include dependency_links=['http://foo.org'] and an equivalent parameter with the same effect as allow_hosts. 4) Run setup.py as above.
I'm not sure all of this is possible or even desirable. I appreciate any suggestions you may have on this scenario.
I wouldn't be surprised too if someone's already encountered this, but I was unable to find any resources on it. If that's the case, please accept my apologies for repeating the question and direct me to the resource or search terms that will help me locate it.
Much obliged, Jason