Skip to content
Snippets Groups Projects
Commit d42523f0 authored by Jeong Han Lee's avatar Jeong Han Lee
Browse files

add update iocsh.bash for clarity

parent 76d853be
No related branches found
No related tags found
No related merge requests found
iocsh.bash 100755 → 100644
#!/bin/bash
declare -gr SC_SCRIPT="$(realpath "$0")"
declare -gr SC_SCRIPTNAME=${0##*/}
declare -gr SC_TOP="$(dirname "$SC_SCRIPT")"
......@@ -14,7 +13,6 @@ set +a
. ${SC_TOP}/iocsh_functions
case $1 in
( -h | "-?" | -help | --help )
help
......@@ -29,64 +27,34 @@ case $1 in
;;
esac
# Default, use the default EPICS_BASE in env setup script
# echo ${EPICS_BASE}
# What about EPICS_BASE exists, however, require doesn't compile with that base...?
if [[ $(checkIfDir ${EPICS_BASE}) -eq "$NON_EXIST" ]]; then
printf "${EPICS_BASE} is defined to use. \n";
printf "HOWEVER, ${SC_SCRIPTNAME} cannot find the real directory at EPICS_BASE at ${EPICS_BASE}\n";
printf "EPICS_BASE is defined to use. \n";
printf "Please check your environment!\n";
exit;
fi
declare -g RUNNING_EPICS_BASE_VER=${EPICS_BASE##*/*-}
declare -g RUNNING_REQUIRE_PATH=${EPICS_MODULES}/${REQUIRE}/${REQUIRE_VERSION}/R${RUNNING_EPICS_BASE_VER}
declare -g SOFTIOC_CMD="softIoc"
declare -g SOFTIOC_ARGS="-D ${EPICS_BASE}/dbd/softIoc.dbd"
declare -g RUNNING_REQUIRE_PATH=${REQUIRE_PATH}/R${RUNNING_EPICS_BASE_VER}
STARTUP=/tmp/${SC_SCRIPTNAME}_${IOC}_startup.$BASHPID
declare -a ioc_env=(PWD EPICS_HOST_ARCH REQUIRE_PATH EPICS_CA_ADDR_LIST);
trap "softIoc_end" EXIT SIGTERM
{
echo "# date=\"$(date)\""
echo "# user=\"${USER:-$(whoami)}\""
for var in PWD EPICS_HOST_ARCH REQUIRE_PATH EPICS_CA_ADDR_LIST
do
echo "# $var=\"${!var}\""
done
printIocEnv "${ioc_env}"
LIBPREFIX=lib
LIBPOSTFIX=.so
loadRequire
loadFiles "$@"
REQUIRE_LIB=${RUNNING_REQUIRE_PATH}/lib/${EPICS_HOST_ARCH}/${LIBPREFIX}${REQUIRE}${LIBPOSTFIX}
REQUIRE_DBD=${REQUIRE_LIB%/lib/*}/dbd/${REQUIRE}.dbd
LDCMD="dlload"
echo "$LDCMD $REQUIRE_LIB"
echo "dbLoadDatabase $REQUIRE_DBD"
echo "${REQUIRE%-*}_registerRecordDeviceDriver"
loadFiles "$@"
if [ "$init" != NO ]
then
if [ "$init" != NO ]; then
echo "iocInit"
fi
} > ${STARTUP}
} > ${STARTUP}
command='${SOFTIOC_CMD} ${SOFTIOC_ARGS} "${STARTUP}"'
ulimit -c unlimited
eval "${command}" 2>&1
softIoc -D ${EPICS_BASE}/dbd/softIoc.dbd "${STARTUP}" 2>&1
......@@ -120,6 +120,40 @@ function subst () {
echo ${subst#,}
}
function printIocEnv() {
local var="";
printf "# date=\"$(date)\"\n"
printf "# user=\"${USER:-$(whoami)}\"\n"
for var in PWD EPICS_HOST_ARCH REQUIRE_PATH EPICS_CA_ADDR_LIST
do
printf "# $var=\"${!var}\"\n"
done
printf "\n";
}
function loadRequire() {
local libPrefix=lib
local libPostfix=.so
local libName=${libPrefix}${REQUIRE}${libPostfix}
local require_lib=${RUNNING_REQUIRE_PATH}/lib/${EPICS_HOST_ARCH}/${libName}
local require_dbd=${RUNNING_REQUIRE_PATH}/dbd/${REQUIRE}.dbd
local load_cmd="dlload"
printf "${load_cmd} ${require_lib}\n";
printf "dbLoadDatabase ${require_dbd}\n"
printf "${REQUIRE%-*}_registerRecordDeviceDriver\n\n"
}
function loadFiles () {
while [ "$#" -gt 0 ]
do
......
#!/bin/bash
declare -gr SC_SCRIPT="$(realpath "$0")"
declare -gr SC_SCRIPTNAME=${0##*/}
declare -gr SC_TOP="$(dirname "$SC_SCRIPT")"
declare -g STARTUP=""
set -a
. ${SC_TOP}/ess-env.conf
set +a
. ${SC_TOP}/iocsh_functions
case $1 in
( -h | "-?" | -help | --help )
help
;;
( -v | -ver | --ver | -version | --version )
version
;;
( -3.* )
unset EPICS_BASE;
EPICS_BASE=$(select_epics_base "$1");
shift
;;
esac
# Default, use the default EPICS_BASE in env setup script
# echo ${EPICS_BASE}
# What about EPICS_BASE exists, however, require doesn't compile with that base...?
if [[ $(checkIfDir ${EPICS_BASE}) -eq "$NON_EXIST" ]]; then
printf "${EPICS_BASE} is defined to use. \n";
printf "HOWEVER, ${SC_SCRIPTNAME} cannot find the real directory at EPICS_BASE at ${EPICS_BASE}\n";
printf "Please check your environment!\n";
exit;
fi
declare -g RUNNING_EPICS_BASE_VER=${EPICS_BASE##*/*-}
declare -g RUNNING_REQUIRE_PATH=${EPICS_MODULES}/${REQUIRE}/${REQUIRE_VERSION}/R${RUNNING_EPICS_BASE_VER}
declare -g SOFTIOC_CMD="softIoc"
declare -g SOFTIOC_ARGS="-D ${EPICS_BASE}/dbd/softIoc.dbd"
STARTUP=/tmp/${SC_SCRIPTNAME}_${IOC}_startup.$BASHPID
trap "softIoc_end" EXIT SIGTERM
{
echo "# date=\"$(date)\""
echo "# user=\"${USER:-$(whoami)}\""
for var in PWD EPICS_HOST_ARCH REQUIRE_PATH EPICS_CA_ADDR_LIST
do
echo "# $var=\"${!var}\""
done
LIBPREFIX=lib
LIBPOSTFIX=.so
REQUIRE_LIB=${RUNNING_REQUIRE_PATH}/lib/${EPICS_HOST_ARCH}/${LIBPREFIX}${REQUIRE}${LIBPOSTFIX}
REQUIRE_DBD=${REQUIRE_LIB%/lib/*}/dbd/${REQUIRE}.dbd
LDCMD="dlload"
echo "$LDCMD $REQUIRE_LIB"
echo "dbLoadDatabase $REQUIRE_DBD"
echo "${REQUIRE%-*}_registerRecordDeviceDriver"
loadFiles "$@"
if [ "$init" != NO ]
then
echo "iocInit"
fi
} > ${STARTUP}
command='${SOFTIOC_CMD} ${SOFTIOC_ARGS} "${STARTUP}"'
ulimit -c unlimited
eval "${command}" 2>&1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment