mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
build system: modernise shell compatibility checks
All changed files: - Put the shell in POSIX mode if it has an '-o posix' option. - Remove nonsense disabling 'set -x' on bash. It's not broken. bin/package, src/cmd/INIT/package.sh: - Add check blocking native zsh mode (e.g., "$path" conflicts). Using a 'sh -> zsh' symlink works, so recommend that. - Remove old ksh93 version check for a supposed conflict with libcmd. It was broken; it would revert to /bin/sh, but on illumos distributions, /bin/sh is a ksh93 of a version that is supposedly affected. It builds fine anyway. - Rewrite checksh() to incorporate the shell compatibility checks that were previously in two different places in 'package'. bin/ignore, src/cmd/INIT/ignore.sh, bin/silent, src/cmd/INIT/silent.sh: - Change bad check for a full POSIX 'export' command (no, $RANDOM has nothing to do with that) with a proper feature test.
This commit is contained in:
parent
42d1651108
commit
9b45f2ccbe
20 changed files with 113 additions and 128 deletions
11
bin/ignore
11
bin/ignore
|
@ -20,18 +20,17 @@
|
|||
# non-ksh script for the nmake ignore prefix
|
||||
# @(#)ignore (AT&T Research) 1992-08-11
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
modern_export=`v=; export v=ok 2>/dev/null; echo "$v"`
|
||||
|
||||
while :
|
||||
do case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
case $1 in
|
||||
*=*) case $RANDOM in
|
||||
$RANDOM)`echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
*) export "$1" ;;
|
||||
*=*) case $modern_export in
|
||||
ok) export "$1" ;;
|
||||
*) `echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
|
|
|
@ -21,9 +21,7 @@
|
|||
# mamprobe - generate MAM cc probe info
|
||||
# Glenn Fowler <gsf@research.att.com>
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=mamprobe
|
||||
|
||||
|
|
69
bin/package
69
bin/package
|
@ -24,38 +24,34 @@ USAGE_LICENSE="[-author?Glenn Fowler <gsf@research.att.com>][-copyright?Copyrigh
|
|||
|
||||
command=package
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
path=Bad
|
||||
case $PATH in
|
||||
Bad*) echo "Cannot be run by zsh in native mode; use a sh symlink to zsh" >&2
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
# ksh checks -- ksh between 2007-11-05 and 2011-11-11 conflict with new -lcmd -- wea culpa
|
||||
# shell checks
|
||||
checksh()
|
||||
{
|
||||
egrep 'Version.*(88|1993)' $1 >/dev/null 2>&1 ||
|
||||
PATH=/dev/null $1 -c '(( 2 + 2 ))' >/dev/null 2>&1 &&
|
||||
$1 -c '(( .sh.version >= 20111111 ))' >/dev/null 2>&1
|
||||
"$1" -ec '
|
||||
# reject csh
|
||||
case 1 in
|
||||
1) ;;
|
||||
esac
|
||||
# reject special use of $path (to use zsh, use a "sh -> zsh" symlink, which disables this)
|
||||
path=Bad
|
||||
case $PATH in
|
||||
Bad*) exit 1 ;;
|
||||
esac
|
||||
# catch (our own) pipe/socket configuration mismatches
|
||||
date | "$1" -c "read x" || exit 1
|
||||
# check Bourne/POSIX compatible trap exit status (should exit with status 0)
|
||||
trap "exit 0" 0
|
||||
exit 1
|
||||
' x "$1" 2>/dev/null || return 1
|
||||
}
|
||||
|
||||
case $_AST_BIN_PACKAGE_:$SHELL:$0 in
|
||||
1:*:*|*:/bin/sh:*)
|
||||
;;
|
||||
*:*/*:*/*)
|
||||
_AST_BIN_PACKAGE_=1 # prevent non-interactive sh .rc referencing bin/package recursion #
|
||||
export _AST_BIN_PACKAGE_
|
||||
if checksh $SHELL
|
||||
then : no -lcmd conflict :
|
||||
else case " $* " in
|
||||
*" debug "*|*" DEBUG "*|*" show "*)
|
||||
echo $command: $SHELL: warning: possible -lcmd conflict -- falling back to /bin/sh >&2
|
||||
;;
|
||||
esac
|
||||
SHELL=/bin/sh
|
||||
export SHELL
|
||||
exec $SHELL "$0" "$@"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
|
@ -3103,26 +3099,7 @@ cat $INITROOT/$i.sh
|
|||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
# $SHELL must be /bin/sh compatible
|
||||
|
||||
case $SHELL in
|
||||
/bin/sh);;
|
||||
'') SHELL=/bin/sh
|
||||
;;
|
||||
*) $SHELL -c 'trap "exit 0" 0; exit 1' 2>/dev/null
|
||||
case $? in
|
||||
1) SHELL=/bin/sh
|
||||
;;
|
||||
*) # catch (our own) pipe/socket configuration mismatches
|
||||
$SHELL -c "date | $SHELL -c 'read x'"
|
||||
case $? in
|
||||
0) ;;
|
||||
*) SHELL=/bin/sh ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
*) checksh $SHELL || SHELL=/bin/sh
|
||||
;;
|
||||
esac
|
||||
export SHELL
|
||||
|
|
11
bin/silent
11
bin/silent
|
@ -20,18 +20,17 @@
|
|||
# non-ksh stub for the nmake silent prefix
|
||||
# @(#)silent (AT&T Research) 1992-08-11
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[01234567899]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
modern_export=`v=; export v=ok 2>/dev/null; echo "$v"`
|
||||
|
||||
while :
|
||||
do case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
case $1 in
|
||||
*=*) case $RANDOM in
|
||||
$RANDOM)`echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
*) export "$1" ;;
|
||||
*=*) case $modern_export in
|
||||
ok) export "$1" ;;
|
||||
*) `echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
########################################################################
|
||||
: cross compiler a.out execution
|
||||
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=crossexec
|
||||
|
||||
tmp=/tmp/cross$$
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
########################################################################
|
||||
: wrapper for .exe challenged win32 systems/commands
|
||||
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=execrate
|
||||
|
||||
bins=`
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
########################################################################
|
||||
: convert command that operates on file args to pipeline filter
|
||||
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=filter
|
||||
|
||||
TMPDIR=${TMPDIR:-/tmp}
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
########################################################################
|
||||
: copy http url data
|
||||
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=hurl
|
||||
agent="$command/2009-01-20 (AT&T Research)"
|
||||
authorize=
|
||||
|
|
|
@ -25,9 +25,7 @@
|
|||
#
|
||||
# NOTE: .exe a.out suffix and [\\/] in path patterns for dos/nt
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=iffe
|
||||
version=2012-07-17 # update in USAGE too #
|
||||
|
|
|
@ -20,18 +20,17 @@
|
|||
# non-ksh script for the nmake ignore prefix
|
||||
# @(#)ignore (AT&T Research) 1992-08-11
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
modern_export=`v=; export v=ok 2>/dev/null; echo "$v"`
|
||||
|
||||
while :
|
||||
do case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
case $1 in
|
||||
*=*) case $RANDOM in
|
||||
$RANDOM)`echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
*) export "$1" ;;
|
||||
*=*) case $modern_export in
|
||||
ok) export "$1" ;;
|
||||
*) `echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
|
|
|
@ -21,9 +21,7 @@
|
|||
# mamprobe - generate MAM cc probe info
|
||||
# Glenn Fowler <gsf@research.att.com>
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
command=mamprobe
|
||||
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
# #
|
||||
########################################################################
|
||||
: mkdir for systems that do not support -p : 2002-09-01 :
|
||||
MKDIR=/bin/mkdir
|
||||
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
|
||||
MKDIR=mkdir
|
||||
CHMOD=chmod
|
||||
mode=
|
||||
parents=
|
||||
|
|
|
@ -23,38 +23,34 @@
|
|||
|
||||
command=package
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
path=Bad
|
||||
case $PATH in
|
||||
Bad*) echo "Cannot be run by zsh in native mode; use a sh symlink to zsh" >&2
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
# ksh checks -- ksh between 2007-11-05 and 2011-11-11 conflict with new -lcmd -- wea culpa
|
||||
# shell checks
|
||||
checksh()
|
||||
{
|
||||
egrep 'Version.*(88|1993)' $1 >/dev/null 2>&1 ||
|
||||
PATH=/dev/null $1 -c '(( 2 + 2 ))' >/dev/null 2>&1 &&
|
||||
$1 -c '(( .sh.version >= 20111111 ))' >/dev/null 2>&1
|
||||
"$1" -ec '
|
||||
# reject csh
|
||||
case 1 in
|
||||
1) ;;
|
||||
esac
|
||||
# reject special use of $path (to use zsh, use a "sh -> zsh" symlink, which disables this)
|
||||
path=Bad
|
||||
case $PATH in
|
||||
Bad*) exit 1 ;;
|
||||
esac
|
||||
# catch (our own) pipe/socket configuration mismatches
|
||||
date | "$1" -c "read x" || exit 1
|
||||
# check Bourne/POSIX compatible trap exit status (should exit with status 0)
|
||||
trap "exit 0" 0
|
||||
exit 1
|
||||
' x "$1" 2>/dev/null || return 1
|
||||
}
|
||||
|
||||
case $_AST_BIN_PACKAGE_:$SHELL:$0 in
|
||||
1:*:*|*:/bin/sh:*)
|
||||
;;
|
||||
*:*/*:*/*)
|
||||
_AST_BIN_PACKAGE_=1 # prevent non-interactive sh .rc referencing bin/package recursion #
|
||||
export _AST_BIN_PACKAGE_
|
||||
if checksh $SHELL
|
||||
then : no -lcmd conflict :
|
||||
else case " $* " in
|
||||
*" debug "*|*" DEBUG "*|*" show "*)
|
||||
echo $command: $SHELL: warning: possible -lcmd conflict -- falling back to /bin/sh >&2
|
||||
;;
|
||||
esac
|
||||
SHELL=/bin/sh
|
||||
export SHELL
|
||||
exec $SHELL "$0" "$@"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
|
@ -3102,26 +3098,7 @@ cat $INITROOT/$i.sh
|
|||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
# $SHELL must be /bin/sh compatible
|
||||
|
||||
case $SHELL in
|
||||
/bin/sh);;
|
||||
'') SHELL=/bin/sh
|
||||
;;
|
||||
*) $SHELL -c 'trap "exit 0" 0; exit 1' 2>/dev/null
|
||||
case $? in
|
||||
1) SHELL=/bin/sh
|
||||
;;
|
||||
*) # catch (our own) pipe/socket configuration mismatches
|
||||
$SHELL -c "date | $SHELL -c 'read x'"
|
||||
case $? in
|
||||
0) ;;
|
||||
*) SHELL=/bin/sh ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
*) checksh $SHELL || SHELL=/bin/sh
|
||||
;;
|
||||
esac
|
||||
export SHELL
|
||||
|
|
|
@ -20,18 +20,17 @@
|
|||
# non-ksh stub for the nmake silent prefix
|
||||
# @(#)silent (AT&T Research) 1992-08-11
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[01234567899]*) : bash set -x is broken :; set +ex ;;
|
||||
esac
|
||||
(set -o posix) 2>/dev/null && set -o posix
|
||||
modern_export=`v=; export v=ok 2>/dev/null; echo "$v"`
|
||||
|
||||
while :
|
||||
do case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
case $1 in
|
||||
*=*) case $RANDOM in
|
||||
$RANDOM)`echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
*) export "$1" ;;
|
||||
*=*) case $modern_export in
|
||||
ok) export "$1" ;;
|
||||
*) `echo $1 | sed "s/\\([^=]*\\)=\\(.*\\)/eval \\1='\\2'; export \\1/"` ;;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
|
||||
# @(#)math.sh (AT&T Research) 2012-06-13
|
||||
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
command=$0
|
||||
iffeflags="-n -v"
|
||||
iffehdrs="math.h"
|
||||
|
|
|
@ -34,8 +34,9 @@
|
|||
# but you shall be confused anyway
|
||||
#
|
||||
|
||||
case $-:$BASH_VERSION in
|
||||
*x*:[0123456789]*) : bash set -x is broken :; set +ex ;;
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
LC_ALL=C
|
||||
|
|
|
@ -19,6 +19,12 @@
|
|||
# Phong Vo <kpv@research.att.com> #
|
||||
# #
|
||||
########################################################################
|
||||
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
ok=0
|
||||
for i in \
|
||||
-x /lib/ld.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
# #
|
||||
########################################################################
|
||||
: generate "<sys/param.h> + <sys/types.h> + <sys/stat.h>" include sequence
|
||||
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
case $# in
|
||||
0) ;;
|
||||
*) eval $1
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
# #
|
||||
########################################################################
|
||||
: generate preroot features
|
||||
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
case $# in
|
||||
0) ;;
|
||||
*) eval $1
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
# #
|
||||
########################################################################
|
||||
: generate sig features
|
||||
|
||||
case $ZSH_VERSION in
|
||||
?*) emulate ksh ;;
|
||||
*) (set -o posix) 2>/dev/null && set -o posix ;;
|
||||
esac
|
||||
|
||||
case $# in
|
||||
0) ;;
|
||||
*) eval $1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue