aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/easy_install.py
diff options
context:
space:
mode:
authorPJ Eby <distutils-sig@python.org>2005-12-14 23:47:22 +0000
committerPJ Eby <distutils-sig@python.org>2005-12-14 23:47:22 +0000
commit1b77dd8e7845b5ac38fc7367796290dd65b8c531 (patch)
treebbb46c896f6e332e227e6d8983ea55cb6b7a9bd9 /setuptools/command/easy_install.py
parentb9ef25271341903cdf75ea50a49f5d8b5d6cfd66 (diff)
downloadexternal_python_setuptools-1b77dd8e7845b5ac38fc7367796290dd65b8c531.tar.gz
external_python_setuptools-1b77dd8e7845b5ac38fc7367796290dd65b8c531.tar.bz2
external_python_setuptools-1b77dd8e7845b5ac38fc7367796290dd65b8c531.zip
Support full roundtrip translation of eggs to and from ``bdist_wininst``
format. Running ``bdist_wininst`` on a setuptools-based package wraps the egg in an .exe that will safely install it as an egg (i.e., with metadata and entry-point wrapper scripts), and ``easy_install`` can turn the .exe back into an ``.egg`` file or directory and install it as such. At this point, it should also be possible to "system package" any egg, complete with wrapper scripts, and at least bdist_wininst works now. More testing is needed for at least bdist_dumb and bdist_rpm. --HG-- branch : setuptools extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4041692
Diffstat (limited to 'setuptools/command/easy_install.py')
-rwxr-xr-xsetuptools/command/easy_install.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index a79c6452..40504afc 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -579,20 +579,19 @@ class easy_install(Command):
raise DistutilsError(
"%s is not a valid distutils Windows .exe" % dist_filename
)
-
# Create a dummy distribution object until we build the real distro
dist = Distribution(None,
project_name=cfg.get('metadata','name'),
- version=cfg.get('metadata','version'),
- platform="win32"
+ version=cfg.get('metadata','version'), platform="win32"
)
# Convert the .exe to an unpacked egg
egg_path = dist.location = os.path.join(tmpdir, dist.egg_name()+'.egg')
egg_tmp = egg_path+'.tmp'
- pkg_inf = os.path.join(egg_tmp, 'EGG-INFO', 'PKG-INFO')
+ egg_info = os.path.join(egg_tmp, 'EGG-INFO')
+ pkg_inf = os.path.join(egg_info, 'PKG-INFO')
ensure_directory(pkg_inf) # make sure EGG-INFO dir exists
-
+ dist._provider = PathMetadata(egg_tmp, egg_info) # XXX
self.exe_to_egg(dist_filename, egg_tmp)
# Write EGG-INFO/PKG-INFO
@@ -603,13 +602,14 @@ class easy_install(Command):
if k<>'target_version':
f.write('%s: %s\n' % (k.replace('_','-').title(), v))
f.close()
-
+ script_dir = os.path.join(egg_info,'scripts')
+ self.delete_blockers( # delete entry-point scripts to avoid duping
+ [os.path.join(script_dir,args[0]) for args in get_script_args(dist)]
+ )
# Build .egg file from tmpdir
bdist_egg.make_zipfile(
- egg_path, egg_tmp,
- verbose=self.verbose, dry_run=self.dry_run
+ egg_path, egg_tmp, verbose=self.verbose, dry_run=self.dry_run
)
-
# install the .egg
return self.install_egg(egg_path, tmpdir)