summaryrefslogtreecommitdiff
path: root/util/lint/lint-stable-002-build-dir-handling
diff options
context:
space:
mode:
authorPatrick Georgi <patrick@georgi-clan.de>2012-02-25 19:42:59 +0100
committerPatrick Georgi <patrick@georgi-clan.de>2012-03-01 00:04:21 +0100
commitcb02cb70d8f881f02cb41a4ba722c00c84c07bf6 (patch)
tree15f00478a3d64c5d5a562d9c54dcfcae0f725efa /util/lint/lint-stable-002-build-dir-handling
parent9c7467ea63cb73b08b96f2d1eaf2abf37a982842 (diff)
downloadcoreboot-cb02cb70d8f881f02cb41a4ba722c00c84c07bf6.tar.xz
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>
Diffstat (limited to 'util/lint/lint-stable-002-build-dir-handling')
-rwxr-xr-xutil/lint/lint-stable-002-build-dir-handling63
1 files changed, 63 insertions, 0 deletions
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 0000000000..c4f57d683a
--- /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 <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
+