On 08/22/10 07:10, Dag-Erling Smørgrav wrote: > Nathan Whitehorn<nwhitehorn_at_freebsd.org> writes: > >> Dag-Erling Smørgrav<des_at_des.no> writes: >> >>> I'm not sure I understand what you mean (or rather, how it would >>> help the tinderbox). What *would* help would be an easy way to >>> determine, *before* trying to build it, whether a specific kernel >>> config is appropriate for a specific target. Can you think of an >>> easier way to do this than to scan the config for the "machine" >>> line? >>> >> That's exactly what I proposed. You use config, before trying the >> build, to look up the machine specification for the config file. I >> sent you a 5 line patch to tinderbox.pl that does this by private >> email. >> > Here's a solution that works regadless of config(8) version, though I'm > not sure it qualifies as either easy or clean: > > Index: tinderbox.pl > =================================================================== > RCS file: /home/projcvs/projects/tinderbox/tinderbox.pl,v > retrieving revision 1.68 > diff -u -r1.68 tinderbox.pl > --- tinderbox.pl 25 Aug 2009 17:28:14 -0000 1.68 > +++ tinderbox.pl 22 Aug 2010 12:08:46 -0000 > _at__at_ -722,10 +722,29 _at__at_ > } > > # Build additional kernels > + kernel: > foreach my $kernel (sort(keys(%kernels))) { > if (! -f "$srcdir/sys/$machine/conf/$kernel") { > warning("no kernel config for $kernel"); > - next; > + next kernel; > + } > + # Hack: check that the config is appropriate for this target. > + # If no "machine" declaration is present, assume that it is. > + local *KERNCONF; > + if (open(KERNCONF, "<", "$srcdir/sys/$machine/conf/$kernel")) { > + while (<KERNCONF>) { > + next unless m/^machine\s+(\w+(?:\s+\w+)?)\s*(?:\#.*)?$/; > + if ($1 !~ m/^\Q$machine\E(\s+\Q$arch\E)?$/) { > + warning("skipping $kernel"); > + close(KERNCONF); > + next kernel; > + } > + last; > + } > + close(KERNCONF); > + } else { > + warning("$kernel: $!"); > + next kernel; > } > logstage("building $kernel kernel"); > logenv(); > > It will break if the "machine" declaration ever moves into an included > file, since it does not follow include statements, but it will do for > now. > Thanks! I think we are pretty likely to stay in the situation where this hack works for the foreseeable future. -NathanReceived on Sun Aug 22 2010 - 15:36:24 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:06 UTC