tags 399986 + patch thanks Hi,
Attached is the diff for my python-central 0.5.12 NMU. I changed python-central accept installing packages providing only support of old python versions. I didn't add "unsupported" versions since we now have 2.5 in sid and we have no experience in handling addition of new upstream version from that point of view. But I suggest enabling that post-etch of course. Cheers, -- Raphaël Hertzog Premier livre français sur Debian GNU/Linux : http://www.ouaza.com/livre/admin-debian/
diff -Nru /tmp/YU1MgPcx9o/python-central-0.5.11/debian/changelog /tmp/sdAGhjKHsf/python-central-0.5.12/debian/changelog --- /tmp/YU1MgPcx9o/python-central-0.5.11/debian/changelog 2006-11-22 12:35:39.000000000 +0100 +++ /tmp/sdAGhjKHsf/python-central-0.5.12/debian/changelog 2006-11-23 11:13:11.000000000 +0100 @@ -1,3 +1,11 @@ +python-central (0.5.12) unstable; urgency=low + + * Non-maintainer upload. + * Accept packages providing support of only old python runtimes. + Closes: #399986 + + -- Raphael Hertzog <[EMAIL PROTECTED]> Thu, 23 Nov 2006 10:28:23 +0100 + python-central (0.5.11) unstable; urgency=low * Non-maintainer upload. diff -Nru /tmp/YU1MgPcx9o/python-central-0.5.11/pycentral.py /tmp/sdAGhjKHsf/python-central-0.5.12/pycentral.py --- /tmp/YU1MgPcx9o/python-central-0.5.11/pycentral.py 2006-11-22 17:59:26.000000000 +0100 +++ /tmp/sdAGhjKHsf/python-central-0.5.12/pycentral.py 2006-11-23 11:01:54.000000000 +0100 @@ -867,14 +867,19 @@ bc_option = config.get('DEFAULT', 'byte-compile') pkg = DebPackage('package', self.args[0], oldstyle=False) pkg.read_version_info() + requested = pyversions.requested_versions_for_runtime(pkg.version_field, version_only=True) + used_runtimes = [rt for rt in runtimes if rt.short_name in requested] try: pkg.set_default_runtime_from_version_info() except ValueError: - # package needs an unavailable runtime. - self.error('%s needs unavailable runtime (%s)' - % (self.pkgname, pkg.version_field)) - requested = pyversions.requested_versions(pkg.version_field, version_only=True) - used_runtimes = [rt for rt in runtimes if rt.short_name in requested] + # Package doesn't provide support for any supported runtime + if len(used_runtimes) == 0: + self.error('%s needs unavailable runtime (%s)' + % (self.pkgname, pkg.version_field)) + else: + # Still byte compile for the available runtimes (with the + # first matching runtime) + pkg.default_runtime = get_runtime_for_version(used_runtimes[0]) logging.debug('\tavail=%s, pkg=%s, install=%s' % ([rt.short_name for rt in runtimes], pkg.version_field, diff -Nru /tmp/YU1MgPcx9o/python-central-0.5.11/pyversions.py /tmp/sdAGhjKHsf/python-central-0.5.12/pyversions.py --- /tmp/YU1MgPcx9o/python-central-0.5.11/pyversions.py 2006-10-06 12:55:22.000000000 +0200 +++ /tmp/sdAGhjKHsf/python-central-0.5.12/pyversions.py 2006-11-23 11:05:42.000000000 +0100 @@ -152,6 +152,43 @@ else: return ['python%s' % v for v in versions] +# This function is used by python-central to decide which installed +# runtimes must be supported. It's not nice, but it's designed to mimic +# closely requested_versions in an attempt to avoid introducing bugs this +# late in the release cycle. Some cleanup is in order post-etch though. +def requested_versions_for_runtime(vstring, version_only=False): + versions = None + vinfo = parse_versions(vstring) + old = old_versions(version_only=True) + unsupported = unsupported_versions(version_only=True) + supported = supported_versions(version_only=True) + # You might want to add unsupported versions too... later. + supported.extend(old) + if len(vinfo) == 1: + if 'all' in vinfo: + versions = supported + elif 'current' in vinfo: + versions = [default_version(version_only=True)] + else: + versions = vinfo['versions'].intersection(supported) + elif 'all' in vinfo and 'current' in vinfo: + raise ValueError, "both `current' and `all' in version string" + elif 'all' in vinfo: + versions = versions = vinfo['versions'].intersection(supported) + elif 'current' in vinfo: + current = default_version(version_only=True) + if not current in vinfo['versions']: + raise ValueError, "`current' version not in supported versions" + versions = [current] + else: + raise ValueError, 'error in version string' + if not versions: + raise ValueError, 'empty set of versions' + if version_only: + return versions + else: + return ['python%s' % v for v in versions] + def installed_versions(version_only=False): import glob supported = supported_versions()