From: Patrick Georgi Date: Sat, 25 Feb 2012 18:42:59 +0000 (+0100) Subject: lint: create two classes of tests, stable and dev X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=coreboot.git;a=commitdiff_plain;h=cb02cb70d8f881f02cb41a4ba722c00c84c07bf6 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 Reviewed-on: http://review.coreboot.org/681 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- diff --git a/Makefile.inc b/Makefile.inc index e12cc9239..0f040e91b 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -34,7 +34,7 @@ coreboot: $(obj)/coreboot.rom ####################################################################### # our phony targets -PHONY+= clean-abuild coreboot +PHONY+= clean-abuild coreboot lint lint-stable ####################################################################### # root source directories of coreboot @@ -218,9 +218,9 @@ printcrt0s: update: dongle.py -c /dev/term/1 $(obj)/coreboot.rom EOF -lint: +lint lint-stable: FAILED=0; LINTLOG=`mktemp`; \ - for script in util/lint/lint-*; do \ + for script in util/lint/$@-*; do \ echo; echo `basename $$script`; \ grep "^# DESCR:" $$script | sed "s,.*DESCR: *,," ; \ echo ========; \ diff --git a/util/lint/lint-002-build-dir-handling b/util/lint/lint-002-build-dir-handling deleted file mode 100755 index c4f57d683..000000000 --- a/util/lint/lint-002-build-dir-handling +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh -# This file is part of the coreboot project. -# -# Copyright (C) 2011 Patrick Georgi -# -# 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 - diff --git a/util/lint/lint-003-whitespace b/util/lint/lint-003-whitespace deleted file mode 100755 index fe305bf40..000000000 --- a/util/lint/lint-003-whitespace +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# This file is part of the coreboot project. -# -# Copyright (C) 2011 Patrick Georgi -# -# 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 for superfluous whitespace in the tree - -LC_ALL=C export LC_ALL -find src util -name .svn -type d -prune -o \ - -name .git -type d -prune -o \ - -name README -prune -o \ - -name LICENSE -prune -o \ - -name TODO -prune -o \ - -name COPYING -prune -o \ - -name \*.txt -prune -o \ - -name microcode-\*.h -prune -o \ - -name \*.?_shipped -prune -o \ - -name \*.[18] -prune -o \ - -name kconfig -type d -prune -o \ - -name romcc -type d -prune -o \ - -name crossgcc -type d -prune -o \ - -name vendorcode -type d -prune -o \ - -type f -exec \ - grep -l "[[:space:]][[:space:]]*$" {} + | \ - sed -e "s,^.*$,File & has lines ending with whitespace.," - diff --git a/util/lint/lint-stable-002-build-dir-handling b/util/lint/lint-stable-002-build-dir-handling new file mode 100755 index 000000000..c4f57d683 --- /dev/null +++ b/util/lint/lint-stable-002-build-dir-handling @@ -0,0 +1,63 @@ +#!/bin/sh +# This file is part of the coreboot project. +# +# Copyright (C) 2011 Patrick Georgi +# +# 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 + diff --git a/util/lint/lint-stable-003-whitespace b/util/lint/lint-stable-003-whitespace new file mode 100755 index 000000000..fe305bf40 --- /dev/null +++ b/util/lint/lint-stable-003-whitespace @@ -0,0 +1,39 @@ +#!/bin/sh +# This file is part of the coreboot project. +# +# Copyright (C) 2011 Patrick Georgi +# +# 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 for superfluous whitespace in the tree + +LC_ALL=C export LC_ALL +find src util -name .svn -type d -prune -o \ + -name .git -type d -prune -o \ + -name README -prune -o \ + -name LICENSE -prune -o \ + -name TODO -prune -o \ + -name COPYING -prune -o \ + -name \*.txt -prune -o \ + -name microcode-\*.h -prune -o \ + -name \*.?_shipped -prune -o \ + -name \*.[18] -prune -o \ + -name kconfig -type d -prune -o \ + -name romcc -type d -prune -o \ + -name crossgcc -type d -prune -o \ + -name vendorcode -type d -prune -o \ + -type f -exec \ + grep -l "[[:space:]][[:space:]]*$" {} + | \ + sed -e "s,^.*$,File & has lines ending with whitespace.," +