From owner-cvs-all Sat May 19 7:55: 3 2001 Delivered-To: cvs-all@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id 537DA37B422; Sat, 19 May 2001 07:54:54 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id AAA13420; Sun, 20 May 2001 00:54:42 +1000 Date: Sun, 20 May 2001 00:53:17 +1000 (EST) From: Bruce Evans X-Sender: bde@besplex.bde.org To: Akinori MUSHA Cc: Maxim Sobolev , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/usr.bin/make Makefile In-Reply-To: <86ofsqejx6.wl@archon.local.idaemons.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Sat, 19 May 2001, Akinori MUSHA wrote: > Speaking of speed increase, does anybody object against MFC'ing this? > This allows you to use /bin/ksh instead of the default of /bin/sh. Yes. The DEFSHELL stuff is wrong even in -current. It complicates fixing the documented and required ways for controlling the shell: Documented way: there is a shell variable named .SHELL, and ".SHELL: path=/somewhere/someshell" is documented to set the shell. See /usr/share/doc/psd/12.make/*. This seems to be broken. Required (POSIX spec) way: (an old draft of) POSIX.2 says: --- The SHELL macro shall be treated specially. It shall be provided by make and set to the pathname of the shell command language interpreter (see sh in 4.56). The SHELL environment variable shall not affect the value of the SHELL macro. If SHELL is defined in the makefile or is specified on the command line, it shall replace the original value of the SHELL macro, but shall not affect the SHELL environment variable. Other effects of defining SHELL in the makefile or on the command line are implementation defined. ... The historical MAKESHELL feature was omitted. In some implementations it is used to provide a way of letting a user override the shell to be used to run make commands. This was confusing; for a portable make, the shell should be chosen by the makefile writer or specified on the make command line and not by a user running make. --- This is certainly broken -- make(1) treats the SHELL macro non-specially. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message