diff options
author | PJ Eby <distutils-sig@python.org> | 2005-12-14 23:47:22 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2005-12-14 23:47:22 +0000 |
commit | 1b77dd8e7845b5ac38fc7367796290dd65b8c531 (patch) | |
tree | bbb46c896f6e332e227e6d8983ea55cb6b7a9bd9 /setuptools/command/easy_install.py | |
parent | b9ef25271341903cdf75ea50a49f5d8b5d6cfd66 (diff) | |
download | external_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-x | setuptools/command/easy_install.py | 18 |
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) |