summaryrefslogtreecommitdiff
path: root/doc/source/examples/missing-deps.py
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2009-01-13 17:22:27 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2009-01-13 17:22:27 +0100
commit38d602dc83006c51dfe4ed594d691ea9b0679498 (patch)
treeb7aedfba82c44cad6c3012f879b5d6d7e8ad1425 /doc/source/examples/missing-deps.py
parent12cf58d12b969010f3d98b2974d72bbb950b775f (diff)
parent614897f798d9f16591fbd29ebe2a6c5674102d2d (diff)
downloadpython-apt-38d602dc83006c51dfe4ed594d691ea9b0679498.tar.gz
* apt/*.py:
- Almost complete cleanup of the code - Remove inconsistent use of tabs and spaces (Closes: #505443) - Improved documentation * apt/debfile.py: - Drop get*() methods, as they are deprecated and were never in a stable release - Make DscSrcPackage working * apt/gtk/widgets.py: - Fix the code and document the signals * Introduce new documentation build with Sphinx - Contains style Guide (Closes: #481562) - debian/rules: Build the documentation here - setup.py: Remove pydoc building and add new docs. - debian/examples: Include examples from documentation - debian/python-apt.docs: + Change html/ to build/doc/html. + Add build/doc/text for the text-only documentation * setup.py: - Only create build/data when building, not all the time - Remove build/mo and build/data on clean -a * debian/control: - Remove the Conflicts on python2.3-apt, python2.4-apt, as they are only needed for oldstable (sarge) - 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) * Merge Ben Finney's do not use has_key() (Closes: #481878) * Do not use deprecated form of raise statement (Closes: #494259) * Add support for PkgRecords.SHA256Hash (Closes: #456113)
Diffstat (limited to 'doc/source/examples/missing-deps.py')
-rw-r--r--doc/source/examples/missing-deps.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/doc/source/examples/missing-deps.py b/doc/source/examples/missing-deps.py
new file mode 100644
index 00000000..3ca16e45
--- /dev/null
+++ b/doc/source/examples/missing-deps.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+"""Check the archive for missing dependencies"""
+import apt_pkg
+
+
+def fmt_dep(dep):
+ """Format a Dependency object [of apt_pkg] as a string."""
+ ret = dep.TargetPkg.Name
+ if dep.TargetVer:
+ ret += " (%s %s)" % (dep.CompType, dep.TargetVer)
+ return ret
+
+
+def check_version(pkgver):
+ """Check the version of the package"""
+ missing = []
+
+ for or_group in pkgver.DependsList.get("Pre-Depends", []) + \
+ pkgver.DependsList.get("Depends", []):
+ if not any(dep.AllTargets() for dep in or_group):
+ # If none of the or-choices can be satisfied, add it to missing
+ missing.append(or_group)
+
+ if missing:
+ print "Package:", pkgver.ParentPkg.Name
+ print "Version:", pkgver.VerStr
+ print "Missing:",
+ print ", ".join(" | ".join(fmt_dep(dep) for dep in or_group)
+ for or_group in missing)
+ print
+
+
+def main():
+ """The main function."""
+ apt_pkg.InitConfig()
+ apt_pkg.InitSystem()
+
+ cache = apt_pkg.GetCache()
+
+ for pkg in sorted(cache.Packages, key=lambda pkg: pkg.Name):
+ # pkg is from a list of packages, sorted by name.
+ for version in pkg.VersionList:
+ # Check every version
+ for pfile, _ in version.FileList:
+ if (pfile.Origin == "Debian" and pfile.Component == "main" and
+ pfile.Archive == "unstable"):
+ # We only want packages from Debian unstable main.
+ check_version(version)
+ break
+
+if __name__ == "__main__":
+ main()