Running catalyst with a tinderbox target with 2 pkgcache_path entries in the
spec file will make it's python code fail.
The tinderbox spec file from the examples have 2 pkgcache_path lines.
Reproducible: Always
Steps to Reproduce:
1. Get a tinderbox.spec from
/usr/share/doc/catalyst-2.0.4/examples/tinderbox_template.spec and configure it
to compile a package against a ready and tested stage4 target.
2. run catalyst -f tinderbox_template.spec
Actual Results:
The last lines of the error traceback are:
Caching snapshot to /var/tmp/catalyst/snapshot_cache/20070729/
The autoresume path is
/var/tmp/catalyst/tmp/supra-2007.00/.autoresume-tinderbox-pentium4-2007.00/
portage_overlay directories are set to: "/home/catalyst/projeto-supra/portage"
Catalyst aborting....
Traceback (most recent call last):
File "/usr/bin/catalyst", line 384, in ?
build_target(addlargs, targetmap)
File "/usr/bin/catalyst", line 200, in build_target
mytarget=targetmap[addlargs["target"]](conf_values, addlargs)
File "/usr/lib/catalyst/modules/tinderbox_target.py", line 14, in __init__
generic_stage_target.__init__(self,spec,addlargs)
File "/usr/lib/catalyst/modules/generic_stage_target.py", line 181, in
__init__
print "Location of the package cache is " + self.settings["pkgcache_path"]
KeyError: 'pkgcache_path'
Expected Results:
It should have started uncompressing the stage4 into the work dir.
A complete spec file to reproduce it:
subarch: pentium4
version_stamp: 2007.00
target: tinderbox
rel_type: supra-2007.00
profile: default-linux/x86/2007.0
snapshot: 20070729
source_subpath: supra-2007.00/stage4-pentium4-2007.00
distcc_hosts:
portage_confdir: /home/catalyst/projeto-supra/portage
portage_overlay: /home/catalyst/projeto-supra/portage
pkgcache_path: /tmp/packages
tinderbox/use: -ipv6 -X -kde -qt -qt3 -qt4 -gtk -gnome mysql sasl apache2 bzip2
gd-external gmp imap pdo-external sqlite3 sqlite jpeg png truetype xml pgsql
mysqli
tinderbox/packages: dev-perl/SOAP-Lite
pkgcache_path:
kerncache_path:
Correction: after doing a few more tests I have a more precise diagnostic. The
problem was that my second pkgcache_path parameter was clean. You can have as
many pkgcache_path lines as you want, as long as the last one have some dir on
it.
In order to prevent this kind of problem, catalyst will now die when parsing
the spec if you have duplicate keys in the spec file. I've also removed the
duplicate pkgcache_path and kerncache_path entries from a few of the example
specs.