Module Name: src Committed By: sjg Date: Thu Apr 8 17:41:29 UTC 2010
Modified Files: src/usr.bin/make: main.c parse.c src/usr.bin/make/unit-tests: Makefile test.exp Added Files: src/usr.bin/make/unit-tests: doterror error Log Message: Process .ERROR the same as .BEGIN, .END etc so that it cannot be the default target. Add unit-tests for .info - .error, and .ERROR. To generate a diff of this commit: cvs rdiff -u -r1.176 -r1.177 src/usr.bin/make/main.c cvs rdiff -u -r1.161 -r1.162 src/usr.bin/make/parse.c cvs rdiff -u -r1.25 -r1.26 src/usr.bin/make/unit-tests/Makefile cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/doterror \ src/usr.bin/make/unit-tests/error cvs rdiff -u -r1.30 -r1.31 src/usr.bin/make/unit-tests/test.exp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/main.c diff -u src/usr.bin/make/main.c:1.176 src/usr.bin/make/main.c:1.177 --- src/usr.bin/make/main.c:1.176 Wed Apr 7 00:11:27 2010 +++ src/usr.bin/make/main.c Thu Apr 8 17:41:29 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.176 2010/04/07 00:11:27 sjg Exp $ */ +/* $NetBSD: main.c,v 1.177 2010/04/08 17:41:29 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.176 2010/04/07 00:11:27 sjg Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.177 2010/04/08 17:41:29 sjg Exp $"; #else #include <sys/cdefs.h> #ifndef lint @@ -81,7 +81,7 @@ #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.176 2010/04/07 00:11:27 sjg Exp $"); +__RCSID("$NetBSD: main.c,v 1.177 2010/04/08 17:41:29 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -1876,7 +1876,7 @@ void PrintOnError(GNode *gn, const char *s) { - GNode *en; + static GNode *en = NULL; char tmp[64]; char *cp; @@ -1885,6 +1885,8 @@ printf("\n%s: stopped in %s\n", progname, curdir); + if (en) + return; /* we've been here! */ if (gn) { /* * We can print this even if there is no .ERROR target. Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.161 src/usr.bin/make/parse.c:1.162 --- src/usr.bin/make/parse.c:1.161 Wed Apr 7 00:11:27 2010 +++ src/usr.bin/make/parse.c Thu Apr 8 17:41:29 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.161 2010/04/07 00:11:27 sjg Exp $ */ +/* $NetBSD: parse.c,v 1.162 2010/04/08 17:41:29 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: parse.c,v 1.161 2010/04/07 00:11:27 sjg Exp $"; +static char rcsid[] = "$NetBSD: parse.c,v 1.162 2010/04/08 17:41:29 sjg Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: parse.c,v 1.161 2010/04/07 00:11:27 sjg Exp $"); +__RCSID("$NetBSD: parse.c,v 1.162 2010/04/08 17:41:29 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -191,6 +191,7 @@ Begin, /* .BEGIN */ Default, /* .DEFAULT */ End, /* .END */ + dotError, /* .ERROR */ Ignore, /* .IGNORE */ Includes, /* .INCLUDES */ Interrupt, /* .INTERRUPT */ @@ -245,6 +246,7 @@ { ".BEGIN", Begin, 0 }, { ".DEFAULT", Default, 0 }, { ".END", End, 0 }, +{ ".ERROR", dotError, 0 }, { ".EXEC", Attribute, OP_EXEC }, { ".IGNORE", Ignore, OP_IGNORE }, { ".INCLUDES", Includes, 0 }, @@ -1017,6 +1019,7 @@ * .NOPATH Don't search for file in the path * .BEGIN * .END + * .ERROR * .INTERRUPT Are not to be considered the * main target. * .NOTPARALLEL Make only one target at a time. @@ -1037,6 +1040,7 @@ break; case Begin: case End: + case dotError: case Interrupt: gn = Targ_FindNode(line, TARG_CREATE); gn->type |= OP_NOTMAIN|OP_SPECIAL; @@ -1166,6 +1170,7 @@ case Default: case Begin: case End: + case dotError: case Interrupt: /* * These four create nodes on which to hang commands, so Index: src/usr.bin/make/unit-tests/Makefile diff -u src/usr.bin/make/unit-tests/Makefile:1.25 src/usr.bin/make/unit-tests/Makefile:1.26 --- src/usr.bin/make/unit-tests/Makefile:1.25 Thu Nov 19 00:30:25 2009 +++ src/usr.bin/make/unit-tests/Makefile Thu Apr 8 17:41:29 2010 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.25 2009/11/19 00:30:25 sjg Exp $ +# $NetBSD: Makefile,v 1.26 2010/04/08 17:41:29 sjg Exp $ # # Unit tests for make(1) # The main targets are: @@ -21,8 +21,10 @@ SUBFILES= \ comment \ cond1 \ + error \ export \ export-all \ + doterror \ dotwait \ forsubst \ moderrs \ @@ -40,11 +42,13 @@ all: ${SUBFILES} +flags.doterror= + # the tests are actually done with sub-makes. .PHONY: ${SUBFILES} .PRECIOUS: ${SUBFILES} ${SUBFILES}: - -...@${.make} -k -f ${UNIT_TESTS}/$@ + -...@${.make} ${flags.$@:U-k} -f ${UNIT_TESTS}/$@ clean: rm -f *.out *.fail *.core Index: src/usr.bin/make/unit-tests/test.exp diff -u src/usr.bin/make/unit-tests/test.exp:1.30 src/usr.bin/make/unit-tests/test.exp:1.31 --- src/usr.bin/make/unit-tests/test.exp:1.30 Thu Nov 19 00:30:25 2009 +++ src/usr.bin/make/unit-tests/test.exp Thu Apr 8 17:41:29 2010 @@ -24,6 +24,9 @@ make: Bad conditional expression `"0" > 0' in "0" > 0?OK:No OK +make: "error" line 3: just FYI +make: "error" line 4: warning: this could be serious +make: "error" line 5: this is fatal UT_DOLLAR=This is $UT_FU UT_FOO=foobar is fubar UT_FU=fubar @@ -38,6 +41,14 @@ UT_OK=good UT_TEST=export-all UT_ZOO=hoopie +At first, I am +happy +and now: sad +.ERROR: Looks like 'sad' is upset. +*** Error code 1 + +Stop. +make: stopped in unit-tests simple.1 simple.1 simple.2 @@ -314,3 +325,5 @@ five v=is x k=is x six v=is y k=is y show-v v=override k=override +*** Error code 1 (ignored) +*** Error code 1 (ignored) Added files: Index: src/usr.bin/make/unit-tests/doterror diff -u /dev/null src/usr.bin/make/unit-tests/doterror:1.1 --- /dev/null Thu Apr 8 17:41:30 2010 +++ src/usr.bin/make/unit-tests/doterror Thu Apr 8 17:41:29 2010 @@ -0,0 +1,20 @@ +# $Id: doterror,v 1.1 2010/04/08 17:41:29 sjg Exp $ + + +.BEGIN: + @echo At first, I am + +.END: + @echo not reached + +.ERROR: + @echo "$@: Looks like '${.ERROR_TARGET}' is upset." + +all: happy sad + +happy: + @echo $@ + +sad: + @echo and now: $@; exit 1 + Index: src/usr.bin/make/unit-tests/error diff -u /dev/null src/usr.bin/make/unit-tests/error:1.1 --- /dev/null Thu Apr 8 17:41:30 2010 +++ src/usr.bin/make/unit-tests/error Thu Apr 8 17:41:29 2010 @@ -0,0 +1,6 @@ +# $Id: error,v 1.1 2010/04/08 17:41:29 sjg Exp $ + +.info just FYI +.warning this could be serious +.error this is fatal +