summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpombredanne <devnull@localhost>2013-09-10 16:58:58 +0200
committerpombredanne <devnull@localhost>2013-09-10 16:58:58 +0200
commita102ba3c5b3698efe6be4c4363bb7cc07bc63c64 (patch)
treef856a48f34c22f60f5ef5f8861cdfdd746973c36
parentf30db53fdd63bf4d6f39ebbdb759fc6bc1ed274b (diff)
downloadwheel-a102ba3c5b3698efe6be4c4363bb7cc07bc63c64.tar.gz
Add support for converting Eggs dir as created in buildout eggs-directorywheel_from_eggdir
-rwxr-xr-xwheel/egg2wheel.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/wheel/egg2wheel.py b/wheel/egg2wheel.py
index 2459931..66c99c7 100755
--- a/wheel/egg2wheel.py
+++ b/wheel/egg2wheel.py
@@ -5,9 +5,9 @@ import sys
import tempfile
import zipfile
import wheel.bdist_wheel
+import shutil
import distutils.dist
from distutils.archive_util import make_archive
-from shutil import rmtree
from argparse import ArgumentParser
from glob import iglob
@@ -16,9 +16,20 @@ egg_info_re = re.compile(r'''(?P<name>.+?)-(?P<ver>.+?)
def egg2wheel(egg_path, dest_dir):
egg_info = egg_info_re.match(os.path.basename(egg_path)).groupdict()
- egg = zipfile.ZipFile(egg_path)
dir = tempfile.mkdtemp(suffix="_e2w")
- egg.extractall(dir)
+ if os.path.isfile(egg_path):
+ # assume we have a bdist_egg otherwise
+ egg = zipfile.ZipFile(egg_path)
+ egg.extractall(dir)
+ else:
+ # support buildout-style installed eggs directories
+ for pth in os.listdir(egg_path):
+ src = os.path.join(egg_path, pth)
+ if os.path.isfile(src):
+ shutil.copy2(src, dir)
+ else:
+ shutil.copytree(src, os.path.join(dir, pth))
+
dist_info = "%s-%s" % (egg_info['name'], egg_info['ver'])
abi = 'none'
pyver = egg_info['pyver'].replace('.', '')
@@ -41,7 +52,7 @@ def egg2wheel(egg_path, dest_dir):
bw.write_record(dir, dist_info_dir)
filename = make_archive(os.path.join(dest_dir, wheel_name), 'zip', root_dir=dir)
os.rename(filename, filename[:-3] + 'whl')
- rmtree(dir)
+ shutil.rmtree(dir)
def main():
parser = ArgumentParser()