`util/lint/lint-stable-002-build-dir-handling` always overwrites your current `config.h` and `auto.conf` when the pre-commit hook is run. It can be very confusing when your configuration is suddenly broken. So fix it by not using the default build directory. Change-Id: If2bbc97ac2f12a8203a3769d813386a023f93dd6 Signed-off-by: Nico Huber <nico.huber@secunet.com> Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/3593 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# This file is part of the coreboot project.
 | 
						|
#
 | 
						|
# Copyright (C) 2011 Patrick Georgi <patrick@georgi-clan.de>
 | 
						|
#
 | 
						|
# This program is free software; you can redistribute it and/or modify
 | 
						|
# it under the terms of the GNU General Public License as published by
 | 
						|
# the Free Software Foundation; version 2 of the License.
 | 
						|
#
 | 
						|
# This program is distributed in the hope that it will be useful,
 | 
						|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
# GNU General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU General Public License
 | 
						|
# along with this program; if not, write to the Free Software
 | 
						|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 | 
						|
#
 | 
						|
# DESCR: Check that build directories can be chosen freely
 | 
						|
 | 
						|
# $1: command to test for GNU make
 | 
						|
search_make() {
 | 
						|
if [ -n "`$1 --version 2>&1 | grep GNU`" ]; then MAKE=$1; fi
 | 
						|
}
 | 
						|
 | 
						|
# if $1 and $2 differ, exit with failure
 | 
						|
compare_output() {
 | 
						|
if ! [ "$1" = "$2" ]; then
 | 
						|
	echo \'$1\' should be \'$2\'
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
}
 | 
						|
 | 
						|
# $1: object directory
 | 
						|
run_printall() {
 | 
						|
$MAKE CONFIG_USE_BLOBS=n CONFIG_CCACHE=n CONFIG_SCANBUILD_ENABLE=n NOMKDIR=1 \
 | 
						|
	DOTCONFIG=$TMPCONFIG obj=$1 printall |        \
 | 
						|
	sed -e "s,^ *,," -e "s,^r.mstage-objs:=,,"    \
 | 
						|
	    -e "s,mainboard/[^/]*/[^/]*/,.../,g" |    \
 | 
						|
	tr " " "\n" | GREP_OPTIONS= grep "/static.*\.[co]" | sort | \
 | 
						|
	tr '\012\015' '  ' | sed -e "s,  *, ,g" -e "s, *$,,"
 | 
						|
}
 | 
						|
 | 
						|
# find GNU make
 | 
						|
MAKE=
 | 
						|
search_make make
 | 
						|
[ -z $MAKE ] && search_make gmake
 | 
						|
[ -z $MAKE ] && search_make gnumake
 | 
						|
 | 
						|
if [ "$MAKE" = "" ]; then
 | 
						|
	echo Could not identify GNU make
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# prepare a config to use
 | 
						|
TMPOBJ=`mktemp .tmpobj.XXXXXX`
 | 
						|
rm $TMPOBJ
 | 
						|
mkdir -p ${TMPOBJ}
 | 
						|
TMPCONFIG=`mktemp .tmpconfig.XXXXXX`
 | 
						|
rm -f $TMPCONFIG
 | 
						|
$MAKE obj=$TMPOBJ DOTCONFIG=$TMPCONFIG allyesconfig >/dev/null
 | 
						|
 | 
						|
# look up parent directory
 | 
						|
CURRENTDIR=`pwd -P`
 | 
						|
PARENTDIR=`dirname $CURRENTDIR`
 | 
						|
 | 
						|
compare_output "`run_printall build`" "build/.../static.c build/.../static.c build/.../static.romstage.o"
 | 
						|
compare_output "`run_printall ../obj`" "$PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.romstage.o"
 | 
						|
compare_output "`run_printall /tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"
 | 
						|
compare_output "`run_printall /../tmp`" "/tmp/.../static.c /tmp/.../static.c /tmp/.../static.romstage.o"
 | 
						|
 | 
						|
rm -rf $TMPCONFIG $TMPOBJ
 | 
						|
 |