Mail Archives: cygwin/2001/06/26/15:53:52
Bernard,
God, am I out of it lately.
I never wrote a makefile with the action on the same line as the rule
target name and colon, even when there were no dependent targets. However,
the semicolon _is_ what the code in job.c is keying off of, correct?
The problem could be solved by breaking the line, omitting the semicolon
and thus fitting within make's criteria for a "simple" (directly
executable) action.
I hope I'm not still off base....
Randall Schulz
Mountain View, CA USA
At 11:28 2001-06-26, Bernard Dautrevaux wrote:
> > -----Original Message-----
> > From: Randall R Schulz [mailto:rrschulz AT cris DOT com]
> > Sent: Tuesday, June 26, 2001 4:26 PM
> > To: cygwin AT cygwin DOT com
> > Subject: Re: Shell avoidance in make-3.79.1-3 [Correction]
> >
> >
> > Earl,
> >
> > I'm guessing it's the semicolon. You found the code where the
> > decision is
> > made, what does it say?
> >
> > But... Following your lead, I looked at ps.c. What a mess.
> >
> > CORRECTION: ... I looked at >>> job.c <<<.
> >
> >
> > Look at line 2414. Search for "sh_chars_sh" which is used to inialize
> > "sh_chars" which is tested on line 2569.
> >
> > Why is the semicolon there in your makefile, anyway?
>
>The semicolon is needed to *introduce* the commands of the rule, otherwise
>ps would be a dependency. The other way to do is replace the semicolon by
>NL/TAB, but I use semicolon myself quite often when the rule is so simple.
>
>Just a thought (I don't have make source available right on): is it possible
>make keeps the semicolon in the rule command?
>
>... searching ... found make-3.79.1 ...
>
>looking at read.c, in read_makefile the semicolon seems to be stripped from
>the command, so that should be OK; there just some bizarre twiddling with
>variable_expands somewhere the first time one set cmdleft, but I take for
>granted it works at least a bit, and as it overwrites the semicolon by a
>NUL,...
>
>To understand more you should try to debug make. Just trying...
>
>$ configure
> ...
>$ make
> ...
>$ mkdir TEST
>$ cd TEST
>$ echo "all: ; ps" > Makefile
>$ ../make
>ps
> PID TTY TIME CMD
>18681 ttya0 00:00:00 csh
>20969 ttya0 00:00:00 make
>20970 ttya0 00:00:00 ps
>
>Hey!... What's the problem? it works!... Oh wait, I'm working on a Linux box
>here :-) is there a difference under cygwin?
>
>bash-2.05$ mkdir TEST
>bash-2.05$ echo "all: ; ps"
>all: ; ps
>bash-2.05$ echo "all: ; ps" > Makefile
>bash-2.05$ make
>ps
> PID PPID PGID WINPID TTY UID STIME COMMAND
> 159 1 159 159 -1 500 17:37:55 /usr/bin/sh
> 467 159 467 487 -1 500 17:37:58 /usr/bin/bash
> 95 467 95 499 -1 500 17:38:27 /usr/bin/make
> 310 95 95 232 -1 500 17:38:27 /usr/bin/sh
> 562 310 95 358 -1 500 17:38:27 /usr/bin/ps
>
>Hey, don't work... So the problem is in some WIN32/Cygwin specific code...
>but I'm not able to check now; you should try to do it yourself, compiling
>make for debug, then trying to debug it with gdb.
>
>Wait, I can try this; it's a little bit longer on cygwin than on Linux
>(especially as I had to "unload" my PC for cygwin to be able to configure),
>but its running smoothly and, BADANG:
>
>$ cd TEST
>$ ../make
>ps
> PID PPID PGID WINPID TTY UID STIME COMMAND
> 302 1 302 302 -1 500 17:46:53 /usr/bin/bash
> 500 302 500 73 -1 500 18:30:48
>/cygdrive/y/WORK/V3/i486-unknown-linux/Import
>ed/cygnus/make/make
> 453 500 500 331 -1 500 18:30:48 /usr/bin/ps
>
>IT WORKS!...
>
>So what version am I using?
>$ ../make --version
>GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
>Built for i686-pc-cygwin
>Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
> Free Software Foundation, Inc.
>This is free software; see the source for copying conditions.
>There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
>PARTICULAR PURPOSE.
>
>Report bugs to <bug-make AT gnu DOT org>.
>
>$ type make
>make is hashed (/usr/bin/make)
>
>$ make --version
>GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
>Built for i686-pc-cygwin
>Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
> Free Software Foundation, Inc.
>This is free software; see the source for copying conditions.
>There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
>PARTICULAR PURPOSE.
>
>Report bugs to <bug-make AT gnu DOT org>.
>
>It seems to be the same MAKE version, except that I just rebuild it, OOTB
>:-), from the sources I downloaded from a cygwin mirror... (my installed.db
>says the installed make is 3.79.1-3 and I'm quite sure the sources were got
>at the same time).
>
>So probably there's something in the environment of the cygwin make
>maintainer ?-0 I can't say more, regretfully, but I hope this will allow to
>understand what's happenning.
>
>HTH,
>
> Bernard
>
>PS: To whom it can help, putting the ps on a separate line with th
>efollowing Makefile:
>
>all:
> ps
>
>does not change anything: my recompiled make works OK, the standard one sill
>fork a shell to execute ps...
>
> >
> > Randy
> >
> >
> > At 17:10 2001-06-25, you wrote:
> > >Randall R Schulz wrote:
> > > > That leaves only the question: Why are you asking when you know
> > > > already?
> > >
> > >The makefile:
> > >
> > > all: ; ps
> > >
> > >tells me:
> > >
> > >bash-2.05$ make -f ../foo.mk
> > >ps
> > > PID PPID PGID WINPID TTY UID STIME COMMAND
> > > 317 1 317 317 -1 500 14:59:36 /bin/bash
> > > 461 317 461 549 -1 500 14:59:41 /usr/bin/make
> > > 591 461 461 224 -1 500 14:59:41 /bin/sh
> > > 662 591 461 585 -1 500 14:59:41 /usr/bin/ps
> > >
> > >that make is invoking /bin/sh in order to invoke /usr/bin/ps.
> > >
> > >Why isn't make invoking /usr/bin/ps directly?
> > >
> > >Earl
> >
> >
> > --
> > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> > Bug reporting: http://cygwin.com/bugs.html
> > Documentation: http://cygwin.com/docs.html
> > FAQ: http://cygwin.com/faq/
> >
>
>--------------------------------------------
>Bernard Dautrevaux
>Microprocess Ingenierie
>97 bis, rue de Colombes
>92400 COURBEVOIE
>FRANCE
>Tel: +33 (0) 1 47 68 80 80
>Fax: +33 (0) 1 47 88 97 85
>e-mail: dautrevaux AT microprocess DOT com
> b DOT dautrevaux AT usa DOT net
>--------------------------------------------
>
>--
>Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
>Bug reporting: http://cygwin.com/bugs.html
>Documentation: http://cygwin.com/docs.html
>FAQ: http://cygwin.com/faq/
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -