>>>>> Paul D Smith writes:

 > I can't imagine what the problem might be... certainly bash works
 > fine for me with GNU make on Linux and Solaris...

Something really strange is happening. There seems to be some random
variation in the results. For this Makefile:

----------------------------------------------------------------------
FOO:=$(shell echo foo)
BAR:=$(shell ls Makefile)

all:
        @echo FOO = $(FOO)
        @echo BAR = $(BAR)
----------------------------------------------------------------------

version 3.79.1 always gives:

----------------------------------------------------------------------
FOO = foo
BAR = Makefile
----------------------------------------------------------------------

regardless of the shell. But for 3.80, I see behaviour like this:

----------------------------------------------------------------------
[matt@delta]date; for shell in bash ksh sh; do echo; echo /bin/$shell; make 
SHELL=/bin/$shell; done;
Thu Dec 19 16:19:27 GMT 2002

/bin/bash
FOO =
BAR =

/bin/ksh
FOO =
BAR =

/bin/sh
FOO = foo
BAR =
[matt@delta]date; for shell in bash ksh sh; do echo; echo /bin/$shell; make 
SHELL=/bin/$shell; done;
Thu Dec 19 16:19:29 GMT 2002

/bin/bash
FOO = foo
BAR = Makefile

/bin/ksh
FOO = foo
BAR =

/bin/sh
FOO =
BAR =
[matt@delta]date; for shell in bash ksh sh; do echo; echo /bin/$shell; make 
SHELL=/bin/$shell; done;
Thu Dec 19 16:19:30 GMT 2002

/bin/bash
FOO =
BAR = Makefile

/bin/ksh
FOO = foo
BAR =

/bin/sh
FOO = foo
BAR =
----------------------------------------------------------------------

I ran some tests with the -d flag, and here is a sample sdiff output
for one job with bash and one with ksh (with the PIDs factored out):

-------------------------------------------------------------------------------------------------------------------
Considering target file `all'.                                  Considering target 
file `all'.
 File `all' does not exist.                                      File `all' does not 
exist.
 Finished prerequisites of target file `all'.                    Finished 
prerequisites of target file `all'.
Must remake target `all'.                                       Must remake target 
`all'.
                                                              > FOO = foo
                                                              > Got a SIGCHLD; 1 
unreaped children.
Putting child 0x140019880 (all) PID xxxx on the chain.          Putting child 
0x140019880 (all) PID xxxx on the chain.
Live child 0x140019880 (all) PID xxxx                           Live child 0x140019880 
(all) PID xxxx 
FOO =                                                         <
Got a SIGCHLD; 1 unreaped children.                           <
Reaping winning child 0x140019880 PID xxxx                      Reaping winning child 
0x140019880 PID xxxx 
Live child 0x140019880 (all) PID xxxx                           Live child 0x140019880 
(all) PID xxxx 
BAR =                                                           BAR =
Got a SIGCHLD; 1 unreaped children.                             Got a SIGCHLD; 1 
unreaped children.
Reaping winning child 0x140019880 PID xxxx                      Reaping winning child 
0x140019880 PID xxxx 
Removing child 0x140019880 PID xxxx from chain.                 Removing child 
0x140019880 PID xxxx from chain.
Successfully remade target file `all'.                          Successfully remade 
target file `all'.
-------------------------------------------------------------------------------------------------------------------


_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make

Reply via email to