[head tinderbox] failure on powerpc64/powerpc
Nathan Whitehorn
nwhitehorn at freebsd.org
Sun Aug 22 17:36:24 UTC 2010
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
> @@ -722,10 +722,29 @@
> }
>
> # 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.
-Nathan
More information about the freebsd-current
mailing list