From owner-freebsd-hackers Wed May 15 12:02:44 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id MAA13949 for hackers-outgoing; Wed, 15 May 1996 12:02:44 -0700 (PDT) Received: from whistle.com ([207.76.205.131]) by freefall.freebsd.org (8.7.3/8.7.3) with ESMTP id MAA13944 for ; Wed, 15 May 1996 12:02:42 -0700 (PDT) Received: (from smap@localhost) by whistle.com (8.7.5/8.6.12) id MAA06932; Wed, 15 May 1996 12:02:10 -0700 (PDT) X-Authentication-Warning: whistle.com: smap set sender to using -f Received: from bubba.whistle.com(207.76.205.7) by whistle.com via smap (V1.3) id sma006930; Wed May 15 12:02:00 1996 Received: (from archie@localhost) by bubba.whistle.com (8.6.12/8.6.12) id MAA07498; Wed, 15 May 1996 12:02:00 -0700 From: Archie Cobbs Message-Id: <199605151902.MAA07498@bubba.whistle.com> Subject: make bug To: freebsd-hackers@freebsd.org Date: Wed, 15 May 1996 12:01:59 -0700 (PDT) X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Consider the following makefile: .BEGIN: @echo aborting initialization /usr/bin/false default: @echo this should not get executed The '.BEGIN' tag just causes whatever commands listed to get executed before any other stuff happens. You would think that the execution of /usr/bin/false causes the make to fail, but instead it keeps on going: $ make aborting initialization /usr/bin/false this should not get executed *** Error code 1$ Also, there's that missing carriage-return at the end. Personally, I would call this a bug. However, some might argue that the '.BEGIN' tag is somehow special and should be immune to errors. I don't know why they would argue this, however. May I suggest a patch? This seems to fix it, at least for the above example. *** 1.3 1995/05/30 06:31:49 --- compat.c 1996/05/15 18:53:43 *************** *** 615,620 **** --- 615,624 ---- gn = Targ_FindNode(".BEGIN", TARG_NOCREATE); if (gn != NILGNODE) { Lst_ForEach(gn->commands, CompatRunCommand, (ClientData)gn); + if (gn->made == ERROR) { + printf ("\n\nStop.\n"); + exit (1); + } } } Thanks, -Archie ___________________________________________________________________________ Archie L. Cobbs, archie@whistle.com * Whistle Communications Corporation