coreboot-kgpe-d16/util/lint/lint-stable-002-build-dir-handling
Patrick Georgi cb02cb70d8 lint: create two classes of tests, stable and dev
We have tests that pass (and should be enforced soonish) and those
that don't pass yet (and thus shouldn't break the build).

The plan is simple: As soon as a test passes, it's marked stable so
things remain that way.

"make lint" runs all tests,
"make lint-stable" runs only those that shouldn't fail.

Change-Id: Iaa85d71141606d9756e29b37c7a34c2a15e573ac
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/681
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2012-03-01 00:04:21 +01:00

63 lines
2.1 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_CCACHE=n CONFIG_SCANBUILD_ENABLE=n NOMKDIR=1 DOTCONFIG=$TMPCONFIG obj=$1 printall |sed -e "s,^ *,," -e "s, ,\n,g" -e "s,^ramstage-objs:=,," -e "s,mainboard/[^/]*/[^/]*/,.../," |grep "/static.*\.[co]" |sort |tr '\012\015' ' ' |sed -e "s, *, ,g" -e "s, *$,,"
}
# find GNU make
search_make make
search_make gmake
search_make gnumake
if [ "$MAKE" = "" ]; then
echo Could not identify GNU make
exit 1
fi
# prepare a config to use
TMPCONFIG=`mktemp .tmpconfig.XXXXXX`
rm -f $TMPCONFIG
$MAKE NOMKDIR=1 DOTCONFIG=$TMPCONFIG allyesconfig >/dev/null
# look up parent directory
PARENTDIR=`dirname $PWD`
compare_output "`run_printall build`" "build/.../static.c build/.../static.ramstage.o"
compare_output "`run_printall ../obj`" "$PARENTDIR/obj/.../static.c $PARENTDIR/obj/.../static.ramstage.o"
compare_output "`run_printall /tmp`" "/tmp/.../static.c /tmp/.../static.ramstage.o"
compare_output "`run_printall /../tmp`" "/tmp/.../static.c /tmp/.../static.ramstage.o"
rm -f $TMPCONFIG