On Thu, Feb 06, 2014 at 07:44:11AM +0200, Eli Zaretskii wrote: > > Date: Thu, 6 Feb 2014 06:23:46 +0900 > > From: Mike Hommey <m...@glandium.org> > > Cc: psm...@gnu.org, bug-make@gnu.org, bo...@kolpackov.net > > > > On Wed, Feb 05, 2014 at 11:10:11PM +0200, Eli Zaretskii wrote: > > > > Date: Thu, 6 Feb 2014 05:58:08 +0900 > > > > From: Mike Hommey <m...@glandium.org> > > > > Cc: psm...@gnu.org, bug-make@gnu.org, bo...@kolpackov.net > > > > > > > > But the thing is there is still inconsistency in how things end up being > > > > invoked whether > > > > - make calls them directly > > > > - make uses sh -c > > > > - make uses sh script.sh > > > > > > When the shell is a Unixy one, only the first 2 methods are used, and > > > they are used exactly like on Posix platforms. > > > > Except when make is built with BATCH_MODE_SHELL_ONLY. > > Indeed, that's what that compile time option is for. But if that > option messes up Make (does it?), we probably should delete it. > > > Which is needed when sh -c fucks up with double quotes. > > I asked for test cases where this happens. Does this happen only when > backslashes are used in file names? If so, I don't think that > matters, since backslashes aren't supposed to be used in file names > when a Unixy shell is used.
I gave multiple examples already. It doesn't require backslashes to be a problem. Here's another one: $ cat <<EOF >foo.mk default: c:/path/to/python.exe -c 'import sys; sys.argv[1:]' "a" b c EOF $ make -f foo.mk c:/path/to/python.exe -c 'import sys; sys.argv[1:]' "a" b c ['a b', 'c'] And that (obviously) doesn't need make to fail: (in a cmd.exe shell): > c:/path/to/sh.exe -c "c:/path/to/python.exe -c 'import sys; sys.argv[1:]' > \"a\" b c" ['a b', 'c'] (yes, this is how make quotes it, and the quoting is correct) On Thu, Feb 06, 2014 at 07:45:53AM +0200, Eli Zaretskii wrote: > > Date: Thu, 6 Feb 2014 06:31:15 +0900 > > From: Mike Hommey <m...@glandium.org> > > Cc: psm...@gnu.org, bug-make@gnu.org, bo...@kolpackov.net > > > > > Except when make is built with BATCH_MODE_SHELL_ONLY. Which is needed > > > when sh -c fucks up with double quotes. > > > > And, more importantly, it's the first two that don't work the same way: > > > > $ mkdir foo > > $ echo foo > foo/bar > > $ cat <<EOF >foo.mk > > default: > > grep foo foo\\bar > > grep "foo" foo\\bar > > $ make -f foo.mk > > grep foo foo\\bar > > foo > > grep "foo" foo\\bar > > /usr/bin/sh: foobar: No such file or directory > > If you use forward slashes, do you see any problems in this case? Obviously, no. But again, this is not a path problem: $ cat <<EOF >foo.mk default: echo foo foo\\bar echo "foo" foo\\bar EOF $ make -f foo.mk echo foo foo\\bar foo foo\bar echo "foo" foo\\bar foo foobar $ msysmake -f foo.mk echo foo foo\\bar foo foo\bar echo "foo" foo\\bar foo foo\bar Mike _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make