Commit b69e447a authored by Jason R. Coombs's avatar Jason R. Coombs

Merged fix for issue 227. All tests pass on Python 2.7.

--HG--
branch : distribute
extra : rebase_source : f219d7fe842fb516c599ae0259748c90edeea2c5
parents 6f830000 cf4a8942
...@@ -7,6 +7,9 @@ CHANGES ...@@ -7,6 +7,9 @@ CHANGES
------ ------
* Issue #183: Symlinked files are now extracted from source distributions. * Issue #183: Symlinked files are now extracted from source distributions.
* Issue #227: Easy_install fetch parameters are now passed during the
installation of a source distribution; now fulfillment of setup_requires
dependencies will honor the parameters passed to easy_install.
------ ------
0.6.25 0.6.25
......
...@@ -21,6 +21,7 @@ from distutils.sysconfig import get_python_lib, get_config_vars ...@@ -21,6 +21,7 @@ from distutils.sysconfig import get_python_lib, get_config_vars
from distutils.errors import DistutilsArgError, DistutilsOptionError, \ from distutils.errors import DistutilsArgError, DistutilsOptionError, \
DistutilsError, DistutilsPlatformError DistutilsError, DistutilsPlatformError
from distutils.command.install import INSTALL_SCHEMES, SCHEME_KEYS from distutils.command.install import INSTALL_SCHEMES, SCHEME_KEYS
from setuptools.command import setopt
from setuptools.archive_util import unpack_archive from setuptools.archive_util import unpack_archive
from setuptools.package_index import PackageIndex from setuptools.package_index import PackageIndex
from setuptools.package_index import URL_SCHEME from setuptools.package_index import URL_SCHEME
...@@ -1082,11 +1083,14 @@ See the setuptools documentation for the "develop" command for more info. ...@@ -1082,11 +1083,14 @@ See the setuptools documentation for the "develop" command for more info.
def build_and_install(self, setup_script, setup_base): def build_and_install(self, setup_script, setup_base):
args = ['bdist_egg', '--dist-dir'] args = ['bdist_egg', '--dist-dir']
dist_dir = tempfile.mkdtemp( dist_dir = tempfile.mkdtemp(
prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script) prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script)
) )
try: try:
self._set_fetcher_options(os.path.dirname(setup_script))
args.append(dist_dir) args.append(dist_dir)
self.run_setup(setup_script, setup_base, args) self.run_setup(setup_script, setup_base, args)
all_eggs = Environment([dist_dir]) all_eggs = Environment([dist_dir])
eggs = [] eggs = []
...@@ -1101,6 +1105,30 @@ See the setuptools documentation for the "develop" command for more info. ...@@ -1101,6 +1105,30 @@ See the setuptools documentation for the "develop" command for more info.
rmtree(dist_dir) rmtree(dist_dir)
log.set_verbosity(self.verbose) # restore our log verbosity log.set_verbosity(self.verbose) # restore our log verbosity
def _set_fetcher_options(self, base):
"""
When easy_install is about to run bdist_egg on a source dist, that
source dist might have 'setup_requires' directives, requiring
additional fetching. Ensure the fetcher options given to easy_install
are available to that command as well.
"""
# find the fetch options from easy_install and write them out
# to the setup.cfg file.
ei_opts = self.distribution.get_option_dict('easy_install').copy()
fetch_directives = (
'find_links', 'site_dirs', 'index_url', 'optimize',
'site_dirs', 'allow_hosts',
)
fetch_options = {}
for key, val in ei_opts.iteritems():
if key not in fetch_directives: continue
fetch_options[key.replace('_', '-')] = val[1]
# create a settings dictionary suitable for `edit_config`
settings = dict(easy_install=fetch_options)
cfg_filename = os.path.join(base, 'setup.cfg')
setopt.edit_config(cfg_filename, settings)
def update_pth(self,dist): def update_pth(self,dist):
if self.pth_file is None: if self.pth_file is None:
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment