Re: [head tinderbox] failure on powerpc64/powerpc

From: Nathan Whitehorn <nwhitehorn_at_freebsd.org>
Date: Sun, 22 Aug 2010 12:36:20 -0500
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.
-Nathan
Received 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