Subject: pkg/33238: lang/gcc34 doesn't build while $SHELL is non-bourne.
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <martijnb@atlas.ipv6.stack.nl>
List: pkgsrc-bugs
Date: 04/11/2006 12:00:00
>Number:         33238
>Category:       pkg
>Synopsis:       lang/gcc34 doesn't build while $SHELL is non-bourne.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Apr 11 12:00:00 +0000 2006
>Originator:     martijnb@atlas.ipv6.stack.nl
>Release:        NetBSD 3.99.17
>Organization:
	
>Environment:
	
	
System: NetBSD atlas.ipv6.stack.nl 3.99.17 NetBSD 3.99.17 (ATLAS) #2: Tue Mar 21 19:50:15 CET 2006 martijnb@atlas.ipv6.stack.nl:/usr/obj/sys/arch/amd64/compile/ATLAS amd64
Architecture: x86_64
Machine: amd64
>Description:
	lang/gcc34 doesn't build while $SHELL points to a non-bourne shell.

Observe:

Script started on Tue Apr 11 13:16:27 2006
atlas# echo $SHELL
/bin/csh
atlas# make
===> Checking for vulnerabilities in gcc34-3.4.6
=> Checksum SHA1 OK for gcc-3.4.6.tar.bz2.
=> Checksum RMD160 OK for gcc-3.4.6.tar.bz2.
===> Extracting for gcc34-3.4.6
[...]
/usr/pkg/bin/gmake TARGETS=oneprocess SHELL="/bin/csh" CC="cc" CFLAGS=" -g -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-error -DHAVE_CONFIG_H -DGENERATOR_FILE" LDFLAGS="" LIBERTY="/usr/export/pkgsrc/lang/gcc34/work/obj/gcc/../libiberty/libiberty.a" install-bin
gmake[3]: Entering directory `/usr/export/pkgsrc/lang/gcc34/work/obj/gcc/fixinc'
/bin/csh /usr/export/pkgsrc/lang/gcc34/work/gcc-3.4.6/gcc/fixinc/genfixes machname.h
SHELL=/bin/sh: Command not found.
export: Command not found.
Illegal variable name.
gmake[3]: *** [machname.h] Error 1
gmake[3]: Leaving directory `/usr/export/pkgsrc/lang/gcc34/work/obj/gcc/fixinc'

Note how SHELL points to /bin/csh in the gmake commandline.

Compare to :

Script started on Tue Apr 11 13:20:53 2006
atlas# echo $SHELL
/bin/csh
atlas# setenv SHELL /bin/sh
atlas# echo $SHELL
/bin/sh
atlas# make
===> Checking for vulnerabilities in gcc34-3.4.6
=> Checksum SHA1 OK for gcc-3.4.6.tar.bz2.
=> Checksum RMD160 OK for gcc-3.4.6.tar.bz2.
===> Extracting for gcc34-3.4.6
[...]
/usr/pkg/bin/gmake TARGETS=oneprocess SHELL="/bin/sh" CC="cc" CFLAGS=" -g -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Wno-error -DHAVE_CONFIG_H -DGENERATOR_FILE" LDFLAGS="" LIBERTY="/usr/export/pkgsrc/lang/gcc34/work/obj/gcc/../libiberty/libiberty.a" install-bin
gmake[3]: Entering directory `/usr/export/pkgsrc/lang/gcc34/work/obj/gcc/fixinc'
/bin/sh /usr/export/pkgsrc/lang/gcc34/work/gcc-3.4.6/gcc/fixinc/genfixes machname.h
No forbidden identifiers defined by this target
[...]
gmake[1]: Leaving directory `/usr/export/pkgsrc/lang/gcc34/work/obj'
=> Unwrapping files-to-be-installed.
atlas# 

Note how SHELL now points to /bin/sh (nonwithstanding that the interactive
shell is still /bin/csh), and the build finishes.

>How-To-Repeat:
    Try to build lang/gcc34 with $SHELL pointing to a non-bourne shell. Note
that merely invoking a different shell from the commmandline will leave $SHELL
unchanged.
>Fix:
    I'm not sure I'm cunning enough to provide a clean patch, but a workaround
would be changing SHELL to /bin/sh, regardless of the current interactive 
shell.

>Unformatted: