31 Jan 2008 00:18
Re: 'set -u' and $SHELL in makefiles [was: GNU M4]
Eric Blake <ebb9 <at> byu.net>
2008-01-30 23:18:07 GMT
2008-01-30 23:18:07 GMT
According to Chan, Lawson on 1/30/2008 3:26 PM: | Hi Eric, | | 1) actually, I use the following commands to start the execution. So I am in the bash shell. | Bash | ./configure | make | Even though I am in the bash shell, running the 'env | grep SHELL' gives SHELL=/usr/bin/ksh Makes sense - bash doesn't overwrite SHELL if it was already set when bash started. But there's no need to start bash before running ./configure; it should run just fine from ksh (or even the hideous Solaris 8 /bin/sh), since the first part of ./configure is all about discovering a decent shell if the current shell was not good enough. | 2) $echo $- returns bhimCBH | 3) I normally don't run set -u. I still don't know why it is set initially. It's not. Since $- doesn't contain u, 'set -u' is not active. | 4) I run ./configure in a fresh location and it behaves the same. | 5) The output of 'grep SHELL Makefile config.log' is attached in this email. And it shows merely "SHELL = /bin/bash". No hint of -u, but configure did decide that /bin/bash was a better choice than /bin/sh. | 6) I am using make 3.81. Obviously GNU make, and not Solaris' version. GNU make doesn't add -u, so I'm a bit stumped. | | What about in a temporary directory (and use TAB for indenting): | | $ cat <<\EOF > Makefile | all: | echo - $(SHELL) - $(MAKE) - $(MAKEFLAGS) - $$MAKEFLAGS - EOF $ make | | Then repeat, but with adding the same 'SHELL = ...' line at the beginning that was in m4/Makefile? You didn't run this test. Also, could there be some other environment variables interfering? At this point, the output of 'env' might prove helpful. Anyone else have ideas? -- Don't work too hard, make some time for fun as well! Eric Blake ebb9 <at> byu.net
RSS Feed