From 2ec777137e9cbaccbc375a8af88f642a2c2a9867 Mon Sep 17 00:00:00 2001
From: Timur Batyrshin <erthad@gmail.com>
Date: Sun, 2 Feb 2014 22:49:23 +0400
Subject: [PATCH] further compatibility with older versions of python-apt
 (#5853)

---
 packaging/apt            |  5 ++++-
 packaging/apt_repository | 33 +++++++++++++++++++++++++++++----
 2 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/packaging/apt b/packaging/apt
index eb64f8701fb..d7f421dd3f5 100644
--- a/packaging/apt
+++ b/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/packaging/apt_repository b/packaging/apt_repository
index 26b18ec4bcc..a992dede1b9 100644
--- a/packaging/apt_repository
+++ b/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: