
Eric Blake wrote:
On 05/10/2010 02:36 PM, Jim Meyering wrote:
Eric Blake wrote:
On 05/07/2010 03:23 PM, Jim Meyering wrote:
+remote_protocol-structs: + $(AM_V_GEN)if pdwtags --help > /dev/null 2>&1; then \
Some shells (at least Solaris /bin/sh) are noisy in spite of the redirections, when a program doesn't exist. I'm proposing a followup patch to clean up this invocation to use a subshell, and also to fix the subshell for cppi in cfg.mk.
Or you could consider the noise a two-pronged feature:
That was semi-tongue-in-cheek.
- notify user that their $(SHELL) is inferior - more noise about lack of a useful developer tool (pdwtags or cppi)
In which case, your pdwtags usage is fine, and I should modify my patch to just drop the cppi subshell altogether?
"make syntax-check" (via maint.mk, cfg.mk etc) already relies on shell features not available in Solaris' /bin/sh (e.g., $(command)) so dropping the cppi subshell would be fine. It is important for readability (and my mental health ;-) to assume a good POSIX shell for those rules, and that is fine, since only "developers" run "make syntax-check", and we can require that they run "make" with SHELL=/usr/local/bin/bash in a pinch. pdwtags, however, is used as part of a rule run by "make check", which is nominally subject to a higher standard. I was going to say it *could* use a subshell, but then found that there are uses of $(command) in "regular" makefiles, too: $ git grep '\$\$(' cfg.mk: '\<$(func_re) *\([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \ ... cfg.mk: stamp="$$($(_submodule_hash) $(_curr_status) 2>/dev/null)"; \ docs/Makefile.am: rm $(DESTDIR)$(DEVHELP_DIR)/$$(basename $$f); \ src/Makefile.am: $$(echo '$(libvirt_la_LDFLAGS)' \ Those last two would provoke syntax errors when building with Solaris' /bin/sh, ... So perhaps we really can just forget about those draconian Solaris /bin/sh portability restrictions, at least here in libvirt.