diff options
Diffstat (limited to '')
-rwxr-xr-x | kBuild/env.sh | 648 |
1 files changed, 648 insertions, 0 deletions
diff --git a/kBuild/env.sh b/kBuild/env.sh new file mode 100755 index 0000000..e70573e --- /dev/null +++ b/kBuild/env.sh @@ -0,0 +1,648 @@ +#!/bin/sh +# $Id: env.sh 3556 2022-02-18 02:02:07Z bird $ +## @file +# Environment setup script. +# + +# +# Copyright (c) 2005-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net> +# +# This file is part of kBuild. +# +# kBuild is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# kBuild is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with kBuild; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# +#set -x + +# +# Check if we're in eval mode or not. +# +ERR_REDIR=1 +DBG_REDIR=1 +EVAL_OPT= +EVAL_EXPORT="export " +DBG_OPT= +QUIET_OPT= +FULL_OPT= +FULL_WITH_BIN_OPT= +LEGACY_OPT= +VAR_OPT= +VALUE_ONLY_OPT= +EXP_TYPE_OPT= +while test $# -gt 0; +do + case "$1" in + "--debug-script") + DBG_OPT="true" + ;; + "--no-debug-script") + DBG_OPT= + ;; + "--quiet") + QUIET_OPT="true" + ;; + "--verbose") + QUIET_OPT= + ;; + "--full") + FULL_OPT="true" + ;; + "--full-with-bin") + FULL_OPT="true" + FULL_WITH_BIN_OPT="true" + ;; + "--normal") + FULL_OPT= + ;; + "--legacy") + LEGACY_OPT="true" + ;; + "--no-legacy") + LEGACY_OPT= + ;; + "--eval") + EVAL_OPT="true" + ERR_REDIR=2 + DBG_REDIR=2 + ;; + "--set") + EVAL_OPT="true" + EVAL_EXPORT="" + ERR_REDIR=2 + DBG_REDIR=2 + ;; + "--var") + shift + VAR_OPT="${VAR_OPT} $1" + ERR_REDIR=2 + DBG_REDIR=2 + ;; + "--value-only") + VALUE_ONLY_OPT="true" + ;; + "--name-and-value") + VALUE_ONLY_OPT= + ;; + "--release") + EXP_TYPE_OPT=1 + KBUILD_TYPE=release + BUILD_TYPE= + ;; + "--debug") + EXP_TYPE_OPT=1 + KBUILD_TYPE=debug + BUILD_TYPE= + ;; + "--profile") + EXP_TYPE_OPT=1 + KBUILD_TYPE=profile + BUILD_TYPE= + ;; + + "--help") + echo "kBuild Environment Setup Script, v0.2.0-pre" + echo "" + echo "syntax: $0 [options] [command [args]]" + echo " or: $0 [options] --var <varname>" + echo " or: $0 [options] --eval" + echo " or: $0 [options] --eval --var <varname>" + echo "" + echo "The first form will execute the command, or if no command is given start" + echo "an interactive shell." + echo "The second form will print the specfified variable(s)." + echo "The third form will print all exported variables suitable for bourne shell" + echo "evaluation." + echo "The forth form will only print the specified variable(s)." + echo "" + echo "Options:" + echo " --debug, --release, --profile" + echo " Alternative way of specifying KBUILD_TYPE." + echo " --debug-script, --no-debug-script" + echo " Controls debug output. Default: --no-debug-script" + echo " --quiet, --verbose" + echo " Controls informational output. Default: --verbose" + echo " --full, --full-with-bin, --normal" + echo " Controls the variable set. Default: --normal" + echo " --legacy, --no-legacy" + echo " Include legacy variables in result. Default: --no-legacy" + echo " --value-only, --name-and-value" + echo " Controls what the result of a --var query. Default: --name-and-value" + echo " --set, --export" + echo " Whether --eval explicitly export the variables. --set is useful for" + echo " getting a list of environment vars for a commandline, while --eval" + echo ' is useful for eval `env.sh`. Default: --export' + echo "" + exit 1 + ;; + *) + break + ;; + esac + shift +done + + +# +# Deal with legacy environment variables. +# +if test -n "$PATH_KBUILD"; then + if test -n "$KBUILD_PATH" -a "$KBUILD_PATH" != "$PATH_KBUILD"; then + echo "$0: error: KBUILD_PATH ($KBUILD_PATH) and PATH_KBUILD ($PATH_KBUILD) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_PATH=$PATH_KBUILD +fi +if test -n "$PATH_KBUILD_BIN"; then + if test -n "$KBUILD_BIN_PATH" -a "$KBUILD_BIN_PATH" != "$PATH_KBUILD_BIN"; then + echo "$0: error: KBUILD_BIN_PATH ($KBUILD_BIN_PATH) and PATH_KBUILD_BIN ($PATH_KBUILD_BIN) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_BIN_PATH=$PATH_KBUILD_BIN +fi + +if test -n "$BUILD_TYPE"; then + if test -n "$KBUILD_TYPE" -a "$KBUILD_TYPE" != "$BUILD_TYPE"; then + echo "$0: error: KBUILD_TYPE ($KBUILD_TYPE) and BUILD_TYPE ($BUILD_TYPE) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_TYPE=$BUILD_TYPE +fi + +if test -n "$BUILD_PLATFORM"; then + if test -n "$KBUILD_HOST" -a "$KBUILD_HOST" != "$BUILD_PLATFORM"; then + echo "$0: error: KBUILD_HOST ($KBUILD_HOST) and BUILD_PLATFORM ($BUILD_PLATFORM) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_HOST=$BUILD_PLATFORM +fi +if test -n "$BUILD_PLATFORM_ARCH"; then + if test -n "$KBUILD_HOST_ARCH" -a "$KBUILD_HOST_ARCH" != "$BUILD_PLATFORM_ARCH"; then + echo "$0: error: KBUILD_HOST_ARCH ($KBUILD_HOST_ARCH) and BUILD_PLATFORM_ARCH ($BUILD_PLATFORM_ARCH) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_HOST_ARCH=$BUILD_PLATFORM_ARCH +fi +if test -n "$BUILD_PLATFORM_CPU"; then + if test -n "$KBUILD_HOST_CPU" -a "$KBUILD_HOST_CPU" != "$BUILD_PLATFORM_CPU"; then + echo "$0: error: KBUILD_HOST_CPU ($KBUILD_HOST_CPU) and BUILD_PLATFORM_CPU ($BUILD_PLATFORM_CPU) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_HOST_CPU=$BUILD_PLATFORM_CPU +fi + +if test -n "$BUILD_TARGET"; then + if test -n "$KBUILD_TARGET" -a "$KBUILD_TARGET" != "$BUILD_TARGET"; then + echo "$0: error: KBUILD_TARGET ($KBUILD_TARGET) and BUILD_TARGET ($BUILD_TARGET) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_TARGET=$BUILD_TARGET +fi +if test -n "$BUILD_TARGET_ARCH"; then + if test -n "$KBUILD_TARGET_ARCH" -a "$KBUILD_TARGET_ARCH" != "$BUILD_TARGET_ARCH"; then + echo "$0: error: KBUILD_TARGET_ARCH ($KBUILD_TARGET_ARCH) and BUILD_TARGET_ARCH ($BUILD_TARGET_ARCH) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_TARGET_ARCH=$BUILD_TARGET_ARCH +fi +if test -n "$BUILD_TARGET_CPU"; then + if test -n "$KBUILD_TARGET_CPU" -a "$KBUILD_TARGET_CPU" != "$BUILD_TARGET_CPU"; then + echo "$0: error: KBUILD_TARGET_CPU ($KBUILD_TARGET_CPU) and BUILD_TARGET_CPU ($BUILD_TARGET_CPU) disagree." 1>&${ERR_REDIR} + sleep 1 + exit 1 + fi + KBUILD_TARGET_CPU=$BUILD_TARGET_CPU +fi + + +# +# Set default build type. +# +if test -z "$KBUILD_TYPE"; then + KBUILD_TYPE=release +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_TYPE=$KBUILD_TYPE" 1>&${DBG_REDIR} + +# +# Determin the host platform. +# +# The CPU isn't important, only the other two are. But, since the cpu, +# arch and platform (and build type) share a common key space, try make +# sure any new additions are unique. (See header.kmk, KBUILD_OSES/ARCHES.) +# +if test -z "$KBUILD_HOST"; then + KBUILD_HOST=`uname` + case "$KBUILD_HOST" in + Darwin|darwin) + KBUILD_HOST=darwin + ;; + + DragonFly) + KBUILD_HOST=dragonfly + ;; + + freebsd|FreeBSD|FREEBSD) + KBUILD_HOST=freebsd + ;; + + GNU) + KBUILD_HOST=gnuhurd + ;; + + GNU/kFreeBSD) + KBUILD_HOST=gnukfbsd + ;; + + GNU/kNetBSD|GNU/NetBSD) + KBUILD_HOST=gnuknbsd + ;; + + Haiku) + KBUILD_HOST=haiku + ;; + + linux|Linux|GNU/Linux|LINUX) + KBUILD_HOST=linux + ;; + + netbsd|NetBSD|NETBSD) + KBUILD_HOST=netbsd + ;; + + openbsd|OpenBSD|OPENBSD) + KBUILD_HOST=openbsd + ;; + + os2|OS/2|OS2) + KBUILD_HOST=os2 + ;; + + SunOS) + KBUILD_HOST=solaris + ;; + + WindowsNT|CYGWIN_NT-*) + KBUILD_HOST=win + ;; + + *) + echo "$0: unknown os $KBUILD_HOST" 1>&${ERR_REDIR} + sleep 1 + exit 1 + ;; + esac +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_HOST=$KBUILD_HOST" 1>&${DBG_REDIR} + +if test -z "$KBUILD_HOST_ARCH"; then + # Try deduce it from the cpu if given. + if test -n "$KBUILD_HOST_CPU"; then + case "$KBUILD_HOST_CPU" in + i[3456789]86) + KBUILD_HOST_ARCH='x86' + ;; + k8|k8l|k9|k10) + KBUILD_HOST_ARCH='amd64' + ;; + esac + fi +fi +if test -z "$KBUILD_HOST_ARCH"; then + # Use uname -m or isainfo (lots of guesses here, please help clean this up...) + if test "$KBUILD_HOST" = "solaris"; then + KBUILD_HOST_ARCH=`isainfo | cut -f 1 -d ' '` + + else + KBUILD_HOST_ARCH=`uname -m` + fi + case "$KBUILD_HOST_ARCH" in + x86_64|AMD64|amd64|k8|k8l|k9|k10) + KBUILD_HOST_ARCH='amd64' + # Try detect debian x32. + if test "$KBUILD_HOST" = "linux"; then + if test -z "${DEB_HOST_ARCH}"; then + DEB_HOST_ARCH=`dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null`; + if test -z "${DEB_HOST_ARCH}"; then + DEB_HOST_ARCH=`dpkg --print-architecture 2> /dev/null`; + fi + fi + case "${DEB_HOST_ARCH}" in + "x32") + KBUILD_HOST_ARCH=x32 + ;; + "") case "`uname -v`" in + *Debian*+x32+*) KBUILD_HOST_ARCH=x32 ;; + esac + ;; + esac + fi + ;; + x86|i86pc|ia32|i[3456789]86|BePC|i[3456789]86-AT[3456789]86) + KBUILD_HOST_ARCH='x86' + ;; + alpha) + KBUILD_HOST_ARCH='alpha' + ;; + aarch32|arm|arm1|arm2|arm3|arm6|armv1|armv2|armv3*|armv4*|armv5*|armv6*|armv7*|armv8*) + KBUILD_HOST_ARCH='arm32' + ;; + aarch64*|arm64) # (Apple M1 is arm64.) + KBUILD_HOST_ARCH='arm64' + ;; + hppa32|parisc32|parisc) + KBUILD_HOST_ARCH='hppa32' + ;; + hppa64|parisc64) + KBUILD_HOST_ARCH='hppa64' + ;; + ia64) + KBUILD_HOST_ARCH='ia64' + ;; + m68k) + KBUILD_HOST_ARCH='m68k' + ;; + mips32|mips) + KBUILD_HOST_ARCH='mips32' + ;; + mips64) + KBUILD_HOST_ARCH='mips64' + ;; + ppc32|ppc|powerpc) + KBUILD_HOST_ARCH='ppc32' + ;; + ppc64|ppc64le|powerpc64|powerpc64le) + KBUILD_HOST_ARCH='ppc64' + ;; + riscv64*) + KBUILD_HOST_ARCH='riscv64' + ;; + riscv32*|riscv) + KBUILD_HOST_ARCH='riscv32' + ;; + s390) + KBUILD_HOST_ARCH='s390' + ;; + s390x) + KBUILD_HOST_ARCH='s390x' + ;; + sh|sh2|sh2a|sh3|sh3|sh4|sh4a|sh4al|sh4al-dsp|shmedia) + KBUILD_HOST_ARCH='sh32' + ;; + sh64) + KBUILD_HOST_ARCH='sh64' + ;; + sparc32|sparc|sparcv8|sparcv7|sparcv8e) + KBUILD_HOST_ARCH='sparc32' + ;; + sparc64|sparcv9) + KBUILD_HOST_ARCH='sparc64' + ;; + + *) echo "$0: unknown cpu/arch - $KBUILD_HOST_ARCH" 1>&${ERR_REDIR} + sleep 1 + exit 1 + ;; + esac + +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_HOST_ARCH=$KBUILD_HOST_ARCH" 1>&${DBG_REDIR} + +if test -z "$KBUILD_HOST_CPU"; then + KBUILD_HOST_CPU="blend" +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_HOST_CPU=$KBUILD_HOST_CPU" 1>&${DBG_REDIR} + +# +# The target platform. +# Defaults to the host when not specified. +# +if test -z "$KBUILD_TARGET"; then + KBUILD_TARGET="$KBUILD_HOST" +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_TARGET=$KBUILD_TARGET" 1>&${DBG_REDIR} + +if test -z "$KBUILD_TARGET_ARCH"; then + KBUILD_TARGET_ARCH="$KBUILD_HOST_ARCH" +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_TARGET_ARCH=$KBUILD_TARGET_ARCH" 1>&${DBG_REDIR} + +if test -z "$KBUILD_TARGET_CPU"; then + if test "$KBUILD_TARGET_ARCH" = "$KBUILD_HOST_ARCH"; then + KBUILD_TARGET_CPU="$KBUILD_HOST_CPU" + else + KBUILD_TARGET_CPU="blend" + fi +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_TARGET_CPU=$KBUILD_TARGET_CPU" 1>&${DBG_REDIR} + +# +# Determin executable extension and path separator. +# +_SUFF_EXE= +_PATH_SEP=":" +case "$KBUILD_HOST" in + os2|win|nt) + _SUFF_EXE=".exe" + _PATH_SEP=";" + ;; +esac + +# +# Determin KBUILD_PATH from the script location and calc KBUILD_BIN_PATH from there. +# +if test -z "$KBUILD_PATH"; then + KBUILD_PATH=`dirname "$0"` + KBUILD_PATH=`cd "$KBUILD_PATH" ; /bin/pwd` +fi +if test ! -f "$KBUILD_PATH/footer.kmk" -o ! -f "$KBUILD_PATH/header.kmk" -o ! -f "$KBUILD_PATH/rules.kmk"; then + echo "$0: error: KBUILD_PATH ($KBUILD_PATH) is not pointing to a popluated kBuild directory." 1>&${ERR_REDIR} + sleep 1 + exit 1 +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_PATH=$KBUILD_PATH" 1>&${DBG_REDIR} + +if test -z "$KBUILD_BIN_PATH"; then + KBUILD_BIN_PATH="${KBUILD_PATH}/bin/${KBUILD_HOST}.${KBUILD_HOST_ARCH}" +fi +test -n "$DBG_OPT" && echo "dbg: KBUILD_BIN_PATH=${KBUILD_BIN_PATH}" 1>&${DBG_REDIR} + +# +# Add the bin/x.y/ directory to the PATH. +# NOTE! Once bootstrapped this is the only thing that is actually necessary. +# +PATH="${KBUILD_BIN_PATH}${_PATH_SEP}$PATH" +test -n "$DBG_OPT" && echo "dbg: PATH=$PATH" 1>&${DBG_REDIR} + +# +# Sanity and x bits. +# +if test ! -d "${KBUILD_BIN_PATH}/"; then + echo "$0: warning: The bin directory for this platform doesn't exist. (${KBUILD_BIN_PATH}/)" 1>&${ERR_REDIR} +else + for prog in kmk kDepPre kDepIDB kmk_append kmk_ash kmk_cat kmk_cp kmk_echo kmk_install kmk_ln kmk_mkdir kmk_mv kmk_rm kmk_rmdir kmk_sed; + do + chmod a+x ${KBUILD_BIN_PATH}/${prog} > /dev/null 2>&1 + if test ! -f "${KBUILD_BIN_PATH}/${prog}${_SUFF_EXE}"; then + echo "$0: warning: The ${prog} program doesn't exist for this platform. (${KBUILD_BIN_PATH}/${prog}${_SUFF_EXE})" 1>&${ERR_REDIR} + fi + done +fi + +# +# The environment is in place, now take the requested action. +# +MY_RC=0 +if test -n "${VAR_OPT}"; then + # Echo variable values or variable export statements. + for var in ${VAR_OPT}; + do + val= + case "$var" in + PATH) + val=$PATH + ;; + KBUILD_PATH) + val=$KBUILD_PATH + ;; + KBUILD_BIN_PATH) + val=$KBUILD_BIN_PATH + ;; + KBUILD_HOST) + val=$KBUILD_HOST + ;; + KBUILD_HOST_ARCH) + val=$KBUILD_HOST_ARCH + ;; + KBUILD_HOST_CPU) + val=$KBUILD_HOST_CPU + ;; + KBUILD_TARGET) + val=$KBUILD_TARGET + ;; + KBUILD_TARGET_ARCH) + val=$KBUILD_TARGET_ARCH + ;; + KBUILD_TARGET_CPU) + val=$KBUILD_TARGET_CPU + ;; + KBUILD_TYPE) + val=$KBUILD_TYPE + ;; + *) + echo "$0: error: Unknown variable $var specified in --var request." 1>&${ERR_REDIR} + sleep 1 + exit 1 + ;; + esac + + if test -n "$EVAL_OPT"; then + echo "${EVAL_EXPORT} $var=$val" + else + if test -n "$VALUE_ONLY_OPT"; then + echo "$val" + else + echo "$var=$val" + fi + fi + done +else + if test -n "$EVAL_OPT"; then + # Echo statements for the shell to evaluate. + test -n "$DBG_OPT" && echo "dbg: echoing exported variables" 1>&${DBG_REDIR} + echo "${EVAL_EXPORT} PATH=${PATH}" + test -n "${FULL_OPT}" -o "${EXP_TYPE_OPT}" && echo "${EVAL_EXPORT} KBUILD_TYPE=${KBUILD_TYPE}" + if test -n "${FULL_OPT}"; then + echo "${EVAL_EXPORT} KBUILD_PATH=${KBUILD_PATH}" + if test -n "{FULL_WITH_BIN_OPT}"; then + echo "${EVAL_EXPORT} KBUILD_BIN_PATH=${KBUILD_BIN_PATH}" + fi + echo "${EVAL_EXPORT} KBUILD_HOST=${KBUILD_HOST}" + echo "${EVAL_EXPORT} KBUILD_HOST_ARCH=${KBUILD_HOST_ARCH}" + echo "${EVAL_EXPORT} KBUILD_HOST_CPU=${KBUILD_HOST_CPU}" + echo "${EVAL_EXPORT} KBUILD_TARGET=${KBUILD_TARGET}" + echo "${EVAL_EXPORT} KBUILD_TARGET_ARCH=${KBUILD_TARGET_ARCH}" + echo "${EVAL_EXPORT} KBUILD_TARGET_CPU=${KBUILD_TARGET_CPU}" + + if test -n "${LEGACY_OPT}"; then + echo "${EVAL_EXPORT} PATH_KBUILD=${KBUILD_PATH}" + if test -n "${FULL_WITH_BIN_OPT}"; then + echo "${EVAL_EXPORT} PATH_KBUILD_BIN=${KBUILD_PATH_BIN}" + fi + echo "${EVAL_EXPORT} BUILD_TYPE=${KBUILD_TYPE}" + echo "${EVAL_EXPORT} BUILD_PLATFORM=${KBUILD_HOST}" + echo "${EVAL_EXPORT} BUILD_PLATFORM_ARCH=${KBUILD_HOST_ARCH}" + echo "${EVAL_EXPORT} BUILD_PLATFORM_CPU=${KBUILD_HOST_CPU}" + echo "${EVAL_EXPORT} BUILD_TARGET=${KBUILD_TARGET}" + echo "${EVAL_EXPORT} BUILD_TARGET_ARCH=${KBUILD_TARGET_ARCH}" + echo "${EVAL_EXPORT} BUILD_TARGET_CPU=${KBUILD_TARGET_CPU}" + fi + fi + else + # Export variables. + export PATH + test -n "${FULL_OPT}" -o "${EXP_TYPE_OPT}" && export KBUILD_TYPE + if test -n "${FULL_OPT}"; then + export KBUILD_PATH + if test -n "${FULL_WITH_BIN_OPT}"; then + export KBUILD_BIN_PATH + fi + export KBUILD_HOST + export KBUILD_HOST_ARCH + export KBUILD_HOST_CPU + export KBUILD_TARGET + export KBUILD_TARGET_ARCH + export KBUILD_TARGET_CPU + + if test -n "${LEGACY_OPT}"; then + export PATH_KBUILD=$KBUILD_PATH + if test -n "${FULL_WITH_BIN_OPT}"; then + export PATH_KBUILD_BIN=$KBUILD_BIN_PATH + fi + export BUILD_TYPE=$KBUILD_TYPE + export BUILD_PLATFORM=$KBUILD_HOST + export BUILD_PLATFORM_ARCH=$KBUILD_HOST_ARCH + export BUILD_PLATFORM_CPU=$KBUILD_HOST_CPU + export BUILD_TARGET=$KBUILD_TARGET + export BUILD_TARGET_ARCH=$KBUILD_TARGET_ARCH + export BUILD_TARGET_CPU=$KBUILD_TARGET_CPU + fi + fi + + # Execute command or spawn shell. + if test $# -eq 0; then + test -z "${QUIET_OPT}" && echo "$0: info: Spawning work shell..." 1>&${ERR_REDIR} + if test "$TERM" != 'dumb' -a -n "$BASH"; then + export PS1='\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]' + fi + $SHELL -i + MY_RC=$? + else + test -z "${QUIET_OPT}" && echo "$0: info: Executing command: $*" 1>&${ERR_REDIR} + $* + MY_RC=$? + test -z "${QUIET_OPT}" -a "$MY_RC" -ne 0 && echo "$0: info: rc=$MY_RC: $*" 1>&${ERR_REDIR} + fi + fi +fi +test -n "$DBG_OPT" && echo "dbg: finished (rc=$MY_RC)" 1>&${DBG_REDIR} +exit $MY_RC + |