further compatibility with older versions of python-apt (#5853)

This commit is contained in:
Timur Batyrshin 2014-02-02 22:49:23 +04:00
parent 8a9f0f7478
commit 2ec777137e
2 changed files with 33 additions and 5 deletions

View file

@ -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)

View file

@ -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: