summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO6
-rw-r--r--apt/__init__.py3
-rw-r--r--aptsources/__init__.py1
-rw-r--r--aptsources/distinfo.py52
-rw-r--r--aptsources/distro.py752
-rw-r--r--aptsources/sourceslist.py773
-rw-r--r--configure.in2
-rw-r--r--data/templates/Debian.info.in2
-rw-r--r--data/templates/Ubuntu.info.in2
-rw-r--r--debian/changelog57
-rw-r--r--debian/control6
-rw-r--r--debian/copyright6
-rw-r--r--doc/examples/acquire.py25
-rw-r--r--doc/examples/action.py15
-rw-r--r--doc/examples/all_deps.py70
-rwxr-xr-xdoc/examples/build-deps.py76
-rw-r--r--doc/examples/cdrom.py11
-rwxr-xr-xdoc/examples/checkstate.py34
-rwxr-xr-xdoc/examples/config.py48
-rwxr-xr-xdoc/examples/configisc.py41
-rwxr-xr-xdoc/examples/deb_inspect.py12
-rw-r--r--doc/examples/depcache.py3
-rwxr-xr-xdoc/examples/dependant-pkgs.py38
-rw-r--r--doc/examples/desc.py7
-rwxr-xr-xdoc/examples/gui-inst.py4
-rw-r--r--doc/examples/indexfile.py2
-rw-r--r--doc/examples/inst.py49
-rw-r--r--doc/examples/metaindex.py6
-rwxr-xr-xdoc/examples/print_uris.py16
-rw-r--r--doc/examples/progress.py27
-rwxr-xr-xdoc/examples/recommends.py44
-rwxr-xr-xdoc/examples/records.py11
-rw-r--r--doc/examples/sources.py7
-rwxr-xr-xdoc/examples/tagfile.py6
-rwxr-xr-xdoc/examples/update.py2
-rwxr-xr-xdoc/examples/versiontest.py56
-rw-r--r--python/acquire.cc38
-rw-r--r--python/apt_instmodule.cc26
-rw-r--r--python/apt_instmodule.h2
-rw-r--r--python/apt_pkgmodule.cc106
-rw-r--r--python/apt_pkgmodule.h4
-rw-r--r--python/cache.cc132
-rw-r--r--python/cdrom.cc12
-rw-r--r--python/configuration.cc82
-rw-r--r--python/depcache.cc170
-rw-r--r--python/generic.cc12
-rw-r--r--python/generic.h14
-rw-r--r--python/indexfile.cc12
-rw-r--r--python/makefile8
-rw-r--r--python/metaindex.cc8
-rw-r--r--python/pkgmanager.cc22
-rw-r--r--python/pkgrecords.cc18
-rw-r--r--python/pkgrecords.h2
-rw-r--r--python/pkgsrcrecords.cc36
-rw-r--r--python/progress.cc34
-rw-r--r--python/progress.h2
-rw-r--r--python/sourcelist.cc16
-rw-r--r--python/string.cc22
-rw-r--r--python/tag.cc84
-rw-r--r--python/tar.cc50
-rwxr-xr-xsetup.py13
-rw-r--r--tests/apt-test.py2
-rw-r--r--tests/cache.py80
-rw-r--r--tests/depcache.py78
-rw-r--r--tests/lock.py16
-rwxr-xr-xtests/memleak.py58
-rw-r--r--tests/pkgproblemresolver.py111
-rw-r--r--tests/pkgrecords.py52
-rw-r--r--tests/pkgsrcrecords.py30
-rwxr-xr-xtests/refcount.py2
-rw-r--r--tests/test_aptsources.py44
-rw-r--r--tests/test_hashsums.py7
-rwxr-xr-xutils/get_debian_mirrors.py2
-rwxr-xr-xutils/get_ubuntu_mirrors.py10
-rwxr-xr-xutils/get_ubuntu_mirrors_from_lp.py3
-rwxr-xr-xutils/mirrortest4
76 files changed, 1900 insertions, 1796 deletions
diff --git a/TODO b/TODO
index 9fbf27c8..c3faedf4 100644
--- a/TODO
+++ b/TODO
@@ -1,9 +1,9 @@
* apt.Package:
- change all candidateInstalledSize() to installSize(useCandidate=True)
- same for candidateOrigin() (see downloadable for a example).
+ same for candidateOrigin() (see downloadable for a example).
- might be better to have "Package.candidate.{downloadable,size,etc}
-
+
* aptsources:
- make the distro detection in sources.list more clever by using the
origin informaton to avoid adding full uris to (unofficial/internal)
- mirrors
+ mirrors
diff --git a/apt/__init__.py b/apt/__init__.py
index c6a2ff39..05407aff 100644
--- a/apt/__init__.py
+++ b/apt/__init__.py
@@ -6,7 +6,8 @@ import os
# import some fancy classes
from apt.package import Package
from apt.cache import Cache
-from apt.progress import OpProgress, FetchProgress, InstallProgress, CdromProgress
+from apt.progress import (
+ OpProgress, FetchProgress, InstallProgress, CdromProgress)
from apt.cdrom import Cdrom
from apt_pkg import SizeToStr, TimeToStr, VersionCompare
diff --git a/aptsources/__init__.py b/aptsources/__init__.py
index ddec2bd9..c02341c2 100644
--- a/aptsources/__init__.py
+++ b/aptsources/__init__.py
@@ -1,4 +1,3 @@
-
import apt_pkg
# init the package system
diff --git a/aptsources/distinfo.py b/aptsources/distinfo.py
index 51a4361d..d23c79c5 100644
--- a/aptsources/distinfo.py
+++ b/aptsources/distinfo.py
@@ -32,11 +32,14 @@ import apt_pkg
#from gettext import gettext as _
import gettext
-def _(s): return gettext.dgettext("python-apt", s)
-import re
+
+def _(s):
+ return gettext.dgettext("python-apt", s)
+
class Template:
+
def __init__(self):
self.name = None
self.child = False
@@ -64,11 +67,14 @@ class Template:
else:
return False
+
class Component:
+
def __init__(self, name, desc=None, long_desc=None):
self.name = name
self.description = desc
self.description_long = long_desc
+
def get_description(self):
if self.description_long != None:
return self.description_long
@@ -76,24 +82,32 @@ class Component:
return self.description
else:
return None
+
def set_description(self, desc):
self.description = desc
+
def set_description_long(self, desc):
self.description_long = desc
+
def get_description_long(self):
return self.description_long
+
class Mirror:
''' Storage for mirror related information '''
+
def __init__(self, proto, hostname, dir, location=None):
self.hostname = hostname
self.repositories = []
self.add_repository(proto, dir)
self.location = location
+
def add_repository(self, proto, dir):
self.repositories.append(Repository(proto, dir))
+
def get_repositories_for_proto(self, proto):
return filter(lambda r: r.proto == proto, self.repositories)
+
def has_repository(self, proto, dir):
if dir is None:
return False
@@ -101,28 +115,38 @@ class Mirror:
if r.proto == proto and dir in r.dir:
return True
return False
+
def get_repo_urls(self):
return map(lambda r: r.get_url(self.hostname), self.repositories)
+
def get_location(self):
return self.location
+
def set_location(self, location):
self.location = location
+
class Repository:
+
def __init__(self, proto, dir):
self.proto = proto
self.dir = dir
+
def get_info(self):
return self.proto, self.dir
+
def get_url(self, hostname):
return "%s://%s/%s" % (self.proto, hostname, self.dir)
+
def split_url(url):
''' split a given URL into the protocoll, the hostname and the dir part '''
- return map(lambda a,b: a, re.split(":*\/+", url, maxsplit=2),
- [None, None, None])
+ return map(lambda a, b: a, re.split(":*\/+", url, maxsplit=2),
+ [None, None, None])
+
class DistInfo:
+
def __init__(self,
dist = None,
base_dir = "/usr/share/python-apt/templates"):
@@ -132,7 +156,9 @@ class DistInfo:
location = None
match_loc = re.compile(r"^#LOC:(.+)$")
- match_mirror_line = re.compile(r"^(#LOC:.+)|(((http)|(ftp)|(rsync)|(file)|(https))://[A-Za-z0-9/\.:\-_@]+)$")
+ match_mirror_line = re.compile(
+ r"^(#LOC:.+)|(((http)|(ftp)|(rsync)|(file)|(https))://"
+ r"[A-Za-z0-9/\.:\-_@]+)$")
#match_mirror_line = re.compile(r".+")
if not dist:
@@ -143,21 +169,20 @@ class DistInfo:
self.dist = dist
-
map_mirror_sets = {}
dist_fname = "%s/%s.info" % (base_dir, dist)
- dist_file = open (dist_fname)
+ dist_file = open(dist_fname)
if not dist_file:
return
template = None
component = None
for line in dist_file:
- tokens = line.split (':', 1)
- if len (tokens) < 2:
+ tokens = line.split(':', 1)
+ if len(tokens) < 2:
continue
- field = tokens[0].strip ()
- value = tokens[1].strip ()
+ field = tokens[0].strip()
+ value = tokens[1].strip()
if field == 'ChangelogURI':
self.changelogs_uri = _(value)
elif field == 'MetaReleaseURI':
@@ -208,7 +233,8 @@ class DistInfo:
if mirror_set.has_key(hostname):
mirror_set[hostname].add_repository(proto, dir)
else:
- mirror_set[hostname] = Mirror(proto, hostname, dir, location)
+ mirror_set[hostname] = Mirror(
+ proto, hostname, dir, location)
map_mirror_sets[value] = mirror_set
template.mirror_set = map_mirror_sets[value]
elif field == 'Description':
@@ -247,7 +273,7 @@ class DistInfo:
if __name__ == "__main__":
- d = DistInfo ("Ubuntu", "/usr/share/python-apt/templates")
+ d = DistInfo("Ubuntu", "/usr/share/python-apt/templates")
print d.changelogs_uri
for template in d.templates:
print "\nSuite: %s" % template.name
diff --git a/aptsources/distro.py b/aptsources/distro.py
index 5e65284d..4d6b7acf 100644
--- a/aptsources/distro.py
+++ b/aptsources/distro.py
@@ -28,393 +28,411 @@ import os
import sys
import gettext
-def _(s): return gettext.dgettext("python-apt", s)
+
+
+def _(s):
+ return gettext.dgettext("python-apt", s)
class NoDistroTemplateException(Exception):
- pass
+ pass
+
class Distribution:
- def __init__(self, id, codename, description, release):
- """ Container for distribution specific informations """
- # LSB information
- self.id = id
- self.codename = codename
- self.description = description
- self.release = release
-
- self.binary_type = "deb"
- self.source_type = "deb-src"
-
- def get_sources(self, sourceslist):
- """
- Find the corresponding template, main and child sources
- for the distribution
- """
- self.sourceslist = sourceslist
- # corresponding sources
- self.source_template = None
- self.child_sources = []
- self.main_sources = []
- self.disabled_sources = []
- self.cdrom_sources = []
- self.download_comps = []
- self.enabled_comps = []
- self.cdrom_comps = []
- self.used_media = []
- self.get_source_code = False
- self.source_code_sources = []
-
- # location of the sources
- self.default_server = ""
- self.main_server = ""
- self.nearest_server = ""
- self.used_servers = []
-
- # find the distro template
- for template in self.sourceslist.matcher.templates:
- if self.is_codename(template.name) and\
- template.distribution == self.id:
- #print "yeah! found a template for %s" % self.description
- #print template.description, template.base_uri, template.components
- self.source_template = template
- break
- if self.source_template == None:
- raise NoDistroTemplateException("Error: could not find a distribution"
- " template")
-
- # find main and child sources
- media = []
- comps = []
- cdrom_comps = []
- enabled_comps = []
- source_code = []
- for source in self.sourceslist.list:
- if source.invalid == False and\
- self.is_codename(source.dist) and\
- source.template and\
- self.is_codename(source.template.name):
- #print "yeah! found a distro repo: %s" % source.line
- # cdroms need do be handled differently
- if source.uri.startswith("cdrom:") and \
- source.disabled == False:
- self.cdrom_sources.append(source)
- cdrom_comps.extend(source.comps)
- elif source.uri.startswith("cdrom:") and \
- source.disabled == True:
- self.cdrom_sources.append(source)
- elif source.type == self.binary_type and \
- source.disabled == False:
- self.main_sources.append(source)
- comps.extend(source.comps)
- media.append(source.uri)
- elif source.type == self.binary_type and \
- source.disabled == True:
- self.disabled_sources.append(source)
- elif source.type == self.source_type and source.disabled == False:
- self.source_code_sources.append(source)
- elif source.type == self.source_type and source.disabled == True:
- self.disabled_sources.append(source)
- if source.invalid == False and\
- source.template in self.source_template.children:
- if source.disabled == False and source.type == self.binary_type:
- self.child_sources.append(source)
- elif source.disabled == False and source.type == self.source_type:
- self.source_code_sources.append(source)
- else:
- self.disabled_sources.append(source)
- self.download_comps = set(comps)
- self.cdrom_comps = set(cdrom_comps)
- enabled_comps.extend(comps)
- enabled_comps.extend(cdrom_comps)
- self.enabled_comps = set(enabled_comps)
- self.used_media = set(media)
+ def __init__(self, id, codename, description, release):
+ """ Container for distribution specific informations """
+ # LSB information
+ self.id = id
+ self.codename = codename
+ self.description = description
+ self.release = release
- self.get_mirrors()
+ self.binary_type = "deb"
+ self.source_type = "deb-src"
- def get_mirrors(self, mirror_template=None):
- """
- Provide a set of mirrors where you can get the distribution from
- """
- # the main server is stored in the template
- self.main_server = self.source_template.base_uri
+ def get_sources(self, sourceslist):
+ """
+ Find the corresponding template, main and child sources
+ for the distribution
+ """
- # other used servers
- for medium in self.used_media:
- if not medium.startswith("cdrom:"):
- # seems to be a network source
- self.used_servers.append(medium)
+ self.sourceslist = sourceslist
+ # corresponding sources
+ self.source_template = None
+ self.child_sources = []
+ self.main_sources = []
+ self.disabled_sources = []
+ self.cdrom_sources = []
+ self.download_comps = []
+ self.enabled_comps = []
+ self.cdrom_comps = []
+ self.used_media = []
+ self.get_source_code = False
+ self.source_code_sources = []
+
+ # location of the sources
+ self.default_server = ""
+ self.main_server = ""
+ self.nearest_server = ""
+ self.used_servers = []
+
+ # find the distro template
+ for template in self.sourceslist.matcher.templates:
+ if self.is_codename(template.name) and\
+ template.distribution == self.id:
+ #print "yeah! found a template for %s" % self.description
+ #print template.description, template.base_uri, \
+ # template.components
+ self.source_template = template
+ break
+ if self.source_template == None:
+ raise NoDistroTemplateException("Error: could not find a "
+ "distribution template")
+
+ # find main and child sources
+ media = []
+ comps = []
+ cdrom_comps = []
+ enabled_comps = []
+ source_code = []
+ for source in self.sourceslist.list:
+ if source.invalid == False and\
+ self.is_codename(source.dist) and\
+ source.template and\
+ self.is_codename(source.template.name):
+ #print "yeah! found a distro repo: %s" % source.line
+ # cdroms need do be handled differently
+ if source.uri.startswith("cdrom:") and \
+ source.disabled == False:
+ self.cdrom_sources.append(source)
+ cdrom_comps.extend(source.comps)
+ elif source.uri.startswith("cdrom:") and \
+ source.disabled == True:
+ self.cdrom_sources.append(source)
+ elif source.type == self.binary_type and \
+ source.disabled == False:
+ self.main_sources.append(source)
+ comps.extend(source.comps)
+ media.append(source.uri)
+ elif source.type == self.binary_type and \
+ source.disabled == True:
+ self.disabled_sources.append(source)
+ elif source.type == self.source_type \
+ and source.disabled == False:
+ self.source_code_sources.append(source)
+ elif source.type == self.source_type \
+ and source.disabled == True:
+ self.disabled_sources.append(source)
+ if source.invalid == False and\
+ source.template in self.source_template.children:
+ if source.disabled == False \
+ and source.type == self.binary_type:
+ self.child_sources.append(source)
+ elif source.disabled == False \
+ and source.type == self.source_type:
+ self.source_code_sources.append(source)
+ else:
+ self.disabled_sources.append(source)
+ self.download_comps = set(comps)
+ self.cdrom_comps = set(cdrom_comps)
+ enabled_comps.extend(comps)
+ enabled_comps.extend(cdrom_comps)
+ self.enabled_comps = set(enabled_comps)
+ self.used_media = set(media)
+
+ self.get_mirrors()
+
+ def get_mirrors(self, mirror_template=None):
+ """
+ Provide a set of mirrors where you can get the distribution from
+ """
+ # the main server is stored in the template
+ self.main_server = self.source_template.base_uri
- if len(self.main_sources) == 0:
- self.default_server = self.main_server
- else:
- self.default_server = self.main_sources[0].uri
-
- # get a list of country codes and real names
- self.countries = {}
- try:
- f = open("/usr/share/iso-codes/iso_3166.tab", "r")
- lines = f.readlines()
- for line in lines:
- parts = line.split("\t")
- self.countries[parts[0].lower()] = parts[1].strip()
- except:
- print "could not open file '%s'" % file
- else:
- f.close()
-
- # try to guess the nearest mirror from the locale
- self.country = None
- self.country_code = None
- locale = os.getenv("LANG", default="en_UK")
- a = locale.find("_")
- z = locale.find(".")
- if z == -1:
- z = len(locale)
- country_code = locale[a+1:z].lower()
-
- if mirror_template:
- self.nearest_server = mirror_template % country_code
-
- if self.countries.has_key(country_code):
- self.country = self.countries[country_code]
- self.country_code = country_code
-
- def _get_mirror_name(self, server):
- ''' Try to get a human readable name for the main mirror of a country
- Customize for different distributions '''
- country = None
- i = server.find("://")
- l = server.find(".archive.ubuntu.com")
- if i != -1 and l != -1:
- country = server[i+len("://"):l]
- if self.countries.has_key(country):
- # TRANSLATORS: %s is a country
- return _("Server for %s") % \
- gettext.dgettext("iso_3166",
- self.countries[country].rstrip()).rstrip()
- else:
- return("%s" % server.rstrip("/ "))
-
- def get_server_list(self):
- ''' Return a list of used and suggested servers '''
- def compare_mirrors(mir1, mir2):
- '''Helper function that handles comaprision of mirror urls
- that could contain trailing slashes'''
- return re.match(mir1.strip("/ "), mir2.rstrip("/ "))
-
- # Store all available servers:
- # Name, URI, active
- mirrors = []
- if len(self.used_servers) < 1 or \
- (len(self.used_servers) == 1 and \
- compare_mirrors(self.used_servers[0], self.main_server)):
- mirrors.append([_("Main server"), self.main_server, True])
- mirrors.append([self._get_mirror_name(self.nearest_server),
- self.nearest_server, False])
- elif len(self.used_servers) == 1 and not \
- compare_mirrors(self.used_servers[0], self.main_server):
- mirrors.append([_("Main server"), self.main_server, False])
- # Only one server is used
- server = self.used_servers[0]
-
- # Append the nearest server if it's not already used
- if not compare_mirrors(server, self.nearest_server):
+ # other used servers
+ for medium in self.used_media:
+ if not medium.startswith("cdrom:"):
+ # seems to be a network source
+ self.used_servers.append(medium)
+
+ if len(self.main_sources) == 0:
+ self.default_server = self.main_server
+ else:
+ self.default_server = self.main_sources[0].uri
+
+ # get a list of country codes and real names
+ self.countries = {}
+ try:
+ f = open("/usr/share/iso-codes/iso_3166.tab", "r")
+ lines = f.readlines()
+ for line in lines:
+ parts = line.split("\t")
+ self.countries[parts[0].lower()] = parts[1].strip()
+ except:
+ print "could not open file '%s'" % file
+ else:
+ f.close()
+
+ # try to guess the nearest mirror from the locale
+ self.country = None
+ self.country_code = None
+ locale = os.getenv("LANG", default="en_UK")
+ a = locale.find("_")
+ z = locale.find(".")
+ if z == -1:
+ z = len(locale)
+ country_code = locale[a+1:z].lower()
+
+ if mirror_template:
+ self.nearest_server = mirror_template % country_code
+
+ if self.countries.has_key(country_code):
+ self.country = self.countries[country_code]
+ self.country_code = country_code
+
+ def _get_mirror_name(self, server):
+ ''' Try to get a human readable name for the main mirror of a country
+ Customize for different distributions '''
+ country = None
+ i = server.find("://")
+ l = server.find(".archive.ubuntu.com")
+ if i != -1 and l != -1:
+ country = server[i+len("://"):l]
+ if self.countries.has_key(country):
+ # TRANSLATORS: %s is a country
+ return _("Server for %s") % \
+ gettext.dgettext("iso_3166",
+ self.countries[country].rstrip()).rstrip()
+ else:
+ return("%s" % server.rstrip("/ "))
+
+ def get_server_list(self):
+ ''' Return a list of used and suggested servers '''
+
+ def compare_mirrors(mir1, mir2):
+ ''' Helper function that handles comaprision of mirror urls
+ that could contain trailing slashes'''
+ return re.match(mir1.strip("/ "), mir2.rstrip("/ "))
+
+ # Store all available servers:
+ # Name, URI, active
+ mirrors = []
+ if len(self.used_servers) < 1 or \
+ (len(self.used_servers) == 1 and \
+ compare_mirrors(self.used_servers[0], self.main_server)):
+ mirrors.append([_("Main server"), self.main_server, True])
mirrors.append([self._get_mirror_name(self.nearest_server),
self.nearest_server, False])
- mirrors.append([self._get_mirror_name(server), server, True])
-
- elif len(self.used_servers) > 1:
- # More than one server is used. Since we don't handle this case
- # in the user interface we set "custom servers" to true and
- # append a list of all used servers
- mirrors.append([_("Main server"), self.main_server, False])
- mirrors.append([self._get_mirror_name(self.nearest_server),
- self.nearest_server, False])
- mirrors.append([_("Custom servers"), None, True])
- for server in self.used_servers:
- if compare_mirrors(server, self.nearest_server) or\
- compare_mirrors(server, self.main_server):
- continue
- elif not [self._get_mirror_name(server), server, False] in mirrors:
- mirrors.append([self._get_mirror_name(server), server, False])
-
- return mirrors
-
- def add_source(self, type=None,
+ elif len(self.used_servers) == 1 and not \
+ compare_mirrors(self.used_servers[0], self.main_server):
+ mirrors.append([_("Main server"), self.main_server, False])
+ # Only one server is used
+ server = self.used_servers[0]
+
+ # Append the nearest server if it's not already used
+ if not compare_mirrors(server, self.nearest_server):
+ mirrors.append([self._get_mirror_name(self.nearest_server),
+ self.nearest_server, False])
+ mirrors.append([self._get_mirror_name(server), server, True])
+
+ elif len(self.used_servers) > 1:
+ # More than one server is used. Since we don't handle this case
+ # in the user interface we set "custom servers" to true and
+ # append a list of all used servers
+ mirrors.append([_("Main server"), self.main_server, False])
+ mirrors.append([self._get_mirror_name(self.nearest_server),
+ self.nearest_server, False])
+ mirrors.append([_("Custom servers"), None, True])
+ for server in self.used_servers:
+ mirror_entry = [self._get_mirror_name(server), server, False]
+ if compare_mirrors(server, self.nearest_server) or\
+ compare_mirrors(server, self.main_server):
+ continue
+ elif not mirror_entry in mirrors:
+ mirrors.append(mirror_entry)
+
+ return mirrors
+
+ def add_source(self, type=None,
uri=None, dist=None, comps=None, comment=""):
- """
- Add distribution specific sources
- """
- if uri == None:
- # FIXME: Add support for the server selector
- uri = self.default_server
- if dist == None:
- dist = self.codename
- if comps == None:
- comps = list(self.enabled_comps)
- if type == None:
- type = self.binary_type
- new_source = self.sourceslist.add(type, uri, dist, comps, comment)
- # if source code is enabled add a deb-src line after the new
- # source
- if self.get_source_code == True and type == self.binary_type:
- self.sourceslist.add(self.source_type, uri, dist, comps, comment,
- file=new_source.file,
- pos=self.sourceslist.list.index(new_source)+1)
-
- def enable_component(self, comp):
- """
- Enable a component in all main, child and source code sources
- (excluding cdrom based sources)
-
- comp: the component that should be enabled
- """
- def add_component_only_once(source, comps_per_dist):
"""
- Check if we already added the component to the repository, since
- a repository could be splitted into different apt lines. If not
- add the component
+ Add distribution specific sources
"""
- # if we don't that distro, just reutnr (can happen for e.g.
- # dapper-update only in deb-src
- if not comps_per_dist.has_key(source.dist):
- return
- # if we have seen this component already for this distro,
- # return (nothing to do
- if comp in comps_per_dist[source.dist]:
- return
- # add it
- source.comps.append(comp)
- comps_per_dist[source.dist].add(comp)
-
- sources = []
- sources.extend(self.main_sources)
- sources.extend(self.child_sources)
- # store what comps are enabled already per distro (where distro is
- # e.g. "dapper", "dapper-updates")
- comps_per_dist = {}
- comps_per_sdist = {}
- for s in sources:
- if s.type == self.binary_type:
- if not comps_per_dist.has_key(s.dist):
- comps_per_dist[s.dist] = set()
- map(comps_per_dist[s.dist].add, s.comps)
- for s in self.source_code_sources:
- if s.type == self.source_type:
- if not comps_per_sdist.has_key(s.dist):
- comps_per_sdist[s.dist] = set()
- map(comps_per_sdist[s.dist].add, s.comps)
-
- # check if there is a main source at all
- if len(self.main_sources) < 1:
- # create a new main source
- self.add_source(comps=["%s"%comp])
- else:
- # add the comp to all main, child and source code sources
- for source in sources:
- add_component_only_once(source, comps_per_dist)
+ if uri == None:
+ # FIXME: Add support for the server selector
+ uri = self.default_server
+ if dist == None:
+ dist = self.codename
+ if comps == None:
+ comps = list(self.enabled_comps)
+ if type == None:
+ type = self.binary_type
+ new_source = self.sourceslist.add(type, uri, dist, comps, comment)
+ # if source code is enabled add a deb-src line after the new
+ # source
+ if self.get_source_code == True and type == self.binary_type:
+ self.sourceslist.add(self.source_type, uri, dist, comps, comment,
+ file=new_source.file,
+ pos=self.sourceslist.list.index(new_source)+1)
+
+ def enable_component(self, comp):
+ """
+ Enable a component in all main, child and source code sources
+ (excluding cdrom based sources)
- # check if there is a main source code source at all
- if self.get_source_code == True:
- if len(self.source_code_sources) < 1:
- # create a new main source
- self.add_source(type=self.source_type, comps=["%s"%comp])
- else:
- # add the comp to all main, child and source code sources
- for source in self.source_code_sources:
- add_component_only_once(source, comps_per_sdist)
+ comp: the component that should be enabled
+ """
- def disable_component(self, comp):
- """
- Disable a component in all main, child and source code sources
- (excluding cdrom based sources)
- """
- sources = []
- sources.extend(self.main_sources)
- sources.extend(self.child_sources)
- sources.extend(self.source_code_sources)
- if comp in self.cdrom_comps:
+ def add_component_only_once(source, comps_per_dist):
+ """
+ Check if we already added the component to the repository, since
+ a repository could be splitted into different apt lines. If not
+ add the component
+ """
+ # if we don't that distro, just reutnr (can happen for e.g.
+ # dapper-update only in deb-src
+ if not comps_per_dist.has_key(source.dist):
+ return
+ # if we have seen this component already for this distro,
+ # return (nothing to do
+ if comp in comps_per_dist[source.dist]:
+ return
+ # add it
+ source.comps.append(comp)
+ comps_per_dist[source.dist].add(comp)
+
+ sources = []
+ sources.extend(self.main_sources)
+ sources.extend(self.child_sources)
+ # store what comps are enabled already per distro (where distro is
+ # e.g. "dapper", "dapper-updates")
+ comps_per_dist = {}
+ comps_per_sdist = {}
+ for s in sources:
+ if s.type == self.binary_type:
+ if not comps_per_dist.has_key(s.dist):
+ comps_per_dist[s.dist] = set()
+ map(comps_per_dist[s.dist].add, s.comps)
+ for s in self.source_code_sources:
+ if s.type == self.source_type:
+ if not comps_per_sdist.has_key(s.dist):
+ comps_per_sdist[s.dist] = set()
+ map(comps_per_sdist[s.dist].add, s.comps)
+
+ # check if there is a main source at all
+ if len(self.main_sources) < 1:
+ # create a new main source
+ self.add_source(comps=["%s"%comp])
+ else:
+ # add the comp to all main, child and source code sources
+ for source in sources:
+ add_component_only_once(source, comps_per_dist)
+
+ # check if there is a main source code source at all
+ if self.get_source_code == True:
+ if len(self.source_code_sources) < 1:
+ # create a new main source
+ self.add_source(type=self.source_type, comps=["%s"%comp])
+ else:
+ # add the comp to all main, child and source code sources
+ for source in self.source_code_sources:
+ add_component_only_once(source, comps_per_sdist)
+
+ def disable_component(self, comp):
+ """
+ Disable a component in all main, child and source code sources
+ (excluding cdrom based sources)
+ """
sources = []
sources.extend(self.main_sources)
- for source in sources:
- if comp in source.comps:
- source.comps.remove(comp)
- if len(source.comps) < 1:
- self.sourceslist.remove(source)
-
- def change_server(self, uri):
- ''' Change the server of all distro specific sources to
- a given host '''
- def change_server_of_source(source, uri, seen):
- # Avoid creating duplicate entries
- source.uri = uri
- for comp in source.comps:
- if [source.uri, source.dist, comp] in seen:
+ sources.extend(self.child_sources)
+ sources.extend(self.source_code_sources)
+ if comp in self.cdrom_comps:
+ sources = []
+ sources.extend(self.main_sources)
+ for source in sources:
+ if comp in source.comps:
source.comps.remove(comp)
- else:
- seen.append([source.uri, source.dist, comp])
- if len(source.comps) < 1:
- self.sourceslist.remove(source)
- seen_binary = []
- seen_source = []
- self.default_server = uri
- for source in self.main_sources:
- change_server_of_source(source, uri, seen_binary)
- for source in self.child_sources:
- # Do not change the forces server of a child source
- if source.template.base_uri == None or \
- source.template.base_uri != source.uri:
+ if len(source.comps) < 1:
+ self.sourceslist.remove(source)
+
+ def change_server(self, uri):
+ ''' Change the server of all distro specific sources to
+ a given host '''
+
+ def change_server_of_source(source, uri, seen):
+ # Avoid creating duplicate entries
+ source.uri = uri
+ for comp in source.comps:
+ if [source.uri, source.dist, comp] in seen:
+ source.comps.remove(comp)
+ else:
+ seen.append([source.uri, source.dist, comp])
+ if len(source.comps) < 1:
+ self.sourceslist.remove(source)
+
+ seen_binary = []
+ seen_source = []
+ self.default_server = uri
+ for source in self.main_sources:
change_server_of_source(source, uri, seen_binary)
- for source in self.source_code_sources:
- change_server_of_source(source, uri, seen_source)
+ for source in self.child_sources:
+ # Do not change the forces server of a child source
+ if source.template.base_uri == None or \
+ source.template.base_uri != source.uri:
+ change_server_of_source(source, uri, seen_binary)
+ for source in self.source_code_sources:
+ change_server_of_source(source, uri, seen_source)
+
+ def is_codename(self, name):
+ ''' Compare a given name with the release codename. '''
+ if name == self.codename:
+ return True
+ else:
+ return False
- def is_codename(self, name):
- ''' Compare a given name with the release codename. '''
- if name == self.codename:
- return True
- else:
- return False
class DebianDistribution(Distribution):
- ''' Class to support specific Debian features '''
+ ''' Class to support specific Debian features '''
+
+ def is_codename(self, name):
+ ''' Compare a given name with the release codename and check if
+ if it can be used as a synonym for a development releases '''
+ if name == self.codename or self.release in ("testing", "unstable"):
+ return True
+ else:
+ return False
+
+ def _get_mirror_name(self, server):
+ ''' Try to get a human readable name for the main mirror of a country
+ Debian specific '''
+ country = None
+ i = server.find("://ftp.")
+ l = server.find(".debian.org")
+ if i != -1 and l != -1:
+ country = server[i+len("://ftp."):l]
+ if self.countries.has_key(country):
+ # TRANSLATORS: %s is a country
+ return _("Server for %s") % gettext.dgettext(
+ "iso_3166", self.countries[country].rstrip()).rstrip()
+ else:
+ return("%s" % server.rstrip("/ "))
+
+ def get_mirrors(self):
+ Distribution.get_mirrors(
+ self, mirror_template="http://ftp.%s.debian.org/debian/")
- def is_codename(self, name):
- ''' Compare a given name with the release codename and check if
- if it can be used as a synonym for a development releases '''
- if name == self.codename or self.release in ("testing", "unstable"):
- return True
- else:
- return False
-
- def _get_mirror_name(self, server):
- ''' Try to get a human readable name for the main mirror of a country
- Debian specific '''
- country = None
- i = server.find("://ftp.")
- l = server.find(".debian.org")
- if i != -1 and l != -1:
- country = server[i+len("://ftp."):l]
- if self.countries.has_key(country):
- # TRANSLATORS: %s is a country
- return _("Server for %s") % \
- gettext.dgettext("iso_3166",
- self.countries[country].rstrip()).rstrip()
- else:
- return("%s" % server.rstrip("/ "))
-
- def get_mirrors(self):
- Distribution.get_mirrors(self,
- mirror_template="http://ftp.%s.debian.org/debian/")
class UbuntuDistribution(Distribution):
- ''' Class to support specific Ubuntu features '''
- def get_mirrors(self):
- Distribution.get_mirrors(self,
- mirror_template="http://%s.archive.ubuntu.com/ubuntu/")
+ ''' Class to support specific Ubuntu features '''
-def get_distro(id=None,codename=None,description=None,release=None):
+ def get_mirrors(self):
+ Distribution.get_mirrors(
+ self, mirror_template="http://%s.archive.ubuntu.com/ubuntu/")
+
+
+def get_distro(id=None, codename=None, description=None, release=None):
"""
Check the currently used distribution and return the corresponding
distriubtion class that supports distro specific features.
@@ -424,17 +442,15 @@ def get_distro(id=None,codename=None,description=None,release=None):
"""
# make testing easier
if not (id and codename and description and release):
- lsb_info = []
- for lsb_option in ["-i", "-c", "-d", "-r"]:
- pipe = os.popen("lsb_release %s -s" % lsb_option)
- lsb_info.append(pipe.read().strip())
- del pipe
- (id, codename, description, release) = lsb_info
+ lsb_info = []
+ for lsb_option in ["-i", "-c", "-d", "-r"]:
+ pipe = os.popen("lsb_release %s -s" % lsb_option)
+ lsb_info.append(pipe.read().strip())
+ del pipe
+ (id, codename, description, release) = lsb_info
if id == "Ubuntu":
- return UbuntuDistribution(id, codename, description,
- release)
+ return UbuntuDistribution(id, codename, description, release)
elif id == "Debian":
return DebianDistribution(id, codename, description, release)
else:
return Distribution(id, codename, description, release)
-
diff --git a/aptsources/sourceslist.py b/aptsources/sourceslist.py
index 4067920a..be17cd1f 100644
--- a/aptsources/sourceslist.py
+++ b/aptsources/sourceslist.py
@@ -36,403 +36,420 @@ import sys
#from UpdateManager.Common.DistInfo import DistInfo
from distinfo import DistInfo
+
# some global helpers
+
+
def is_mirror(master_uri, compare_uri):
- """check if the given add_url is idential or a mirror of orig_uri
- e.g. master_uri = archive.ubuntu.com
- compare_uri = de.archive.ubuntu.com
- -> True
- """
- # remove traling spaces and "/"
- compare_uri = compare_uri.rstrip("/ ")
- master_uri = master_uri.rstrip("/ ")
- # uri is identical
- if compare_uri == master_uri:
- #print "Identical"
- return True
- # add uri is a master site and orig_uri has the from "XX.mastersite"
- # (e.g. de.archive.ubuntu.com)
- try:
- compare_srv = compare_uri.split("//")[1]
- master_srv = master_uri.split("//")[1]
- #print "%s == %s " % (add_srv, orig_srv)
- except IndexError: # ok, somethings wrong here
- #print "IndexError"
+ """ check if the given add_url is idential or a mirror of orig_uri
+ e.g. master_uri = archive.ubuntu.com
+ compare_uri = de.archive.ubuntu.com
+ -> True
+ """
+ # remove traling spaces and "/"
+ compare_uri = compare_uri.rstrip("/ ")
+ master_uri = master_uri.rstrip("/ ")
+ # uri is identical
+ if compare_uri == master_uri:
+ #print "Identical"
+ return True
+ # add uri is a master site and orig_uri has the from "XX.mastersite"
+ # (e.g. de.archive.ubuntu.com)
+ try:
+ compare_srv = compare_uri.split("//")[1]
+ master_srv = master_uri.split("//")[1]
+ #print "%s == %s " % (add_srv, orig_srv)
+ except IndexError: # ok, somethings wrong here
+ #print "IndexError"
+ return False
+ # remove the leading "<country>." (if any) and see if that helps
+ if "." in compare_srv and \
+ compare_srv[compare_srv.index(".")+1:] == master_srv:
+ #print "Mirror"
+ return True
return False
- # remove the leading "<country>." (if any) and see if that helps
- if "." in compare_srv and \
- compare_srv[compare_srv.index(".")+1:] == master_srv:
- #print "Mirror"
- return True
- return False
+
def uniq(s):
- """ simple and efficient way to return uniq list """
- return list(set(s))
+ """ simple and efficient way to return uniq list """
+ return list(set(s))
+
class SourceEntry:
- """ single sources.list entry """
- def __init__(self, line,file=None):
- self.invalid = False # is the source entry valid
- self.disabled = False # is it disabled ('#' in front)
- self.type = "" # what type (deb, deb-src)
- self.uri = "" # base-uri
- self.dist = "" # distribution (dapper, edgy, etc)
- self.comps = [] # list of available componetns (may empty)
- self.comment = "" # (optional) comment
- self.line = line # the original sources.list line
- if file == None:
- file = apt_pkg.Config.FindDir("Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist")
- self.file = file # the file that the entry is located in
- self.parse(line)
- self.template = None # type DistInfo.Suite
- self.children = []
-
- def __eq__(self, other):
- """ equal operator for two sources.list entries """
- return (self.disabled == other.disabled and
- self.type == other.type and
- self.uri == other.uri and
- self.dist == other.dist and
- self.comps == other.comps)
-
-
- def mysplit(self, line):
- """ a split() implementation that understands the sources.list
- format better and takes [] into account (for e.g. cdroms) """
- line = string.strip(line)
- pieces = []
- tmp = ""
- # we are inside a [..] block
- p_found = False
- space_found = False
- for i in range(len(line)):
- if line[i] == "[":
- p_found=True
- tmp += line[i]
- elif line[i] == "]":
- p_found=False
- tmp += line[i]
- elif space_found and not line[i].isspace(): # we skip one or more space
+ """ single sources.list entry """
+
+ def __init__(self, line, file=None):
+ self.invalid = False # is the source entry valid
+ self.disabled = False # is it disabled ('#' in front)
+ self.type = "" # what type (deb, deb-src)
+ self.uri = "" # base-uri
+ self.dist = "" # distribution (dapper, edgy, etc)
+ self.comps = [] # list of available componetns
+ # (may empty)
+ self.comment = "" # (optional) comment
+ self.line = line # the original sources.list line
+ if file == None:
+ file = apt_pkg.Config.FindDir(
+ "Dir::Etc")+apt_pkg.Config.Find("Dir::Etc::sourcelist")
+ self.file = file # the file that the entry is located in
+ self.parse(line)
+ self.template = None # type DistInfo.Suite
+ self.children = []
+
+ def __eq__(self, other):
+ """ equal operator for two sources.list entries """
+ return (self.disabled == other.disabled and
+ self.type == other.type and
+ self.uri == other.uri and
+ self.dist == other.dist and
+ self.comps == other.comps)
+
+ def mysplit(self, line):
+ """ a split() implementation that understands the sources.list
+ format better and takes [] into account (for e.g. cdroms) """
+ line = string.strip(line)
+ pieces = []
+ tmp = ""
+ # we are inside a [..] block
+ p_found = False
space_found = False
- pieces.append(tmp)
- tmp = line[i]
- elif line[i].isspace() and not p_found: # found a whitespace
- space_found = True
- else:
- tmp += line[i]
- # append last piece
- if len(tmp) > 0:
- pieces.append(tmp)
- return pieces
-
- def parse(self,line):
- """ parse a given sources.list (textual) line and break it up
- into the field we have """
- line = string.strip(self.line)
- #print line
- # check if the source is enabled/disabled
- if line == "" or line == "#": # empty line
- self.invalid = True
- return
- if line[0] == "#":
- self.disabled = True
- pieces = string.split(line[1:])
- # if it looks not like a disabled deb line return
- if not pieces[0] in ("rpm", "rpm-src", "deb", "deb-src"):
- self.invalid = True
- return
- else:
- line = line[1:]
- # check for another "#" in the line (this is treated as a comment)
- i = line.find("#")
- if i > 0:
- self.comment = line[i+1:]
- line = line[:i]
- # source is ok, split it and see what we have
- pieces = self.mysplit(line)
- # Sanity check
- if len(pieces) < 3:
- self.invalid = True
- return
- # Type, deb or deb-src
- self.type = string.strip(pieces[0])
- # Sanity check
- if self.type not in ("deb", "deb-src", "rpm", "rpm-src"):
- self.invalid = True
- return
- # URI
- self.uri = string.strip(pieces[1])
- if len(self.uri) < 1:
- self.invalid = True
- # distro and components (optional)
- # Directory or distro
- self.dist = string.strip(pieces[2])
- if len(pieces) > 3:
- # List of components
- self.comps = pieces[3:]
- else:
- self.comps = []
-
- def set_enabled(self, new_value):
- """ set a line to enabled or disabled """
- self.disabled = not new_value
- # enable, remove all "#" from the start of the line
- if new_value == True:
- i=0
- self.line = string.lstrip(self.line)
- while self.line[i] == "#":
- i += 1
- self.line = self.line[i:]
- else:
- # disabled, add a "#"
- if string.strip(self.line)[0] != "#":
- self.line = "#" + self.line
-
- def __str__(self):
- """ debug helper """
- return self.str().strip()
-
- def str(self):
- """ return the current line as string """
- if self.invalid:
- return self.line
- line = ""
- if self.disabled:
- line = "# "
- line += "%s %s %s" % (self.type, self.uri, self.dist)
- if len(self.comps) > 0:
- line += " " + " ".join(self.comps)
- if self.comment != "":
- line += " #"+self.comment
- line += "\n"
- return line
+ for i in range(len(line)):
+ if line[i] == "[":
+ p_found=True
+ tmp += line[i]
+ elif line[i] == "]":
+ p_found=False
+ tmp += line[i]
+ elif space_found and not line[i].isspace():
+ # we skip one or more space
+ space_found = False
+ pieces.append(tmp)
+ tmp = line[i]
+ elif line[i].isspace() and not p_found:
+ # found a whitespace
+ space_found = True
+ else:
+ tmp += line[i]
+ # append last piece
+ if len(tmp) > 0:
+ pieces.append(tmp)
+ return pieces
+
+ def parse(self, line):
+ """ parse a given sources.list (textual) line and break it up
+ into the field we have """
+ line = string.strip(self.line)
+ #print line
+ # check if the source is enabled/disabled
+ if line == "" or line == "#": # empty line
+ self.invalid = True
+ return
+ if line[0] == "#":
+ self.disabled = True
+ pieces = string.split(line[1:])
+ # if it looks not like a disabled deb line return
+ if not pieces[0] in ("rpm", "rpm-src", "deb", "deb-src"):
+ self.invalid = True
+ return
+ else:
+ line = line[1:]
+ # check for another "#" in the line (this is treated as a comment)
+ i = line.find("#")
+ if i > 0:
+ self.comment = line[i+1:]
+ line = line[:i]
+ # source is ok, split it and see what we have
+ pieces = self.mysplit(line)
+ # Sanity check
+ if len(pieces) < 3:
+ self.invalid = True
+ return
+ # Type, deb or deb-src
+ self.type = string.strip(pieces[0])
+ # Sanity check
+ if self.type not in ("deb", "deb-src", "rpm", "rpm-src"):
+ self.invalid = True
+ return
+ # URI
+ self.uri = string.strip(pieces[1])
+ if len(self.uri) < 1:
+ self.invalid = True
+ # distro and components (optional)
+ # Directory or distro
+ self.dist = string.strip(pieces[2])
+ if len(pieces) > 3:
+ # List of components
+ self.comps = pieces[3:]
+ else:
+ self.comps = []
+
+ def set_enabled(self, new_value):
+ """ set a line to enabled or disabled """
+ self.disabled = not new_value
+ # enable, remove all "#" from the start of the line
+ if new_value == True:
+ i=0
+ self.line = string.lstrip(self.line)
+ while self.line[i] == "#":
+ i += 1
+ self.line = self.line[i:]
+ else:
+ # disabled, add a "#"
+ if string.strip(self.line)[0] != "#":
+ self.line = "#" + self.line
+
+ def __str__(self):
+ """ debug helper """
+ return self.str().strip()
+
+ def str(self):
+ """ return the current line as string """
+ if self.invalid:
+ return self.line
+ line = ""
+ if self.disabled:
+ line = "# "
+ line += "%s %s %s" % (self.type, self.uri, self.dist)
+ if len(self.comps) > 0:
+ line += " " + " ".join(self.comps)
+ if self.comment != "":
+ line += " #"+self.comment
+ line += "\n"
+ return line
+
class NullMatcher(object):
- """ a Matcher that does nothing """
- def match(self, s):
- return True
+ """ a Matcher that does nothing """
+
+ def match(self, s):
+ return True
+
class SourcesList:
- """ represents the full sources.list + sources.list.d file """
- def __init__(self,
- withMatcher=True,
- matcherPath="/usr/share/python-apt/templates/"):
- self.list = [] # the actual SourceEntries Type
- if withMatcher:
- self.matcher = SourceEntryMatcher(matcherPath)
- else:
- self.matcher = NullMatcher()
- self.refresh()
-
- def refresh(self):
- """ update the list of known entries """
- self.list = []
- # read sources.list
- dir = apt_pkg.Config.FindDir("Dir::Etc")
- file = apt_pkg.Config.Find("Dir::Etc::sourcelist")
- self.load(dir+file)
- # read sources.list.d
- partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts")
- for file in glob.glob("%s/*.list" % partsdir):
- self.load(file)
- # check if the source item fits a predefined template
- for source in self.list:
- if source.invalid == False:
- self.matcher.match(source)
-
- def __iter__(self):
- """ simple iterator to go over self.list, returns SourceEntry
- types """
- for entry in self.list:
- yield entry
- raise StopIteration
-
- def add(self, type, uri, dist, orig_comps, comment="", pos=-1, file=None):
- """
- Add a new source to the sources.list.
- The method will search for existing matching repos and will try to
- reuse them as far as possible
- """
- # create a working copy of the component list so that
- # we can modify it later
- comps = orig_comps[:]
- # check if we have this source already in the sources.list
- for source in self.list:
- if source.disabled == False and source.invalid == False and \
- source.type == type and uri == source.uri and \
- source.dist == dist:
- for new_comp in comps:
- if new_comp in source.comps:
- # we have this component already, delete it from the new_comps
- # list
- del comps[comps.index(new_comp)]
- if len(comps) == 0:
- return source
- for source in self.list:
- # if there is a repo with the same (type, uri, dist) just add the
- # components
- if source.disabled == False and source.invalid == False and \
- source.type == type and uri == source.uri and \
- source.dist == dist:
- comps = uniq(source.comps + comps)
- source.comps = comps
- return source
- # if there is a corresponding repo which is disabled, enable it
- elif source.disabled == True and source.invalid == False and \
- source.type == type and uri == source.uri and \
- source.dist == dist and \
- len(set(source.comps) & set(comps)) == len(comps):
- source.disabled = False
- return source
- # there isn't any matching source, so create a new line and parse it
- line = "%s %s %s" % (type,uri,dist)
- for c in comps:
- line = line + " " + c;
- if comment != "":
- line = "%s #%s\n" %(line,comment)
- line = line + "\n"
- new_entry = SourceEntry(line)
- if file != None:
- new_entry.file = file
- self.matcher.match(new_entry)
- self.list.insert(pos, new_entry)
- return new_entry
-
- def remove(self, source_entry):
- """ remove the specified entry from the sources.list """
- self.list.remove(source_entry)
-
- def restoreBackup(self, backup_ext):
- " restore sources.list files based on the backup extension "
- dir = apt_pkg.Config.FindDir("Dir::Etc")
- file = apt_pkg.Config.Find("Dir::Etc::sourcelist")
- if os.path.exists(dir+file+backup_ext) and \
- os.path.exists(dir+file):
- shutil.copy(dir+file+backup_ext,dir+file)
- # now sources.list.d
- partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts")
- for file in glob.glob("%s/*.list" % partsdir):
- if os.path.exists(file+backup_ext):
- shutil.copy(file+backup_ext,file)
-
- def backup(self, backup_ext=None):
- """ make a backup of the current source files, if no backup extension
- is given, the current date/time is used (and returned) """
- already_backuped = set()
- if backup_ext == None:
- backup_ext = time.strftime("%y%m%d.%H%M")
- for source in self.list:
- if not source.file in already_backuped and os.path.exists(source.file):
- shutil.copy(source.file,"%s%s" % (source.file,backup_ext))
- return backup_ext
-
- def load(self,file):
- """ (re)load the current sources """
- try:
- f = open(file, "r")
- lines = f.readlines()
- for line in lines:
- source = SourceEntry(line,file)
- self.list.append(source)
- except:
- print "could not open file '%s'" % file
- else:
- f.close()
-
- def save(self):
- """ save the current sources """
- files = {}
- # write an empty default config file if there aren't any sources
- if len(self.list) == 0:
- path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"),
- apt_pkg.Config.Find("Dir::Etc::sourcelist"))
- header = ("## See sources.list(5) for more information, especialy\n"
+ """ represents the full sources.list + sources.list.d file """
+
+ def __init__(self,
+ withMatcher=True,
+ matcherPath="/usr/share/python-apt/templates/"):
+ self.list = [] # the actual SourceEntries Type
+ if withMatcher:
+ self.matcher = SourceEntryMatcher(matcherPath)
+ else:
+ self.matcher = NullMatcher()
+ self.refresh()
+
+ def refresh(self):
+ """ update the list of known entries """
+ self.list = []
+ # read sources.list
+ dir = apt_pkg.Config.FindDir("Dir::Etc")
+ file = apt_pkg.Config.Find("Dir::Etc::sourcelist")
+ self.load(dir+file)
+ # read sources.list.d
+ partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts")
+ for file in glob.glob("%s/*.list" % partsdir):
+ self.load(file)
+ # check if the source item fits a predefined template
+ for source in self.list:
+ if source.invalid == False:
+ self.matcher.match(source)
+
+ def __iter__(self):
+ """ simple iterator to go over self.list, returns SourceEntry
+ types """
+ for entry in self.list:
+ yield entry
+ raise StopIteration
+
+ def add(self, type, uri, dist, orig_comps, comment="", pos=-1, file=None):
+ """
+ Add a new source to the sources.list.
+ The method will search for existing matching repos and will try to
+ reuse them as far as possible
+ """
+ # create a working copy of the component list so that
+ # we can modify it later
+ comps = orig_comps[:]
+ # check if we have this source already in the sources.list
+ for source in self.list:
+ if source.disabled == False and source.invalid == False and \
+ source.type == type and uri == source.uri and \
+ source.dist == dist:
+ for new_comp in comps:
+ if new_comp in source.comps:
+ # we have this component already, delete it
+ # from the new_comps list
+ del comps[comps.index(new_comp)]
+ if len(comps) == 0:
+ return source
+ for source in self.list:
+ # if there is a repo with the same (type, uri, dist) just add the
+ # components
+ if source.disabled == False and source.invalid == False and \
+ source.type == type and uri == source.uri and \
+ source.dist == dist:
+ comps = uniq(source.comps + comps)
+ source.comps = comps
+ return source
+ # if there is a corresponding repo which is disabled, enable it
+ elif source.disabled == True and source.invalid == False and \
+ source.type == type and uri == source.uri and \
+ source.dist == dist and \
+ len(set(source.comps) & set(comps)) == len(comps):
+ source.disabled = False
+ return source
+ # there isn't any matching source, so create a new line and parse it
+ line = "%s %s %s" % (type, uri, dist)
+ for c in comps:
+ line = line + " " + c
+ if comment != "":
+ line = "%s #%s\n" % (line, comment)
+ line = line + "\n"
+ new_entry = SourceEntry(line)
+ if file != None:
+ new_entry.file = file
+ self.matcher.match(new_entry)
+ self.list.insert(pos, new_entry)
+ return new_entry
+
+ def remove(self, source_entry):
+ """ remove the specified entry from the sources.list """
+ self.list.remove(source_entry)
+
+ def restoreBackup(self, backup_ext):
+ " restore sources.list files based on the backup extension "
+ dir = apt_pkg.Config.FindDir("Dir::Etc")
+ file = apt_pkg.Config.Find("Dir::Etc::sourcelist")
+ if os.path.exists(dir+file+backup_ext) and \
+ os.path.exists(dir+file):
+ shutil.copy(dir+file+backup_ext, dir+file)
+ # now sources.list.d
+ partsdir = apt_pkg.Config.FindDir("Dir::Etc::sourceparts")
+ for file in glob.glob("%s/*.list" % partsdir):
+ if os.path.exists(file+backup_ext):
+ shutil.copy(file+backup_ext, file)
+
+ def backup(self, backup_ext=None):
+ """ make a backup of the current source files, if no backup extension
+ is given, the current date/time is used (and returned) """
+ already_backuped = set()
+ if backup_ext == None:
+ backup_ext = time.strftime("%y%m%d.%H%M")
+ for source in self.list:
+ if not source.file in already_backuped \
+ and os.path.exists(source.file):
+ shutil.copy(source.file, "%s%s" % (source.file, backup_ext))
+ return backup_ext
+
+ def load(self, file):
+ """ (re)load the current sources """
+ try:
+ f = open(file, "r")
+ lines = f.readlines()
+ for line in lines:
+ source = SourceEntry(line, file)
+ self.list.append(source)
+ except:
+ print "could not open file '%s'" % file
+ else:
+ f.close()
+
+ def save(self):
+ """ save the current sources """
+ files = {}
+ # write an empty default config file if there aren't any sources
+ if len(self.list) == 0:
+ path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"),
+ apt_pkg.Config.Find("Dir::Etc::sourcelist"))
+ header = (
+ "## See sources.list(5) for more information, especialy\n"
"# Remember that you can only use http, ftp or file URIs\n"
"# CDROMs are managed through the apt-cdrom tool.\n")
- open(path,"w").write(header)
- return
- for source in self.list:
- if not files.has_key(source.file):
- files[source.file]=open(source.file,"w")
- files[source.file].write(source.str())
- for f in files:
- files[f].close()
-
- def check_for_relations(self, sources_list):
- """get all parent and child channels in the sources list"""
- parents = []
- used_child_templates = {}
- for source in sources_list:
- # try to avoid checking uninterressting sources
- if source.template == None:
- continue
- # set up a dict with all used child templates and corresponding
- # source entries
- if source.template.child == True:
- key = source.template
- if not used_child_templates.has_key(key):
- used_child_templates[key] = []
- temp = used_child_templates[key]
- temp.append(source)
- else:
- # store each source with children aka. a parent :)
- if len(source.template.children) > 0:
- parents.append(source)
- #print self.used_child_templates
- #print self.parents
- return (parents, used_child_templates)
-
-# matcher class to make a source entry look nice
-# lots of predefined matchers to make it i18n/gettext friendly
+ open(path, "w").write(header)
+ return
+ for source in self.list:
+ if not files.has_key(source.file):
+ files[source.file] = open(source.file, "w")
+ files[source.file].write(source.str())
+ for f in files:
+ files[f].close()
+
+ def check_for_relations(self, sources_list):
+ """get all parent and child channels in the sources list"""
+ parents = []
+ used_child_templates = {}
+ for source in sources_list:
+ # try to avoid checking uninterressting sources
+ if source.template == None:
+ continue
+ # set up a dict with all used child templates and corresponding
+ # source entries
+ if source.template.child == True:
+ key = source.template
+ if not used_child_templates.has_key(key):
+ used_child_templates[key] = []
+ temp = used_child_templates[key]
+ temp.append(source)
+ else:
+ # store each source with children aka. a parent :)
+ if len(source.template.children) > 0:
+ parents.append(source)
+ #print self.used_child_templates
+ #print self.parents
+ return (parents, used_child_templates)
+
+
class SourceEntryMatcher:
- def __init__(self, matcherPath):
- self.templates = []
- # Get the human readable channel and comp names from the channel .infos
- spec_files = glob.glob("%s/*.info" % matcherPath)
- for f in spec_files:
- f = os.path.basename(f)
- i = f.find(".info")
- f = f[0:i]
- dist = DistInfo(f,base_dir=matcherPath)
- for template in dist.templates:
- if template.match_uri != None:
- self.templates.append(template)
- return
-
- def match(self, source):
- """Add a matching template to the source"""
- _ = gettext.gettext
- found = False
- for template in self.templates:
- if (re.search(template.match_uri, source.uri) and
- re.match(template.match_name, source.dist)):
- found = True
- source.template = template
- break
- elif (template.is_mirror(source.uri) and
- re.match(template.match_name, source.dist)):
- found = True
- source.template = template
- break
- return found
+ """ matcher class to make a source entry look nice
+ lots of predefined matchers to make it i18n/gettext friendly
+ """
+
+ def __init__(self, matcherPath):
+ self.templates = []
+ # Get the human readable channel and comp names from the channel .infos
+ spec_files = glob.glob("%s/*.info" % matcherPath)
+ for f in spec_files:
+ f = os.path.basename(f)
+ i = f.find(".info")
+ f = f[0:i]
+ dist = DistInfo(f, base_dir=matcherPath)
+ for template in dist.templates:
+ if template.match_uri != None:
+ self.templates.append(template)
+ return
+
+ def match(self, source):
+ """Add a matching template to the source"""
+ _ = gettext.gettext
+ found = False
+ for template in self.templates:
+ if (re.search(template.match_uri, source.uri) and
+ re.match(template.match_name, source.dist)):
+ found = True
+ source.template = template
+ break
+ elif (template.is_mirror(source.uri) and
+ re.match(template.match_name, source.dist)):
+ found = True
+ source.template = template
+ break
+ return found
# some simple tests
if __name__ == "__main__":
- apt_pkg.InitConfig()
- sources = SourcesList()
-
- for entry in sources:
- print entry.str()
- #print entry.uri
+ apt_pkg.InitConfig()
+ sources = SourcesList()
- mirror = is_mirror("http://archive.ubuntu.com/ubuntu/",
- "http://de.archive.ubuntu.com/ubuntu/")
- print "is_mirror(): %s" % mirror
+ for entry in sources:
+ print entry.str()
+ #print entry.uri
- print is_mirror("http://archive.ubuntu.com/ubuntu",
- "http://de.archive.ubuntu.com/ubuntu/")
- print is_mirror("http://archive.ubuntu.com/ubuntu/",
- "http://de.archive.ubuntu.com/ubuntu")
+ mirror = is_mirror("http://archive.ubuntu.com/ubuntu/",
+ "http://de.archive.ubuntu.com/ubuntu/")
+ print "is_mirror(): %s" % mirror
+ print is_mirror("http://archive.ubuntu.com/ubuntu",
+ "http://de.archive.ubuntu.com/ubuntu/")
+ print is_mirror("http://archive.ubuntu.com/ubuntu/",
+ "http://de.archive.ubuntu.com/ubuntu")
diff --git a/configure.in b/configure.in
index e62985c2..1000f38c 100644
--- a/configure.in
+++ b/configure.in
@@ -21,7 +21,7 @@ EOF
[AC_CHECK_LIB(python$ac_cv_ver_python,PyArg_ParseTuple,
[AC_DEFINE(HAVE_PYTHONLIB) PYTHONLIB="-lpython$ac_cv_ver_python $ac_cv_libs_python"],[],$ac_cv_libs_python)])
AC_SUBST(PYTHONLIB)
-
+
PYTHONVER=$ac_cv_ver_python
PYTHONPREFIX=$ac_cv_prefix_python
PYTHONEXECPREFIX=$ac_cv_execprefix_python
diff --git a/data/templates/Debian.info.in b/data/templates/Debian.info.in
index dd040c20..5f4486d5 100644
--- a/data/templates/Debian.info.in
+++ b/data/templates/Debian.info.in
@@ -30,7 +30,7 @@ RepositoryType: deb
BaseURI: http://http.us.debian.org/debian/
MatchURI: ftp[0-9]*\.[a-z]\.debian\.org
MirrorsFile: /usr/share/python-apt/templates/Debian.mirrors
-_Description: Debian 4.0 'Etch'
+_Description: Debian 4.0 'Etch'
Component: main
_CompDescription: Officially supported
Component: contrib
diff --git a/data/templates/Ubuntu.info.in b/data/templates/Ubuntu.info.in
index 67180bcb..0adb8e67 100644
--- a/data/templates/Ubuntu.info.in
+++ b/data/templates/Ubuntu.info.in
@@ -354,7 +354,7 @@ _CompDescription: Community-maintained (universe)
_CompDescriptionLong: Community-maintained Open Source software
Component: restricted
_CompDescription: Non-free drivers
-_CompDescriptionLong: Proprietary drivers for devices
+_CompDescriptionLong: Proprietary drivers for devices
Component: multiverse
_CompDescription: Restricted software (Multiverse)
_CompDescriptionLong: Software restricted by copyright or legal issues
diff --git a/debian/changelog b/debian/changelog
index cd67e51a..a44550d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -27,8 +27,9 @@ python-apt (0.7.9~exp2) experimental; urgency=low
- Build-Depend on python-sphinx (>= 0.5)
* aptsources/distinfo.py:
- Allow @ in mirror urls (Closes: #478171) (LP: #223097)
+ * Merge Ben Finney's whitespace changes (Closes: #481563)
- -- Julian Andres Klode <jak@debian.org> Sat, 10 Jan 2009 00:30:19 +0100
+ -- Julian Andres Klode <jak@debian.org> Sun, 11 Jan 2009 19:25:55 +0100
python-apt (0.7.9~exp1) experimental; urgency=low
@@ -187,7 +188,7 @@ python-apt (0.7.4) unstable; urgency=low
* apt/debfile.py:
- added wrapper around apt_inst.debExtract()
- - support dictionary like access
+ - support dictionary like access
* apt/package.py:
- fix apt.package.Dependency.relation initialization
* python/apt_instmodule.cc:
@@ -206,7 +207,7 @@ python-apt (0.7.4) unstable; urgency=low
* python/depcache.cc:
- be more threading friendly
* python/tag.cc
- - support "None" as default in
+ - support "None" as default in
ParseSection(control).get(field, default), LP: #44470
* python/progress.cc:
- fix refcount problem in OpProgress
@@ -238,7 +239,7 @@ python-apt (0.7.3) unstable; urgency=low
* doc/examples/records.py:
- added example how to use the new Records class
* apt/cache.py:
- - throw FetchCancelleException, FetchFailedException,
+ - throw FetchCancelleException, FetchFailedException,
LockFailedException exceptions when something goes wrong
* aptsources/distro.py:
- generalized some code, bringing it into the Distribution
@@ -257,7 +258,7 @@ python-apt (0.7.2) unstable; urgency=low
* build against the new apt
* support for new "aptsources" pythn module
- (thanks to Sebastian Heinlein)
+ (thanks to Sebastian Heinlein)
* merged support for translated package descriptions
* merged support for automatic removal of unused dependencies
@@ -292,7 +293,7 @@ python-apt (0.6.21) unstable; urgency=low
- better cdrom handling support
* apt/package.py:
- added candidateDependencies, installedDependencies
- - SizeToString supports PyLong too
+ - SizeToString supports PyLong too
- support pkg.architecture
- support candidateRecord, installedRecord
* apt/cache.py:
@@ -322,7 +323,7 @@ python-apt (0.6.20) unstable; urgency=low
- use select() when checking for statusfd (lp: #53282)
* acknoledge NMU (closes: #378048, #373512)
* python/apt_pkgmodule.cc:
- - fix missing docstring (closes: #368907),
+ - fix missing docstring (closes: #368907),
Thanks to Josh Triplett
* make it build against python2.5
* python/progress.cc:
@@ -374,40 +375,40 @@ python-apt (0.6.18) unstable; urgency=low
python-apt (0.6.17) unstable; urgency=low
- * apt/progress.py:
+ * apt/progress.py:
- initialize FetchProgress.eta with the correct type
- strip the staus str before passing it to InstallProgress.statusChanged()
- - added InstallProgress.statusChange(pkg, percent, status)
- - make DumbInstallProgress a new-style class
+ - added InstallProgress.statusChange(pkg, percent, status)
+ - make DumbInstallProgress a new-style class
(thanks to kamion for the suggestions)
- fix various pychecker warnings
* apt/cache.py:
- return useful values on Cache.update()
- Release locks on failure (thanks to Colin Watson)
- fix various pychecker warnings
- * apt/package.py:
+ * apt/package.py:
- fix various pychecker warnings
- check if looupRecords succeeded
- fix bug in the return statement of _downloadable()
* python/srcrecords.cc:
- add "Restart" method
- - don't run auto "Restart" before performing a Lookup
+ - don't run auto "Restart" before performing a Lookup
- fix the initalization (no need to pass a PkgCacheType to the records)
- added "Index" attribute
* python/indexfile.cc:
- added ArchiveURI() method
-
+
-- Michael Vogt <mvo@debian.org> Mon, 8 May 2006 22:34:58 +0200
python-apt (0.6.16.2) unstable; urgency=low
-
+
* Non-maintainer upload.
* debian/control:
+ Replaces: python-apt (<< 0.6.11), instead of Conflicts which is not
correct here. (closes: #308586).
-- Pierre Habouzit <madcoder@debian.org> Fri, 14 Apr 2006 19:30:51 +0200
-
+
python-apt (0.6.16.1) unstable; urgency=low
* memleak fixed when pkgCache objects are deallocated
@@ -420,11 +421,11 @@ python-apt (0.6.16.1) unstable; urgency=low
python-apt (0.6.16) unstable; urgency=low
- * added GetPkgAcqFile to queue individual file downloads with the
+ * added GetPkgAcqFile to queue individual file downloads with the
system (dosn't make use of the improved pkgAcqFile yet)
* added SourceList.GetIndexes()
* rewrote apt.cache.update() to use the improved aquire interface
- * apt/ API change: apt.Package.candidateOrigin returns a list of origins
+ * apt/ API change: apt.Package.candidateOrigin returns a list of origins
now instead of a single one
* apt_pkg.Cdrom.Add() returns a boolean now, CdromProgress has totalSteps
* added support for pkgIndexFile and added SourcesList.FindIndex()
@@ -451,8 +452,8 @@ python-apt (0.6.14) unstable; urgency=low
(this is the job of the caller now)
* python/srcrecords.cc:
- support for "srcrecords.Files" added
- - always run "Restart" before performing a Lookup
- * export locking via: GetLock(),PkgSystem{Lock,UnLock}
+ - always run "Restart" before performing a Lookup
+ * export locking via: GetLock(),PkgSystem{Lock,UnLock}
* apt/cache.py:
- added __iter__ to make "for pkg in apt.Cache:" stuff possible
@@ -470,9 +471,9 @@ python-apt (0.6.13) unstable; urgency=low
* native apt/ python directory added that contains
a more pythonic interface to apt_pkg
* made the apt/ python code PEP08 conform
- * python exceptions return the apt error message now
+ * python exceptions return the apt error message now
(thanks to Chris Halls for the patch)
-
+
-- Michael Vogt <mvo@debian.org> Fri, 5 Aug 2005 10:30:31 +0200
python-apt (0.6.12.2) unstable; urgency=low
@@ -485,7 +486,7 @@ python-apt (0.6.12.1) unstable; urgency=low
* rebuild against the latest apt
- -- Michael Vogt <mvo@debian.org> Tue, 28 Jun 2005 18:29:57 +0200
+ -- Michael Vogt <mvo@debian.org> Tue, 28 Jun 2005 18:29:57 +0200
python-apt (0.6.12ubuntu1) breezy; urgency=low
@@ -497,17 +498,17 @@ python-apt (0.6.12ubuntu1) breezy; urgency=low
-- Michael Vogt <michael.vogt@ubuntu.com> Thu, 12 May 2005 11:34:05 +0200
python-apt (0.6.12) breezy; urgency=low
-
+
* added a tests/ directory
* added tests/pkgsrcrecords.py that will check if the pkgsrcrecords
interface does not segfault
* new native python "apt" interface that hides the details of apt_pkg
-- Michael Vogt <michael.vogt@ubuntu.com> Fri, 6 May 2005 10:11:52 +0200
-
+
python-apt (0.6.11) experimental; urgency=low
- * fixed some reference count problems in the depcache and
+ * fixed some reference count problems in the depcache and
pkgsrcrecords code
* DepCache.Init() is never called implicit now
* merged with python-apt tree from Greek0@gmx.net--2005-main
@@ -583,7 +584,7 @@ python-apt (0.5.8) unstable; urgency=low
python-apt (0.5.5.2) unstable; urgency=low
- * Add myself to Uploaders so that bugs don't get tagged as NMU-fixed anymore
+ * Add myself to Uploaders so that bugs don't get tagged as NMU-fixed anymore
* Initial support for working with source packages (Closes: #199716)
-- Matt Zimmerman <mdz@debian.org> Tue, 22 Jul 2003 22:20:00 -0400
@@ -593,7 +594,7 @@ python-apt (0.5.5.1) unstable; urgency=low
* DepIterator::GlobOr increments the iterator; don't increment it again.
This caused every other dependency to be skipped (Closes: #195805)
* Avoid a null pointer dereference when calling keys() on an empty
- configuration (Closes: #149380)
+ configuration (Closes: #149380)
-- Matt Zimmerman <mdz@debian.org> Mon, 2 Jun 2003 23:18:53 -0400
@@ -623,7 +624,7 @@ python-apt (0.5.4.4) unstable; urgency=low
Closes: #157773
-- Matt Zimmerman <mdz@debian.org> Tue, 27 Aug 2002 19:22:10 -0400
-
+
python-apt (0.5.4.3) unstable; urgency=low
* #include <new> in python/generic.h so that we can build on ia64, which
diff --git a/debian/control b/debian/control
index 8a10091d..0cb6e215 100644
--- a/debian/control
+++ b/debian/control
@@ -16,7 +16,7 @@ Provides: ${python:Provides}
Suggests: python-apt-dbg, python-gtk2, python-vte
XB-Python-Version: ${python:Versions}
Description: Python interface to libapt-pkg
- The apt_pkg Python interface will provide full access to the internal
+ The apt_pkg Python interface will provide full access to the internal
libapt-pkg structures allowing Python programs to easily perform a
variety of functions, such as:
.
@@ -25,7 +25,7 @@ Description: Python interface to libapt-pkg
- Parsing of Debian package control files, and other files with a
similar structure
.
- The included 'aptsources' Python interface provides an abstraction of
+ The included 'aptsources' Python interface provides an abstraction of
the sources.list configuration on the repository and the distro level.
Package: python-apt-dbg
@@ -33,7 +33,7 @@ Priority: extra
Architecture: any
Depends: python-dbg, python-apt (= ${Source-Version}), ${shlibs:Depends}
Description: Python interface to libapt-pkg (debug extension)
- The apt_pkg Python interface will provide full access to the internal
+ The apt_pkg Python interface will provide full access to the internal
libapt-pkg structures allowing Python programs to easily perform a
variety of functions.
.
diff --git a/debian/copyright b/debian/copyright
index 1e310354..f8463185 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,6 +1,6 @@
-APT is free software; you can redistribute them and/or modify them under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
+APT is free software; you can redistribute them and/or modify them under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
version.
On Debian systems, a copy of the GNU General Public License can be
diff --git a/doc/examples/acquire.py b/doc/examples/acquire.py
index 939c33a2..58372961 100644
--- a/doc/examples/acquire.py
+++ b/doc/examples/acquire.py
@@ -4,15 +4,15 @@ import os
import sys
import tempfile
+
def get_file(fetcher, uri, destFile):
- # get the file
- af = apt_pkg.GetPkgAcqFile(fetcher,
- uri=uri,
- descr="sample descr", destFile=destFile)
- res = fetcher.Run()
- if res != fetcher.ResultContinue:
- return False
- return True
+ # get the file
+ af = apt_pkg.GetPkgAcqFile(fetcher, uri=uri, descr="sample descr",
+ destFile=destFile)
+ res = fetcher.Run()
+ if res != fetcher.ResultContinue:
+ return False
+ return True
apt_pkg.init()
@@ -32,7 +32,7 @@ depcache.Upgrade(True)
progress = apt.progress.TextFetchProgress()
fetcher = apt_pkg.GetAcquire(progress)
pm = apt_pkg.GetPackageManager(depcache)
-pm.GetArchives(fetcher,list,recs)
+pm.GetArchives(fetcher, list, recs)
print "%s (%s)" % (apt_pkg.SizeToStr(fetcher.FetchNeeded), fetcher.FetchNeeded)
actiongroup = apt_pkg.GetPkgActionGroup(depcache)
for pkg in cache.Packages:
@@ -43,7 +43,7 @@ try:
os.mkdir("/tmp/pyapt-test/partial")
except OSError:
pass
-apt_pkg.Config.Set("Dir::Cache::archives","/tmp/pyapt-test")
+apt_pkg.Config.Set("Dir::Cache::archives", "/tmp/pyapt-test")
pkg = cache["3ddesktop"]
depcache.MarkInstall(pkg)
@@ -58,7 +58,7 @@ print fetcher
get_file(fetcher, "ftp://ftp.debian.org/debian/dists/README", "/tmp/lala")
-pm.GetArchives(fetcher,list,recs)
+pm.GetArchives(fetcher, list, recs)
for item in fetcher.Items:
print item
@@ -75,6 +75,3 @@ print "fetcher.Run() returned: %s" % res
print "now runing pm.DoInstall()"
res = pm.DoInstall(1)
print "pm.DoInstall() returned: %s"% res
-
-
-
diff --git a/doc/examples/action.py b/doc/examples/action.py
index adf26539..7153292c 100644
--- a/doc/examples/action.py
+++ b/doc/examples/action.py
@@ -21,15 +21,6 @@ cache.Update(progress)
print "Exiting"
sys.exit(0)
-
-
-
-
-
-
-
-
-
iter = cache["base-config"]
print "example package iter: %s" % iter
@@ -45,7 +36,6 @@ depcache.Init(progress)
#sys.exit()
-
# get a canidate version
ver= depcache.GetCandidateVer(iter)
print "Candidate version: %s " % ver
@@ -66,7 +56,6 @@ depcache.MarkDelete(iter)
print "DelCount: %s " % depcache.DelCount
print "%s.MarkedDelete(): %s" % (iter.Name, depcache.MarkedDelete(iter))
-
iter = cache["3dchess"]
print "\nMarking '%s' for install" % iter.Name
depcache.MarkInstall(iter)
@@ -97,10 +86,10 @@ print "UsrSize: %s " % apt_pkg.SizeToStr(depcache.UsrSize)
print "DebSize: %s " % apt_pkg.SizeToStr(depcache.DebSize)
for pkg in cache.Packages:
- if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) and depcache.IsUpgradable(pkg):
+ if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) \
+ and depcache.IsUpgradable(pkg):
print "Upgrade didn't upgrade (kept): %s" % pkg.Name
-
print "\nPerforming DistUpgrade"
depcache.Upgrade(True)
print "Keep: %s " % depcache.KeepCount
diff --git a/doc/examples/all_deps.py b/doc/examples/all_deps.py
index f4f1741c..e8c9eaaf 100644
--- a/doc/examples/all_deps.py
+++ b/doc/examples/all_deps.py
@@ -1,34 +1,36 @@
-#!/usr/bin/env python
-
-import sys
-import apt
-
-
-def dependencies(cache, pkg, deps, key="Depends"):
- #print "pkg: %s (%s)" % (pkg.name, deps)
- candver = cache._depcache.GetCandidateVer(pkg._pkg)
- if candver == None:
- return deps
- dependslist = candver.DependsList
- if dependslist.has_key(key):
- for depVerList in dependslist[key]:
- for dep in depVerList:
- if cache.has_key(dep.TargetPkg.Name):
- if pkg.name != dep.TargetPkg.Name and not dep.TargetPkg.Name in deps:
- deps.add(dep.TargetPkg.Name)
- dependencies(cache, cache[dep.TargetPkg.Name], deps, key)
- return deps
-
-
-pkgname = sys.argv[1]
-c = apt.Cache()
-pkg = c[pkgname]
-
-deps = set()
-
-deps = dependencies(c,pkg, deps, "Depends")
-print " ".join(deps)
-
-preDeps = set()
-preDeps = dependencies(c,pkg, preDeps, "PreDepends")
-print " ".join(preDeps)
+#!/usr/bin/env python
+
+import sys
+import apt
+
+
+def dependencies(cache, pkg, deps, key="Depends"):
+ #print "pkg: %s (%s)" % (pkg.name, deps)
+ candver = cache._depcache.GetCandidateVer(pkg._pkg)
+ if candver == None:
+ return deps
+ dependslist = candver.DependsList
+ if dependslist.has_key(key):
+ for depVerList in dependslist[key]:
+ for dep in depVerList:
+ if cache.has_key(dep.TargetPkg.Name):
+ if pkg.name != dep.TargetPkg.Name and \
+ not dep.TargetPkg.Name in deps:
+ deps.add(dep.TargetPkg.Name)
+ dependencies(
+ cache, cache[dep.TargetPkg.Name], deps, key)
+ return deps
+
+
+pkgname = sys.argv[1]
+c = apt.Cache()
+pkg = c[pkgname]
+
+deps = set()
+
+deps = dependencies(c, pkg, deps, "Depends")
+print " ".join(deps)
+
+preDeps = set()
+preDeps = dependencies(c, pkg, preDeps, "PreDepends")
+print " ".join(preDeps)
diff --git a/doc/examples/build-deps.py b/doc/examples/build-deps.py
index 81a8b408..dc1a6f4e 100755
--- a/doc/examples/build-deps.py
+++ b/doc/examples/build-deps.py
@@ -5,18 +5,20 @@ import apt_pkg
import sys
import sets # only needed for python2.3, python2.4 supports this naively
+
def get_source_pkg(pkg, records, depcache):
- """ get the source package name of a given package """
- version = depcache.GetCandidateVer(pkg)
- if not version:
- return None
- file, index = version.FileList.pop(0)
- records.Lookup((file, index))
- if records.SourcePkg != "":
- srcpkg = records.SourcePkg
- else:
- srcpkg = pkg.Name
- return srcpkg
+ """ get the source package name of a given package """
+ version = depcache.GetCandidateVer(pkg)
+ if not version:
+ return None
+ file, index = version.FileList.pop(0)
+ records.Lookup((file, index))
+ if records.SourcePkg != "":
+ srcpkg = records.SourcePkg
+ else:
+ srcpkg = pkg.Name
+ return srcpkg
+
# main
apt_pkg.init()
@@ -28,45 +30,45 @@ srcrecords = apt_pkg.GetPkgSrcRecords()
# base package that we use for build-depends calculation
if len(sys.argv) < 2:
- print "need a package name as argument"
- sys.exit(1)
+ print "need a package name as argument"
+ sys.exit(1)
try:
- base = cache[sys.argv[1]]
+ base = cache[sys.argv[1]]
except KeyError:
- print "No package %s found" % sys.argv[1]
- sys.exit(1)
+ print "No package %s found" % sys.argv[1]
+ sys.exit(1)
all_build_depends = sets.Set()
# get the build depdends for the package itself
srcpkg_name = get_source_pkg(base, records, depcache)
print "srcpkg_name: %s " % srcpkg_name
if not srcpkg_name:
- print "Can't find source package for '%s'" % pkg.Name
+ print "Can't find source package for '%s'" % pkg.Name
srcrec = srcrecords.Lookup(srcpkg_name)
if srcrec:
- print "Files:"
- print srcrecords.Files
- bd = srcrecords.BuildDepends
- print "build-depends of the package: %s " % bd
- for b in bd:
- all_build_depends.add(b[0])
+ print "Files:"
+ print srcrecords.Files
+ bd = srcrecords.BuildDepends
+ print "build-depends of the package: %s " % bd
+ for b in bd:
+ all_build_depends.add(b[0])
# calculate the build depends for all dependencies
depends = depcache.GetCandidateVer(base).DependsList
for dep in depends["Depends"]: # FIXME: do we need to consider PreDepends?
- pkg = dep[0].TargetPkg
- srcpkg_name = get_source_pkg(pkg, records, depcache)
- if not srcpkg_name:
- print "Can't find source package for '%s'" % pkg.Name
- continue
- srcrec = srcrecords.Lookup(srcpkg_name)
- if srcrec:
- #print srcrecords.Package
- #print srcrecords.Binaries
- bd = srcrecords.BuildDepends
- #print "%s: %s " % (srcpkg_name, bd)
- for b in bd:
- all_build_depends.add(b[0])
-
+ pkg = dep[0].TargetPkg
+ srcpkg_name = get_source_pkg(pkg, records, depcache)
+ if not srcpkg_name:
+ print "Can't find source package for '%s'" % pkg.Name
+ continue
+ srcrec = srcrecords.Lookup(srcpkg_name)
+ if srcrec:
+ #print srcrecords.Package
+ #print srcrecords.Binaries
+ bd = srcrecords.BuildDepends
+ #print "%s: %s " % (srcpkg_name, bd)
+ for b in bd:
+ all_build_depends.add(b[0])
+
print "\n".join(all_build_depends)
diff --git a/doc/examples/cdrom.py b/doc/examples/cdrom.py
index bf044d7c..743220a6 100644
--- a/doc/examples/cdrom.py
+++ b/doc/examples/cdrom.py
@@ -2,7 +2,8 @@
# example how to deal with the depcache
import apt_pkg
-import sys, os
+import sys
+import os
import copy
from progress import CdromProgress
@@ -16,17 +17,11 @@ print cdrom
progress = CdromProgress()
-(res,ident) = cdrom.Ident(progress)
+(res, ident) = cdrom.Ident(progress)
print "ident result is: %s (%s) " % (res, ident)
apt_pkg.Config.Set("APT::CDROM::Rename", "True")
cdrom.Add(progress)
-
-
print "Exiting"
sys.exit(0)
-
-
-
-
diff --git a/doc/examples/checkstate.py b/doc/examples/checkstate.py
index 2986872f..3368d500 100755
--- a/doc/examples/checkstate.py
+++ b/doc/examples/checkstate.py
@@ -14,23 +14,23 @@ packages = cache.Packages
uninstalled, updated, upgradable = {}, {}, {}
for package in packages:
- versions = package.VersionList
- if not versions:
- continue
- version = versions[0]
- for other_version in versions:
- if apt_pkg.VersionCompare(version.VerStr, other_version.VerStr)<0:
- version = other_version
- if package.CurrentVer:
- current = package.CurrentVer
- if apt_pkg.VersionCompare(current.VerStr, version.VerStr)<0:
- upgradable[package.Name] = version
- break
- else:
- updated[package.Name] = current
- else:
- uninstalled[package.Name] = version
+ versions = package.VersionList
+ if not versions:
+ continue
+ version = versions[0]
+ for other_version in versions:
+ if apt_pkg.VersionCompare(version.VerStr, other_version.VerStr)<0:
+ version = other_version
+ if package.CurrentVer:
+ current = package.CurrentVer
+ if apt_pkg.VersionCompare(current.VerStr, version.VerStr)<0:
+ upgradable[package.Name] = version
+ break
+ else:
+ updated[package.Name] = current
+ else:
+ uninstalled[package.Name] = version
for l in (uninstalled, updated, upgradable):
- print l.items()[0]
+ print l.items()[0]
diff --git a/doc/examples/config.py b/doc/examples/config.py
index 24d90a0d..9d4e51fc 100755
--- a/doc/examples/config.py
+++ b/doc/examples/config.py
@@ -6,49 +6,53 @@
# config.py -no-h --no-help --help=no ; Turn off help
# config.py -qqq -q=3 ; verbosity to 3
# config.py -c /etc/apt/apt.conf ; include that config file]
-# config.py -o help=true ; Turn on help by giving a config file string
+# config.py -o help=true ; Turn on help by giving a
+# ; config file string
# config.py -no-h -- -help ; Turn off help, specify the file '-help'
# -c and -o are standard APT-program options.
# This shows how to use the system for configuration and option control.
# The other varient is for ISC object config files. See configisc.py.
-import apt_pkg,sys,posixpath;
+import apt_pkg
+import sys
+import posixpath
# Create a new empty Configuration object - there is also the system global
# configuration object apt_pkg.Config which is used interally by apt-pkg
# routines to control unusual situations. I recommend using the sytem global
# whenever possible..
-Cnf = apt_pkg.newConfiguration();
+Cnf = apt_pkg.newConfiguration()
-print "Command line is",sys.argv
+print "Command line is", sys.argv
# Load the default configuration file, InitConfig() does this better..
-Cnf.Set("config-file","/etc/apt/apt.conf"); # or Cnf["config-file"] = "..";
+Cnf.Set("config-file", "/etc/apt/apt.conf") # or Cnf["config-file"] = ".."
if posixpath.exists(Cnf.FindFile("config-file")):
- apt_pkg.ReadConfigFile(Cnf,"/etc/apt/apt.conf");
+ apt_pkg.ReadConfigFile(Cnf, "/etc/apt/apt.conf")
# Merge the command line arguments into the configuration space
-Arguments = [('h',"help","help"),
- ('v',"version","version"),
- ('q',"quiet","quiet","IntLevel"),
- ('c',"config-file","","ConfigFile"),
- ('o',"option","","ArbItem")]
-print "FileNames",apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv);
+Arguments = [('h', "help", "help"),
+ ('v', "version", "version"),
+ ('q', "quiet", "quiet", "IntLevel"),
+ ('c', "config-file", "", "ConfigFile"),
+ ('o', "option", "", "ArbItem")]
+print "FileNames", apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv)
-print "Quiet level selected is",Cnf.FindI("quiet",0);
+print "Quiet level selected is", Cnf.FindI("quiet", 0)
# Do some stuff with it
-if Cnf.FindB("version",0) == 1:
- print "Version selected - 1.1";
+if Cnf.FindB("version", 0) == 1:
+ print "Version selected - 1.1"
-if Cnf.FindB("help",0) == 1:
- print "python-apt",apt_pkg.Version,"compiled on",apt_pkg.Date,apt_pkg.Time;
- print "Hi, I am the help text for this program";
- sys.exit(0);
+if Cnf.FindB("help", 0) == 1:
+ print "python-apt", apt_pkg.Version, \
+ "compiled on", apt_pkg.Date, apt_pkg.Time
+ print "Hi, I am the help text for this program"
+ sys.exit(0)
-print "No help for you, try -h";
+print "No help for you, try -h"
# Print the configuration space
-print "The Configuration space looks like:";
+print "The Configuration space looks like:"
for I in Cnf.keys():
- print "%s \"%s\";"%(I,Cnf[I]);
+ print "%s \"%s\";" % (I, Cnf[I])
diff --git a/doc/examples/configisc.py b/doc/examples/configisc.py
index 1773a919..1d5965f5 100755
--- a/doc/examples/configisc.py
+++ b/doc/examples/configisc.py
@@ -8,32 +8,37 @@
# doc/examples/ftp-archive.conf
# or a bind8 config file..
-import apt_pkg,sys,posixpath;
+import apt_pkg
+import sys
+import posixpath
-ConfigFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv);
+ConfigFile = apt_pkg.ParseCommandLine(apt_pkg.Config, [], sys.argv)
if len(ConfigFile) != 1:
- print "Must have exactly 1 file name";
- sys.exit(0);
+ print "Must have exactly 1 file name"
+ sys.exit(0)
-Cnf = apt_pkg.newConfiguration();
-apt_pkg.ReadConfigFileISC(Cnf,ConfigFile[0]);
+Cnf = apt_pkg.newConfiguration()
+apt_pkg.ReadConfigFileISC(Cnf, ConfigFile[0])
# Print the configuration space
-#print "The Configuration space looks like:";
+#print "The Configuration space looks like:"
#for I in Cnf.keys():
-# print "%s \"%s\";"%(I,Cnf[I]);
+# print "%s \"%s\";" % (I, Cnf[I])
# bind8 config file..
if Cnf.has_key("Zone"):
- print "Zones: ",Cnf.SubTree("zone").List();
- for I in Cnf.List("zone"):
- SubCnf = Cnf.SubTree(I);
- if SubCnf.Find("type") == "slave":
- print "Masters for %s: %s"%(SubCnf.MyTag(),SubCnf.ValueList("masters"));
+ print "Zones: ", Cnf.SubTree("zone").List()
+ for I in Cnf.List("zone"):
+ SubCnf = Cnf.SubTree(I)
+ if SubCnf.Find("type") == "slave":
+ print "Masters for %s: %s" % (
+ SubCnf.MyTag(), SubCnf.ValueList("masters"))
else:
- print "Tree definitions:";
- for I in Cnf.List("tree"):
- SubCnf = Cnf.SubTree(I);
- # This could use Find which would eliminate the possibility of exceptions.
- print "Subtree %s with sections '%s' and architectures '%s'"%(SubCnf.MyTag(),SubCnf["Sections"],SubCnf["Architectures"]);
+ print "Tree definitions:"
+ for I in Cnf.List("tree"):
+ SubCnf = Cnf.SubTree(I)
+ # This could use Find which would eliminate the possibility of
+ # exceptions.
+ print "Subtree %s with sections '%s' and architectures '%s'" % (
+ SubCnf.MyTag(), SubCnf["Sections"], SubCnf["Architectures"])
diff --git a/doc/examples/deb_inspect.py b/doc/examples/deb_inspect.py
index b57526c6..cc0d04be 100755
--- a/doc/examples/deb_inspect.py
+++ b/doc/examples/deb_inspect.py
@@ -6,11 +6,11 @@ import apt_inst
import sys
import os.path
-def Callback(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor):
- """ callback for debExtract """
- print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\
- % (What,Name,Link,Mode,UID,GID,Size, MTime, Major, Minor);
+def Callback(What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor):
+ """ callback for debExtract """
+ print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u" \
+ % (What, Name, Link, Mode, UID, GID, Size, MTime, Major, Minor)
if __name__ == "__main__":
@@ -39,9 +39,11 @@ if __name__ == "__main__":
print "extracting archive"
dir = "/tmp/deb"
os.mkdir(dir)
- apt_inst.debExtractArchive(open(file),dir)
+ apt_inst.debExtractArchive(open(file), dir)
+
def visit(arg, dirname, names):
print "%s/" % dirname
for file in names:
print "\t%s" % file
+
os.path.walk(dir, visit, None)
diff --git a/doc/examples/depcache.py b/doc/examples/depcache.py
index 556c954b..ad884fe7 100644
--- a/doc/examples/depcache.py
+++ b/doc/examples/depcache.py
@@ -84,7 +84,8 @@ print "UsrSize: %s " % apt_pkg.SizeToStr(depcache.UsrSize)
print "DebSize: %s " % apt_pkg.SizeToStr(depcache.DebSize)
for pkg in cache.Packages:
- if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) and depcache.IsUpgradable(pkg):
+ if pkg.CurrentVer != None and not depcache.MarkedInstall(pkg) \
+ and depcache.IsUpgradable(pkg):
print "Upgrade didn't upgrade (kept): %s" % pkg.Name
diff --git a/doc/examples/dependant-pkgs.py b/doc/examples/dependant-pkgs.py
index f36936a8..bb10ce70 100755
--- a/doc/examples/dependant-pkgs.py
+++ b/doc/examples/dependant-pkgs.py
@@ -6,31 +6,31 @@ import sys
pkgs = set()
cache = apt.Cache()
for pkg in cache:
- candver = cache._depcache.GetCandidateVer(pkg._pkg)
- if candver == None:
- continue
- dependslist = candver.DependsList
- for dep in dependslist.keys():
- # get the list of each dependency object
- for depVerList in dependslist[dep]:
- for z in depVerList:
- # get all TargetVersions of
- # the dependency object
- for tpkg in z.AllTargets():
- if sys.argv[1] == tpkg.ParentPkg.Name:
- pkgs.add(pkg.name)
+ candver = cache._depcache.GetCandidateVer(pkg._pkg)
+ if candver == None:
+ continue
+ dependslist = candver.DependsList
+ for dep in dependslist.keys():
+ # get the list of each dependency object
+ for depVerList in dependslist[dep]:
+ for z in depVerList:
+ # get all TargetVersions of
+ # the dependency object
+ for tpkg in z.AllTargets():
+ if sys.argv[1] == tpkg.ParentPkg.Name:
+ pkgs.add(pkg.name)
main = set()
universe = set()
for pkg in pkgs:
- if "universe" in cache[pkg].section:
- universe.add(cache[pkg].sourcePackageName)
- else:
- main.add(cache[pkg].sourcePackageName)
+ if "universe" in cache[pkg].section:
+ universe.add(cache[pkg].sourcePackageName)
+ else:
+ main.add(cache[pkg].sourcePackageName)
-print "main:"
+print "main:"
print "\n".join(main)
print
-print "universe:"
+print "universe:"
print "\n".join(universe)
diff --git a/doc/examples/desc.py b/doc/examples/desc.py
index 87b9473b..f47517cf 100644
--- a/doc/examples/desc.py
+++ b/doc/examples/desc.py
@@ -3,7 +3,7 @@ import apt_pkg
apt_pkg.init()
-apt_pkg.Config.Set("APT::Acquire::Translation","de")
+apt_pkg.Config.Set("APT::Acquire::Translation", "de")
cache = apt_pkg.GetCache()
depcache = apt_pkg.GetDepCache(cache)
@@ -15,11 +15,10 @@ print cand
desc = cand.TranslatedDescription
print desc
print desc.FileList
-(f,index) = desc.FileList.pop(0)
+(f, index) = desc.FileList.pop(0)
records = apt_pkg.GetPkgRecords(cache)
-records.Lookup((f,index))
+records.Lookup((f, index))
desc = records.LongDesc
print len(desc)
print desc
-
diff --git a/doc/examples/gui-inst.py b/doc/examples/gui-inst.py
index 9a3b007f..cb49db3e 100755
--- a/doc/examples/gui-inst.py
+++ b/doc/examples/gui-inst.py
@@ -30,7 +30,5 @@ if __name__ == "__main__":
else:
cache["2vcard"].markInstall()
progress.show_terminal(expanded=True)
- cache.commit(progress.fetch,
- progress.install)
-
+ cache.commit(progress.fetch, progress.install)
gtk.main()
diff --git a/doc/examples/indexfile.py b/doc/examples/indexfile.py
index d383fd61..22d0b635 100644
--- a/doc/examples/indexfile.py
+++ b/doc/examples/indexfile.py
@@ -10,7 +10,7 @@ cache = apt_pkg.GetCache()
depcache = apt_pkg.GetDepCache(cache)
pkg = cache["libimlib2"]
cand = depcache.GetCandidateVer(pkg)
-for (f,i) in cand.FileList:
+for (f, i) in cand.FileList:
index = sources.FindIndex(f)
print index
if index:
diff --git a/doc/examples/inst.py b/doc/examples/inst.py
index ff9d452c..a3a50356 100644
--- a/doc/examples/inst.py
+++ b/doc/examples/inst.py
@@ -2,27 +2,34 @@
# example how to deal with the depcache
import apt
-import sys, os
+import sys
+import os
import copy
import time
from apt.progress import InstallProgress
+
class TextInstallProgress(InstallProgress):
- def __init__(self):
- apt.progress.InstallProgress.__init__(self)
- self.last = 0.0
- def updateInterface(self):
- InstallProgress.updateInterface(self)
- if self.last >= self.percent:
- return
- sys.stdout.write("\r[%s] %s\n" %(self.percent, self.status))
- sys.stdout.flush()
- self.last = self.percent
- def conffile(self,current,new):
- print "conffile prompt: %s %s" % (current,new)
- def error(self, errorstr):
- print "got dpkg error: '%s'" % errorstr
+
+ def __init__(self):
+ apt.progress.InstallProgress.__init__(self)
+ self.last = 0.0
+
+ def updateInterface(self):
+ InstallProgress.updateInterface(self)
+ if self.last >= self.percent:
+ return
+ sys.stdout.write("\r[%s] %s\n" %(self.percent, self.status))
+ sys.stdout.flush()
+ self.last = self.percent
+
+ def conffile(self, current, new):
+ print "conffile prompt: %s %s" % (current, new)
+
+ def error(self, errorstr):
+ print "got dpkg error: '%s'" % errorstr
+
cache = apt.Cache(apt.progress.OpTextProgress())
@@ -33,16 +40,12 @@ pkg = cache["3dchess"]
# install or remove, the importend thing is to keep us busy :)
if pkg.isInstalled:
- print "Going to delete %s" % pkg.name
- pkg.markDelete()
+ print "Going to delete %s" % pkg.name
+ pkg.markDelete()
else:
- print "Going to install %s" % pkg.name
- pkg.markInstall()
+ print "Going to install %s" % pkg.name
+ pkg.markInstall()
res = cache.commit(fprogress, iprogress)
print res
sys.exit(0)
-
-
-
-
diff --git a/doc/examples/metaindex.py b/doc/examples/metaindex.py
index 1bce0dba..f00a7e01 100644
--- a/doc/examples/metaindex.py
+++ b/doc/examples/metaindex.py
@@ -9,7 +9,7 @@ sources.ReadMainList()
for metaindex in sources.List:
print metaindex
- print "URI: ",metaindex.URI
- print "Dist: ",metaindex.Dist
- print "IndexFiles: ","\n".join([str(i) for i in metaindex.IndexFiles])
+ print "URI: ", metaindex.URI
+ print "Dist: ", metaindex.Dist
+ print "IndexFiles: ", "\n".join([str(i) for i in metaindex.IndexFiles])
print
diff --git a/doc/examples/print_uris.py b/doc/examples/print_uris.py
index c8a64223..3b678e83 100755
--- a/doc/examples/print_uris.py
+++ b/doc/examples/print_uris.py
@@ -12,11 +12,11 @@ upgradable = filter(lambda p: p.isUpgradable, cache)
for pkg in upgradable:
- pkg._lookupRecord(True)
- path = apt_pkg.ParseSection(pkg._records.Record)["Filename"]
- cand = pkg._depcache.GetCandidateVer(pkg._pkg)
- for (packagefile,i) in cand.FileList:
- indexfile = cache._list.FindIndex(packagefile)
- if indexfile:
- uri = indexfile.ArchiveURI(path)
- print uri
+ pkg._lookupRecord(True)
+ path = apt_pkg.ParseSection(pkg._records.Record)["Filename"]
+ cand = pkg._depcache.GetCandidateVer(pkg._pkg)
+ for (packagefile, i) in cand.FileList:
+ indexfile = cache._list.FindIndex(packagefile)
+ if indexfile:
+ uri = indexfile.ArchiveURI(path)
+ print uri
diff --git a/doc/examples/progress.py b/doc/examples/progress.py
index b90253cb..c56734b7 100644
--- a/doc/examples/progress.py
+++ b/doc/examples/progress.py
@@ -4,7 +4,9 @@ import sys
import time
import string
+
class TextProgress(apt.OpProgress):
+
def __init__(self):
self.last=0.0
@@ -21,6 +23,7 @@ class TextProgress(apt.OpProgress):
class TextFetchProgress(apt.FetchProgress):
+
def __init__(self):
pass
@@ -31,27 +34,36 @@ class TextFetchProgress(apt.FetchProgress):
pass
def updateStatus(self, uri, descr, shortDescr, status):
- print "UpdateStatus: '%s' '%s' '%s' '%i'" % (uri,descr,shortDescr, status)
+ print "UpdateStatus: '%s' '%s' '%s' '%i'" % (
+ uri, descr, shortDescr, status)
+
def pulse(self):
- print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (SizeToStr(self.currentCPS), SizeToStr(self.currentBytes), SizeToStr(self.totalBytes), self.currentItems, self.totalItems)
+ print "Pulse: CPS: %s/s; Bytes: %s/%s; Item: %s/%s" % (
+ SizeToStr(self.currentCPS), SizeToStr(self.currentBytes),
+ SizeToStr(self.totalBytes), self.currentItems, self.totalItems)
return True
def mediaChange(self, medium, drive):
- print "Please insert medium %s in drive %s" % (medium, drive)
- sys.stdin.readline()
+ print "Please insert medium %s in drive %s" % (medium, drive)
+ sys.stdin.readline()
#return False
class TextInstallProgress(apt.InstallProgress):
+
def __init__(self):
apt.InstallProgress.__init__(self)
pass
+
def startUpdate(self):
print "StartUpdate"
+
def finishUpdate(self):
print "FinishUpdate"
+
def statusChange(self, pkg, percent, status):
print "[%s] %s: %s" % (percent, pkg, status)
+
def updateInterface(self):
apt.InstallProgress.updateInterface(self)
# usefull to e.g. redraw a GUI
@@ -59,20 +71,25 @@ class TextInstallProgress(apt.InstallProgress):
class TextCdromProgress(apt.CdromProgress):
+
def __init__(self):
pass
+
# update is called regularly so that the gui can be redrawn
+
def update(self, text, step):
# check if we actually have some text to display
if text != "":
print "Update: %s %s" % (string.strip(text), step)
+
def askCdromName(self):
print "Please enter cd-name: ",
cd_name = sys.stdin.readline()
return (True, string.strip(cd_name))
+
def changeCdrom(self):
print "Please insert cdrom and press <ENTER>"
- answer = sys.stdin.readline()
+ answer = sys.stdin.readline()
return True
diff --git a/doc/examples/recommends.py b/doc/examples/recommends.py
index c1a7eb2e..f0b3b1be 100755
--- a/doc/examples/recommends.py
+++ b/doc/examples/recommends.py
@@ -5,37 +5,35 @@ apt_pkg.init()
cache = apt_pkg.GetCache()
+
class Wanted:
- def __init__(self, name):
- self.name = name
- self.recommended = []
- self.suggested = []
+ def __init__(self, name):
+ self.name = name
+ self.recommended = []
+ self.suggested = []
+
wanted = {}
for package in cache.Packages:
- current = package.CurrentVer
- if not current:
- continue
- depends = current.DependsList
- for (key, attr) in (('Suggests', 'suggested'),
- ('Recommends', 'recommended')):
- list = depends.get(key, [])
- for dependency in list:
- name = dependency[0].TargetPkg.Name
- dep = cache[name]
- if dep.CurrentVer:
- continue
- getattr(wanted.setdefault(name, Wanted(name)),
- attr).append(package.Name)
+ current = package.CurrentVer
+ if not current:
+ continue
+ depends = current.DependsList
+ for (key, attr) in (('Suggests', 'suggested'),
+ ('Recommends', 'recommended')):
+ list = depends.get(key, [])
+ for dependency in list:
+ name = dependency[0].TargetPkg.Name
+ dep = cache[name]
+ if dep.CurrentVer:
+ continue
+ getattr(wanted.setdefault(name, Wanted(name)),
+ attr).append(package.Name)
ks = wanted.keys()
ks.sort()
for want in ks:
- print want, wanted[want].recommended, wanted[want].suggested
-
-
-
-
+ print want, wanted[want].recommended, wanted[want].suggested
diff --git a/doc/examples/records.py b/doc/examples/records.py
index ef04b555..a7a87727 100755
--- a/doc/examples/records.py
+++ b/doc/examples/records.py
@@ -5,8 +5,9 @@ import apt
cache = apt.Cache()
for pkg in cache:
- if not pkg.candidateRecord:
- continue
- if pkg.candidateRecord.has_key("Task"):
- print "Pkg %s is part of '%s'" % (pkg.name, pkg.candidateRecord["Task"].split())
- #print pkg.candidateRecord
+ if not pkg.candidateRecord:
+ continue
+ if pkg.candidateRecord.has_key("Task"):
+ print "Pkg %s is part of '%s'" % (
+ pkg.name, pkg.candidateRecord["Task"].split())
+ #print pkg.candidateRecord
diff --git a/doc/examples/sources.py b/doc/examples/sources.py
index b48c0ba5..49652982 100644
--- a/doc/examples/sources.py
+++ b/doc/examples/sources.py
@@ -10,6 +10,7 @@ apt_pkg.init()
sources = apt_pkg.GetPkgSrcRecords()
sources.Restart()
while sources.Lookup('hello'):
- print sources.Package, sources.Version, sources.Maintainer, sources.Section, `sources.Binaries`
- print sources.Files
- print sources.Index.ArchiveURI(sources.Files[0][2])
+ print sources.Package, sources.Version, sources.Maintainer, \
+ sources.Section, `sources.Binaries`
+ print sources.Files
+ print sources.Index.ArchiveURI(sources.Files[0][2])
diff --git a/doc/examples/tagfile.py b/doc/examples/tagfile.py
index 653c0a71..4faf08ac 100755
--- a/doc/examples/tagfile.py
+++ b/doc/examples/tagfile.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python
import apt_pkg
-Parse = apt_pkg.ParseTagFile(open("/var/lib/dpkg/status","r"));
+Parse = apt_pkg.ParseTagFile(open("/var/lib/dpkg/status", "r"))
while Parse.Step() == 1:
- print Parse.Section.get("Package");
- print apt_pkg.ParseDepends(Parse.Section.get("Depends",""));
+ print Parse.Section.get("Package")
+ print apt_pkg.ParseDepends(Parse.Section.get("Depends", ""))
diff --git a/doc/examples/update.py b/doc/examples/update.py
index be7bb679..364fa1c9 100755
--- a/doc/examples/update.py
+++ b/doc/examples/update.py
@@ -9,5 +9,5 @@ if __name__ == "__main__":
"touch /tmp/update-was-run")
c = apt.Cache()
res = c.update(apt.progress.TextFetchProgress())
- print "res: ",res
+ print "res: ", res
assert(os.path.exists("/tmp/update-about-to-run"))
diff --git a/doc/examples/versiontest.py b/doc/examples/versiontest.py
index c4e5f44d..dd881f6b 100755
--- a/doc/examples/versiontest.py
+++ b/doc/examples/versiontest.py
@@ -1,36 +1,40 @@
#!/usr/bin/python
# This is a simple clone of tests/versiontest.cc
-import apt_pkg,sys,re,string;
-apt_pkg.InitConfig();
-apt_pkg.InitSystem();
+import apt_pkg
+import sys
+import re
+import string
-TestFile = apt_pkg.ParseCommandLine(apt_pkg.Config,[],sys.argv);
+apt_pkg.InitConfig()
+apt_pkg.InitSystem()
+
+TestFile = apt_pkg.ParseCommandLine(apt_pkg.Config, [], sys.argv)
if len(TestFile) != 1:
- print "Must have exactly 1 file name";
- sys.exit(0);
+ print "Must have exactly 1 file name"
+ sys.exit(0)
# Go over the file..
-List = open(TestFile[0],"r");
-CurLine = 0;
+List = open(TestFile[0], "r")
+CurLine = 0
while(1):
- Line = List.readline();
- CurLine = CurLine + 1;
- if Line == "":
- break;
- Line = string.strip(Line);
- if len(Line) == 0 or Line[0] == '#':
- continue;
+ Line = List.readline()
+ CurLine = CurLine + 1
+ if Line == "":
+ break
+ Line = string.strip(Line)
+ if len(Line) == 0 or Line[0] == '#':
+ continue
- Split = re.split("[ \n]",Line);
+ Split = re.split("[ \n]", Line)
- # Check forward
- if apt_pkg.VersionCompare(Split[0],Split[1]) != int(Split[2]):
- print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine,
- Split[0],Split[1],apt_pkg.VersionCompare(Split[0],Split[1]),
- int(Split[2]));
- # Check reverse
- if apt_pkg.VersionCompare(Split[1],Split[0]) != -1*int(Split[2]):
- print "Comparision failed on line %u. '%s' ? '%s' %i != %i"%(CurLine,
- Split[1],Split[0],apt_pkg.VersionCompare(Split[1],Split[0]),
- -1*int(Split[2]));
+ # Check forward
+ if apt_pkg.VersionCompare(Split[0], Split[1]) != int(Split[2]):
+ print "Comparision failed on line %u. '%s' ? '%s' %i != %i" % (CurLine,
+ Split[0], Split[1], apt_pkg.VersionCompare(Split[0], Split[1]),
+ int(Split[2]))
+ # Check reverse
+ if apt_pkg.VersionCompare(Split[1], Split[0]) != -1 * int(Split[2]):
+ print "Comparision failed on line %u. '%s' ? '%s' %i != %i" % (CurLine,
+ Split[1], Split[0], apt_pkg.VersionCompare(Split[1], Split[0]),
+ -1 * int(Split[2]))
diff --git a/python/acquire.cc b/python/acquire.cc
index 9cf84928..1ecf55a5 100644
--- a/python/acquire.cc
+++ b/python/acquire.cc
@@ -16,7 +16,7 @@
static PyObject *AcquireItemAttr(PyObject *Self,char *Name)
{
pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
-
+
if (strcmp("ID",Name) == 0)
return Py_BuildValue("i",(*I)->ID);
else if (strcmp("Status",Name) == 0)
@@ -56,7 +56,7 @@ static PyObject *AcquireItemAttr(PyObject *Self,char *Name)
static PyObject *AcquireItemRepr(PyObject *Self)
{
pkgAcquire::ItemIterator &I = GetCpp<pkgAcquire::ItemIterator>(Self);
-
+
char S[300];
snprintf(S,sizeof(S),"<pkgAcquire::ItemIterator object: "
"Status: %i Complete: %i Local: %i IsTrusted: %i "
@@ -91,11 +91,11 @@ PyTypeObject AcquireItemType =
static PyObject *PkgAcquireRun(PyObject *Self,PyObject *Args)
-{
+{
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(Self);
int pulseInterval = 500000;
- if (PyArg_ParseTuple(Args, "|i", &pulseInterval) == 0)
+ if (PyArg_ParseTuple(Args, "|i", &pulseInterval) == 0)
return 0;
pkgAcquire::RunResult run = fetcher->Run(pulseInterval);
@@ -104,19 +104,19 @@ static PyObject *PkgAcquireRun(PyObject *Self,PyObject *Args)
}
static PyObject *PkgAcquireShutdown(PyObject *Self,PyObject *Args)
-{
+{
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(Self);
- if (PyArg_ParseTuple(Args, "") == 0)
+ if (PyArg_ParseTuple(Args, "") == 0)
return 0;
fetcher->Shutdown();
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
-static PyMethodDef PkgAcquireMethods[] =
+static PyMethodDef PkgAcquireMethods[] =
{
{"Run",PkgAcquireRun,METH_VARARGS,"Run the fetcher"},
{"Shutdown",PkgAcquireShutdown, METH_VARARGS,"Shutdown the fetcher"},
@@ -128,16 +128,16 @@ static PyObject *AcquireAttr(PyObject *Self,char *Name)
{
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(Self);
- if(strcmp("TotalNeeded",Name) == 0)
+ if(strcmp("TotalNeeded",Name) == 0)
return Py_BuildValue("d", fetcher->TotalNeeded());
- if(strcmp("FetchNeeded",Name) == 0)
+ if(strcmp("FetchNeeded",Name) == 0)
return Py_BuildValue("d", fetcher->FetchNeeded());
- if(strcmp("PartialPresent",Name) == 0)
+ if(strcmp("PartialPresent",Name) == 0)
return Py_BuildValue("d", fetcher->PartialPresent());
- if(strcmp("Items",Name) == 0)
+ if(strcmp("Items",Name) == 0)
{
PyObject *List = PyList_New(0);
- for (pkgAcquire::ItemIterator I = fetcher->ItemsBegin();
+ for (pkgAcquire::ItemIterator I = fetcher->ItemsBegin();
I != fetcher->ItemsEnd(); I++)
{
PyObject *Obj;
@@ -149,11 +149,11 @@ static PyObject *AcquireAttr(PyObject *Self,char *Name)
return List;
}
// some constants
- if(strcmp("ResultContinue",Name) == 0)
+ if(strcmp("ResultContinue",Name) == 0)
return Py_BuildValue("i", pkgAcquire::Continue);
- if(strcmp("ResultFailed",Name) == 0)
+ if(strcmp("ResultFailed",Name) == 0)
return Py_BuildValue("i", pkgAcquire::Failed);
- if(strcmp("ResultCancelled",Name) == 0)
+ if(strcmp("ResultCancelled",Name) == 0)
return Py_BuildValue("i", pkgAcquire::Cancelled);
return Py_FindMethod(PkgAcquireMethods,Self,Name);
@@ -201,7 +201,7 @@ PyObject *GetAcquire(PyObject *Self,PyObject *Args)
CppPyObject<pkgAcquire*> *FetcherObj =
CppPyObject_NEW<pkgAcquire*>(&PkgAcquireType, fetcher);
-
+
return FetcherObj;
}
@@ -255,8 +255,8 @@ PyObject *GetPkgAcqFile(PyObject *Self, PyObject *Args, PyObject * kwds)
"destDir", "destFile", NULL};
if (PyArg_ParseTupleAndKeywords(Args, kwds, "O!s|sissss", kwlist,
- &PkgAcquireType, &pyfetcher, &uri, &md5,
- &size, &descr, &shortDescr, &destDir, &destFile) == 0)
+ &PkgAcquireType, &pyfetcher, &uri, &md5,
+ &size, &descr, &shortDescr, &destDir, &destFile) == 0)
return 0;
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(pyfetcher);
diff --git a/python/apt_instmodule.cc b/python/apt_instmodule.cc
index ea703b21..48868d86 100644
--- a/python/apt_instmodule.cc
+++ b/python/apt_instmodule.cc
@@ -5,10 +5,10 @@
apt_intmodule - Top level for the python module. Create the internal
structures for the module in the interpriter.
-
+
Note, this module shares state (particularly global config) with the
apt_pkg module.
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -17,7 +17,7 @@
#include <apt-pkg/debfile.h>
#include <apt-pkg/error.h>
-
+
#include <sys/stat.h>
#include <unistd.h>
#include <Python.h>
@@ -37,7 +37,7 @@ static PyObject *debExtractControl(PyObject *Self,PyObject *Args)
PyObject *File;
if (PyArg_ParseTuple(Args,"O!|s",&PyFile_Type,&File,&Member) == 0)
return 0;
-
+
// Subscope makes sure any clean up errors are properly handled.
PyObject *Res = 0;
{
@@ -46,13 +46,13 @@ static PyObject *debExtractControl(PyObject *Self,PyObject *Args)
debDebFile Deb(Fd);
if (_error->PendingError() == true)
return HandleErrors();
-
+
debDebFile::MemControlExtract Extract(Member);
if (Extract.Read(Deb) == false)
return HandleErrors();
-
+
// Build the return result
-
+
if (Extract.Control == 0)
{
Py_INCREF(Py_None);
@@ -61,7 +61,7 @@ static PyObject *debExtractControl(PyObject *Self,PyObject *Args)
else
Res = PyString_FromStringAndSize(Extract.Control,Extract.Length+2);
}
-
+
return HandleErrors(Res);
}
/*}}}*/
@@ -78,11 +78,11 @@ static PyObject *debExtractArchive(PyObject *Self,PyObject *Args)
PyObject *File;
if (PyArg_ParseTuple(Args,"O!|s",&PyFile_Type,&File,&Rootdir) == 0)
return 0;
-
+
// Subscope makes sure any clean up errors are properly handled.
bool res = false;
{
- if(Rootdir != NULL)
+ if(Rootdir != NULL)
{
getcwd(cwd, sizeof(cwd));
chdir(Rootdir);
@@ -105,7 +105,7 @@ static PyObject *debExtractArchive(PyObject *Self,PyObject *Args)
chdir (cwd);
if (res == false)
return HandleErrors(Py_BuildValue("b",res));
- }
+ }
return HandleErrors(Py_BuildValue("b",res));
}
/*}}}*/
@@ -120,13 +120,13 @@ static PyObject *arCheckMember(PyObject *Self,PyObject *Args)
PyObject *File;
if (PyArg_ParseTuple(Args,"O!s",&PyFile_Type,&File,&Member) == 0)
return 0;
-
+
// Open the file and associate the .deb
FileFd Fd(fileno(PyFile_AsFile(File)),false);
ARArchive AR(Fd);
if (_error->PendingError() == true)
return HandleErrors(Py_BuildValue("b",res));
-
+
if(AR.FindMember(Member) != 0)
res = true;
diff --git a/python/apt_instmodule.h b/python/apt_instmodule.h
index c8d09736..45ba5f85 100644
--- a/python/apt_instmodule.h
+++ b/python/apt_instmodule.h
@@ -4,7 +4,7 @@
/* ######################################################################
Prototypes for the module
-
+
##################################################################### */
/*}}}*/
#ifndef APT_INSTMODULE_H
diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc
index 7b13c838..2e488d58 100644
--- a/python/apt_pkgmodule.cc
+++ b/python/apt_pkgmodule.cc
@@ -5,7 +5,7 @@
apt_pkgmodule - Top level for the python module. Create the internal
structures for the module in the interpriter.
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -22,7 +22,7 @@
#include <apt-pkg/sha256.h>
#include <apt-pkg/init.h>
#include <apt-pkg/pkgsystem.h>
-
+
#include <sys/stat.h>
#include <unistd.h>
#include <Python.h>
@@ -46,16 +46,16 @@ static PyObject *VersionCompare(PyObject *Self,PyObject *Args)
char *B;
int LenA;
int LenB;
-
+
if (PyArg_ParseTuple(Args,"s#s#",&A,&LenA,&B,&LenB) == 0)
return 0;
-
+
if (_system == 0)
{
PyErr_SetString(PyExc_ValueError,"_system not initialized");
return 0;
}
-
+
return Py_BuildValue("i",_system->VS->DoCmpVersion(A,A+LenA,B,B+LenB));
}
@@ -66,7 +66,7 @@ static PyObject *CheckDep(PyObject *Self,PyObject *Args)
char *B;
char *OpStr;
unsigned int Op = 0;
-
+
if (PyArg_ParseTuple(Args,"sss",&A,&OpStr,&B) == 0)
return 0;
if (*debListParser::ConvertRelation(OpStr,Op) != 0)
@@ -80,7 +80,7 @@ static PyObject *CheckDep(PyObject *Self,PyObject *Args)
PyErr_SetString(PyExc_ValueError,"_system not initialized");
return 0;
}
-
+
return Py_BuildValue("i",_system->VS->CheckDep(A,Op,B));
// return Py_BuildValue("i",pkgCheckDep(B,A,Op));
}
@@ -94,7 +94,7 @@ static PyObject *UpstreamVersion(PyObject *Self,PyObject *Args)
return CppPyString(_system->VS->UpstreamVersion(Ver));
}
-static char *doc_ParseDepends =
+static char *doc_ParseDepends =
"ParseDepends(s) -> list of tuples\n"
"\n"
"The resulting tuples are (Pkg,Ver,Operation). Each anded dependency is a\n"
@@ -107,11 +107,11 @@ static PyObject *RealParseDepends(PyObject *Self,PyObject *Args,
string Package;
string Version;
unsigned int Op;
-
+
const char *Start;
const char *Stop;
int Len;
-
+
if (PyArg_ParseTuple(Args,"s#",&Start,&Len) == 0)
return 0;
Stop = Start + Len;
@@ -121,7 +121,7 @@ static PyObject *RealParseDepends(PyObject *Self,PyObject *Args,
{
if (Start == Stop)
break;
-
+
Start = debListParser::ParseDepends(Start,Stop,Package,Version,Op,
ParseArchFlags);
if (Start == 0)
@@ -130,10 +130,10 @@ static PyObject *RealParseDepends(PyObject *Self,PyObject *Args,
Py_DECREF(List);
return 0;
}
-
+
if (LastRow == 0)
LastRow = PyList_New(0);
-
+
if (Package.empty() == false)
{
PyObject *Obj;
@@ -142,7 +142,7 @@ static PyObject *RealParseDepends(PyObject *Self,PyObject *Args,
pkgCache::CompTypeDeb(Op)));
Py_DECREF(Obj);
}
-
+
// Group ORd deps into a single row..
if ((Op & pkgCache::Dep::Or) != pkgCache::Dep::Or)
{
@@ -150,7 +150,7 @@ static PyObject *RealParseDepends(PyObject *Self,PyObject *Args,
PyList_Append(List,LastRow);
Py_DECREF(LastRow);
LastRow = 0;
- }
+ }
}
return List;
}
@@ -171,7 +171,7 @@ static PyObject *md5sum(PyObject *Self,PyObject *Args)
PyObject *Obj;
if (PyArg_ParseTuple(Args,"O",&Obj) == 0)
return 0;
-
+
// Digest of a string.
if (PyString_Check(Obj) != 0)
{
@@ -181,8 +181,8 @@ static PyObject *md5sum(PyObject *Self,PyObject *Args)
PyString_AsStringAndSize(Obj, &s, &len);
Sum.Add((const unsigned char*)s, len);
return CppPyString(Sum.Result().Value());
- }
-
+ }
+
// Digest of a file
if (PyFile_Check(Obj) != 0)
{
@@ -195,10 +195,10 @@ static PyObject *md5sum(PyObject *Self,PyObject *Args)
PyErr_SetFromErrno(PyExc_SystemError);
return 0;
}
-
+
return CppPyString(Sum.Result().Value());
}
-
+
PyErr_SetString(PyExc_TypeError,"Only understand strings and files");
return 0;
}
@@ -211,7 +211,7 @@ static PyObject *sha1sum(PyObject *Self,PyObject *Args)
PyObject *Obj;
if (PyArg_ParseTuple(Args,"O",&Obj) == 0)
return 0;
-
+
// Digest of a string.
if (PyString_Check(Obj) != 0)
{
@@ -221,8 +221,8 @@ static PyObject *sha1sum(PyObject *Self,PyObject *Args)
PyString_AsStringAndSize(Obj, &s, &len);
Sum.Add((const unsigned char*)s, len);
return CppPyString(Sum.Result().Value());
- }
-
+ }
+
// Digest of a file
if (PyFile_Check(Obj) != 0)
{
@@ -235,10 +235,10 @@ static PyObject *sha1sum(PyObject *Self,PyObject *Args)
PyErr_SetFromErrno(PyExc_SystemError);
return 0;
}
-
+
return CppPyString(Sum.Result().Value());
}
-
+
PyErr_SetString(PyExc_TypeError,"Only understand strings and files");
return 0;
}
@@ -251,7 +251,7 @@ static PyObject *sha256sum(PyObject *Self,PyObject *Args)
PyObject *Obj;
if (PyArg_ParseTuple(Args,"O",&Obj) == 0)
return 0;
-
+
// Digest of a string.
if (PyString_Check(Obj) != 0)
{
@@ -261,8 +261,8 @@ static PyObject *sha256sum(PyObject *Self,PyObject *Args)
PyString_AsStringAndSize(Obj, &s, &len);
Sum.Add((const unsigned char*)s, len);
return CppPyString(Sum.Result().Value());
- }
-
+ }
+
// Digest of a file
if (PyFile_Check(Obj) != 0)
{
@@ -275,27 +275,27 @@ static PyObject *sha256sum(PyObject *Self,PyObject *Args)
PyErr_SetFromErrno(PyExc_SystemError);
return 0;
}
-
+
return CppPyString(Sum.Result().Value());
}
-
+
PyErr_SetString(PyExc_TypeError,"Only understand strings and files");
return 0;
}
/*}}}*/
// init - 3 init functions /*{{{*/
// ---------------------------------------------------------------------
-static char *doc_Init =
+static char *doc_Init =
"init() -> None\n"
"Legacy. Do InitConfig then parse the command line then do InitSystem\n";
static PyObject *Init(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
- pkgInitConfig(*_config);
+
+ pkgInitConfig(*_config);
pkgInitSystem(*_config,_system);
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -307,9 +307,9 @@ static PyObject *InitConfig(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
- pkgInitConfig(*_config);
-
+
+ pkgInitConfig(*_config);
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -321,9 +321,9 @@ static PyObject *InitSystem(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
pkgInitSystem(*_config,_system);
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -331,7 +331,7 @@ static PyObject *InitSystem(PyObject *Self,PyObject *Args)
// fileutils.cc: GetLock /*{{{*/
// ---------------------------------------------------------------------
-static char *doc_GetLock =
+static char *doc_GetLock =
"GetLock(string) -> int\n"
"This will create an empty file of the given name and lock it. Once this"
" is done all other calls to GetLock in any other process will fail with"
@@ -343,7 +343,7 @@ static PyObject *GetLock(PyObject *Self,PyObject *Args)
char errors = false;
if (PyArg_ParseTuple(Args,"s|b",&file,&errors) == 0)
return 0;
-
+
int fd = GetLock(file, errors);
return HandleErrors(Py_BuildValue("i", fd));
@@ -356,9 +356,9 @@ static PyObject *PkgSystemLock(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
bool res = _system->Lock();
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_BuildValue("b", res));
}
@@ -370,9 +370,9 @@ static PyObject *PkgSystemUnLock(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
bool res = _system->UnLock();
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_BuildValue("b", res));
}
@@ -382,7 +382,7 @@ static PyObject *PkgSystemUnLock(PyObject *Self,PyObject *Args)
// initapt_pkg - Core Module Initialization /*{{{*/
// ---------------------------------------------------------------------
/* */
-static PyMethodDef methods[] =
+static PyMethodDef methods[] =
{
// Constructors
{"newConfiguration",newConfiguration,METH_VARARGS,doc_newConfiguration},
@@ -404,16 +404,16 @@ static PyMethodDef methods[] =
{"ReadConfigFile",LoadConfig,METH_VARARGS,doc_LoadConfig},
{"ReadConfigFileISC",LoadConfigISC,METH_VARARGS,doc_LoadConfig},
{"ParseCommandLine",ParseCommandLine,METH_VARARGS,doc_ParseCommandLine},
-
+
// Versioning
{"VersionCompare",VersionCompare,METH_VARARGS,doc_VersionCompare},
{"CheckDep",CheckDep,METH_VARARGS,doc_CheckDep},
{"UpstreamVersion",UpstreamVersion,METH_VARARGS,doc_UpstreamVersion},
-
+
// Depends
{"ParseDepends",ParseDepends,METH_VARARGS,doc_ParseDepends},
{"ParseSrcDepends",ParseSrcDepends,METH_VARARGS,doc_ParseDepends},
-
+
// Stuff
{"md5sum",md5sum,METH_VARARGS,doc_md5sum},
{"sha1sum",sha1sum,METH_VARARGS,doc_sha1sum},
@@ -473,13 +473,13 @@ extern "C" void initapt_pkg()
{
PyObject *Module = Py_InitModule("apt_pkg",methods);
PyObject *Dict = PyModule_GetDict(Module);
-
+
// Global variable linked to the global configuration class
CppPyObject<Configuration *> *Config = CppPyObject_NEW<Configuration *>(&ConfigurationPtrType);
Config->Object = _config;
PyDict_SetItemString(Dict,"Config",Config);
Py_DECREF(Config);
-
+
// Tag file constants
PyObject *Obj;
PyDict_SetItemString(Dict,"RewritePackageOrder",
@@ -488,7 +488,7 @@ extern "C" void initapt_pkg()
PyDict_SetItemString(Dict,"RewriteSourceOrder",
Obj = CharCharToList(TFRewriteSourceOrder));
Py_DECREF(Obj);
-
+
// Version..
AddStr(Dict,"Version",pkgVersion);
AddStr(Dict,"LibVersion",pkgLibVersion);
@@ -529,4 +529,4 @@ extern "C" void initapt_pkg()
AddInt(Dict,"InstStateHoldReInstReq",pkgCache::State::HoldReInstReq);
}
/*}}}*/
-
+
diff --git a/python/apt_pkgmodule.h b/python/apt_pkgmodule.h
index 6e02d8e3..38486182 100644
--- a/python/apt_pkgmodule.h
+++ b/python/apt_pkgmodule.h
@@ -4,7 +4,7 @@
/* ######################################################################
Prototypes for the module
-
+
##################################################################### */
/*}}}*/
#ifndef APT_PKGMODULE_H
@@ -49,7 +49,7 @@ PyObject *StrStringToBool(PyObject *self,PyObject *Args);
PyObject *StrTimeRFC1123(PyObject *self,PyObject *Args);
PyObject *StrStrToTime(PyObject *self,PyObject *Args);
PyObject *StrCheckDomainList(PyObject *Self,PyObject *Args);
-
+
// Cache Stuff
extern PyTypeObject PkgCacheType;
extern PyTypeObject PkgCacheFileType;
diff --git a/python/cache.cc b/python/cache.cc
index bd280dec..1c59bece 100644
--- a/python/cache.cc
+++ b/python/cache.cc
@@ -32,7 +32,7 @@ struct PkgListStruct
{
pkgCache::PkgIterator Iter;
unsigned long LastIndex;
-
+
PkgListStruct(pkgCache::PkgIterator const &I) : Iter(I), LastIndex(0) {}
PkgListStruct() {abort();}; // G++ Bug..
};
@@ -43,7 +43,7 @@ struct RDepListStruct
pkgCache::DepIterator Start;
unsigned long LastIndex;
unsigned long Len;
-
+
RDepListStruct(pkgCache::DepIterator const &I) : Iter(I), Start(I),
LastIndex(0)
{
@@ -68,14 +68,14 @@ static PyObject *CreateProvides(PyObject *Owner,pkgCache::PrvIterator I)
Ver);
PyList_Append(List,Obj);
Py_DECREF(Obj);
- }
+ }
return List;
}
// Cache Class /*{{{*/
// ---------------------------------------------------------------------
static PyObject *PkgCacheUpdate(PyObject *Self,PyObject *Args)
-{
+{
PyObject *CacheFilePy = GetOwner<pkgCache*>(Self);
pkgCacheFile *Cache = GetCpp<pkgCacheFile*>(CacheFilePy);
@@ -94,7 +94,7 @@ static PyObject *PkgCacheUpdate(PyObject *Self,PyObject *Args)
}
static PyObject *PkgCacheClose(PyObject *Self,PyObject *Args)
-{
+{
PyObject *CacheFilePy = GetOwner<pkgCache*>(Self);
pkgCacheFile *Cache = GetCpp<pkgCacheFile*>(CacheFilePy);
Cache->Close();
@@ -104,7 +104,7 @@ static PyObject *PkgCacheClose(PyObject *Self,PyObject *Args)
}
static PyObject *PkgCacheOpen(PyObject *Self,PyObject *Args)
-{
+{
PyObject *CacheFilePy = GetOwner<pkgCache*>(Self);
pkgCacheFile *Cache = GetCpp<pkgCacheFile*>(CacheFilePy);
@@ -134,7 +134,7 @@ static PyObject *PkgCacheOpen(PyObject *Self,PyObject *Args)
}
-static PyMethodDef PkgCacheMethods[] =
+static PyMethodDef PkgCacheMethods[] =
{
{"Update",PkgCacheUpdate,METH_VARARGS,"Update the cache"},
{"Open", PkgCacheOpen, METH_VARARGS,"Open the cache"},
@@ -145,7 +145,7 @@ static PyMethodDef PkgCacheMethods[] =
static PyObject *CacheAttr(PyObject *Self,char *Name)
{
pkgCache *Cache = GetCpp<pkgCache *>(Self);
-
+
if (strcmp("Packages",Name) == 0)
return CppOwnedPyObject_NEW<PkgListStruct>(Self,&PkgListType,Cache->PkgBegin());
else if (strcmp("PackageCount",Name) == 0)
@@ -169,7 +169,7 @@ static PyObject *CacheAttr(PyObject *Self,char *Name)
Obj = CppOwnedPyObject_NEW<pkgCache::PkgFileIterator>(Self,&PackageFileType,I);
PyList_Append(List,Obj);
Py_DECREF(Obj);
- }
+ }
return List;
}
@@ -180,15 +180,15 @@ static PyObject *CacheAttr(PyObject *Self,char *Name)
static PyObject *CacheMapOp(PyObject *Self,PyObject *Arg)
{
pkgCache *Cache = GetCpp<pkgCache *>(Self);
-
+
if (PyString_Check(Arg) == 0)
{
PyErr_SetNone(PyExc_TypeError);
return 0;
}
-
+
// Search for the package
- const char *Name = PyString_AsString(Arg);
+ const char *Name = PyString_AsString(Arg);
pkgCache::PkgIterator Pkg = Cache->FindPkg(Name);
if (Pkg.end() == true)
{
@@ -274,7 +274,7 @@ static PyObject *PkgListItem(PyObject *iSelf,Py_ssize_t Index)
Self.LastIndex = 0;
Self.Iter = Self.Iter.Cache()->PkgBegin();
}
-
+
while ((unsigned)Index > Self.LastIndex)
{
Self.LastIndex++;
@@ -285,12 +285,12 @@ static PyObject *PkgListItem(PyObject *iSelf,Py_ssize_t Index)
return 0;
}
}
-
+
return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(GetOwner<PkgListStruct>(iSelf),&PackageType,
Self.Iter);
}
-static PySequenceMethods PkgListSeq =
+static PySequenceMethods PkgListSeq =
{
PkgListLen,
0, // concat
@@ -298,9 +298,9 @@ static PySequenceMethods PkgListSeq =
PkgListItem,
0, // slice
0, // assign item
- 0 // assign slice
+ 0 // assign slice
};
-
+
PyTypeObject PkgListType =
{
PyObject_HEAD_INIT(&PyType_Type)
@@ -320,7 +320,7 @@ PyTypeObject PkgListType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
/*}}}*/
// Package Class /*{{{*/
// ---------------------------------------------------------------------
@@ -328,7 +328,7 @@ static PyObject *PackageAttr(PyObject *Self,char *Name)
{
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::PkgIterator>(Self);
-
+
if (strcmp("Name",Name) == 0)
return PyString_FromString(Pkg.Name());
else if (strcmp("VersionList",Name) == 0)
@@ -340,7 +340,7 @@ static PyObject *PackageAttr(PyObject *Self,char *Name)
Obj = CppOwnedPyObject_NEW<pkgCache::VerIterator>(Owner,&VersionType,I);
PyList_Append(List,Obj);
Py_DECREF(Obj);
- }
+ }
return List;
}
else if (strcmp("CurrentVer",Name) == 0)
@@ -350,7 +350,7 @@ static PyObject *PackageAttr(PyObject *Self,char *Name)
Py_INCREF(Py_None);
return Py_None;
}
-
+
return CppOwnedPyObject_NEW<pkgCache::VerIterator>(Owner,&VersionType,
Pkg.CurrentVer());
}
@@ -375,7 +375,7 @@ static PyObject *PackageAttr(PyObject *Self,char *Name)
return Py_BuildValue("i",(Pkg->Flags & pkgCache::Flag::Essential) != 0);
else if (strcmp("Important",Name) == 0)
return Py_BuildValue("i",(Pkg->Flags & pkgCache::Flag::Important) != 0);
-
+
PyErr_SetString(PyExc_AttributeError,Name);
return 0;
}
@@ -383,7 +383,7 @@ static PyObject *PackageAttr(PyObject *Self,char *Name)
static PyObject *PackageRepr(PyObject *Self)
{
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(Self);
-
+
char S[300];
snprintf(S,sizeof(S),"<pkgCache::Package object: Name:'%s' Section: '%s'"
" ID:%u Flags:0x%lX>",
@@ -417,7 +417,7 @@ static PyObject *DescriptionAttr(PyObject *Self,char *Name)
{
pkgCache::DescIterator &Desc = GetCpp<pkgCache::DescIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::DescIterator>(Self);
-
+
if (strcmp("LanguageCode",Name) == 0)
return PyString_FromString(Desc.LanguageCode());
else if (strcmp("md5",Name) == 0)
@@ -425,8 +425,8 @@ static PyObject *DescriptionAttr(PyObject *Self,char *Name)
else if (strcmp("FileList",Name) == 0)
{
/* The second value in the tuple is the index of the VF item. If the
- user wants to request a lookup then that number will be used.
- Maybe later it can become an object. */
+ user wants to request a lookup then that number will be used.
+ Maybe later it can become an object. */
PyObject *List = PyList_New(0);
for (pkgCache::DescFileIterator I = Desc.FileList(); I.end() == false; I++)
{
@@ -436,7 +436,7 @@ static PyObject *DescriptionAttr(PyObject *Self,char *Name)
Obj = Py_BuildValue("Nl",DescFile,I.Index());
PyList_Append(List,Obj);
Py_DECREF(Obj);
- }
+ }
return List;
}
PyErr_SetString(PyExc_AttributeError,Name);
@@ -446,7 +446,7 @@ static PyObject *DescriptionAttr(PyObject *Self,char *Name)
static PyObject *DescriptionRepr(PyObject *Self)
{
pkgCache::DescIterator &Desc = GetCpp<pkgCache::DescIterator>(Self);
-
+
char S[300];
snprintf(S,sizeof(S),
"<pkgCache::Description object: language_code:'%s' md5:'%s' ",
@@ -477,14 +477,14 @@ PyTypeObject DescriptionType =
// Version Class /*{{{*/
// ---------------------------------------------------------------------
-/* This is the simple depends result, the elements are split like
+/* This is the simple depends result, the elements are split like
ParseDepends does */
static PyObject *MakeDepends(PyObject *Owner,pkgCache::VerIterator &Ver,
bool AsObj)
{
PyObject *Dict = PyDict_New();
PyObject *LastDep = 0;
- unsigned LastDepType = 0;
+ unsigned LastDepType = 0;
for (pkgCache::DepIterator D = Ver.DependsList(); D.end() == false;)
{
pkgCache::DepIterator Start;
@@ -498,7 +498,7 @@ static PyObject *MakeDepends(PyObject *Owner,pkgCache::VerIterator &Ver,
// it sucks to have it here duplicated, but we get it
// translated from libapt and that is certainly not what
// we want in a programing interface
- const char *Types[] =
+ const char *Types[] =
{
"", "Depends","PreDepends","Suggests",
"Recommends","Conflicts","Replaces",
@@ -512,10 +512,10 @@ static PyObject *MakeDepends(PyObject *Owner,pkgCache::VerIterator &Ver,
LastDep = PyList_New(0);
PyDict_SetItem(Dict,Dep,LastDep);
Py_DECREF(LastDep);
- }
+ }
Py_DECREF(Dep);
}
-
+
PyObject *OrGroup = PyList_New(0);
while (1)
{
@@ -535,19 +535,19 @@ static PyObject *MakeDepends(PyObject *Owner,pkgCache::VerIterator &Ver,
Start.TargetPkg().Name(),
Start.TargetVer(),
Start.CompType());
- }
+ }
PyList_Append(OrGroup,Obj);
Py_DECREF(Obj);
-
+
if (Start == End)
break;
Start++;
}
-
+
PyList_Append(LastDep,OrGroup);
Py_DECREF(OrGroup);
- }
-
+ }
+
return Dict;
}
@@ -555,7 +555,7 @@ static PyObject *VersionAttr(PyObject *Self,char *Name)
{
pkgCache::VerIterator &Ver = GetCpp<pkgCache::VerIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::VerIterator>(Self);
-
+
if (strcmp("VerStr",Name) == 0)
return PyString_FromString(Ver.VerStr());
else if (strcmp("Section",Name) == 0)
@@ -565,8 +565,8 @@ static PyObject *VersionAttr(PyObject *Self,char *Name)
else if (strcmp("FileList",Name) == 0)
{
/* The second value in the tuple is the index of the VF item. If the
- user wants to request a lookup then that number will be used.
- Maybe later it can become an object. */
+ user wants to request a lookup then that number will be used.
+ Maybe later it can become an object. */
PyObject *List = PyList_New(0);
for (pkgCache::VerFileIterator I = Ver.FileList(); I.end() == false; I++)
{
@@ -576,7 +576,7 @@ static PyObject *VersionAttr(PyObject *Self,char *Name)
Obj = Py_BuildValue("Nl",PkgFile,I.Index());
PyList_Append(List,Obj);
Py_DECREF(Obj);
- }
+ }
return List;
}
else if (strcmp("DependsListStr",Name) == 0)
@@ -629,7 +629,7 @@ static PyObject *VersionAttr(PyObject *Self,char *Name)
static PyObject *VersionRepr(PyObject *Self)
{
pkgCache::VerIterator &Ver = GetCpp<pkgCache::VerIterator>(Self);
-
+
char S[300];
snprintf(S,sizeof(S),"<pkgCache::Version object: Pkg:'%s' Ver:'%s' "
"Section:'%s' Arch:'%s' Size:%lu ISize:%lu Hash:%u "
@@ -659,16 +659,16 @@ PyTypeObject VersionType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
/*}}}*/
-
+
// PackageFile Class /*{{{*/
// ---------------------------------------------------------------------
static PyObject *PackageFileAttr(PyObject *Self,char *Name)
{
pkgCache::PkgFileIterator &File = GetCpp<pkgCache::PkgFileIterator>(Self);
// PyObject *Owner = GetOwner<pkgCache::PkgFileIterator>(Self);
-
+
if (strcmp("FileName",Name) == 0)
return Safe_FromString(File.FileName());
else if (strcmp("Archive",Name) == 0)
@@ -695,7 +695,7 @@ static PyObject *PackageFileAttr(PyObject *Self,char *Name)
return Py_BuildValue("i",(File->Flags & pkgCache::Flag::NotAutomatic) != 0);
else if (strcmp("ID",Name) == 0)
return Py_BuildValue("i",File->ID);
-
+
PyErr_SetString(PyExc_AttributeError,Name);
return 0;
}
@@ -703,7 +703,7 @@ static PyObject *PackageFileAttr(PyObject *Self,char *Name)
static PyObject *PackageFileRepr(PyObject *Self)
{
pkgCache::PkgFileIterator &File = GetCpp<pkgCache::PkgFileIterator>(Self);
-
+
char S[300];
snprintf(S,sizeof(S),"<pkgCache::PackageFile object: "
"File:'%s' a=%s,c=%s,v=%s,o=%s,l=%s "
@@ -734,7 +734,7 @@ PyTypeObject PackageFileType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
// depends class
static PyObject *DependencyRepr(PyObject *Self)
@@ -754,7 +754,7 @@ static PyObject *DepSmartTargetPkg(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self);
@@ -764,7 +764,7 @@ static PyObject *DepSmartTargetPkg(PyObject *Self,PyObject *Args)
Py_INCREF(Py_None);
return Py_None;
}
-
+
return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType,P);
}
@@ -772,7 +772,7 @@ static PyObject *DepAllTargets(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self);
@@ -789,7 +789,7 @@ static PyObject *DepAllTargets(PyObject *Self,PyObject *Args)
return List;
}
-static PyMethodDef DependencyMethods[] =
+static PyMethodDef DependencyMethods[] =
{
{"SmartTargetPkg",DepSmartTargetPkg,METH_VARARGS,"Returns the natural Target or None"},
{"AllTargets",DepAllTargets,METH_VARARGS,"Returns all possible Versions that match this dependency"},
@@ -798,18 +798,18 @@ static PyMethodDef DependencyMethods[] =
// Dependency Class /*{{{*/
// ---------------------------------------------------------------------
-
+
static PyObject *DependencyAttr(PyObject *Self,char *Name)
{
pkgCache::DepIterator &Dep = GetCpp<pkgCache::DepIterator>(Self);
PyObject *Owner = GetOwner<pkgCache::DepIterator>(Self);
-
+
if (strcmp("TargetVer",Name) == 0)
{
if (Dep->Version == 0)
return PyString_FromString("");
return PyString_FromString(Dep.TargetVer());
- }
+ }
else if (strcmp("TargetPkg",Name) == 0)
return CppOwnedPyObject_NEW<pkgCache::PkgIterator>(Owner,&PackageType,
Dep.TargetPkg());
@@ -824,7 +824,7 @@ static PyObject *DependencyAttr(PyObject *Self,char *Name)
return PyString_FromString(Dep.DepType());
else if (strcmp("ID",Name) == 0)
return Py_BuildValue("i",Dep->ID);
-
+
return Py_FindMethod(DependencyMethods,Self,Name);
}
@@ -847,7 +847,7 @@ PyTypeObject DependencyType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
/*}}}*/
/*}}}*/
// Reverse Dependency List Class /*{{{*/
@@ -865,13 +865,13 @@ static PyObject *RDepListItem(PyObject *iSelf,Py_ssize_t Index)
PyErr_SetNone(PyExc_IndexError);
return 0;
}
-
+
if ((unsigned)Index < Self.LastIndex)
{
Self.LastIndex = 0;
Self.Iter = Self.Start;
}
-
+
while ((unsigned)Index > Self.LastIndex)
{
Self.LastIndex++;
@@ -882,12 +882,12 @@ static PyObject *RDepListItem(PyObject *iSelf,Py_ssize_t Index)
return 0;
}
}
-
+
return CppOwnedPyObject_NEW<pkgCache::DepIterator>(GetOwner<RDepListStruct>(iSelf),
&DependencyType,Self.Iter);
}
-static PySequenceMethods RDepListSeq =
+static PySequenceMethods RDepListSeq =
{
RDepListLen,
0, // concat
@@ -895,9 +895,9 @@ static PySequenceMethods RDepListSeq =
RDepListItem,
0, // slice
0, // assign item
- 0 // assign slice
+ 0 // assign slice
};
-
+
PyTypeObject RDepListType =
{
PyObject_HEAD_INIT(&PyType_Type)
@@ -917,7 +917,7 @@ PyTypeObject RDepListType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
/*}}}*/
@@ -948,7 +948,7 @@ PyObject *TmpGetCache(PyObject *Self,PyObject *Args)
CppOwnedPyObject<pkgCacheFile*> *CacheFileObj =
CppOwnedPyObject_NEW<pkgCacheFile*>(0,&PkgCacheFileType, Cache);
-
+
CppOwnedPyObject<pkgCache *> *CacheObj =
CppOwnedPyObject_NEW<pkgCache *>(CacheFileObj,&PkgCacheType,
(pkgCache *)(*Cache));
diff --git a/python/cdrom.cc b/python/cdrom.cc
index aca1be26..0831548e 100644
--- a/python/cdrom.cc
+++ b/python/cdrom.cc
@@ -19,7 +19,7 @@ struct PkgCdromStruct
};
static PyObject *PkgCdromAdd(PyObject *Self,PyObject *Args)
-{
+{
PkgCdromStruct &Struct = GetCpp<PkgCdromStruct>(Self);
PyObject *pyCdromProgressInst = 0;
@@ -32,11 +32,11 @@ static PyObject *PkgCdromAdd(PyObject *Self,PyObject *Args)
bool res = Struct.cdrom.Add(&progress);
- return HandleErrors(Py_BuildValue("b", res));
+ return HandleErrors(Py_BuildValue("b", res));
}
static PyObject *PkgCdromIdent(PyObject *Self,PyObject *Args)
-{
+{
PkgCdromStruct &Struct = GetCpp<PkgCdromStruct>(Self);
PyObject *pyCdromProgressInst = 0;
@@ -52,11 +52,11 @@ static PyObject *PkgCdromIdent(PyObject *Self,PyObject *Args)
PyObject *result = Py_BuildValue("(bs)", res, ident.c_str());
- return HandleErrors(result);
+ return HandleErrors(result);
}
-static PyMethodDef PkgCdromMethods[] =
+static PyMethodDef PkgCdromMethods[] =
{
{"Add",PkgCdromAdd,METH_VARARGS,"Add a cdrom"},
{"Ident",PkgCdromIdent,METH_VARARGS,"Ident a cdrom"},
@@ -100,7 +100,7 @@ PyObject *GetCdrom(PyObject *Self,PyObject *Args)
CppOwnedPyObject<pkgCdrom> *CdromObj =
CppOwnedPyObject_NEW<pkgCdrom>(0,&PkgCdromType, *cdrom);
-
+
return CdromObj;
}
diff --git a/python/configuration.cc b/python/configuration.cc
index 55eac1bf..f52c3c97 100644
--- a/python/configuration.cc
+++ b/python/configuration.cc
@@ -10,10 +10,10 @@
ConfigurationPtr - A pointer to a configuration instance, used only
for the global instance (_config)
ConfigurationSub - A subtree - has a reference to its owner.
-
+
The wrapping is mostly 1:1 with the C++ code, but there are additions to
- wrap the linked tree walking into nice flat sequence walking.
-
+ wrap the linked tree walking into nice flat sequence walking.
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -113,7 +113,7 @@ static PyObject *CnfSet(PyObject *Self,PyObject *Args)
char *Value = 0;
if (PyArg_ParseTuple(Args,"ss",&Name,&Value) == 0)
return 0;
-
+
GetSelf(Self).Set(Name,Value);
Py_INCREF(Py_None);
return Py_None;
@@ -134,9 +134,9 @@ static PyObject *CnfClear(PyObject *Self,PyObject *Args)
char *Name = 0;
if (PyArg_ParseTuple(Args,"s",&Name) == 0)
return 0;
-
+
GetSelf(Self).Clear(Name);
-
+
Py_INCREF(Py_None);
return Py_None;
}
@@ -170,7 +170,7 @@ static PyObject *CnfList(PyObject *Self,PyObject *Args)
char *RootName = 0;
if (PyArg_ParseTuple(Args,"|s",&RootName) == 0)
return 0;
-
+
// Convert the whole configuration space into a list
PyObject *List = PyList_New(0);
const Configuration::Item *Top = GetSelf(Self).Tree(RootName);
@@ -180,10 +180,10 @@ static PyObject *CnfList(PyObject *Self,PyObject *Args)
for (; Top != 0; Top = Top->Next)
{
PyObject *Obj;
- PyList_Append(List,Obj = CppPyString(Top->FullTag(Root)));
+ PyList_Append(List,Obj = CppPyString(Top->FullTag(Root)));
Py_DECREF(Obj);
}
-
+
return List;
}
@@ -195,7 +195,7 @@ static PyObject *CnfValueList(PyObject *Self,PyObject *Args)
char *RootName = 0;
if (PyArg_ParseTuple(Args,"|s",&RootName) == 0)
return 0;
-
+
// Convert the whole configuration space into a list
PyObject *List = PyList_New(0);
const Configuration::Item *Top = GetSelf(Self).Tree(RootName);
@@ -207,7 +207,7 @@ static PyObject *CnfValueList(PyObject *Self,PyObject *Args)
PyList_Append(List,Obj = CppPyString(Top->Value));
Py_DECREF(Obj);
}
-
+
return List;
}
@@ -216,7 +216,7 @@ static PyObject *CnfMyTag(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
const Configuration::Item *Top = GetSelf(Self).Tree(0);
if (Top == 0)
return Py_BuildValue("s","");
@@ -230,7 +230,7 @@ static PyObject *CnfKeys(PyObject *Self,PyObject *Args)
char *RootName = 0;
if (PyArg_ParseTuple(Args,"|s",&RootName) == 0)
return 0;
-
+
// Convert the whole configuration space into a list
PyObject *List = PyList_New(0);
const Configuration::Item *Top = GetSelf(Self).Tree(RootName);
@@ -241,17 +241,17 @@ static PyObject *CnfKeys(PyObject *Self,PyObject *Args)
if (Top != 0)
Root = GetSelf(Self).Tree(0)->Parent;
for (; Top != 0;)
- {
+ {
PyObject *Obj;
PyList_Append(List,Obj = CppPyString(Top->FullTag(Root)));
Py_DECREF(Obj);
-
+
if (Top->Child != 0)
{
Top = Top->Child;
continue;
}
-
+
while (Top != 0 && Top->Next == 0 && Top != Root &&
Top->Parent != Stop)
Top = Top->Parent;
@@ -270,13 +270,13 @@ static PyObject *CnfMap(PyObject *Self,PyObject *Arg)
PyErr_SetNone(PyExc_TypeError);
return 0;
}
-
+
if (GetSelf(Self).Exists(PyString_AsString(Arg)) == false)
- {
+ {
PyErr_SetString(PyExc_KeyError,PyString_AsString(Arg));
return 0;
}
-
+
return CppPyString(GetSelf(Self).Find(PyString_AsString(Arg)));
}
@@ -288,7 +288,7 @@ static int CnfMapSet(PyObject *Self,PyObject *Arg,PyObject *Val)
PyErr_SetNone(PyExc_TypeError);
return -1;
}
-
+
GetSelf(Self).Set(PyString_AsString(Arg),PyString_AsString(Val));
return 0;
}
@@ -305,10 +305,10 @@ PyObject *LoadConfig(PyObject *Self,PyObject *Args)
PyErr_SetString(PyExc_TypeError,"argument 1: expected Configuration.");
return 0;
}
-
+
if (ReadConfigFile(GetSelf(Self),Name,false) == false)
return HandleErrors();
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -323,10 +323,10 @@ PyObject *LoadConfigISC(PyObject *Self,PyObject *Args)
PyErr_SetString(PyExc_TypeError,"argument 1: expected Configuration.");
return 0;
}
-
+
if (ReadConfigFile(GetSelf(Self),Name,true) == false)
return HandleErrors();
-
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -336,7 +336,7 @@ PyObject *LoadConfigISC(PyObject *Self,PyObject *Args)
// ---------------------------------------------------------------------
char *doc_ParseCommandLine =
"ParseCommandLine(Configuration,ListOfOptions,List-argv) -> List\n"
-"\n"
+"\n"
"This function is like getopt except it manipulates a configuration space.\n"
"output is a list of non-option arguments (filenames, etc).\n"
"ListOfOptions is a list of tuples of the form:\n"
@@ -355,13 +355,13 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
PyErr_SetString(PyExc_TypeError,"argument 1: expected Configuration.");
return 0;
}
-
+
// Convert the option list
int Length = PySequence_Length(POList);
CommandLine::Args *OList = new CommandLine::Args[Length+1];
OList[Length].ShortOpt = 0;
OList[Length].LongOpt = 0;
-
+
for (int I = 0; I != Length; I++)
{
char *Type = 0;
@@ -373,7 +373,7 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
return 0;
}
OList[I].Flags = 0;
-
+
// Convert the type over to flags..
if (Type != 0)
{
@@ -389,7 +389,7 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
OList[I].Flags = CommandLine::ConfigFile;
else if (strcasecmp(Type,"ArbItem") == 0)
OList[I].Flags = CommandLine::ArbItem;
- }
+ }
}
// Convert the argument list into a char **
@@ -399,7 +399,7 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
delete [] OList;
return 0;
}
-
+
// Do the command line processing
PyObject *List = 0;
{
@@ -410,16 +410,16 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
delete [] OList;
return HandleErrors();
}
-
+
// Convert the file listing into a python sequence
for (Length = 0; CmdL.FileList[Length] != 0; Length++);
- List = PyList_New(Length);
+ List = PyList_New(Length);
for (int I = 0; CmdL.FileList[I] != 0; I++)
{
PyList_SetItem(List,I,PyString_FromString(CmdL.FileList[I]));
- }
+ }
}
-
+
delete [] argv;
delete [] OList;
return HandleErrors(List);
@@ -427,7 +427,7 @@ PyObject *ParseCommandLine(PyObject *Self,PyObject *Args)
/*}}}*/
// Method table for the Configuration object
-static PyMethodDef CnfMethods[] =
+static PyMethodDef CnfMethods[] =
{
// Query
{"Find",CnfFind,METH_VARARGS,doc_Find},
@@ -444,7 +444,7 @@ static PyMethodDef CnfMethods[] =
{"ValueList",CnfValueList,METH_VARARGS,doc_ValueList},
{"MyTag",CnfMyTag,METH_VARARGS,doc_MyTag},
{"Clear",CnfClear,METH_VARARGS,doc_Clear},
-
+
// Python Special
{"keys",CnfKeys,METH_VARARGS,doc_Keys},
{"has_key",CnfExists,METH_VARARGS,doc_Exists},
@@ -462,7 +462,7 @@ static PyObject *CnfGetAttr(PyObject *Self,char *Name)
// Type for a Normal Configuration object
static PyMappingMethods ConfigurationMap = {0,CnfMap,CnfMapSet};
-PyTypeObject ConfigurationType =
+PyTypeObject ConfigurationType =
{
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
@@ -481,8 +481,8 @@ PyTypeObject ConfigurationType =
&ConfigurationMap, // tp_as_mapping
0, // tp_hash
};
-
-PyTypeObject ConfigurationPtrType =
+
+PyTypeObject ConfigurationPtrType =
{
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
@@ -501,7 +501,7 @@ PyTypeObject ConfigurationPtrType =
&ConfigurationMap, // tp_as_mapping
0, // tp_hash
};
-
+
PyTypeObject ConfigurationSubType =
{
PyObject_HEAD_INIT(&PyType_Type)
@@ -521,4 +521,4 @@ PyTypeObject ConfigurationSubType =
&ConfigurationMap, // tp_as_mapping
0, // tp_hash
};
-
+
diff --git a/python/depcache.cc b/python/depcache.cc
index 2446dc71..0e83c956 100644
--- a/python/depcache.cc
+++ b/python/depcache.cc
@@ -39,7 +39,7 @@
static PyObject *PkgDepCacheInit(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *pyCallbackInst = 0;
@@ -57,18 +57,18 @@ static PyObject *PkgDepCacheInit(PyObject *Self,PyObject *Args)
pkgApplyStatus(*depcache);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
-{
+{
PyObject *result;
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *pyInstallProgressInst = 0;
PyObject *pyFetchProgressInst = 0;
- if (PyArg_ParseTuple(Args, "OO",
+ if (PyArg_ParseTuple(Args, "OO",
&pyFetchProgressInst, &pyInstallProgressInst) == 0) {
return 0;
}
@@ -78,7 +78,7 @@ static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
if (_error->PendingError() == true)
return HandleErrors();
}
-
+
pkgRecords Recs(*depcache);
if (_error->PendingError() == true)
HandleErrors(Py_None);
@@ -108,22 +108,22 @@ static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
while (1)
{
bool Transient = false;
-
+
if (Fetcher.Run() == pkgAcquire::Failed)
return false;
-
+
// Print out errors
bool Failed = false;
for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); I++)
{
-
- //std::cout << "looking at: " << (*I)->DestFile
+
+ //std::cout << "looking at: " << (*I)->DestFile
// << " status: " << (*I)->Status << std::endl;
if ((*I)->Status == pkgAcquire::Item::StatDone &&
(*I)->Complete == true)
continue;
-
+
if ((*I)->Status == pkgAcquire::Item::StatIdle)
{
//std::cout << "transient failure" << std::endl;
@@ -146,7 +146,7 @@ static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
-
+
// Try to deal with missing package files
if (Failed == true && PM->FixMissing() == false)
{
@@ -156,9 +156,9 @@ static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
return HandleErrors(Py_None);
}
- // fail if something else went wrong
- //FIXME: make this more flexible, e.g. with a failedDl handler
- if(Failed)
+ // fail if something else went wrong
+ //FIXME: make this more flexible, e.g. with a failedDl handler
+ if(Failed)
return Py_BuildValue("b", false);
_system->UnLock(true);
@@ -174,25 +174,25 @@ static PyObject *PkgDepCacheCommit(PyObject *Self,PyObject *Args)
}
//std::cout << "looping again, install unfinished" << std::endl;
-
+
// Reload the fetcher object and loop again for media swapping
Fetcher.Shutdown();
if (PM->GetArchives(&Fetcher,&List,&Recs) == false) {
return Py_BuildValue("b", false);
}
_system->Lock();
- }
-
+ }
+
return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheSetCandidateVer(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
PyObject *VersionObj;
if (PyArg_ParseTuple(Args,"O!O!",
- &PackageType, &PackageObj,
+ &PackageType, &PackageObj,
&VersionType, &VersionObj) == 0)
return 0;
@@ -202,12 +202,12 @@ static PyObject *PkgDepCacheSetCandidateVer(PyObject *Self,PyObject *Args)
return HandleErrors(Py_BuildValue("b",false));
}
depcache->SetCandidateVersion(I);
-
+
return HandleErrors(Py_BuildValue("b",true));
}
static PyObject *PkgDepCacheGetCandidateVer(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
PyObject *CandidateObj;
@@ -228,7 +228,7 @@ static PyObject *PkgDepCacheGetCandidateVer(PyObject *Self,PyObject *Args)
}
static PyObject *PkgDepCacheUpgrade(PyObject *Self,PyObject *Args)
-{
+{
bool res;
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
@@ -244,11 +244,11 @@ static PyObject *PkgDepCacheUpgrade(PyObject *Self,PyObject *Args)
Py_END_ALLOW_THREADS
Py_INCREF(Py_None);
- return HandleErrors(Py_BuildValue("b",res));
+ return HandleErrors(Py_BuildValue("b",res));
}
static PyObject *PkgDepCacheMinimizeUpgrade(PyObject *Self,PyObject *Args)
-{
+{
bool res;
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
@@ -260,33 +260,33 @@ static PyObject *PkgDepCacheMinimizeUpgrade(PyObject *Self,PyObject *Args)
Py_END_ALLOW_THREADS
Py_INCREF(Py_None);
- return HandleErrors(Py_BuildValue("b",res));
+ return HandleErrors(Py_BuildValue("b",res));
}
static PyObject *PkgDepCacheReadPinFile(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
-
+
char *file=NULL;
if (PyArg_ParseTuple(Args,"|s",&file) == 0)
return 0;
- if(file == NULL)
+ if(file == NULL)
ReadPinFile((pkgPolicy&)depcache->GetPolicy());
else
ReadPinFile((pkgPolicy&)depcache->GetPolicy(), file);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheFixBroken(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
-
+
bool res=true;
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
@@ -294,12 +294,12 @@ static PyObject *PkgDepCacheFixBroken(PyObject *Self,PyObject *Args)
res &=pkgFixBroken(*depcache);
res &=pkgMinimizeUpgrade(*depcache);
- return HandleErrors(Py_BuildValue("b",res));
+ return HandleErrors(Py_BuildValue("b",res));
}
static PyObject *PkgDepCacheMarkKeep(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache*>(Self);
PyObject *PackageObj;
@@ -310,11 +310,11 @@ static PyObject *PkgDepCacheMarkKeep(PyObject *Self,PyObject *Args)
depcache->MarkKeep(Pkg);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheSetReInstall(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache*>(Self);
PyObject *PackageObj;
@@ -326,12 +326,12 @@ static PyObject *PkgDepCacheSetReInstall(PyObject *Self,PyObject *Args)
depcache->SetReInstall(Pkg,value);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheMarkDelete(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -343,18 +343,18 @@ static PyObject *PkgDepCacheMarkDelete(PyObject *Self,PyObject *Args)
depcache->MarkDelete(Pkg,purge);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheMarkInstall(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
char autoInst=1;
char fromUser=1;
- if (PyArg_ParseTuple(Args,"O!|bb",&PackageType,&PackageObj,
+ if (PyArg_ParseTuple(Args,"O!|bb",&PackageType,&PackageObj,
&autoInst, &fromUser) == 0)
return 0;
@@ -364,11 +364,11 @@ static PyObject *PkgDepCacheMarkInstall(PyObject *Self,PyObject *Args)
Py_END_ALLOW_THREADS
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgDepCacheIsUpgradable(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -378,11 +378,11 @@ static PyObject *PkgDepCacheIsUpgradable(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Upgradable()));
+ return HandleErrors(Py_BuildValue("b",state.Upgradable()));
}
static PyObject *PkgDepCacheIsGarbage(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -392,11 +392,11 @@ static PyObject *PkgDepCacheIsGarbage(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Garbage));
+ return HandleErrors(Py_BuildValue("b",state.Garbage));
}
static PyObject *PkgDepCacheIsAutoInstalled(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -406,11 +406,11 @@ static PyObject *PkgDepCacheIsAutoInstalled(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Flags & pkgCache::Flag::Auto));
+ return HandleErrors(Py_BuildValue("b",state.Flags & pkgCache::Flag::Auto));
}
static PyObject *PkgDepCacheIsNowBroken(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -420,11 +420,11 @@ static PyObject *PkgDepCacheIsNowBroken(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.NowBroken()));
+ return HandleErrors(Py_BuildValue("b",state.NowBroken()));
}
static PyObject *PkgDepCacheIsInstBroken(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -434,12 +434,12 @@ static PyObject *PkgDepCacheIsInstBroken(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.InstBroken()));
+ return HandleErrors(Py_BuildValue("b",state.InstBroken()));
}
static PyObject *PkgDepCacheMarkedInstall(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -449,12 +449,12 @@ static PyObject *PkgDepCacheMarkedInstall(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.NewInstall()));
+ return HandleErrors(Py_BuildValue("b",state.NewInstall()));
}
static PyObject *PkgDepCacheMarkedUpgrade(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -464,11 +464,11 @@ static PyObject *PkgDepCacheMarkedUpgrade(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Upgrade()));
+ return HandleErrors(Py_BuildValue("b",state.Upgrade()));
}
static PyObject *PkgDepCacheMarkedDelete(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -478,11 +478,11 @@ static PyObject *PkgDepCacheMarkedDelete(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Delete()));
+ return HandleErrors(Py_BuildValue("b",state.Delete()));
}
static PyObject *PkgDepCacheMarkedKeep(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -492,11 +492,11 @@ static PyObject *PkgDepCacheMarkedKeep(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Keep()));
+ return HandleErrors(Py_BuildValue("b",state.Keep()));
}
static PyObject *PkgDepCacheMarkedDowngrade(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -506,11 +506,11 @@ static PyObject *PkgDepCacheMarkedDowngrade(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
pkgDepCache::StateCache &state = (*depcache)[Pkg];
- return HandleErrors(Py_BuildValue("b",state.Downgrade()));
+ return HandleErrors(Py_BuildValue("b",state.Downgrade()));
}
static PyObject *PkgDepCacheMarkedReinstall(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
PyObject *PackageObj;
@@ -522,11 +522,11 @@ static PyObject *PkgDepCacheMarkedReinstall(PyObject *Self,PyObject *Args)
bool res = state.Install() && (state.iFlags & pkgDepCache::ReInstall);
- return HandleErrors(Py_BuildValue("b",res));
+ return HandleErrors(Py_BuildValue("b",res));
}
-static PyMethodDef PkgDepCacheMethods[] =
+static PyMethodDef PkgDepCacheMethods[] =
{
{"Init",PkgDepCacheInit,METH_VARARGS,"Init the depcache (done on construct automatically)"},
{"GetCandidateVer",PkgDepCacheGetCandidateVer,METH_VARARGS,"Get candidate version"},
@@ -566,20 +566,20 @@ static PyObject *DepCacheAttr(PyObject *Self,char *Name)
pkgDepCache *depcache = GetCpp<pkgDepCache *>(Self);
// size querries
- if(strcmp("KeepCount",Name) == 0)
+ if(strcmp("KeepCount",Name) == 0)
return Py_BuildValue("l", depcache->KeepCount());
- else if(strcmp("InstCount",Name) == 0)
+ else if(strcmp("InstCount",Name) == 0)
return Py_BuildValue("l", depcache->InstCount());
- else if(strcmp("DelCount",Name) == 0)
+ else if(strcmp("DelCount",Name) == 0)
return Py_BuildValue("l", depcache->DelCount());
- else if(strcmp("BrokenCount",Name) == 0)
+ else if(strcmp("BrokenCount",Name) == 0)
return Py_BuildValue("l", depcache->BrokenCount());
- else if(strcmp("UsrSize",Name) == 0)
+ else if(strcmp("UsrSize",Name) == 0)
return Py_BuildValue("d", depcache->UsrSize());
- else if(strcmp("DebSize",Name) == 0)
+ else if(strcmp("DebSize",Name) == 0)
return Py_BuildValue("d", depcache->DebSize());
-
-
+
+
return Py_FindMethod(PkgDepCacheMethods,Self,Name);
}
@@ -660,7 +660,7 @@ PyObject *GetPkgProblemResolver(PyObject *Self,PyObject *Args)
static PyObject *PkgProblemResolverResolve(PyObject *Self,PyObject *Args)
-{
+{
bool res;
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
@@ -676,7 +676,7 @@ static PyObject *PkgProblemResolverResolve(PyObject *Self,PyObject *Args)
}
static PyObject *PkgProblemResolverResolveByKeep(PyObject *Self,PyObject *Args)
-{
+{
bool res;
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
if (PyArg_ParseTuple(Args,"") == 0)
@@ -690,7 +690,7 @@ static PyObject *PkgProblemResolverResolveByKeep(PyObject *Self,PyObject *Args)
}
static PyObject *PkgProblemResolverProtect(PyObject *Self,PyObject *Args)
-{
+{
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
PyObject *PackageObj;
if (PyArg_ParseTuple(Args,"O!",&PackageType,&PackageObj) == 0)
@@ -710,11 +710,11 @@ static PyObject *PkgProblemResolverRemove(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
fixer->Remove(Pkg);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
static PyObject *PkgProblemResolverClear(PyObject *Self,PyObject *Args)
-{
+{
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
PyObject *PackageObj;
if (PyArg_ParseTuple(Args,"O!",&PackageType,&PackageObj) == 0)
@@ -722,11 +722,11 @@ static PyObject *PkgProblemResolverClear(PyObject *Self,PyObject *Args)
pkgCache::PkgIterator &Pkg = GetCpp<pkgCache::PkgIterator>(PackageObj);
fixer->Clear(Pkg);
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
-}
+ return HandleErrors(Py_None);
+}
static PyObject *PkgProblemResolverInstallProtect(PyObject *Self,PyObject *Args)
-{
+{
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
@@ -735,7 +735,7 @@ static PyObject *PkgProblemResolverInstallProtect(PyObject *Self,PyObject *Args)
return HandleErrors(Py_None);
}
-static PyMethodDef PkgProblemResolverMethods[] =
+static PyMethodDef PkgProblemResolverMethods[] =
{
// config
{"Protect", PkgProblemResolverProtect, METH_VARARGS, "Protect(PkgIterator)"},
@@ -753,7 +753,7 @@ static PyMethodDef PkgProblemResolverMethods[] =
static PyObject *ProblemResolverAttr(PyObject *Self,char *Name)
{
pkgProblemResolver *fixer = GetCpp<pkgProblemResolver *>(Self);
-
+
return Py_FindMethod(PkgProblemResolverMethods,Self,Name);
}
@@ -785,7 +785,7 @@ PyTypeObject PkgProblemResolverType =
static PyObject *PkgActionGroupRelease(PyObject *Self,PyObject *Args)
-{
+{
pkgDepCache::ActionGroup *ag = GetCpp<pkgDepCache::ActionGroup*>(Self);
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
@@ -794,7 +794,7 @@ static PyObject *PkgActionGroupRelease(PyObject *Self,PyObject *Args)
return HandleErrors(Py_None);
}
-static PyMethodDef PkgActionGroupMethods[] =
+static PyMethodDef PkgActionGroupMethods[] =
{
{"release", PkgActionGroupRelease, METH_VARARGS, "release()"},
{}
@@ -804,7 +804,7 @@ static PyMethodDef PkgActionGroupMethods[] =
static PyObject *ActionGroupAttr(PyObject *Self,char *Name)
{
pkgDepCache::ActionGroup *ag = GetCpp<pkgDepCache::ActionGroup*>(Self);
-
+
return Py_FindMethod(PkgActionGroupMethods,Self,Name);
}
diff --git a/python/generic.cc b/python/generic.cc
index 044569b9..7309d978 100644
--- a/python/generic.cc
+++ b/python/generic.cc
@@ -4,7 +4,7 @@
/* ######################################################################
generic - Some handy functions to make integration a tad simpler
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -24,10 +24,10 @@ PyObject *HandleErrors(PyObject *Res)
_error->Discard();
return Res;
}
-
+
if (Res != 0)
Py_DECREF(Res);
-
+
string Err;
int errcnt = 0;
while (_error->empty() == false)
@@ -55,7 +55,7 @@ const char **ListToCharChar(PyObject *List,bool NullTerm)
int Length = PySequence_Length(List);
const char **Res = new const char *[Length + (NullTerm == true?1:0)];
for (int I = 0; I != Length; I++)
- {
+ {
PyObject *Itm = PySequence_GetItem(List,I);
if (PyString_Check(Itm) == 0)
{
@@ -80,12 +80,12 @@ PyObject *CharCharToList(const char **List,unsigned long Size)
for (const char **I = List; *I != 0; I++)
Size++;
}
-
+
// Convert the whole configuration space into a list
PyObject *PList = PyList_New(Size);
for (unsigned long I = 0; I != Size; I++, List++)
PyList_SetItem(PList,I,PyString_FromString(*List));
-
+
return PList;
}
/*}}}*/
diff --git a/python/generic.h b/python/generic.h
index a1b662bb..ce79a54c 100644
--- a/python/generic.h
+++ b/python/generic.h
@@ -4,24 +4,24 @@
/* ######################################################################
generic - Some handy functions to make integration a tad simpler
-
- Python needs this little _HEAD tacked onto the front of the object..
+
+ Python needs this little _HEAD tacked onto the front of the object..
This complicates the integration with C++. We use some templates to
make that quite transparent to us. It would have been nice if Python
internally used a page from the C++ ref counting book to hide its little
header from the world, but it doesn't.
- The CppPyObject has the target object and the Python header, this is
- needed to ensure proper alignment.
+ The CppPyObject has the target object and the Python header, this is
+ needed to ensure proper alignment.
GetCpp returns the C++ object from a PyObject.
CppPyObject_NEW creates the Python object and then uses placement new
to init the C++ class.. This is good for simple situations and as an
example on how to do it in other more specific cases.
- CppPyObject_Dealloc should be used in the Type as the destructor
+ CppPyObject_Dealloc should be used in the Type as the destructor
function.
HandleErrors converts errors from the internal _error stack into Python
exceptions and makes sure the _error stack is empty.
-
+
##################################################################### */
/*}}}*/
#ifndef GENERIC_H
@@ -38,7 +38,7 @@ typedef int Py_ssize_t;
template <class T> struct CppPyObject : public PyObject
{
// We are only using CppPyObject and friends as dumb structs only, ie the
- // c'tor is never called.
+ // c'tor is never called.
// However if T doesn't have a default c'tor C++ doesn't generate one for
// CppPyObject (since it can't know how it should initialize Object).
//
diff --git a/python/indexfile.cc b/python/indexfile.cc
index 4e32f2ab..107eae27 100644
--- a/python/indexfile.cc
+++ b/python/indexfile.cc
@@ -16,7 +16,7 @@
#include <Python.h>
static PyObject *PackageIndexFileArchiveURI(PyObject *Self,PyObject *Args)
-{
+{
pkgIndexFile *File = GetCpp<pkgIndexFile*>(Self);
char *path;
@@ -26,7 +26,7 @@ static PyObject *PackageIndexFileArchiveURI(PyObject *Self,PyObject *Args)
return HandleErrors(Safe_FromString(File->ArchiveURI(path).c_str()));
}
-static PyMethodDef PackageIndexFileMethods[] =
+static PyMethodDef PackageIndexFileMethods[] =
{
{"ArchiveURI",PackageIndexFileArchiveURI,METH_VARARGS,"Returns the ArchiveURI"},
{}
@@ -48,20 +48,20 @@ static PyObject *PackageIndexFileAttr(PyObject *Self,char *Name)
return Py_BuildValue("i",(File->Size()));
else if (strcmp("IsTrusted",Name) == 0)
return Py_BuildValue("i",(File->IsTrusted()));
-
+
return Py_FindMethod(PackageIndexFileMethods,Self,Name);
}
static PyObject *PackageIndexFileRepr(PyObject *Self)
{
pkgIndexFile *File = GetCpp<pkgIndexFile*>(Self);
-
+
char S[1024];
snprintf(S,sizeof(S),"<pkIndexFile object: "
"Label:'%s' Describe='%s' Exists='%i' "
"HasPackages='%i' Size='%i' "
"IsTrusted='%i' ArchiveURI='%s'>",
- File->GetType()->Label, File->Describe().c_str(), File->Exists(),
+ File->GetType()->Label, File->Describe().c_str(), File->Exists(),
File->HasPackages(), File->Size(),
File->IsTrusted(), File->ArchiveURI("").c_str());
return PyString_FromString(S);
@@ -86,7 +86,7 @@ PyTypeObject PackageIndexFileType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
diff --git a/python/makefile b/python/makefile
index e0c62541..3e6458f4 100644
--- a/python/makefile
+++ b/python/makefile
@@ -7,20 +7,20 @@ include ../buildlib/defaults.mak
# The apt_pkg module
MODULE=apt_pkg
-SLIBS = -lapt-pkg
+SLIBS = -lapt-pkg
LIB_MAKES = apt-pkg/makefile
APT_PKG_SRC = apt_pkgmodule.cc configuration.cc generic.cc tag.cc string.cc \
cache.cc pkgrecords.cc pkgsrcrecords.cc sourcelist.cc \
depcache.cc progress.cc cdrom.cc acquire.cc pkgmanager.cc \
indexfile.cc metaindex.cc
-SOURCE := $(APT_PKG_SRC)
+SOURCE := $(APT_PKG_SRC)
include $(PYTHON_H) progress.h
-# The apt_int module..
+# The apt_int module..
MODULE=apt_inst
SLIBS = -lapt-inst -lapt-pkg
LIB_MAKES = apt-inst/makefile
APT_INST_SRC = apt_instmodule.cc tar.cc generic.cc
-SOURCE := $(APT_INST_SRC)
+SOURCE := $(APT_INST_SRC)
include $(PYTHON_H)
diff --git a/python/metaindex.cc b/python/metaindex.cc
index 45c8ef2a..efbc38af 100644
--- a/python/metaindex.cc
+++ b/python/metaindex.cc
@@ -29,13 +29,13 @@ static PyObject *MetaIndexAttr(PyObject *Self,char *Name)
{
PyObject *List = PyList_New(0);
vector<pkgIndexFile *> *indexFiles = meta->GetIndexFiles();
- for (vector<pkgIndexFile *>::const_iterator I = indexFiles->begin();
+ for (vector<pkgIndexFile *>::const_iterator I = indexFiles->begin();
I != indexFiles->end(); I++)
{
PyObject *Obj;
Obj = CppPyObject_NEW<pkgIndexFile*>(&PackageIndexFileType,*I);
PyList_Append(List,Obj);
- }
+ }
return List;
}
@@ -46,7 +46,7 @@ static PyObject *MetaIndexAttr(PyObject *Self,char *Name)
static PyObject *MetaIndexRepr(PyObject *Self)
{
metaIndex *meta = GetCpp<metaIndex*>(Self);
-
+
char S[1024];
snprintf(S,sizeof(S),"<metaIndex object: "
"Type='%s', URI:'%s' Dist='%s' IsTrusted='%i'>",
@@ -75,7 +75,7 @@ PyTypeObject MetaIndexType =
0, // tp_as_mapping
0, // tp_hash
};
-
+
diff --git a/python/pkgmanager.cc b/python/pkgmanager.cc
index 9670f238..0eaa28cd 100644
--- a/python/pkgmanager.cc
+++ b/python/pkgmanager.cc
@@ -19,14 +19,14 @@
static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args)
-{
+{
pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self);
PyObject *fetcher, *list, *recs;
-
+
if (PyArg_ParseTuple(Args, "O!O!O!",
&PkgAcquireType,&fetcher,
&PkgSourceListType, &list,
- &PkgRecordsType, &recs) == 0)
+ &PkgRecordsType, &recs) == 0)
return 0;
pkgAcquire *s_fetcher = GetCpp<pkgAcquire*>(fetcher);
@@ -44,12 +44,12 @@ static PyObject *PkgManagerDoInstall(PyObject *Self,PyObject *Args)
//PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(Self);
pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self);
int status_fd = -1;
-
+
if (PyArg_ParseTuple(Args, "|i", &status_fd) == 0)
return 0;
pkgPackageManager::OrderResult res = pm->DoInstall(status_fd);
-
+
return HandleErrors(Py_BuildValue("i",res));
}
@@ -62,11 +62,11 @@ static PyObject *PkgManagerFixMissing(PyObject *Self,PyObject *Args)
return 0;
bool res = pm->FixMissing();
-
+
return HandleErrors(Py_BuildValue("b",res));
}
-static PyMethodDef PkgManagerMethods[] =
+static PyMethodDef PkgManagerMethods[] =
{
{"GetArchives",PkgManagerGetArchives,METH_VARARGS,"Load the selected archives into the fetcher"},
{"DoInstall",PkgManagerDoInstall,METH_VARARGS,"Do the actual install"},
@@ -81,11 +81,11 @@ static PyObject *PkgManagerAttr(PyObject *Self,char *Name)
pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self);
// some constants
- if(strcmp("ResultCompleted",Name) == 0)
+ if(strcmp("ResultCompleted",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Completed);
- if(strcmp("ResultFailed",Name) == 0)
+ if(strcmp("ResultFailed",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Failed);
- if(strcmp("ResultIncomplete",Name) == 0)
+ if(strcmp("ResultIncomplete",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Incomplete);
return Py_FindMethod(PkgManagerMethods,Self,Name);
@@ -125,7 +125,7 @@ PyObject *GetPkgManager(PyObject *Self,PyObject *Args)
CppPyObject<pkgPackageManager*> *PkgManagerObj =
CppPyObject_NEW<pkgPackageManager*>(&PkgManagerType,pm);
-
+
return PkgManagerObj;
}
diff --git a/python/pkgrecords.cc b/python/pkgrecords.cc
index 93bc54d9..18240ce0 100644
--- a/python/pkgrecords.cc
+++ b/python/pkgrecords.cc
@@ -16,20 +16,20 @@
#include <Python.h>
/*}}}*/
-
+
// PkgRecords Class /*{{{*/
// ---------------------------------------------------------------------
static PyObject *PkgRecordsLookup(PyObject *Self,PyObject *Args)
-{
+{
PkgRecordsStruct &Struct = GetCpp<PkgRecordsStruct>(Self);
-
+
PyObject *PkgFObj;
long int Index;
if (PyArg_ParseTuple(Args,"(O!l)",&PackageFileType,&PkgFObj,&Index) == 0)
return 0;
-
+
// Get the index and check to make sure it is reasonable
pkgCache::PkgFileIterator &PkgF = GetCpp<pkgCache::PkgFileIterator>(PkgFObj);
pkgCache *Cache = PkgF.Cache();
@@ -39,15 +39,15 @@ static PyObject *PkgRecordsLookup(PyObject *Self,PyObject *Args)
PyErr_SetNone(PyExc_IndexError);
return 0;
}
-
+
// Do the lookup
Struct.Last = &Struct.Records.Lookup(pkgCache::VerFileIterator(*Cache,Cache->VerFileP+Index));
// always return true (to make it consistent with the pkgsrcrecords object
return Py_BuildValue("i", 1);
}
-
-static PyMethodDef PkgRecordsMethods[] =
+
+static PyMethodDef PkgRecordsMethods[] =
{
{"Lookup",PkgRecordsLookup,METH_VARARGS,"Changes to a new package"},
{}
@@ -79,14 +79,14 @@ static PyObject *PkgRecordsAttr(PyObject *Self,char *Name)
return CppPyString(Struct.Last->Name());
else if (strcmp("Homepage",Name) == 0)
return CppPyString(Struct.Last->Homepage());
- else if (strcmp("Record", Name) == 0)
+ else if (strcmp("Record", Name) == 0)
{
const char *start, *stop;
Struct.Last->GetRec(start, stop);
return PyString_FromStringAndSize(start,stop-start);
}
}
-
+
return Py_FindMethod(PkgRecordsMethods,Self,Name);
}
PyTypeObject PkgRecordsType =
diff --git a/python/pkgrecords.h b/python/pkgrecords.h
index 78787eab..1e26c8cf 100644
--- a/python/pkgrecords.h
+++ b/python/pkgrecords.h
@@ -4,7 +4,7 @@ struct PkgRecordsStruct
{
pkgRecords Records;
pkgRecords::Parser *Last;
-
+
PkgRecordsStruct(pkgCache *Cache) : Records(*Cache), Last(0) {};
PkgRecordsStruct() : Records(*(pkgCache *)0) {abort();}; // G++ Bug..
};
diff --git a/python/pkgsrcrecords.cc b/python/pkgsrcrecords.cc
index c698a925..f7f5d7a2 100644
--- a/python/pkgsrcrecords.cc
+++ b/python/pkgsrcrecords.cc
@@ -21,7 +21,7 @@ struct PkgSrcRecordsStruct
pkgSourceList List;
pkgSrcRecords *Records;
pkgSrcRecords::Parser *Last;
-
+
PkgSrcRecordsStruct() : Last(0) {
List.ReadMainList();
Records = new pkgSrcRecords(List);
@@ -30,24 +30,24 @@ struct PkgSrcRecordsStruct
delete Records;
};
};
-
+
// PkgSrcRecords Class /*{{{*/
// ---------------------------------------------------------------------
static char *doc_PkgSrcRecordsLookup = "xxx";
static PyObject *PkgSrcRecordsLookup(PyObject *Self,PyObject *Args)
-{
+{
PkgSrcRecordsStruct &Struct = GetCpp<PkgSrcRecordsStruct>(Self);
-
+
char *Name = 0;
if (PyArg_ParseTuple(Args,"s",&Name) == 0)
return 0;
-
+
Struct.Last = Struct.Records->Find(Name, false);
if (Struct.Last == 0) {
Struct.Records->Restart();
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
return Py_BuildValue("i", 1);
@@ -55,20 +55,20 @@ static PyObject *PkgSrcRecordsLookup(PyObject *Self,PyObject *Args)
static char *doc_PkgSrcRecordsRestart = "Start Lookup from the begining";
static PyObject *PkgSrcRecordsRestart(PyObject *Self,PyObject *Args)
-{
+{
PkgSrcRecordsStruct &Struct = GetCpp<PkgSrcRecordsStruct>(Self);
-
+
char *Name = 0;
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
Struct.Records->Restart();
Py_INCREF(Py_None);
- return HandleErrors(Py_None);
+ return HandleErrors(Py_None);
}
-static PyMethodDef PkgSrcRecordsMethods[] =
+static PyMethodDef PkgSrcRecordsMethods[] =
{
{"Lookup",PkgSrcRecordsLookup,METH_VARARGS,doc_PkgSrcRecordsLookup},
{"Restart",PkgSrcRecordsRestart,METH_VARARGS,doc_PkgSrcRecordsRestart},
@@ -111,10 +111,10 @@ static PyObject *PkgSrcRecordsAttr(PyObject *Self,char *Name)
PyObject *v;
for(unsigned int i=0;i<f.size();i++) {
- v = Py_BuildValue("(siss)",
- f[i].MD5Hash.c_str(),
- f[i].Size,
- f[i].Path.c_str(),
+ v = Py_BuildValue("(siss)",
+ f[i].MD5Hash.c_str(),
+ f[i].Size,
+ f[i].Path.c_str(),
f[i].Type.c_str());
PyList_Append(List, v);
Py_DECREF(v);
@@ -129,7 +129,7 @@ static PyObject *PkgSrcRecordsAttr(PyObject *Self,char *Name)
PyObject *v;
for(unsigned int i=0;i<bd.size();i++) {
- v = Py_BuildValue("(ssii)", bd[i].Package.c_str(),
+ v = Py_BuildValue("(ssii)", bd[i].Package.c_str(),
bd[i].Version.c_str(), bd[i].Op, bd[i].Type);
PyList_Append(List, v);
Py_DECREF(v);
@@ -137,7 +137,7 @@ static PyObject *PkgSrcRecordsAttr(PyObject *Self,char *Name)
return List;
}
}
-
+
return Py_FindMethod(PkgSrcRecordsMethods,Self,Name);
}
PyTypeObject PkgSrcRecordsType =
@@ -174,7 +174,7 @@ PyObject *GetPkgSrcRecords(PyObject *Self,PyObject *Args)
#endif
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
return HandleErrors(CppPyObject_NEW<PkgSrcRecordsStruct>(&PkgSrcRecordsType));
}
diff --git a/python/progress.cc b/python/progress.cc
index 99ad0a25..c5a1c138 100644
--- a/python/progress.cc
+++ b/python/progress.cc
@@ -14,7 +14,7 @@
// generic
-bool PyCallbackObj::RunSimpleCallback(const char* method_name,
+bool PyCallbackObj::RunSimpleCallback(const char* method_name,
PyObject *arglist,
PyObject **res)
{
@@ -50,8 +50,8 @@ bool PyCallbackObj::RunSimpleCallback(const char* method_name,
}
-// OpProgress interface
-void PyOpProgress::Update()
+// OpProgress interface
+void PyOpProgress::Update()
{
PyObject *o;
o = Py_BuildValue("s", Op.c_str());
@@ -64,7 +64,7 @@ void PyOpProgress::Update()
PyObject_SetAttrString(callbackInst, "majorChange", o);
Py_XDECREF(o);
- // Build up the argument list...
+ // Build up the argument list...
if(CheckChange(0.05))
{
PyObject *arglist = Py_BuildValue("(f)", Percent);
@@ -128,7 +128,7 @@ void PyFetchProgress::Fail(pkgAcquire::ItemDesc &Itm)
// Ignore certain kinds of transient failures (bad code)
if (Itm.Owner->Status == pkgAcquire::Item::StatIdle)
return;
-
+
if (Itm.Owner->Status == pkgAcquire::Item::StatDone)
{
UpdateStatus(Itm, DLIgnored);
@@ -159,7 +159,7 @@ bool PyFetchProgress::Pulse(pkgAcquire * Owner)
//std::cout << "Pulse" << std::endl;
if(callbackInst == 0)
return false;
-
+
// set stats
PyObject *o;
o = Py_BuildValue("f", CurrentCPS);
@@ -179,11 +179,11 @@ bool PyFetchProgress::Pulse(pkgAcquire * Owner)
Py_XDECREF(o);
PyObject *arglist = Py_BuildValue("()");
- PyObject *result;
+ PyObject *result;
RunSimpleCallback("pulse", arglist, &result);
bool res = true;
- if(!PyArg_Parse(result, "b", &res))
+ if(!PyArg_Parse(result, "b", &res))
{
// most of the time the user who subclasses the pulse()
// method forgot to add a return {True,False} so we just
@@ -199,22 +199,22 @@ bool PyFetchProgress::Pulse(pkgAcquire * Owner)
// install progress
-void PyInstallProgress::StartUpdate()
+void PyInstallProgress::StartUpdate()
{
RunSimpleCallback("startUpdate");
}
-void PyInstallProgress::UpdateInterface()
+void PyInstallProgress::UpdateInterface()
{
RunSimpleCallback("updateInterface");
}
-
-void PyInstallProgress::FinishUpdate()
+
+void PyInstallProgress::FinishUpdate()
{
RunSimpleCallback("finishUpdate");
}
-pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
+pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
{
void *dummy;
pkgPackageManager::OrderResult res;
@@ -233,7 +233,7 @@ pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
std::cerr << "custom fork found" << std::endl;
PyObject *arglist = Py_BuildValue("()");
PyObject *result = PyEval_CallObject(method, arglist);
- Py_DECREF(arglist);
+ Py_DECREF(arglist);
if (result == NULL) {
std::cerr << "fork method invalid" << std::endl;
PyErr_Print();
@@ -248,7 +248,7 @@ pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
//std::cerr << "using build-in fork()" << std::endl;
child_id = fork();
}
-
+
#if 0 // FIXME: this needs to be merged into apt to support medium swaping
if (child_id == 0) {
@@ -277,7 +277,7 @@ pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
//std::cerr << "custom waitChild found" << std::endl;
PyObject *arglist = Py_BuildValue("(i)",child_id);
PyObject *result = PyEval_CallObject(method, arglist);
- Py_DECREF(arglist);
+ Py_DECREF(arglist);
if (result == NULL) {
std::cerr << "waitChild method invalid" << std::endl;
PyErr_Print();
@@ -291,7 +291,7 @@ pkgPackageManager::OrderResult PyInstallProgress::Run(pkgPackageManager *pm)
//std::cerr << "got child_res: " << res << std::endl;
} else {
//std::cerr << "using build-in waitpid()" << std::endl;
-
+
while (waitpid(child_id, &ret, WNOHANG) == 0)
UpdateInterface();
diff --git a/python/progress.h b/python/progress.h
index f04bd683..5ac67b1c 100644
--- a/python/progress.h
+++ b/python/progress.h
@@ -53,7 +53,7 @@ struct PyFetchProgress : public pkgAcquireStatus, public PyCallbackObj
virtual bool MediaChange(string Media, string Drive);
- /* apt stuff */
+ /* apt stuff */
virtual void IMSHit(pkgAcquire::ItemDesc &Itm);
virtual void Fetch(pkgAcquire::ItemDesc &Itm);
virtual void Done(pkgAcquire::ItemDesc &Itm);
diff --git a/python/sourcelist.cc b/python/sourcelist.cc
index 76df015d..5dcaf86b 100644
--- a/python/sourcelist.cc
+++ b/python/sourcelist.cc
@@ -17,18 +17,18 @@
/*}}}*/
-
+
// PkgsourceList Class /*{{{*/
// ---------------------------------------------------------------------
static char *doc_PkgSourceListFindIndex = "xxx";
static PyObject *PkgSourceListFindIndex(PyObject *Self,PyObject *Args)
-{
+{
pkgSourceList *list = GetCpp<pkgSourceList*>(Self);
PyObject *pyPkgFileIter;
PyObject *pyPkgIndexFile;
- if (PyArg_ParseTuple(Args, "O!", &PackageFileType,&pyPkgFileIter) == 0)
+ if (PyArg_ParseTuple(Args, "O!", &PackageFileType,&pyPkgFileIter) == 0)
return 0;
pkgCache::PkgFileIterator &i = GetCpp<pkgCache::PkgFileIterator>(pyPkgFileIter);
@@ -40,7 +40,7 @@ static PyObject *PkgSourceListFindIndex(PyObject *Self,PyObject *Args)
}
//&PackageIndexFileType,&pyPkgIndexFile)
-
+
Py_INCREF(Py_None);
return Py_None;
}
@@ -61,7 +61,7 @@ static PyObject *PkgSourceListGetIndexes(PyObject *Self,PyObject *Args)
PyObject *pyFetcher;
char all = 0;
- if (PyArg_ParseTuple(Args, "O!|b",&PkgAcquireType,&pyFetcher, &all) == 0)
+ if (PyArg_ParseTuple(Args, "O!|b",&PkgAcquireType,&pyFetcher, &all) == 0)
return 0;
pkgAcquire *fetcher = GetCpp<pkgAcquire*>(pyFetcher);
@@ -70,7 +70,7 @@ static PyObject *PkgSourceListGetIndexes(PyObject *Self,PyObject *Args)
return HandleErrors(Py_BuildValue("b",res));
}
-static PyMethodDef PkgSourceListMethods[] =
+static PyMethodDef PkgSourceListMethods[] =
{
{"FindIndex",PkgSourceListFindIndex,METH_VARARGS,doc_PkgSourceListFindIndex},
{"ReadMainList",PkgSourceListReadMainList,METH_VARARGS,doc_PkgSourceListReadMainList},
@@ -85,13 +85,13 @@ static PyObject *PkgSourceListAttr(PyObject *Self,char *Name)
if (strcmp("List",Name) == 0)
{
PyObject *List = PyList_New(0);
- for (vector<metaIndex *>::const_iterator I = list->begin();
+ for (vector<metaIndex *>::const_iterator I = list->begin();
I != list->end(); I++)
{
PyObject *Obj;
Obj = CppPyObject_NEW<metaIndex*>(&MetaIndexType,*I);
PyList_Append(List,Obj);
- }
+ }
return List;
}
return Py_FindMethod(PkgSourceListMethods,Self,Name);
diff --git a/python/string.cc b/python/string.cc
index 1fa5a901..8168ea5b 100644
--- a/python/string.cc
+++ b/python/string.cc
@@ -3,22 +3,22 @@
// $Id: string.cc,v 1.3 2002/01/08 06:53:04 jgg Exp $
/* ######################################################################
- string - Mappings for the string functions that are worthwile for
+ string - Mappings for the string functions that are worthwile for
Python users
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
#include "apt_pkgmodule.h"
#include "generic.h"
-
+
#include <apt-pkg/strutl.h>
#include <Python.h>
/*}}}*/
-
+
// Templated function /*{{{*/
-/* Macro for the generic string in string out function */
+/* Macro for the generic string in string out function */
#define MkStr(Python,CFunc) \
PyObject *Python(PyObject *Self,PyObject *Args) \
{ \
@@ -36,7 +36,7 @@ PyObject *Python(PyObject *Self,PyObject *Args) \
return 0; \
return CppPyString(CFunc(Val)); \
}
-
+
MkStr(StrDeQuote,DeQuoteString);
MkStr(StrBase64Encode,Base64Encode);
MkStr(StrURItoFileName,URItoFileName);
@@ -58,7 +58,7 @@ PyObject *StrSizeToStr(PyObject *Self,PyObject *Args)
return CppPyString(SizeToStr(PyLong_AsDouble(Obj)));
if (PyFloat_Check(Obj))
return CppPyString(SizeToStr(PyFloat_AsDouble(Obj)));
-
+
PyErr_SetString(PyExc_TypeError,"Only understand integers and floats");
return 0;
}
@@ -69,14 +69,14 @@ PyObject *StrQuoteString(PyObject *Self,PyObject *Args)
char *Bad = 0;
if (PyArg_ParseTuple(Args,"ss",&Str,&Bad) == 0)
return 0;
- return CppPyString(QuoteString(Str,Bad));
+ return CppPyString(QuoteString(Str,Bad));
}
PyObject *StrStringToBool(PyObject *Self,PyObject *Args)
{
char *Str = 0;
if (PyArg_ParseTuple(Args,"s",&Str) == 0)
- return 0;
+ return 0;
return Py_BuildValue("i",StringToBool(Str));
}
@@ -85,14 +85,14 @@ PyObject *StrStrToTime(PyObject *Self,PyObject *Args)
char *Str = 0;
if (PyArg_ParseTuple(Args,"s",&Str) == 0)
return 0;
-
+
time_t Result;
if (StrToTime(Str,Result) == false)
{
Py_INCREF(Py_None);
return Py_None;
}
-
+
return Py_BuildValue("i",Result);
}
diff --git a/python/tag.cc b/python/tag.cc
index 4b378a55..217be290 100644
--- a/python/tag.cc
+++ b/python/tag.cc
@@ -4,18 +4,18 @@
/* ######################################################################
Tag - Binding for the RFC 822 tag file parser
-
+
Upon reflection I have make the TagSection wrapper look like a map..
The other option was to use a sequence (which nicely matches the internal
- storage) but really makes no sense to a Python Programmer.. One
- specialized lookup is provided, the FindFlag lookup - as well as the
+ storage) but really makes no sense to a Python Programmer.. One
+ specialized lookup is provided, the FindFlag lookup - as well as the
usual set of duplicate things to match the C++ interface.
-
- The TagFile interface is also slightly different, it has a built in
+
+ The TagFile interface is also slightly different, it has a built in
internal TagSection object that is used. Do not hold onto a reference
to a TagSection and let TagFile go out of scope! The underlying storage
for the section will go away and it will seg.
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -80,7 +80,7 @@ static PyObject *TagSecFind(PyObject *Self,PyObject *Args)
char *Default = 0;
if (PyArg_ParseTuple(Args,"s|z",&Name,&Default) == 0)
return 0;
-
+
const char *Start;
const char *Stop;
if (GetCpp<pkgTagSection>(Self).Find(Name,Start,Stop) == false)
@@ -98,7 +98,7 @@ static PyObject *TagSecFindFlag(PyObject *Self,PyObject *Args)
char *Name = 0;
if (PyArg_ParseTuple(Args,"s",&Name) == 0)
return 0;
-
+
unsigned long Flag = 0;
if (GetCpp<pkgTagSection>(Self).FindFlag(Name,Flag,1) == false)
{
@@ -116,15 +116,15 @@ static PyObject *TagSecMap(PyObject *Self,PyObject *Arg)
PyErr_SetNone(PyExc_TypeError);
return 0;
}
-
+
const char *Start;
const char *Stop;
if (GetCpp<pkgTagSection>(Self).Find(PyString_AsString(Arg),Start,Stop) == false)
- {
+ {
PyErr_SetString(PyExc_KeyError,PyString_AsString(Arg));
return 0;
}
-
+
return PyString_FromStringAndSize(Start,Stop-Start);
}
@@ -142,17 +142,17 @@ static PyObject *TagSecKeys(PyObject *Self,PyObject *Args)
pkgTagSection &Tags = GetCpp<pkgTagSection>(Self);
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
// Convert the whole configuration space into a list
PyObject *List = PyList_New(0);
for (unsigned int I = 0; I != Tags.Count(); I++)
- {
+ {
const char *Start;
const char *Stop;
Tags.Get(Start,Stop,I);
const char *End = Start;
for (; End < Stop && *End != ':'; End++);
-
+
PyObject *Obj;
PyList_Append(List,Obj = PyString_FromStringAndSize(Start,End-Start));
Py_DECREF(Obj);
@@ -166,7 +166,7 @@ static PyObject *TagSecExists(PyObject *Self,PyObject *Args)
char *Name = 0;
if (PyArg_ParseTuple(Args,"s",&Name) == 0)
return 0;
-
+
const char *Start;
const char *Stop;
if (GetCpp<pkgTagSection>(Self).Find(Name,Start,Stop) == false)
@@ -179,7 +179,7 @@ static PyObject *TagSecBytes(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
return Py_BuildValue("i",GetCpp<pkgTagSection>(Self).size());
}
@@ -197,11 +197,11 @@ static PyObject *TagFileStep(PyObject *Self,PyObject *Args)
{
if (PyArg_ParseTuple(Args,"") == 0)
return 0;
-
+
TagFileData &Obj = *(TagFileData *)Self;
if (Obj.Object.Step(Obj.Section->Object) == false)
return HandleErrors(Py_BuildValue("i",0));
-
+
return HandleErrors(Py_BuildValue("i",1));
}
@@ -219,11 +219,11 @@ static PyObject *TagFileJump(PyObject *Self,PyObject *Args)
int Offset;
if (PyArg_ParseTuple(Args,"i",&Offset) == 0)
return 0;
-
+
TagFileData &Obj = *(TagFileData *)Self;
if (Obj.Object.Jump(Obj.Section->Object,Offset) == false)
return HandleErrors(Py_BuildValue("i",0));
-
+
return HandleErrors(Py_BuildValue("i",1));
}
/*}}}*/
@@ -235,23 +235,23 @@ PyObject *ParseSection(PyObject *self,PyObject *Args)
char *Data;
if (PyArg_ParseTuple(Args,"s",&Data) == 0)
return 0;
-
+
// Create the object..
TagSecData *New = PyObject_NEW(TagSecData,&TagSecType);
new (&New->Object) pkgTagSection();
New->Data = new char[strlen(Data)+2];
snprintf(New->Data,strlen(Data)+2,"%s\n",Data);
-
+
if (New->Object.Scan(New->Data,strlen(New->Data)) == false)
{
cerr << New->Data << endl;
Py_DECREF((PyObject *)New);
PyErr_SetString(PyExc_ValueError,"Unable to parse section data");
return 0;
- }
-
+ }
+
New->Object.Trim();
-
+
return New;
}
/*}}}*/
@@ -264,26 +264,26 @@ PyObject *ParseTagFile(PyObject *self,PyObject *Args)
PyObject *File;
if (PyArg_ParseTuple(Args,"O!",&PyFile_Type,&File) == 0)
return 0;
-
+
TagFileData *New = PyObject_NEW(TagFileData,&TagFileType);
new (&New->Fd) FileFd(fileno(PyFile_AsFile(File)),false);
New->File = File;
Py_INCREF(New->File);
new (&New->Object) pkgTagFile(&New->Fd);
-
+
// Create the section
New->Section = PyObject_NEW(TagSecData,&TagSecType);
new (&New->Section->Object) pkgTagSection();
New->Section->Data = 0;
-
+
return HandleErrors(New);
}
- /*}}}*/
+ /*}}}*/
// RewriteSection - Rewrite a section.. /*{{{*/
// ---------------------------------------------------------------------
-/* An interesting future extension would be to add a user settable
+/* An interesting future extension would be to add a user settable
order list */
-char *doc_RewriteSection =
+char *doc_RewriteSection =
"RewriteSection(Section,Order,RewriteList) -> String\n"
"\n"
"The section rewriter allows a section to be taken in, have fields added,\n"
@@ -306,10 +306,10 @@ PyObject *RewriteSection(PyObject *self,PyObject *Args)
if (PyArg_ParseTuple(Args,"O!O!O!",&TagSecType,&Section,
&PyList_Type,&Order,&PyList_Type,&Rewrite) == 0)
return 0;
-
+
// Convert the order list
const char **OrderList = ListToCharChar(Order,true);
-
+
// Convert the Rewrite list.
TFRewriteData *List = new TFRewriteData[PySequence_Length(Rewrite)+1];
memset(List,0,sizeof(*List)*(PySequence_Length(Rewrite)+1));
@@ -324,7 +324,7 @@ PyObject *RewriteSection(PyObject *self,PyObject *Args)
return 0;
}
}
-
+
/* This is a glibc extension.. If not running on glibc I'd just take
this whole function out, it is probably infrequently used */
char *bp = 0;
@@ -336,13 +336,13 @@ PyObject *RewriteSection(PyObject *self,PyObject *Args)
delete [] OrderList;
delete [] List;
fclose(F);
-
+
if (Res == false)
{
free(bp);
return HandleErrors();
}
-
+
// Return the string
PyObject *ResObj = PyString_FromStringAndSize(bp,size);
free(bp);
@@ -351,13 +351,13 @@ PyObject *RewriteSection(PyObject *self,PyObject *Args)
/*}}}*/
// Method table for the Tag Section object
-static PyMethodDef TagSecMethods[] =
+static PyMethodDef TagSecMethods[] =
{
// Query
{"Find",TagSecFind,METH_VARARGS,doc_Find},
{"FindFlag",TagSecFindFlag,METH_VARARGS,doc_FindFlag},
{"Bytes",TagSecBytes,METH_VARARGS,doc_Bytes},
-
+
// Python Special
{"keys",TagSecKeys,METH_VARARGS,doc_Keys},
{"has_key",TagSecExists,METH_VARARGS,doc_Exists},
@@ -398,13 +398,13 @@ PyTypeObject TagSecType =
};
// Method table for the Tag File object
-static PyMethodDef TagFileMethods[] =
+static PyMethodDef TagFileMethods[] =
{
// Query
{"Step",TagFileStep,METH_VARARGS,doc_Step},
{"Offset",TagFileOffset,METH_VARARGS,doc_Offset},
{"Jump",TagFileJump,METH_VARARGS,doc_Jump},
-
+
{}
};
@@ -418,8 +418,8 @@ static PyObject *TagFileGetAttr(PyObject *Self,char *Name)
PyObject *Obj = ((TagFileData *)Self)->Section;
Py_INCREF(Obj);
return Obj;
- }
-
+ }
+
return Py_FindMethod(TagFileMethods,Self,Name);
}
diff --git a/python/tar.cc b/python/tar.cc
index 61c9d708..e5aaee6f 100644
--- a/python/tar.cc
+++ b/python/tar.cc
@@ -4,7 +4,7 @@
/* ######################################################################
Tar Inteface
-
+
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
@@ -23,9 +23,9 @@ class ProcessTar : public pkgDirStream
public:
PyObject *Function;
-
+
virtual bool DoItem(Item &Itm,int &Fd);
-
+
ProcessTar(PyObject *Function) : Function(Function)
{
Py_INCREF(Function);
@@ -48,55 +48,55 @@ bool ProcessTar::DoItem(Item &Itm,int &Fd)
case Item::File:
Type = "FILE";
break;
-
+
case Item::HardLink:
Type = "HARDLINK";
break;
-
+
case Item::SymbolicLink:
Type = "SYMLINK";
break;
-
+
case Item::CharDevice:
Type = "CHARDEV";
break;
-
+
case Item::BlockDevice:
Type = "BLKDEV";
break;
-
+
case Item::Directory:
Type = "DIR";
break;
-
+
case Item::FIFO:
Type = "FIFO";
break;
}
-
+
if (PyObject_CallFunction(Function,"sssiiiiiii",Type,Itm.Name,
Itm.LinkTarget,Itm.Mode,Itm.UID,Itm.GID,Itm.Size,
Itm.MTime,Itm.Major,Itm.Minor) == 0)
return false;
-
+
Fd = -1;
return true;
}
/*}}}*/
-
+
// tarExtract - Examine files from a tar /*{{{*/
// ---------------------------------------------------------------------
/* */
char *doc_tarExtract =
"tarExtract(File,Func,Comp) -> None\n"
"The tar file referenced by the file object File, Func called for each\n"
-"Tar member. Comp must be the string \"gzip\" (gzip is automatically invoked) \n";
+"Tar member. Comp must be the string \"gzip\" (gzip is automatically invoked) \n";
PyObject *tarExtract(PyObject *Self,PyObject *Args)
{
PyObject *File;
PyObject *Function;
char *Comp;
-
+
if (PyArg_ParseTuple(Args,"O!Os",&PyFile_Type,&File,
&Function,&Comp) == 0)
return 0;
@@ -106,19 +106,19 @@ PyObject *tarExtract(PyObject *Self,PyObject *Args)
PyErr_SetString(PyExc_TypeError,"argument 2: expected something callable.");
return 0;
}
-
+
{
// Open the file and associate the tar
FileFd Fd(fileno(PyFile_AsFile(File)),false);
ExtractTar Tar(Fd,0xFFFFFFFF,Comp);
if (_error->PendingError() == true)
return HandleErrors();
-
+
ProcessTar Proc(Function);
if (Tar.Go(Proc) == false)
return HandleErrors();
- }
-
+ }
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
@@ -138,11 +138,11 @@ PyObject *debExtract(PyObject *Self,PyObject *Args)
PyObject *Function;
char *Chunk;
const char *Comp = "gzip";
-
+
if (PyArg_ParseTuple(Args,"O!Os",&PyFile_Type,&File,
&Function,&Chunk) == 0)
return 0;
-
+
if (PyCallable_Check(Function) == 0)
{
PyErr_SetString(PyExc_TypeError,"argument 2: expected something callable.");
@@ -156,15 +156,15 @@ PyObject *debExtract(PyObject *Self,PyObject *Args)
debDebFile Deb(Fd);
if (_error->PendingError() == true)
return HandleErrors();
-
- // Get the archive member and positition the file
+
+ // Get the archive member and positition the file
const ARArchive::Member *Member = Deb.GotoMember(Chunk);
if (Member == 0)
{
_error->Error("Cannot find chunk %s",Chunk);
return HandleErrors();
}
-
+
// Extract it.
if (strcmp(".bz2", &Chunk[strlen(Chunk)-4]) == 0)
Comp = "bzip2";
@@ -174,8 +174,8 @@ PyObject *debExtract(PyObject *Self,PyObject *Args)
ProcessTar Proc(Function);
if (Tar.Go(Proc) == false)
return HandleErrors();
- }
-
+ }
+
Py_INCREF(Py_None);
return HandleErrors(Py_None);
}
diff --git a/setup.py b/setup.py
index 016db85a..c9f940a4 100755
--- a/setup.py
+++ b/setup.py
@@ -16,12 +16,12 @@ import sys
# The apt_pkg module
files = map(lambda source: "python/"+source,
string.split(parse_makefile("python/makefile")["APT_PKG_SRC"]))
-apt_pkg = Extension("apt_pkg", files, libraries=["apt-pkg"]);
+apt_pkg = Extension("apt_pkg", files, libraries=["apt-pkg"])
# The apt_inst module
files = map(lambda source: "python/"+source,
string.split(parse_makefile("python/makefile")["APT_INST_SRC"]))
-apt_inst = Extension("apt_inst", files, libraries=["apt-pkg","apt-inst"]);
+apt_inst = Extension("apt_inst", files, libraries=["apt-pkg", "apt-inst"])
# Replace the leading _ that is used in the templates for translation
templates = []
@@ -53,17 +53,16 @@ setup(name="python-apt",
description="Python bindings for APT",
author="APT Development Team",
author_email="deity@lists.debian.org",
- ext_modules=[apt_pkg,apt_inst],
+ ext_modules=[apt_pkg, apt_inst],
packages=['apt', 'apt.gtk', 'aptsources'],
data_files = [('share/python-apt/templates',
glob.glob('build/data/templates/*.info')),
('share/python-apt/templates',
glob.glob('data/templates/*.mirrors'))],
- cmdclass = { "build" : build_extra.build_extra,
- "build_i18n" : build_i18n.build_i18n },
+ cmdclass = {"build": build_extra.build_extra,
+ "build_i18n": build_i18n.build_i18n},
license = 'GNU GPL',
- platforms = 'posix'
- )
+ platforms = 'posix')
if len(sys.argv) > 1 and sys.argv[1] == "build":
import sphinx
diff --git a/tests/apt-test.py b/tests/apt-test.py
index 6205cf60..fac2ff43 100644
--- a/tests/apt-test.py
+++ b/tests/apt-test.py
@@ -20,7 +20,7 @@ if __name__ == "__main__":
cache = apt.Cache(progress)
for name in cache.keys():
import random
- if random.randint(0,1) == 1:
+ if random.randint(0, 1) == 1:
cache[name].markDelete()
print "Broken: %s " % cache._depcache.BrokenCount
print "DelCount: %s " % cache._depcache.DelCount
diff --git a/tests/cache.py b/tests/cache.py
index afcad00d..87a544e8 100644
--- a/tests/cache.py
+++ b/tests/cache.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.4
+#!/usr/bin/python
#
# Test for the pkgCache code
#
@@ -6,44 +6,46 @@
import apt_pkg
import sys
+
def main():
- apt_pkg.init()
- cache = apt_pkg.GetCache()
- depcache = apt_pkg.GetDepCache(cache)
- depcache.Init()
- i=0
- all=cache.PackageCount
- print "Running Cache test on all packages:"
- # first, get all pkgs
- for pkg in cache.Packages:
- i += 1
- x = pkg.Name
- # then get each version
- for ver in pkg.VersionList:
- # get some version information
- a = ver.FileList
- b = ver.VerStr
- c = ver.Arch
- d = ver.DependsListStr
- dl = ver.DependsList
- # get all dependencies (a dict of string->list,
- # e.g. "depends:" -> [ver1,ver2,..]
- for dep in dl.keys():
- # get the list of each dependency object
- for depVerList in dl[dep]:
- for z in depVerList:
- # get all TargetVersions of
- # the dependency object
- for j in z.AllTargets():
- f = j.FileList
- g = ver.VerStr
- h = ver.Arch
- k = ver.DependsListStr
- j = ver.DependsList
- pass
-
- print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)),
+ apt_pkg.init()
+ cache = apt_pkg.GetCache()
+ depcache = apt_pkg.GetDepCache(cache)
+ depcache.Init()
+ i=0
+ all=cache.PackageCount
+ print "Running Cache test on all packages:"
+ # first, get all pkgs
+ for pkg in cache.Packages:
+ i += 1
+ x = pkg.Name
+ # then get each version
+ for ver in pkg.VersionList:
+ # get some version information
+ a = ver.FileList
+ b = ver.VerStr
+ c = ver.Arch
+ d = ver.DependsListStr
+ dl = ver.DependsList
+ # get all dependencies (a dict of string->list,
+ # e.g. "depends:" -> [ver1,ver2,..]
+ for dep in dl.keys():
+ # get the list of each dependency object
+ for depVerList in dl[dep]:
+ for z in depVerList:
+ # get all TargetVersions of
+ # the dependency object
+ for j in z.AllTargets():
+ f = j.FileList
+ g = ver.VerStr
+ h = ver.Arch
+ k = ver.DependsListStr
+ j = ver.DependsList
+ pass
+
+ print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)),
+
if __name__ == "__main__":
- main()
- sys.exit(0)
+ main()
+ sys.exit(0)
diff --git a/tests/depcache.py b/tests/depcache.py
index 5c78c3a1..b199c812 100644
--- a/tests/depcache.py
+++ b/tests/depcache.py
@@ -6,47 +6,49 @@
import apt_pkg
import sys
+
def main():
- apt_pkg.init()
- cache = apt_pkg.GetCache()
- depcache = apt_pkg.GetDepCache(cache)
- depcache.Init()
- i=0
- all=cache.PackageCount
- print "Running DepCache test on all packages"
- print "(trying to install each and then mark it keep again):"
- # first, get all pkgs
- for pkg in cache.Packages:
- i += 1
- x = pkg.Name
- # then get each version
- ver =depcache.GetCandidateVer(pkg)
- if ver != None:
- depcache.MarkInstall(pkg)
- if depcache.InstCount == 0:
- if depcache.IsUpgradable(pkg):
- print "Error marking %s for install" % x
- for p in cache.Packages:
- if depcache.MarkedInstall(p):
- depcache.MarkKeep(p)
- if depcache.InstCount != 0:
- print "Error undoing the selection for %s (InstCount: %s)" % (x,depcache.InstCount)
- print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)),
+ apt_pkg.init()
+ cache = apt_pkg.GetCache()
+ depcache = apt_pkg.GetDepCache(cache)
+ depcache.Init()
+ i=0
+ all=cache.PackageCount
+ print "Running DepCache test on all packages"
+ print "(trying to install each and then mark it keep again):"
+ # first, get all pkgs
+ for pkg in cache.Packages:
+ i += 1
+ x = pkg.Name
+ # then get each version
+ ver =depcache.GetCandidateVer(pkg)
+ if ver != None:
+ depcache.MarkInstall(pkg)
+ if depcache.InstCount == 0:
+ if depcache.IsUpgradable(pkg):
+ print "Error marking %s for install" % x
+ for p in cache.Packages:
+ if depcache.MarkedInstall(p):
+ depcache.MarkKeep(p)
+ if depcache.InstCount != 0:
+ print "Error undoing the selection for %s (InstCount: %s)" % (
+ x, depcache.InstCount)
+ print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)),
- print
- print "Trying Upgrade:"
- depcache.Upgrade()
- print "To install: %s " % depcache.InstCount
- print "To remove: %s " % depcache.DelCount
- print "Kept back: %s " % depcache.KeepCount
+ print
+ print "Trying Upgrade:"
+ depcache.Upgrade()
+ print "To install: %s " % depcache.InstCount
+ print "To remove: %s " % depcache.DelCount
+ print "Kept back: %s " % depcache.KeepCount
- print "Trying DistUpgrade:"
- depcache.Upgrade(True)
- print "To install: %s " % depcache.InstCount
- print "To remove: %s " % depcache.DelCount
- print "Kept back: %s " % depcache.KeepCount
+ print "Trying DistUpgrade:"
+ depcache.Upgrade(True)
+ print "To install: %s " % depcache.InstCount
+ print "To remove: %s " % depcache.DelCount
+ print "Kept back: %s " % depcache.KeepCount
if __name__ == "__main__":
- main()
- sys.exit(0)
+ main()
+ sys.exit(0)
diff --git a/tests/lock.py b/tests/lock.py
index 86d704ea..d45b3964 100644
--- a/tests/lock.py
+++ b/tests/lock.py
@@ -4,7 +4,8 @@
#
import apt_pkg
-import sys, os
+import sys
+import os
if __name__ == "__main__":
@@ -21,27 +22,26 @@ if __name__ == "__main__":
apt_pkg.PkgSystemLock()
except SystemError, s:
print "Can't get lock: (error text:\n%s)" % s
- sys.exit(0)
+ sys.exit(0)
apt_pkg.PkgSystemUnLock()
# low-level lock
- fd = apt_pkg.GetLock(lock,True)
+ fd = apt_pkg.GetLock(lock, True)
print "Lockfile fd: %s" % fd
# try to get lock without error flag
pid = os.fork()
if pid == 0:
# child
- fd = apt_pkg.GetLock(lock,False)
+ fd = apt_pkg.GetLock(lock, False)
print "Lockfile fd (child): %s" % fd
- sys.exit(0)
+ sys.exit(0)
# try to get lock with error flag
pid = os.fork()
if pid == 0:
# child
- fd = apt_pkg.GetLock(lock,True)
+ fd = apt_pkg.GetLock(lock, True)
print "Lockfile fd (child): %s" % fd
- sys.exit(0)
-
+ sys.exit(0)
diff --git a/tests/memleak.py b/tests/memleak.py
index b5d05afc..659091fc 100755
--- a/tests/memleak.py
+++ b/tests/memleak.py
@@ -11,36 +11,36 @@ cache = apt.Cache()
# memleak
for i in range(100):
- cache.open(None)
- print cache["apt"].name
- time.sleep(1)
- gc.collect()
- f = open("%s" % i,"w")
- for obj in gc.get_objects():
- f.write("%s\n" % str(obj))
- f.close()
-
-# memleak
+ cache.open(None)
+ print cache["apt"].name
+ time.sleep(1)
+ gc.collect()
+ f = open("%s" % i, "w")
+ for obj in gc.get_objects():
+ f.write("%s\n" % str(obj))
+ f.close()
+
+# memleak
#for i in range(100):
-# cache = apt.Cache()
-# time.sleep(1)
-# cache = None
-# gc.collect()
+# cache = apt.Cache()
+# time.sleep(1)
+# cache = None
+# gc.collect()
# no memleak, but more or less the apt.Cache.open() code
for i in range(100):
- cache = apt_pkg.GetCache()
- depcache = apt_pkg.GetDepCache(cache)
- records = apt_pkg.GetPkgRecords(cache)
- list = apt_pkg.GetPkgSourceList()
- list.ReadMainList()
- dict = {}
- for pkg in cache.Packages:
- if len(pkg.VersionList) > 0:
- dict[pkg.Name] = apt.Package(cache,depcache,
- records, list, None, pkg)
-
- print cache["apt"]
- time.sleep(1)
-
- gc.collect()
+ cache = apt_pkg.GetCache()
+ depcache = apt_pkg.GetDepCache(cache)
+ records = apt_pkg.GetPkgRecords(cache)
+ list = apt_pkg.GetPkgSourceList()
+ list.ReadMainList()
+ dict = {}
+ for pkg in cache.Packages:
+ if len(pkg.VersionList) > 0:
+ dict[pkg.Name] = apt.Package(cache, depcache,
+ records, list, None, pkg)
+
+ print cache["apt"]
+ time.sleep(1)
+
+ gc.collect()
diff --git a/tests/pkgproblemresolver.py b/tests/pkgproblemresolver.py
index 0ed32ea6..7d5ae682 100644
--- a/tests/pkgproblemresolver.py
+++ b/tests/pkgproblemresolver.py
@@ -6,64 +6,65 @@
import apt_pkg
import sys
+
def main():
- apt_pkg.init()
- cache = apt_pkg.GetCache()
- depcache = apt_pkg.GetDepCache(cache)
- depcache.Init()
- i=0
- all=cache.PackageCount
- print "Running DepCache test on all packages"
- print "(trying to install each and then mark it keep again):"
- # first, get all pkgs
- for pkg in cache.Packages:
- i += 1
- x = pkg.Name
- # then get each version
- ver =depcache.GetCandidateVer(pkg)
- if ver != None:
- depcache.MarkInstall(pkg)
- if depcache.BrokenCount > 0:
- fixer = apt_pkg.GetPkgProblemResolver(depcache)
- fixer.Clear(pkg)
- fixer.Protect(pkg)
- # we first try to resolve the problem
- # with the package that should be installed
- # protected
- try:
- fixer.Resolve(True)
- except SystemError:
- # the pkg seems to be broken, the
- # returns a exception
- fixer.Clear(pkg)
- fixer.Resolve(True)
- if not depcache.MarkedInstall(pkg):
- print "broken in archive: %s " % pkg.Name
- fixer = None
- if depcache.InstCount == 0:
- if depcache.IsUpgradable(pkg):
- print "Error marking %s for install" % x
- for p in cache.Packages:
- if depcache.MarkedInstall(p) or depcache.MarkedUpgrade(p):
- depcache.MarkKeep(p)
- if depcache.InstCount != 0:
- print "Error undoing the selection for %s" % x
- print "\r%i/%i=%.3f%% " % (i,all,(float(i)/float(all)*100)),
+ apt_pkg.init()
+ cache = apt_pkg.GetCache()
+ depcache = apt_pkg.GetDepCache(cache)
+ depcache.Init()
+ i=0
+ all=cache.PackageCount
+ print "Running DepCache test on all packages"
+ print "(trying to install each and then mark it keep again):"
+ # first, get all pkgs
+ for pkg in cache.Packages:
+ i += 1
+ x = pkg.Name
+ # then get each version
+ ver =depcache.GetCandidateVer(pkg)
+ if ver != None:
+ depcache.MarkInstall(pkg)
+ if depcache.BrokenCount > 0:
+ fixer = apt_pkg.GetPkgProblemResolver(depcache)
+ fixer.Clear(pkg)
+ fixer.Protect(pkg)
+ # we first try to resolve the problem
+ # with the package that should be installed
+ # protected
+ try:
+ fixer.Resolve(True)
+ except SystemError:
+ # the pkg seems to be broken, the
+ # returns a exception
+ fixer.Clear(pkg)
+ fixer.Resolve(True)
+ if not depcache.MarkedInstall(pkg):
+ print "broken in archive: %s " % pkg.Name
+ fixer = None
+ if depcache.InstCount == 0:
+ if depcache.IsUpgradable(pkg):
+ print "Error marking %s for install" % x
+ for p in cache.Packages:
+ if depcache.MarkedInstall(p) or depcache.MarkedUpgrade(p):
+ depcache.MarkKeep(p)
+ if depcache.InstCount != 0:
+ print "Error undoing the selection for %s" % x
+ print "\r%i/%i=%.3f%% " % (i, all, (float(i) / float(all) * 100)),
- print
- print "Trying Upgrade:"
- depcache.Upgrade()
- print "To install: %s " % depcache.InstCount
- print "To remove: %s " % depcache.DelCount
- print "Kept back: %s " % depcache.KeepCount
+ print
+ print "Trying Upgrade:"
+ depcache.Upgrade()
+ print "To install: %s " % depcache.InstCount
+ print "To remove: %s " % depcache.DelCount
+ print "Kept back: %s " % depcache.KeepCount
- print "Trying DistUpgrade:"
- depcache.Upgrade(True)
- print "To install: %s " % depcache.InstCount
- print "To remove: %s " % depcache.DelCount
- print "Kept back: %s " % depcache.KeepCount
+ print "Trying DistUpgrade:"
+ depcache.Upgrade(True)
+ print "To install: %s " % depcache.InstCount
+ print "To remove: %s " % depcache.DelCount
+ print "Kept back: %s " % depcache.KeepCount
if __name__ == "__main__":
- main()
- sys.exit(0)
+ main()
+ sys.exit(0)
diff --git a/tests/pkgrecords.py b/tests/pkgrecords.py
index 43723569..5866847d 100644
--- a/tests/pkgrecords.py
+++ b/tests/pkgrecords.py
@@ -7,30 +7,34 @@
import apt_pkg
import sys
+
def main():
- apt_pkg.init()
- cache = apt_pkg.GetCache()
- depcache = apt_pkg.GetDepCache(cache)
- depcache.Init()
- i=0
- print "Running PkgRecords test on all packages:"
- for pkg in cache.Packages:
- i += 1
- records = apt_pkg.GetPkgRecords(cache)
- if len(pkg.VersionList) == 0:
- #print "no available version, cruft"
- continue
- version = depcache.GetCandidateVer(pkg)
- if not version:
- continue
- file, index = version.FileList.pop(0)
- if records.Lookup((file,index)):
- #print records.FileName
- x = records.FileName
- y = records.LongDesc
- pass
- print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)),
+ apt_pkg.init()
+ cache = apt_pkg.GetCache()
+ depcache = apt_pkg.GetDepCache(cache)
+ depcache.Init()
+ i=0
+ print "Running PkgRecords test on all packages:"
+ for pkg in cache.Packages:
+ i += 1
+ records = apt_pkg.GetPkgRecords(cache)
+ if len(pkg.VersionList) == 0:
+ #print "no available version, cruft"
+ continue
+ version = depcache.GetCandidateVer(pkg)
+ if not version:
+ continue
+ file, index = version.FileList.pop(0)
+ if records.Lookup((file, index)):
+ #print records.FileName
+ x = records.FileName
+ y = records.LongDesc
+ pass
+ print "\r%i/%i=%.3f%% " % (
+ i, cache.PackageCount,
+ (float(i) / float(cache.PackageCount) * 100)),
+
if __name__ == "__main__":
- main()
- sys.exit(0)
+ main()
+ sys.exit(0)
diff --git a/tests/pkgsrcrecords.py b/tests/pkgsrcrecords.py
index 06c4a1ef..77670540 100644
--- a/tests/pkgsrcrecords.py
+++ b/tests/pkgsrcrecords.py
@@ -7,19 +7,23 @@
import apt_pkg
import sys
+
def main():
- apt_pkg.init()
- cache = apt_pkg.GetCache()
- i=0
- print "Running PkgSrcRecords test on all packages:"
- for x in cache.Packages:
- i += 1
- src = apt_pkg.GetPkgSrcRecords()
- if src.Lookup(x.Name):
- #print src.Package
- pass
- print "\r%i/%i=%.3f%% " % (i,cache.PackageCount, (float(i)/float(cache.PackageCount)*100)),
+ apt_pkg.init()
+ cache = apt_pkg.GetCache()
+ i=0
+ print "Running PkgSrcRecords test on all packages:"
+ for x in cache.Packages:
+ i += 1
+ src = apt_pkg.GetPkgSrcRecords()
+ if src.Lookup(x.Name):
+ #print src.Package
+ pass
+ print "\r%i/%i=%.3f%% " % (
+ i, cache.PackageCount,
+ (float(i) / float(cache.PackageCount) * 100)),
+
if __name__ == "__main__":
- main()
- sys.exit(0)
+ main()
+ sys.exit(0)
diff --git a/tests/refcount.py b/tests/refcount.py
index f3230bd3..a29744ae 100755
--- a/tests/refcount.py
+++ b/tests/refcount.py
@@ -1,6 +1,6 @@
#!/usr/bin/python-dbg
-from pprint import pprint,pformat
+from pprint import pprint, pformat
import apt
import sys
import gc
diff --git a/tests/test_aptsources.py b/tests/test_aptsources.py
index c8d84395..3761f3ff 100644
--- a/tests/test_aptsources.py
+++ b/tests/test_aptsources.py
@@ -1,31 +1,35 @@
#!/usr/bin/env python
import unittest
-import apt_pkg
import os
import copy
-
import sys
+
sys.path.insert(0, "../")
+import apt_pkg
import aptsources
import aptsources.sourceslist
import aptsources.distro
+
class TestAptSources(unittest.TestCase):
+
def __init__(self, methodName):
unittest.TestCase.__init__(self, methodName)
apt_pkg.init()
apt_pkg.Config.Set("Dir::Etc", os.getcwd())
- apt_pkg.Config.Set("Dir::Etc::sourceparts","/xxx")
+ apt_pkg.Config.Set("Dir::Etc::sourceparts", "/xxx")
def testIsMirror(self):
- self.assertTrue(aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
- "http://de.archive.ubuntu.com"))
- self.assertFalse(aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
- "http://ftp.debian.org"))
+ yes = aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
+ "http://de.archive.ubuntu.com")
+ no = aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
+ "http://ftp.debian.org")
+ self.assertTrue(yes)
+ self.assertFalse(no)
def testSourcesListReading(self):
- apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list")
+ apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list")
sources = aptsources.sourceslist.SourcesList()
self.assertEqual(len(sources.list), 6)
# test load
@@ -34,22 +38,22 @@ class TestAptSources(unittest.TestCase):
self.assertEqual(len(sources.list), 6)
def testSourcesListAdding(self):
- apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list")
+ apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list")
sources = aptsources.sourceslist.SourcesList()
# test to add something that is already there (main)
before = copy.deepcopy(sources)
- sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
+ sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["main"])
self.assertTrue(sources.list == before.list)
# test to add something that is already there (restricted)
before = copy.deepcopy(sources)
- sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
+ sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["restricted"])
self.assertTrue(sources.list == before.list)
# test to add something new: multiverse
- sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
+ sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["multiverse"])
found = False
@@ -63,7 +67,7 @@ class TestAptSources(unittest.TestCase):
# test to add something new: multiverse *and*
# something that is already there
before = copy.deepcopy(sources)
- sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
+ sources.add("deb", "http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["universe", "something"])
found_universe = 0
@@ -82,7 +86,8 @@ class TestAptSources(unittest.TestCase):
self.assertEqual(found_universe, 1)
def testMatcher(self):
- apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list.testDistribution")
+ apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list.test"
+ "Distribution")
sources = aptsources.sourceslist.SourcesList()
distro = aptsources.distro.get_distro()
distro.get_sources(sources)
@@ -93,7 +98,8 @@ class TestAptSources(unittest.TestCase):
self.fail("source entry '%s' has no matcher" % s)
def testDistribution(self):
- apt_pkg.Config.Set("Dir::Etc::sourcelist","data/sources.list.testDistribution")
+ apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list.test"
+ "Distribution")
sources = aptsources.sourceslist.SourcesList()
distro = aptsources.distro.get_distro()
distro.get_sources(sources)
@@ -103,7 +109,8 @@ class TestAptSources(unittest.TestCase):
if s.template:
dist_templates.add(s.template.name)
#print dist_templates
- for d in ["hardy","hardy-security","hardy-updates","intrepid","hardy-backports"]:
+ for d in ("hardy", "hardy-security", "hardy-updates", "intrepid",
+ "hardy-backports"):
self.assertTrue(d in dist_templates)
# test enable
comp = "restricted"
@@ -115,7 +122,7 @@ class TestAptSources(unittest.TestCase):
"edgy" in entry.dist):
for c in entry.comps:
if c == comp:
- if not found.has_key(entry.dist):
+ if not entry.dist in found:
found[entry.dist] = 0
found[entry.dist] += 1
#print "".join([s.str() for s in sources])
@@ -132,12 +139,13 @@ class TestAptSources(unittest.TestCase):
entry.template.name == "edgy"):
for c in entry.comps:
if c == comp:
- if not found.has_key(entry.dist):
+ if not entry.dist in found.has_key:
found[entry.dist] = 0
found[entry.dist] += 1
#print "".join([s.str() for s in sources])
for key in found:
self.assertEqual(found[key], 1)
+
if __name__ == "__main__":
unittest.main()
diff --git a/tests/test_hashsums.py b/tests/test_hashsums.py
index 7fa6eb60..0cf6beb7 100644
--- a/tests/test_hashsums.py
+++ b/tests/test_hashsums.py
@@ -3,6 +3,7 @@
import unittest
import apt_pkg
+
class testHashes(unittest.TestCase):
" test the hashsum functions against strings and files "
@@ -45,7 +46,8 @@ class testHashes(unittest.TestCase):
def testSHA256(self):
# simple
s = "foo"
- s_hash = "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
+ s_hash = \
+ "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
res = apt_pkg.sha256sum(s)
self.assert_(res == s_hash)
# file
@@ -53,7 +55,8 @@ class testHashes(unittest.TestCase):
self.assert_(res == s_hash)
# with zero (\0) in the string
s = "foo\0bar"
- s_hash = "d6b681bfce7155d44721afb79c296ef4f0fa80a9dd6b43c5cf74dd0f64c85512"
+ s_hash = \
+ "d6b681bfce7155d44721afb79c296ef4f0fa80a9dd6b43c5cf74dd0f64c85512"
res = apt_pkg.sha256sum(s)
self.assert_(res == s_hash)
# file
diff --git a/utils/get_debian_mirrors.py b/utils/get_debian_mirrors.py
index 512731ed..2e3c7296 100755
--- a/utils/get_debian_mirrors.py
+++ b/utils/get_debian_mirrors.py
@@ -39,11 +39,13 @@ req = urllib2.Request("http://www.debian.org/mirror/mirrors_full")
match = re.compile("^.*>([A-Za-z0-9-.\/_]+)<\/a>.*\n$")
match_location = re.compile('^<strong><a name="([A-Z]+)">.*')
+
def add_sites(line, proto, sites, mirror_type):
path = match.sub(r"\1", line)
for site in sites:
mirror_type.append("%s://%s%s\n" % (proto, site.lstrip(), path))
+
try:
print "Downloading mirrors list from the Debian website..."
uri=urllib2.urlopen(req)
diff --git a/utils/get_ubuntu_mirrors.py b/utils/get_ubuntu_mirrors.py
index 605edcf5..ddd1e369 100755
--- a/utils/get_ubuntu_mirrors.py
+++ b/utils/get_ubuntu_mirrors.py
@@ -42,10 +42,10 @@ try:
uri=urllib2.urlopen(req)
p = re.compile('^.*((http|ftp):\/\/[A-Za-z0-9-.:\/_]+).*\n*$')
for line in uri.readlines():
- if r"[[Anchor(dvd-images)]]" in line:
- break
- if "http://" in line or "ftp://" in line:
- mirrors.append(p.sub(r"\1", line))
+ if r"[[Anchor(dvd-images)]]" in line:
+ break
+ if "http://" in line or "ftp://" in line:
+ mirrors.append(p.sub(r"\1", line))
uri.close()
except:
print "Failed to download or extract the mirrors list!"
@@ -57,5 +57,3 @@ for mirror in mirrors:
list.write("%s\n" % mirror)
list.close()
print "Done."
-
-
diff --git a/utils/get_ubuntu_mirrors_from_lp.py b/utils/get_ubuntu_mirrors_from_lp.py
index 1f41e34b..59ddd84e 100755
--- a/utils/get_ubuntu_mirrors_from_lp.py
+++ b/utils/get_ubuntu_mirrors_from_lp.py
@@ -64,6 +64,8 @@ content_splits = re.split(r'<tr class="highlighted"',
'id="mirrors_list">.+?</table>',
content)[0])
lines=[]
+
+
def find(split):
country = re.search(r"<strong>(.+?)</strong>", split)
if not country:
@@ -78,6 +80,7 @@ def find(split):
split)
map(lambda u: lines.append(u[0]), urls)
+
map(find, content_splits)
print "Writing local mirrors list: %s" % list_path
diff --git a/utils/mirrortest b/utils/mirrortest
index 75ef917b..a724c81f 100755
--- a/utils/mirrortest
+++ b/utils/mirrortest
@@ -24,8 +24,8 @@ class MirrorTest:
host = mirror.hostname
except:
continue
- print "Pinging (Worker %s) %s (%s) ..." % (self.id,
- host,
+ print "Pinging (Worker %s) %s (%s) ..." % (self.id,
+ host,
MirrorTest.completed_pings)
commando = os.popen("ping -q -c 4 -W 2 -i 0.3 %s" % host,
"r")