From e2b1181b6600d5dfb1f5e1ebd31d89ee9229db8c Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 6 Feb 2007 14:40:45 +0100 Subject: * better cdrom support merged --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'debian') diff --git a/debian/changelog b/debian/changelog index 79e6d078..da487377 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +python-apt (0.6.21) unstable; urgency=low + + * apt/cdrom.py: + - better cdrom handling support + + -- + python-apt (0.6.20) unstable; urgency=low * python/generic.h: -- cgit v1.2.3 From fb94875bd4e108c6d22e05d5312de7ed9f86b057 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 22 Feb 2007 15:31:00 +0100 Subject: * python/string.cc: - SizeToString supports PyLong too --- debian/changelog | 2 ++ python/string.cc | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'debian') diff --git a/debian/changelog b/debian/changelog index da487377..7833dc00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ python-apt (0.6.21) unstable; urgency=low * apt/cdrom.py: - better cdrom handling support + * python/string.cc: + - SizeToString supports PyLong too -- diff --git a/python/string.cc b/python/string.cc index 16adc8cd..d0926da5 100644 --- a/python/string.cc +++ b/python/string.cc @@ -53,9 +53,11 @@ PyObject *StrSizeToStr(PyObject *Self,PyObject *Args) if (PyArg_ParseTuple(Args,"O",&Obj) == 0) return 0; if (PyInt_Check(Obj)) - return CppPyString(SizeToStr(PyInt_AS_LONG(Obj))); + return CppPyString(SizeToStr(PyInt_AsLong(Obj))); + if (PyLong_Check(Obj)) + return CppPyString(SizeToStr(PyLong_AsLong(Obj))); if (PyFloat_Check(Obj)) - return CppPyString(SizeToStr(PyFloat_AS_DOUBLE(Obj))); + return CppPyString(SizeToStr(PyFloat_AsDouble(Obj))); PyErr_SetString(PyExc_TypeError,"Only understand integers and floats"); return 0; -- cgit v1.2.3 From 9f0a976e63fe1f429036d9d6492fbfb06d26eae8 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 1 Mar 2007 14:41:14 +0100 Subject: - SizeToString supports PyLong too * apt/cache.py: - fix rootdir --- apt/cache.py | 3 +-- debian/changelog | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'debian') diff --git a/apt/cache.py b/apt/cache.py index 690510e3..9e682bd8 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -33,11 +33,10 @@ class Cache(object): def __init__(self, progress=None, rootdir=None): self._callbacks = {} - self.open(progress) - if rootdir: apt_pkg.Config.Set("Dir", rootdir) apt_pkg.Config.Set("Dir::State::status", rootdir + "/var/lib/dpkg/status") + self.open(progress) def _runCallbacks(self, name): """ internal helper to run a callback """ diff --git a/debian/changelog b/debian/changelog index 7833dc00..e8d06ebf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,9 @@ python-apt (0.6.21) unstable; urgency=low * apt/cdrom.py: - better cdrom handling support * python/string.cc: - - SizeToString supports PyLong too + - SizeToString supports PyLong too + * apt/cache.py: + - fix rootdir -- -- cgit v1.2.3 From 29acfcee494341dca6ab27ea646d99955dd78d14 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 6 Mar 2007 12:28:05 +0100 Subject: * apt/package.py: - added candidateDependencies, installedDependencies --- apt/package.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- debian/changelog | 3 ++- 2 files changed, 54 insertions(+), 2 deletions(-) (limited to 'debian') diff --git a/apt/package.py b/apt/package.py index 0d1145ea..99dbdd9e 100644 --- a/apt/package.py +++ b/apt/package.py @@ -24,6 +24,17 @@ import sys import random import string +class BaseDependency(object): + " a single dependency " + def __init__(self, name, rel, ver, pre): + self.name = name + self.relation = rel + self.version = ver + self.preDepend = pre + +class Dependency(object): + def __init__(self, alternatives): + self.or_dependencies = alternatives class Package(object): """ This class represents a package in the cache @@ -94,6 +105,35 @@ class Package(object): return None candidateVersion = property(candidateVersion) + def _getDependencies(self, ver): + depends_list = [] + depends = ver.DependsList + for t in ["PreDepends", "Depends"]: + if not depends.has_key(t): + continue + for depVerList in depends[t]: + base_deps = [] + for depOr in depVerList: + base_deps.append(BaseDependency(depOr.TargetPkg.Name, depOr.TargetVer, depOr.CompType, (t == "PreDepends"))) + depends_list.append(Dependency(base_deps)) + return depends_list + + @property + def candidateDependencies(self): + """ return a list of candidate dependencies """ + candver = self._depcache.GetCandidateVer(self._pkg) + if candver == None: + return [] + return self._getDependencies(candver) + + @property + def installedDependencies(self): + """ return a list of installed dependencies """ + ver = self._pkg.CurrentVer + if ver == None: + return [] + return self._getDependencies(ver) + def _downloadable(self, useCandidate=True): """ helper, return if the version is downloadable """ if useCandidate: @@ -159,7 +199,11 @@ class Package(object): if not self._lookupRecord(): return "" desc = "" - for line in string.split(self._records.LongDesc, "\n"): + try: + tmp = unicode(self._records.LongDesc) + except UnicodeDecodeError: + tmp = "Invalid unicode in description" + for line in string.split(tmp, "\n"): tmp = string.strip(line) if tmp == ".": desc += "\n" @@ -238,6 +282,8 @@ class Package(object): def installedSize(self): """ The size of the currently installed package """ ver = self._pkg.CurrentVer + if ver is None: + return 0 return ver.InstalledSize installedSize = property(installedSize) @@ -344,6 +390,11 @@ if __name__ == "__main__": print "Description (unformated):\n%s" % pkg.rawDescription print "InstalledSize: %s " % pkg.installedSize print "PackageSize: %s " % pkg.packageSize + print "Dependencies: %s" % pkg.installedDependencies + for dep in pkg.candidateDependencies: + print ",".join(["%s (%s) (%s) (%s)" % (o.name,o.version,o.relation, o.preDepend) for o in dep.or_dependencies]) + + # now test install/remove import apt diff --git a/debian/changelog b/debian/changelog index e8d06ebf..f55793df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,8 @@ python-apt (0.6.21) unstable; urgency=low * apt/cdrom.py: - better cdrom handling support - * python/string.cc: + * apt/package.py: + - added candidateDependencies, installedDependencies - SizeToString supports PyLong too * apt/cache.py: - fix rootdir -- cgit v1.2.3 From ada1e076e5fb2b022dddb535777493b0db562970 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 6 Mar 2007 16:14:59 +0100 Subject: - support pkg.architecture --- apt/package.py | 17 +++++++++++++---- debian/changelog | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'debian') diff --git a/apt/package.py b/apt/package.py index 99dbdd9e..6d54cb22 100644 --- a/apt/package.py +++ b/apt/package.py @@ -118,21 +118,30 @@ class Package(object): depends_list.append(Dependency(base_deps)) return depends_list - @property def candidateDependencies(self): """ return a list of candidate dependencies """ candver = self._depcache.GetCandidateVer(self._pkg) if candver == None: return [] return self._getDependencies(candver) + candidateDependencies = property(candidateDependencies) - @property def installedDependencies(self): """ return a list of installed dependencies """ ver = self._pkg.CurrentVer if ver == None: return [] return self._getDependencies(ver) + installedDependencies = property(installedDependencies) + + def architecture(self): + if not self._lookupRecord(): + return None + sec = apt_pkg.ParseSection(self._records.Record) + if sec.has_key("Architecture"): + return sec["Architecture"] + return None + architecture = property(architecture) def _downloadable(self, useCandidate=True): """ helper, return if the version is downloadable """ @@ -393,8 +402,8 @@ if __name__ == "__main__": print "Dependencies: %s" % pkg.installedDependencies for dep in pkg.candidateDependencies: print ",".join(["%s (%s) (%s) (%s)" % (o.name,o.version,o.relation, o.preDepend) for o in dep.or_dependencies]) - - + print "arch: %s" % pkg.architecture + # now test install/remove import apt diff --git a/debian/changelog b/debian/changelog index f55793df..9e76a9e8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ python-apt (0.6.21) unstable; urgency=low * apt/package.py: - added candidateDependencies, installedDependencies - SizeToString supports PyLong too + - support pkg.architecture * apt/cache.py: - fix rootdir -- cgit v1.2.3 From 8205cc8ecaae7c60d688498d5d2d1d415879c58c Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 6 Mar 2007 16:22:13 +0100 Subject: - support candidateRecord, installedRecord --- apt/package.py | 15 ++++++++++++++- debian/changelog | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'debian') diff --git a/apt/package.py b/apt/package.py index 6d54cb22..13481be3 100644 --- a/apt/package.py +++ b/apt/package.py @@ -228,6 +228,19 @@ class Package(object): return self._records.LongDesc rawDescription = property(rawDescription) + def candidateRecord(self): + " return the full pkgrecord as string of the candidate version " + if not self._lookupRecord(True): + return None + return self._records.Record + candidateRecord = property(candidateRecord) + + def installedRecord(self): + " return the full pkgrecord as string of the installed version " + if not self._lookupRecord(False): + return None + return self._records.Record + installedRecord = property(installedRecord) # depcache states def markedInstall(self): @@ -403,7 +416,7 @@ if __name__ == "__main__": for dep in pkg.candidateDependencies: print ",".join(["%s (%s) (%s) (%s)" % (o.name,o.version,o.relation, o.preDepend) for o in dep.or_dependencies]) print "arch: %s" % pkg.architecture - + print "rec: ",pkg.candidateRecord # now test install/remove import apt diff --git a/debian/changelog b/debian/changelog index 9e76a9e8..3ac73a8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,7 @@ python-apt (0.6.21) unstable; urgency=low - added candidateDependencies, installedDependencies - SizeToString supports PyLong too - support pkg.architecture + - support candidateRecord, installedRecord * apt/cache.py: - fix rootdir -- cgit v1.2.3 From 6b02ff1915b3dcd098474e1b9ccd5f89d6b777da Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 7 Mar 2007 11:07:56 +0100 Subject: * apt/cdrom.py: - fix bug in cdrom mountpoint handling --- apt/cdrom.py | 4 ++-- debian/changelog | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'debian') diff --git a/apt/cdrom.py b/apt/cdrom.py index d499b30a..8d73339c 100644 --- a/apt/cdrom.py +++ b/apt/cdrom.py @@ -1,6 +1,6 @@ import apt_pkg -from apt.progress import CdromProgress +from progress import CdromProgress class Cdrom(object): def __init__(self, progress=None, mountpoint=None, nomount=True): @@ -12,7 +12,7 @@ class Cdrom(object): """ self._cdrom = apt_pkg.GetCdrom() if progress is None: - self._progress = apt.progress.CdromProgress() + self._progress = CdromProgress() else: self._progress = progress # see if we have a alternative mountpoint diff --git a/debian/changelog b/debian/changelog index 3ac73a8e..cab337f6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ python-apt (0.6.21) unstable; urgency=low - support candidateRecord, installedRecord * apt/cache.py: - fix rootdir + * apt/cdrom.py: + - fix bug in cdrom mountpoint handling -- -- cgit v1.2.3