Subject: bin/1734: New parallel make behaves incorrectly and non-intuitively.
To: None <gnats-bugs@gnats.netbsd.org>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: netbsd-bugs
Date: 11/06/1995 15:41:42
>Number:         1734
>Category:       bin
>Synopsis:       New parallel make behaves incorrectly and non-intuitively.
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bin-bug-people (Utility Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Nov  6 18:50:01 1995
>Last-Modified:
>Originator:     Jason Thorpe
>Organization:
Numerical Aerodynamic Simulation Project - NASA Ames
>Release:        NetBSD 1.0A, of Nov 5, 1995
>Environment:
	
System: NetBSD antie 1.0A NetBSD 1.0A (ANTIE) #377: Mon Nov 6 11:56:55 PST 1995 thorpej@antie:/work/netbsd/src/sys/arch/i386/compile/ANTIE i386


>Description:
	The new parallel make behaves in ways that are at best non-intuitive
	and at worst incorrect.

>How-To-Repeat:
	Go to the top of a NetBSD source tree, fresh, with no obj
	directories, depend files, or objects.  Type the following command:

	% make -j 4 obj depend all

	Watch as .depend files and objects are sometimes created before
	the obj directories and other such weirdness.

	Alternatively, go to your kernel build directory.  Type:

	% make clean depend all

	Watch as new objects begin to appear before the clean is finished.

>Fix:
	Make should process targets on the command line in order, regardless
	of whether or not it is operating in parallel mode.  Additionally,
	it is arguable that when the `-j N' option is not used, make should
	behave in it's traditional manner.  I.e., the following:

	foo: bar zap

	should be processed in that order _without_ requiring the additional
	dependency:

	zap: bar

	If nothing else, this provides a measure of sanity for those
	packages external to NetBSD which are not expecting this
	non-intuitive and incorrect behavior.
>Audit-Trail:
>Unformatted: