From db173453ba81133c8c179918552a4a93017bc24c Mon Sep 17 00:00:00 2001 From: Timur Batyrshin Date: Sun, 2 Feb 2014 22:49:23 +0400 Subject: [PATCH] further compatibility with older versions of python-apt (#5853) --- library/packaging/apt | 5 ++++- library/packaging/apt_repository | 33 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/library/packaging/apt b/library/packaging/apt index eb64f8701f..d7f421dd3f 100644 --- a/library/packaging/apt +++ b/library/packaging/apt @@ -384,7 +384,10 @@ def main(): try: cache = apt.Cache() if p['default_release']: - apt_pkg.config['APT::Default-Release'] = p['default_release'] + try: + apt_pkg.config['APT::Default-Release'] = p['default_release'] + except AttributeError: + apt_pkg.Config['APT::Default-Release'] = p['default_release'] # reopen cache w/ modified config cache.open(progress=None) diff --git a/library/packaging/apt_repository b/library/packaging/apt_repository index 26b18ec4bc..a992dede1b 100644 --- a/library/packaging/apt_repository +++ b/library/packaging/apt_repository @@ -70,7 +70,10 @@ apt_repository: repo='ppa:nginx/stable' ''' import glob -import json +try: + import json +except ImportError: + import simplejson as json import os import re import tempfile @@ -110,14 +113,14 @@ class InvalidSource(Exception): class SourcesList(object): def __init__(self): self.files = {} # group sources by file - self.default_file = apt_pkg.config.find_file('Dir::Etc::sourcelist') + self.default_file = self._apt_cfg_file('Dir::Etc::sourcelist') # read sources.list if it exists if os.path.isfile(self.default_file): self.load(self.default_file) # read sources.list.d - for file in glob.iglob('%s/*.list' % apt_pkg.config.find_dir('Dir::Etc::sourceparts')): + for file in glob.iglob('%s/*.list' % self._apt_cfg_dir('Dir::Etc::sourceparts')): self.load(file) def __iter__(self): @@ -132,7 +135,7 @@ class SourcesList(object): if '/' in filename: return filename else: - return os.path.abspath(os.path.join(apt_pkg.config.find_dir('Dir::Etc::sourceparts'), filename)) + return os.path.abspath(os.path.join(self._apt_cfg_dir('Dir::Etc::sourceparts'), filename)) def _suggest_filename(self, line): def _cleanup_filename(s): @@ -176,6 +179,28 @@ class SourcesList(object): return valid, enabled, source, comment + @staticmethod + def _apt_cfg_file(filespec): + ''' + Wrapper for `apt_pkg` module for running with Python 2.5 + ''' + try: + result = apt_pkg.config.find_file(filespec) + except AttributeError: + result = apt_pkg.Config.FindFile(filespec) + return result + + @staticmethod + def _apt_cfg_dir(dirspec): + ''' + Wrapper for `apt_pkg` module for running with Python 2.5 + ''' + try: + result = apt_pkg.config.find_dir(dirspec) + except AttributeError: + result = apt_pkg.Config.FindDir(dirspec) + return result + def load(self, file): group = [] with open(file, 'r') as f: