[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: