[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Portability problem
From: |
Bruno Haible |
Subject: |
Re: Portability problem |
Date: |
Wed, 26 Apr 2023 05:01:46 +0200 |
Hi Po Lu,
> Gnulib generates non-portable shell constructs, which interferes with
> configuring Emacs on Solaris 10 using /bin/sh.
>
> See
>
> https://lists.gnu.org/archive/html/bug-gnu-emacs/2023-04/msg01590.html
Indeed, the Autoconf manual
<https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Limitations-of-Builtins.html>
lists 'if ! command' as not working on Solaris 10.
> Would this be a sufficient solution? I've not had a chance to test it
> yet.
>
> 2023-04-26 Po Lu <luangruo@yahoo.com>
>
> * pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Avoid
> non-portable Bourne shell construct.
For the Python rewrite of gnulib-tool, that is exactly the right fix; thanks.
For the original gnulib-tool, which is the one still recommended for now, see
https://www.gnu.org/software/gnulib/manual/html_node/Invoking-gnulib_002dtool.html
,
we need the same change. I'm committing this:
2023-04-26 Po Lu <luangruo@yahoo.com> (tiny change)
Bruno Haible <bruno@clisp.org>
gnulib-tool: For conditional dependencies, generate portable sh code.
* gnulib-tool (func_emit_autoconf_snippets): Avoid sh syntax
'if ! variable', that does not work with Solaris /bin/sh.
* pygnulib/GLEmiter.py (GLEmiter.autoconfSnippets): Likewise.
diff --git a/gnulib-tool b/gnulib-tool
index 5373333f74..74c395d9a4 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -4731,7 +4731,7 @@ func_emit_autoconf_snippets ()
func_module_shellvar_name "$module"
echo " $shellfunc ()"
echo ' {'
- echo " if ! \$$shellvar; then"
+ echo " if \$$shellvar; then :; else"
func_emit_autoconf_snippet " "
echo " $shellvar=true"
deps=`func_get_dependencies $module | sed -e
"$sed_dependencies_without_conditions"`
diff --git a/pygnulib/GLEmiter.py b/pygnulib/GLEmiter.py
index 93f50b728c..dc46ba89e9 100644
--- a/pygnulib/GLEmiter.py
+++ b/pygnulib/GLEmiter.py
@@ -283,7 +283,7 @@ class GLEmiter(object):
shellvar = module.getShellVar()
emit += ' %s ()\n' % shellfunc
emit += ' {\n'
- emit += ' if ! $%s; then\n' % shellvar
+ emit += ' if $%s; then :; else\n' % shellvar
emit += self.autoconfSnippet(module, toplevel,
disable_libtool,
disable_gettext, replace_auxdir, ' ')
emit += ' %s=true\n' % shellvar