From 7b5bd72e151115c25a8f144de2a74d49b84fca6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20O=C5=BCarowski?= <piotr@debian.org> Date: Tue, 21 Jun 2011 23:26:27 +0200 Subject: [PATCH] private dirs: if there is more than one Python version parsed from shebangs, byte-compile the dir with default Python version (or the one requested via X-Python-Version) instead od failing. Add dependency for each (supported) interpreter detected in shebangs --- debian/changelog | 4 ++++ debpython/depends.py | 28 ++++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index d3bbb28..68190a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,10 @@ python-defaults (2.7.2-2) UNRELEASED; urgency=low - warn if public Python extension is linked to libpython2.X, fail if it's linked to a wrong version - warn if both XS-Python-Version and X-Python-Version are defined + - private dirs: if there is more than one Python version parsed from + shebangs, byte-compile the dir with default Python version (or the one + requested via X-Python-Version) instead od failing. Add dependency for + each (supported) interpreter detected in shebangs -- Piotr Ożarowski <piotr@debian.org> Sun, 12 Jun 2011 13:28:48 +0200 diff --git a/debpython/depends.py b/debpython/depends.py index 00dee4b..5899d5d 100644 --- a/debpython/depends.py +++ b/debpython/depends.py @@ -21,7 +21,7 @@ import logging from debpython.pydist import parse_pydep, guess_dependency -from debpython.version import DEFAULT, debsorted, vrepr, vrange_str +from debpython.version import DEFAULT, SUPPORTED, debsorted, vrepr, vrange_str # minimum version required for pycompile/pyclean MINPYCDEP = 'python (>= 2.6.6-7~)' @@ -122,19 +122,23 @@ class Dependencies(object): else: versions = list(v for i, v in details.get('shebangs', []) if v) - if len(versions) > 1: - log.error('more than one Python dependency from shebangs' - '(%s shebang versions: %s)', private_dir, versions) - exit(13) # TODO: move this to dh_python2 (and raise exception here) - elif len(versions) == 1: # one hardcoded version - self.depend("python%d.%d" % versions[0]) - # TODO: if versions[0] not in requested_versions: FTBFS - elif details.get('compile', False): - # no hardcoded versions, but there's something to compile + for v in versions: + if v in SUPPORTED: + self.depend("python%d.%d" % v) + else: + log.warn('dependency on python%s (from shebang) ignored' + ' - it\'s not supported anymore', vrepr(v)) + + if details.get('compile', False): self.depend(MINPYCDEP) args = '' vr = options.vrange - if vr: + if len(versions) == 1: # only one version from shebang + args += "-V %s" % vrepr(versions[0]) + elif vr: + # if there are no hardcoded versions in shebang or there + # are scripts for different Python versions: compile with + # default Python version (or the one requested via X-P-V) args += "-V %s" % vrange_str(vr) if vr[0]: # minimum version specified self.depend("python (>= %s)" % vrepr(vr[0])) @@ -142,7 +146,7 @@ class Dependencies(object): self.depend("python (<< %s)" % vrepr(vr[1])) for pattern in options.regexpr or []: - args += " -X '%s'" % pattern.replace("'", r"\'") + args += " -X '%s'" % pattern.replace("'", r"'\''") self.rtscript((private_dir, args)) if options.guess_deps: -- GitLab