diff options
Diffstat (limited to 'setuptools')
| -rwxr-xr-x | setuptools/command/easy_install.py | 10 | ||||
| -rwxr-xr-x | setuptools/command/egg_info.py | 18 | ||||
| -rw-r--r-- | setuptools/dist.py | 20 |
3 files changed, 25 insertions, 23 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 46958625..3507d4ed 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -90,7 +90,7 @@ class easy_install(Command): self.optimize = self.record = None self.upgrade = self.always_copy = self.multi_version = None self.editable = self.no_deps = self.allow_hosts = None - self.root = self.prefix = None + self.root = self.prefix = self.no_report = None # Options not specifiable via command line self.package_index = None @@ -509,7 +509,10 @@ Please make the appropriate changes for your system and try again. requirement = Requirement( distreq.project_name, distreq.specs, requirement.extras ) - + if dist.has_metadata('dependency_links.txt'): + self.package_index.add_find_links( + dist.get_metadata_lines('dependency_links.txt') + ) log.info("Processing dependencies for %s", requirement) try: distros = WorkingSet([]).resolve( @@ -524,7 +527,6 @@ Please make the appropriate changes for your system and try again. "Installed distribution %s conflicts with requirement %s" % e.args ) - if self.always_copy: # Force all the relevant distros to be copied or activated for dist in distros: @@ -862,7 +864,7 @@ you ignore the conflicts, the installed package(s) may not work. def installation_report(self, req, dist, what="Installed"): """Helpful installation message for display to package users""" msg = "\n%(what)s %(eggloc)s%(extras)s" - if self.multi_version: + if self.multi_version and not self.no_report: msg += """ Because this distribution was installed --multi-version or --install-dir, diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index 15d8ae19..d9fcd3f0 100755 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -80,19 +80,19 @@ class egg_info(Command): - def write_or_delete_file(self, what, filename, data): + def write_or_delete_file(self, what, filename, data, force=False): """Write `data` to `filename` or delete if empty If `data` is non-empty, this routine is the same as ``write_file()``. If `data` is empty but not ``None``, this is the same as calling ``delete_file(filename)`. If `data` is ``None``, then this is a no-op unless `filename` exists, in which case a warning is issued about the - orphaned file. + orphaned file (if `force` is false), or deleted (if `force` is true). """ if data: self.write_file(what, filename, data) elif os.path.exists(filename): - if data is None: + if data is None and not force: log.warn( "%s not set in setup(), but %s exists", what, filename ) @@ -326,12 +326,15 @@ def write_toplevel_names(cmd, basename, filename): -def write_arg(cmd, basename, filename): +def overwrite_arg(cmd, basename, filename): + write_arg(cmd, basename, filename, True) + +def write_arg(cmd, basename, filename, force=False): argname = os.path.splitext(basename)[0] value = getattr(cmd.distribution, argname, None) if value is not None: value = '\n'.join(value)+'\n' - cmd.write_or_delete_file(argname, filename, value) + cmd.write_or_delete_file(argname, filename, value, force) def write_entries(cmd, basename, filename): ep = cmd.distribution.entry_points @@ -347,7 +350,7 @@ def write_entries(cmd, basename, filename): data.append('[%s]\n%s\n\n' % (section,contents)) data = ''.join(data) - cmd.write_or_delete_file('entry points', filename, data) + cmd.write_or_delete_file('entry points', filename, data, True) def get_pkg_info_revision(): # See if we can get a -r### off of PKG-INFO, in case this is an sdist of @@ -364,6 +367,3 @@ def get_pkg_info_revision(): - - - diff --git a/setuptools/dist.py b/setuptools/dist.py index 06e7a71a..8e34f35d 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -211,16 +211,16 @@ class Distribution(_Distribution): self.features = {} self.dist_files = [] self.patch_missing_pkg_info(attrs) + # Make sure we have any eggs needed to interpret 'attrs' + if attrs and 'dependency_links' in attrs: + self.dependency_links = attrs.pop('dependency_links') + assert_string_list(self,'dependency_links',self.dependency_links) if attrs and 'setup_requires' in attrs: - # Make sure we have any eggs needed to interpret 'attrs' self.fetch_build_eggs(attrs.pop('setup_requires')) - for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'): if not hasattr(self,ep.name): setattr(self,ep.name,None) - _Distribution.__init__(self,attrs) - if isinstance(self.metadata.version, (int,long,float)): # Some people apparently take "version number" too literally :) self.metadata.version = str(self.metadata.version) @@ -246,7 +246,6 @@ class Distribution(_Distribution): def finalize_options(self): _Distribution.finalize_options(self) - if self.features: self._set_global_opts_from_features() @@ -256,7 +255,6 @@ class Distribution(_Distribution): ep.require(installer=self.fetch_build_egg) ep.load()(self, ep.name, value) - def fetch_build_egg(self, req): """Fetch an egg needed for building""" try: @@ -273,18 +271,20 @@ class Distribution(_Distribution): for key in opts.keys(): if key not in keep: del opts[key] # don't use any other settings + if self.dependency_links: + links = self.dependency_links[:] + if 'find_links' in opts: + links = opts['find_links'][1].split() + links + opts['find_links'] = ('setup', links) cmd = easy_install( dist, args=["x"], install_dir=os.curdir, exclude_scripts=True, always_copy=False, build_directory=None, editable=False, - upgrade=False, multi_version=True + upgrade=False, multi_version=True, no_report = True ) cmd.ensure_finalized() self._egg_fetcher = cmd - return cmd.easy_install(req) - - def _set_global_opts_from_features(self): """Add --with-X/--without-X options based on optional features""" |
