[PATCH 0/2] Make run-command.c honour SHELL_PATH
- From
Ben Walton <bwalton@artsci.utoronto.ca>
- Date
- Mar 25, 2012, 12:31 UTC
- Message-ID
- <1332678696-4001-1-git-send-email-bwalton@artsci.utoronto.ca>
Hi Jeff and Junio,
[Others touched this file too, but it appears Jeff wrote the affected functionality.]
I hit a glitch with t7006-pager while testing the 1.7.10 rc1/rc2 builds for OpenCSW/Solaris that turned out to be a problem with the way run-command.c:prepare_shell_cmd was setting up external utilities. It was hard coded to fork 'sh -c' instead of honouring the SHELL_PATH as set at build time.
In this case, the failing test was t7006-pager:command-specific pager. That test (and some subsequent ones) were setting the pager command used by git log to "sed s/^/foo:/ >actual" which is fine in a POSIX-compliant sh, but not in Solaris' sh. If the user PATH at runtime happened to allow the broken system sh used instead of a sane sh, the ^ is interpreted the same as[1] | and this caused sed to fail with incomplete s/ command and a "command not found: /foo:" from the other forked process.
To mitigate this, the following patches introduce the macro SHELL_PATH for use in run-command.c, defaulting to "sh" to preserve the current behaviour and then cause the build system to provide the SHELL_PATH as set by the builder. This means that all processed forked by run-command will use the same interpreter as the shell scripts in the git suite.
I considered implementing a dynamically generated .h file for this, similar to common-cmds.h, but thought that was overkill at the current time. If you think that (or something else) is a better fit for the change, let me know and I'll make the required adjustments.
Thanks -Ben
[1] http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/cmd.c#184
Ben Walton (2): run-command.c: Define SHELL_PATH macro for use in prepare_shell_cmd Makefile: Set EXTRA_CPPFLAGS during the compilation of run-command
Makefile | 2 ++ run-command.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletions(-)
-- 1.7.5.4