[PATCH] Makefile: abort on shells that do not support ${parameter%word} expansion
- From
Brandon Casey <casey@nrlssc.navy.mil>
- Date
- Sep 6, 2011, 19:09 UTC
- Message-ID
- <rPnr5AVZRRnklxb_Yaj0gopXRTVCT-tq7iVG-1NoXjOrHWsyuLop-co4qtQjezJ98BaKc0R71r8fMcBOijq9oCOgfBF6ticVk17DwDQzV91bcC719fGSUPDsf40AuoRfgjURcxREkMk@cipher.nrlssc.navy.mil>
- In-Reply-To
- <7vbouzxy7g.fsf@alter.siamese.dyndns.org>
From: Brandon Casey <drafnel@gmail.com>
Add an entry to the please_set_SHELL_PATH_to_a_more_modern_shell target which tests whether the shell supports ${parameter%word} expansion. I assume this one test is enough to indicate whether the shell supports the entire family of prefix and suffix removal syntax:
${parameter%word}
${parameter%%word}
${parameter#word}
${parameter##word}FreeBSD, for one, has a /bin/sh that, apparently, supports $() notation but not the above prefix/suffix removal notation. ---
On 09/05/2011 02:09 AM, Junio C Hamano wrote:
Show 13 quoted lines
> Naohiro Aota <naota@elisp.net> writes:
>
>> Variable expansions like "${foo#bar}" or "${foo%bar}" doesn't work on
>> shells like FreeBSD sh and they made the test to fail.
>
> Sorry, I do appreciate the effort, but a patch like this takes us in the
> wrong direction.
>
> While we do not allow blatant bashisms like ${parameter:offset:length}
> (substring expansion), ${parameter/pattern/string} (pattern substitution),
> "local" variables, "function" noiseword, and shell arrays in our shell
> scripts, the two kinds of substitution you quoted above are purely POSIX,
> and our coding guideline does allow them to be used in the scripts.Perhaps we should add a test for this shell feature.
-Brandon
Makefile | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile index 8d6d451..46d9c5d 100644 --- a/Makefile +++ b/Makefile @@ -1738,6 +1738,7 @@ endif please_set_SHELL_PATH_to_a_more_modern_shell: @$$(:) + @foo=bar_suffix && test bar = "$${foo%_*}" shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell
-- 1.7.6.1