[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
New module posix-shell
From: |
Paul Eggert |
Subject: |
New module posix-shell |
Date: |
Thu, 15 Nov 2007 16:30:52 -0800 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
This is another module I'm finding useful when converting coreutils
"make check" to run on Solaris. The coreutils tests now assume
features of the POSIX shell but they use /bin/sh which (on Solaris) is
still missing important POSIX features like shell functions. Luckily,
Solaris has shipped with good-enough shells for quite some time
(/bin/bash is part of Solaris 8, for example) so this is not hard to
work around if the right info is available.
2007-11-15 Paul Eggert <address@hidden>
New module posix-shell, for determining a POSIX shell
or perhaps something that is close enough to a POSIX shell.
* m4/posix-shell.m4: New file.
* modules/posix-shell: New file.
* MODULES.html.sh: Mention new module.
diff --git a/MODULES.html.sh b/MODULES.html.sh
index 43f4395..e825ce3 100755
--- a/MODULES.html.sh
+++ b/MODULES.html.sh
@@ -2731,6 +2731,7 @@ func_all_modules ()
func_module gnu-make
func_module host-os
func_module perl
+ func_module posix-shell
func_module uptime
func_end_table
}
diff --git a/m4/posix-shell.m4 b/m4/posix-shell.m4
new file mode 100644
index 0000000..ac526d5
--- /dev/null
+++ b/m4/posix-shell.m4
@@ -0,0 +1,58 @@
+# Find a POSIX-conforming shell.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+# If a POSIX-conforming shell can be found, set POSIX_SHELL and
+# PREFERABLY_POSIX_SHELL to it. If not, set POSIX_SHELL to the
+# empty string and PREFERABLY_POSIX_SHELL to '/bin/sh'.
+
+AC_DEFUN([gl_POSIX_SHELL],
+[
+ AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell],
+ [gl_test_POSIX_SHELL='
+ func_return () {
+ (exit [$]1)
+ }
+ func_success () {
+ func_return 0
+ }
+ func_failure () {
+ func_return 1
+ }
+ func_ret_success () {
+ return 0
+ }
+ func_ret_failure () {
+ return 1
+ }
+ test "[$](echo foo)" = foo &&
+ func_success &&
+ ! func_failure &&
+ func_ret_success &&
+ ! func_ret_failure &&
+ (set x && func_ret_success y && test x = "[$]1")
+ '
+ for gl_cv_posix_shell in \
+ "$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do
+ case $gl_cv_posix_shell in
+ /*)
+ "$gl_cv_posix_shell" -c "$gl_test_POSIX_shell" 2>/dev/null && break;;
+ esac
+ done])
+
+ if test "$gl_cv_posix_shell" != no; then
+ POSIX_SHELL=$gl_cv_posix_shell
+ PREFERABLY_POSIX_SHELL=$POSIX_SHELL
+ else
+ POSIX_SHELL=
+ PREFERABLY_POSIX_SHELL=/bin/sh
+ fi
+ AC_SUBST([POSIX_SHELL])
+ AC_SUBST([PREFERABLY_POSIX_SHELL])
+])
diff --git a/modules/posix-shell b/modules/posix-shell
new file mode 100644
index 0000000..aafd5b7
--- /dev/null
+++ b/modules/posix-shell
@@ -0,0 +1,30 @@
+Description:
+Find a POSIX-conforming shell.
+
+Files:
+m4/posix-shell.m4
+
+Depends-on:
+
+configure.ac:
+gl_POSIX_SHELL
+
+Makefile.am:
+##Sample usage of posix-shell module:
+#script: script.in
+# rm -f address@hidden $@
+# sed -e 's#@''PREFERABLY_POSIX_SHELL''@#$(PREFERABLY_POSIX_SHELL)#g' \
+# -e 's#@''POSIX_SHELL''@#$(POSIX_SHELL)#g' \
+# -e $(srcdir)/address@hidden >address@hidden
+# chmod a+x address@hidden
+# mv address@hidden $@
+#EXTRA_DIST += script.in
+#MOSTLYCLEANFILES += script script-t
+
+Include:
+
+License:
+GPL
+
+Maintainer:
+Paul Eggert
- New module posix-shell,
Paul Eggert <=