Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 1998 10:12:01 -0700 (PDT)
From:      Bruce Evans <bde@FreeBSD.ORG>
To:        cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-user@FreeBSD.ORG
Subject:   cvs commit: src Makefile
Message-ID:  <199805151712.KAA11461@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
bde         1998/05/15 10:12:01 PDT

  Modified files:
    .                    Makefile 
  Log:
  Don't use `&&' in any shell commands here.  Using it to give conditional
  execution is usually unnecessary in BSD Makefiles because BSD make
  invokes shells with -e.  Using it to give conditional execution is
  often wrong in BSD makefiles because BSD make joins shell commands
  when invoked in certain ways (in particular, as `make -jN').  Example
  makefile:
  ---
  clean:
  	cd /
  	false && true
  	rm -rf *		# a dangerous command
  ---
  This should terminate after the `false && true' command fails, but
  it doesn't when the commands are joined (`false && true' is a non-
  simple command, so -e doesn't cause termination).  The b-maked version:
  ---
  clean:
  	cd /
  	false; true
  	rm -rf *		# a dangerous command
  ---
  terminates after the `false' command fails (`false' is a simple
  command, so -e causes termination).  However, for versions of
  make like gnu make that don't invoke shells with -e, this change
  completely breaks the makefile.
  
  This is one of the fixes for the bug suite that caused `make world'
  to sometimes put raw cpp output in .depend files.  Building of cc
  sometimes failed, but the failure did not terminate the build
  immediately, and various wrong versions of the cc components were
  used until one was wrong enough to cause a fatal error.
  
  Revision  Changes    Path
  1.177     +116 -116  src/Makefile



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805151712.KAA11461>