From 105610c38f667cbc98abf13db5738789c811f3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20O=C5=BCarowski?= <piotr@debian.org> Date: Wed, 15 Sep 2010 00:11:05 +0200 Subject: [PATCH] dh_python2: egg renaming fixed --- debian/changelog | 6 ++++++ debpython/tools.py | 15 +++++++++++++++ dh_python2 | 26 ++++++++++++-------------- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/debian/changelog b/debian/changelog index a480984..1ace5e0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +python-defaults (2.6.6-3) UNRELEASED; urgency=low + + * dh_python2: egg renaming fixed + + -- Piotr Ożarowski <piotr@debian.org> Wed, 15 Sep 2010 00:10:01 +0200 + python-defaults (2.6.6-2) experimental; urgency=low [ Piotr Ożarowski ] diff --git a/debpython/tools.py b/debpython/tools.py index 814c84a..f2e2310 100644 --- a/debpython/tools.py +++ b/debpython/tools.py @@ -27,6 +27,7 @@ from os import symlink from debpython.version import getver log = logging.getLogger(__name__) +EGGnPTH_RE = re.compile(r'(.*?)(-py\d\.\d(?:-[^.]*)?)?(\.egg-info|\.pth)$') SHEBANG_RE = re.compile(r'^#!\s*/usr/bin/(?:env\s+)?(python(\d+\.\d+)?(?:-dbg)?).*') @@ -93,6 +94,20 @@ def shebang2pyver(fname): log.error('cannot open %s', fname) +def clean_egg_name(name): + """Remove Python version and platform name from Egg files/dirs. + + >>> clean_egg_name('python_pipeline-0.1.3_py3k-py3.1.egg-info') + 'python_pipeline-0.1.3_py3k.egg-info' + >>> clean_egg_name('Foo-1.2-py2.7-linux-x86_64.egg-info') + 'Foo-1.2.egg-info' + """ + match = EGGnPTH_RE.match(name) + if match and match.group(2) is not None: + return ''.join(match.group(1, 3)) + return name + + class memoize(object): def __init__(self, func): self.func = func diff --git a/dh_python2 b/dh_python2 index 97e60e7..5eff827 100755 --- a/dh_python2 +++ b/dh_python2 @@ -40,7 +40,7 @@ from debpython.version import SUPPORTED, DEFAULT, \ from debpython.pydist import validate as validate_pydist, \ PUBLIC_DIR_RE from debpython.tools import sitedir, relative_symlink, \ - shebang2pyver + shebang2pyver, clean_egg_name from debpython.option import Option # initialize script @@ -306,21 +306,20 @@ def scan(package, dname=None): if len(root.split('/', 6)) < 6 and (\ root.endswith('/sbin') or root.endswith('/bin') or\ root.endswith('/usr/games')): - # /bin or /usr/bin or /usr/games + # /(s)bin or /usr/(s)bin or /usr/games bin_dir = root # handle some EGG related data (.egg-info dirs) for name in dirs: - match = EGGnPTH_RE.match(name) - if match: + if name.endswith('.egg-info'): if dbg_package: rmtree(join(root, name)) dirs.pop(dirs.index(name)) continue - if match.group(2) is not None: - new_name = ''.join(match.group(1, 3, 4)) - log.debug('renaming %s to %s', name, new_name) - os.rename(join(root, name), join(root, new_name)) + clean_name = clean_egg_name(name) + if clean_name != name: + log.info('renaming %s to %s', name, clean_name) + os.rename(join(root, name), join(root, clean_name)) if root.endswith('.egg-info') and 'requires.txt' in file_names: r['requires.txt'].add(join(root, 'requires.txt')) continue @@ -357,12 +356,11 @@ def scan(package, dname=None): continue # .egg-info files - match = EGGnPTH_RE.match(fn) - if match: - if match.group(2) is not None: - new_name = ''.join(match.group(1, 3, 4)) - log.debug('renaming %s to %s', fn, new_name) - os.rename(join(root, fn), join(root, new_name)) + if fn.endswith('.egg-info'): + clean_name = clean_egg_name(fn) + if clean_name != fn: + log.info('renaming %s to %s', fn, clean_name) + os.rename(join(root, fn), join(root, clean_name)) continue # search for scripts in bin dirs if bin_dir: -- GitLab