Bug#321507: build-deps.py example doesn't work
On Sat, Aug 06, 2005 at 12:10:28AM +0100, Martin Michlmayr wrote:
> * Martin Michlmayr <tbm@cyrius.com> [2005-08-05 23:35]:
> > list since Debian's current Python default 2.3 doesn't know about
> > set().
>
> Right, but I thereby changed in the behaviour in a bad way.
Thanks for your bugreport and thanks for your patch. I commited a
slighly changed version to my baz archive
(michael.vogt@ubuntu.com--2005/python-apt--mvo--0). Attached is a
patch. It still uses a Set to avoid duplicating build depends but this
time using "import sets" (works on python2.3).
> BTW, I found one more problem. This happens when you use a package
> that exists in the archive but is not installed on your machine:
>
> 2494:tbm@deprecation: ~] ./build-deps.py dadadodo
[..]
> AttributeError: 'NoneType' object has no attribute 'DependsList'
> zsh: exit 1 ./build-deps.py dadadodo
This one is fixed now too. It uses the depcache.GetCandidateVer()
interface now.
Cheers,
Michael
--
Linux is not The Answer. Yes is the answer. Linux is The Question. - Neo
* looking for michael.vogt@ubuntu.com--2005/python-apt--mvo--0--patch-68 to compare with
* comparing to michael.vogt@ubuntu.com--2005/python-apt--mvo--0--patch-68: ... done.
* modified files
--- orig/debian/changelog
+++ mod/debian/changelog
@@ -1,3 +1,10 @@
+python-apt (0.6.14) unstable; urgency=low
+
+ * doc/examples/build-deps.py:
+ - fixed/improved (thanks to Martin Michlmayr, closes: #321507)
+
+ --
+
python-apt (0.6.13) unstable; urgency=low
* support for depcache added
--- orig/doc/examples/build-deps.py
+++ mod/doc/examples/build-deps.py
@@ -2,11 +2,12 @@
import apt_pkg
import sys
-
+import sets # only needed for python2.3, python2.4 supports this naively
def get_source_pkg(pkg, records, depcache):
- # FIXME: use candidate version here
version = depcache.GetCandidateVer(pkg)
+ if not version:
+ return None
file, index = version.FileList.pop(0)
records.Lookup((file, index))
if records.SourcePkg != "":
@@ -21,18 +22,26 @@
depcache = apt_pkg.GetDepCache(cache)
depcache.Init()
records = apt_pkg.GetPkgRecords(cache)
-srcrecords = apt_pkg.GetPkgSrcRecords()
+srcrecords = apt_pkg.GetPkgSrcRecords(cache)
# base package that we use for build-depends calculation
if len(sys.argv) < 2:
- print "need a pkgname as argument"
-base = cache[sys.argv[1]]
-all_build_depends = set()
+ print "need a package name as argument"
+ sys.exit(1)
+try:
+ base = cache[sys.argv[1]]
+except KeyError:
+ print "No package %s found" % sys.argv[1]
+ sys.exit(1)
+all_build_depends = sets.Set()
-depends = base.CurrentVer.DependsList
+depends = depcache.GetCandidateVer(base).DependsList
for dep in depends["Depends"]:
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
* added files
--- /dev/null
+++ mod/{arch}/python-apt/python-apt--mvo/python-apt--mvo--0/michael.vogt@ubuntu.com--2005/patch-log/patch-69
@@ -0,0 +1,12 @@
+Revision: python-apt--mvo--0--patch-69
+Archive: michael.vogt@ubuntu.com--2005
+Creator: Michael Vogt <michael.vogt@ubuntu.com>
+Date: Mon Aug 8 15:10:03 CEST 2005
+Standard-date: 2005-08-08 13:10:03 GMT
+Modified-files: debian/changelog doc/examples/build-deps.py
+New-patches: michael.vogt@ubuntu.com--2005/python-apt--mvo--0--patch-69
+Summary: * made the build-deps.py example usefull
+Keywords:
+
+
+
Reply to: