From 5e5166584bb9be3297f1284c5be3fd696d18df7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20O=C5=BCarowski?= <piotr@debian.org> Date: Mon, 25 Jun 2012 23:57:39 +0200 Subject: [PATCH] add support for DEBPYTHON_SUPPORTED and DEBPYTHON_DEFAULT env. variables can be used to override list of supported/default Python versions in Debian --- debpython/version.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/debpython/version.py b/debpython/version.py index 2695496..544d65d 100644 --- a/debpython/version.py +++ b/debpython/version.py @@ -22,6 +22,7 @@ import logging import re from ConfigParser import SafeConfigParser +from os import environ from os.path import exists, dirname, join from types import GeneratorType @@ -36,18 +37,24 @@ log = logging.getLogger(__name__) # try to read debian_defaults and get a list of supported Python versions and # the default one from there -_config = SafeConfigParser() -_config.read(['/usr/share/python/debian_defaults', - join(dirname(__file__), '..', 'debian', 'debian_defaults')]) +_supported = environ.get('DEBPYTHON_SUPPORTED') +_default = environ.get('DEBPYTHON_DEFAULT') +if not _supported or not _default: + _config = SafeConfigParser() + _config.read(['/usr/share/python/debian_defaults', + join(dirname(__file__), '..', 'debian', 'debian_defaults')]) + if not _default: + _default = _config.get('DEFAULT', 'default-version')[6:] + if not _supported: + _supported = _config.get('DEFAULT', 'supported-versions')\ + .replace('python', '') try: - DEFAULT = tuple(int(i) for i in _config.get('DEFAULT', - 'default-version')[6:].split('.')) + DEFAULT = tuple(int(i) for i in _default.split('.')) except Exception: log.exception('cannot read debian_defaults') try: - SUPPORTED = tuple(tuple(int(j) for j in i.strip()[6:].split('.'))\ - for i in _config.get('DEFAULT', - 'supported-versions').split(',')) + SUPPORTED = tuple(tuple(int(j) for j in i.strip().split('.')) + for i in _supported.split(',')) except Exception: log.exception('cannot read debian_defaults') @@ -83,10 +90,10 @@ def get_requested_versions(vrange=None, available=None): versions = set(v for v in SUPPORTED if minv <= v < maxv) if available: - versions = set(v for v in versions \ + versions = set(v for v in versions if exists("/usr/bin/python%d.%d" % v)) elif available is False: - versions = set(v for v in versions \ + versions = set(v for v in versions if not exists("/usr/bin/python%d.%d" % v)) return versions @@ -190,7 +197,7 @@ def parse_pycentral_vrange(value): minv = sorted(hardcoded)[0] if current: - versions = sorted(get("%s-%s" % (minv if minv else '', \ + versions = sorted(get("%s-%s" % (minv if minv else '', maxv if maxv else ''))) if not versions: raise ValueError("version range doesn't match installed Python versions: %s" % value) -- GitLab