From 95d9c05f8a8173bd88fce84bf9df73001bf5f594 Mon Sep 17 00:00:00 2001 From: klang <klang@aps.anl.gov> Date: Fri, 6 Jul 2018 17:46:51 -0500 Subject: [PATCH] Updated bash startup scripts --- setup_epics_common.sh | 219 ++++++++++++++++++++++++++++++++++++++++++ start_MEDM_xxx.sh | 57 +---------- start_caQtDM_xxx.sh | 154 ++--------------------------- 3 files changed, 233 insertions(+), 197 deletions(-) create mode 100644 setup_epics_common.sh diff --git a/setup_epics_common.sh b/setup_epics_common.sh new file mode 100644 index 0000000..9fadc9d --- /dev/null +++ b/setup_epics_common.sh @@ -0,0 +1,219 @@ +#!/bin/bash -f + +DISPLAY_MANAGER=$1 + +# caller (typically: start_****_xxx) MUST define: +# EPICS_APP - Top level IOC directory +# EPICS_APP_ADL_DIR - Location of adl file directory +# EPICS_APP_UI_DIR - Location of ui file directory + +# and must make this definition if the app name isn't the directory name: +# EPICS_APP_NAME - different app name + +if [ "" != "${EPICS_APP_NAME}" ]; then + EPICS_APP_NAME=`basename ${EPICS_APP}` +fi + +####################################### +# support function to simplify repetitive task, +# used to build up displaty path of supported modules +# +# usage:: +# +# addModule ENVIRONMENT_VARIABLE DISPLAY_TYPE [SUBDIRECTORY] +# +# TMP is a temporary display path +# TMP is internal to this script, no need to export. + +function addModule +{ + # $1 is a symbol defined in <synApps>/configure/RELEASE + # module_path is the path defined for that symbol in the RELEASE file + module='$'$1 + module_path=`eval echo $module` + + if [ "$2" != "${DISPLAY_MANAGER}" ]; then + return 0 + fi + + if [ "" != "${module}" ]; then + # module is required + addition=${module_path} + if [ "" != "$3" ]; then + # optional subdirectory path + addition+=/$3 + fi + if [ -d "${addition}" ]; then + # proceed ONLY if new addition path exists + # Then, can define paths to all area detectors specific screens + if [ "" == "${TMP}" ]; then + # no existing path defined, start here + TMP=. + fi + TMP+=:${addition} + fi + fi +} + + +####################################### +# get environment variables for support modules + +output=`perl -s $EPICS_APP/release.pl -form=bash $EPICS_APP` +eval $output + + +# ======== ================ =============== =========================== +# function MODULE_VARIABLE Display Manager subdirectory with .ui files +# ======== ================ =============== =========================== +addModule EPICS_APP_ADL_DIR medm +addModule EPICS_APP_UI_DIR caqtdm +addModule EPICS_APP_UI_DIR caqtdm /autoconvert + +addModule ALIVE medm /aliveApp/op/adl +addModule ALIVE caqtdm /aliveApp/op/ui +addModule ALIVE caqtdm /aliveApp/op/ui/autoconvert + +addModule AREA_DETECTOR medm /ADCore/ADApp/op/adl +addModule AREA_DETECTOR caqtdm /ADCore/ADApp/op/ui +addModule AREA_DETECTOR caqtdm /ADCore/ADApp/op/ui/autoconvert + +addModule ADSIMDETECTOR medm /simDetectorApp/op/adl +addModule ADSIMDETECTOR caqtdm /simDetectorApp/op/ui +addModule ADSIMDETECTOR caqtdm /simDetectorApp/op/ui/autoconvert + +addModule ADURL medm /urlApp/op/adl +addModule ADURL caqtdm /urlApp/op/ui +addModule ADURL caqtdm /urlApp/op/ui/autoconvert + +addModule ASYN medm /opi/medm +addModule ASYN caqtdm /opi/caqtdm +addModule ASYN caqtdm /opi/caqtdm/autoconvert + +addModule AUTOSAVE medm /asApp/op/adl +addModule AUTOSAVE caqtdm /asApp/op/ui +addModule AUTOSAVE caqtdm /asApp/op/ui/autoconvert + +addModule BUSY medm /busyApp/op/adl +addModule BUSY caqtdm /busyApp/op/ui +addModule BUSY caqtdm /busyApp/op/ui/autoconvert + +addModule CALC medm /calcApp/op/adl +addModule CALC caqtdm /calcApp/op/ui +addModule CALC caqtdm /calcApp/op/ui/autoconvert + +addModule CAMAC medm /camacApp/op/adl +addModule CAMAC caqtdm /camacApp/op/ui +addModule CAMAC caqtdm /camacApp/op/ui/autoconvert + +addModule CAPUTRECORDER medm /caputRecorderApp/op/adl +addModule CAPUTRECORDER caqtdm /caputRecorderApp/op/ui +addModule CAPUTRECORDER caqtdm /caputRecorderApp/op/ui/autoconvert + +addModule DAC128V medm /dac128VApp/op/adl +addModule DAC128V caqtdm /dac128VApp/op/ui +addModule DAC128V caqtdm /dac128VApp/op/ui/autoconvert + +addModule DELAYGEN medm /delaygenApp/op/adl +addModule DELAYGEN caqtdm /delaygenApp/op/ui +addModule DELAYGEN caqtdm /delaygenApp/op/ui/autoconvert + +addModule DXP medm /dxpApp/op/ui +addModule DXP caqtdm /dxpApp/op/ui +addModule DXP caqtdm /dxpApp/op/ui/autoconvert + +addModule DXPSITORO medm /dxpSITOROApp/op/adl +addModule DXPSITORO caqtdm /dxpSITOROApp/op/ui +addModule DXPSITORO caqtdm /dxpSITOROApp/op/ui/autoconvert + +addModule DEVIOCSTATS medm /op/adl +addModule DEVIOCSTATS caqtdm /op/ui +addModule DEVIOCSTATS caqtdm /op/ui/autoconvert + +addModule FLY medm /flyApp/op/adl +addModule FLY caqtdm /flyApp/op/ui +addModule FLY caqtdm /flyApp/op/ui/autoconvert + +addModule IP medm /ipApp/op/adl +addModule IP caqtdm /ipApp/op/ui +addModule IP caqtdm /ipApp/op/ui/autoconvert + +addModule IP330 medm /ip330App/op/adl +addModule IP330 caqtdm /ip330App/op/ui +addModule IP330 caqtdm /ip330App/op/ui/autoconvert + +addModule IPUNIDIG medm /ipUnidigApp/op/adl +addModule IPUNIDIG caqtdm /ipUnidigApp/op/ui +addModule IPUNIDIG caqtdm /ipUnidigApp/op/ui/autoconvert + +addModule LOVE medm /loveApp/op/adl +addModule LOVE caqtdm /loveApp/op/ui +addModule LOVE caqtdm /loveApp/op/ui/autoconvert + +addModule LUA medm /luaApp/op/adl +addModule LUA caqtdm /luaApp/op/ui +addModule LUA caqtdm /luaApp/op/ui/autoconvert + +addModule MCA medm /mcaApp/op/adl +addModule MCA caqtdm /mcaApp/op/ui +addModule MCA caqtdm /mcaApp/op/ui/autoconvert + +addModule MODBUS medm /modbusApp/op/adl +addModule MODBUS caqtdm /modbusApp/op/ui +addModule MODBUS caqtdm /modbusApp/op/ui/autoconvert + +addModule MOTOR medm /motorApp/op/adl +addModule MOTOR caqtdm /motorApp/op/ui +addModule MOTOR caqtdm /motorApp/op/ui/autoconvert + +addModule OPTICS medm /opticsApp/op/adl +addModule OPTICS caqtdm /opticsApp/op/ui +addModule OPTICS caqtdm /opticsApp/op/ui/autoconvert + +addModule QUADEM medm /quadEMApp/op/adl +addModule QUADEM caqtdm /quadEMApp/op/ui +addModule QUADEM caqtdm /quadEMApp/op/ui/autoconvert + +addModule SOFTGLUE medm /softGlueApp/op/adl +addModule SOFTGLUE caqtdm /softGlueApp/op/ui +addModule SOFTGLUE caqtdm /softGlueApp/op/ui/autoconvert + +addModule SSCAN medm /sscanApp/op/adl +addModule SSCAN caqtdm /sscanApp/op/ui +addModule SSCAN caqtdm /sscanApp/op/ui/autoconvert + +addModule STD medm /stdApp/op/adl +addModule STD caqtdm /stdApp/op/ui +addModule STD caqtdm /stdApp/op/ui/autoconvert + +addModule TDS3000 medm /medm + +addModule VAC medm /vacApp/op/adl +addModule VAC caqtdm /vacApp/op/ui +addModule VAC caqtdm /vacApp/op/ui/autoconvert + +addModule VME medm /vmeApp/op/adl +addModule VME caqtdm /vmeApp/op/ui +addModule VME caqtdm /vmeApp/op/ui/autoconvert + +addModule YOKOGAWA_DAU medm /mw100App/op/adl +addModule YOKOGAWA_DAU caqtdm /mw100App/op/ui +addModule YOKOGAWA_DAU caqtdm /mw100App/op/ui/autoconvert + +# ======== ================ =========================== + +if [ "$DISPLAY_MANAGER" == "medm" ]; then + if [ -z "$EPICS_DISPLAY_PATH" ]; then + export EPICS_DISPLAY_PATH=${TMP} + else + export EPICS_DISPLAY_PATH=${TMP}:${EPICS_DISPLAY_PATH} + fi +fi + +if [ "$DISPLAY_MANAGER" == "caqtdm" ]; then + if [ -z "$CAQTDM_DISPLAY_PATH" ]; then + export CAQTDM_DISPLAY_PATH=${TMP} + else + export CAQTDM_DISPLAY_PATH=${TMP}:${CAQTDM_DISPLAY_PATH} + fi +fi diff --git a/start_MEDM_xxx.sh b/start_MEDM_xxx.sh index c503700..f7990bf 100755 --- a/start_MEDM_xxx.sh +++ b/start_MEDM_xxx.sh @@ -1,56 +1,10 @@ #!/bin/bash -EPICS_APP=/home/oxygen/MOONEY/epics/synApps_5_5/support/xxx -EPICS_APP_ADL_DIR=${EPICS_APP}/xxxApp/op/adl +export EPICS_APP=`dirname $0` +export EPICS_APP_ADL_DIR=${EPICS_APP}/xxxApp/op/adl +export DEFAULT_UI_FILE=${DEFAULT_UI_FILE:-xxx.ui} -output=`perl -s ${EPICS_APP}/release.pl -form=bash ${EPICS_APP}` -eval $output - -####################################### -# Prepare MEDM path -# EDP is temporary EPICS_DISPLAY_PATH -# -function append_EDP { # note: in bash, macros are not expanded in aliases - if [ -d $1 ] # this will keep keep out nonexistent directories - then - EDP=${EDP}:$1 - fi -} -EDP=. -append_EDP ${EPICS_APP_ADL_DIR} -append_EDP ${ALIVE}/aliveApp/op/adl -append_EDP ${AREA_DETECTOR}/ADApp/op/adl -append_EDP ${AUTOSAVE}/asApp/op/adl -append_EDP ${BUSY}/busyApp/op/adl -append_EDP ${CALC}/calcApp/op/adl -append_EDP ${CAMAC}/camacApp/op/adl -append_EDP ${CAPUTRECORDER}/caputRecorderApp/op/adl -append_EDP ${DAC128V}/dac128VApp/op/adl -append_EDP ${DELAYGEN}/delaygenApp/op/adl -append_EDP ${DEVIOCSTATS}/op/adl -append_EDP ${DXP}/dxpApp/op/adl -append_EDP ${IP}/ipApp/op/adl -append_EDP ${IP330}/ip330App/op/adl -append_EDP ${IPUNIDIG}/ipUnidigApp/op/adl -append_EDP ${LOVE}/loveApp/op/adl -append_EDP ${MCA}/mcaApp/op/adl -append_EDP ${MOTOR}/motorApp/op/adl -append_EDP ${OPTICS}/opticsApp/op/adl -append_EDP ${QUADEM}/quadEMApp/op/adl -append_EDP ${SSCAN}/sscanApp/op/adl -append_EDP ${STD}/stdApp/op/adl -append_EDP ${VME}/vmeApp/op/adl -append_EDP ${ASYN}/opi/medm -append_EDP ${VAC}/vacApp/op/adl -append_EDP ${SOFTGLUE}/softGlueApp/op/adl - -if [ -z "$EPICS_DISPLAY_PATH" ] -then - export EPICS_DISPLAY_PATH=${EDP} -else - export EPICS_DISPLAY_PATH=${EDP}:${EPICS_DISPLAY_PATH} -fi -echo ${EPICS_DISPLAY_PATH} +source ./setup_epics_common.sh medm if [ -z "${MEDM_EXEC_LIST}" ] then @@ -67,5 +21,4 @@ export START_PUTRECORDER=${EPICS_APP}/start_putrecorder export MACROS_PY=${EPICS_APP_ADL_DIR}/../python/macros.py export EDITOR=nedit -cd ${EPICS_APP}/xxxApp/op/adl -medm xxx.adl& +medm -x xxx.adl& diff --git a/start_caQtDM_xxx.sh b/start_caQtDM_xxx.sh index b1fd1d0..0023a89 100755 --- a/start_caQtDM_xxx.sh +++ b/start_caQtDM_xxx.sh @@ -4,160 +4,26 @@ export EPICS_APP=`dirname $0` export EPICS_APP_UI_DIR=${EPICS_APP}/xxxApp/op/ui export DEFAULT_UI_FILE=${DEFAULT_UI_FILE:-xxx.ui} +source ./setup_epics_common.sh caqtdm -####################################### -# support function to simplify repetitive task, -# used to build up displaty path of supported modules -# -# usage:: -# -# addModule ENVIRONMENT_VARIABLE [SUBDIRECTORY] -# -# QTDMDP is temporary CAQTDM_DISPLAY_PATH -# QTDMDP is internal to this script, no need to export. - -function addModule -{ - # $1 is a symbol defined in <synApps>/configure/RELEASE - # module_path is the path defined for that symbol in the RELEASE file - module='$'$1 - module_path=`eval echo $module` - - if [ "" != "${module}" ]; then - # module is required - addition=${module_path} - if [ "" != "$2" ]; then - # optional subdirectory path - addition+=/$2 - fi - if [ -d "${addition}" ]; then - # proceed ONLY if new addition path exists - # Then, can define paths to all area detectors specific screens - if [ "" == "${QTDMDP}" ]; then - # no existing path defined, start here - QTDMDP=. - fi - QTDMDP+=:${addition} - fi - fi -} - -####################################### -# get environment variables for support modules - -output=`perl -s $EPICS_APP/release.pl -form=bash $EPICS_APP` -eval $output - -####################################### -# add support for modules defined by environment variables -# modules are *appended* to the growing list of directories - -if [ "" == "${ADSIMDETECTOR}" ]; then - export ADSIMDETECTOR=${AREA_DETECTOR}/ADSimDetector-R2-4 -fi - -# ======== ================ =========================== -# function MODULE_VARIABLE subdirectory with .ui files -# ======== ================ =========================== -addModule EPICS_APP_UI_DIR -addModule ALIVE ./aliveApp/op/ui -addModule AREA_DETECTOR ./ADCore/ADApp/op/ui -addModule ADCORE ./ADApp/op/ui -addModule ADSIMDETECTOR ./simDetectorApp/op/ui -addModule ADURL ./urlApp/op/ui -addModule ASYN ./opi/caqtdm -addModule AUTOSAVE ./asApp/op/ui -addModule BUSY ./busyApp/op/ui -addModule CALC ./calcApp/op/ui -addModule CAMAC ./camacApp/op/ui -addModule CAPUTRECORDER ./caputRecorderApp/op/ui -addModule DAC128V ./dac128VApp/op/ui -addModule DELAYGEN ./delaygenApp/op/ui -addModule DXP ./dxpApp/op/ui -addModule DEVIOCSTATS ./op/ui -addModule IP ./ipApp/op/ui -addModule IP330 ./ip330App/op/ui -addModule IPUNIDIG ./ipUnidigApp/op/ui -addModule LOVE ./loveApp/op/ui -addModule MCA ./mcaApp/op/ui -addModule MODBUS ./modbusApp/op/ui -addModule MOTOR ./motorApp/op/ui -addModule OPTICS ./opticsApp/op/ui -addModule QUADEM ./quadEMApp/op/ui -addModule SOFTGLUE ./softGlueApp/op/ui -addModule SSCAN ./sscanApp/op/ui -addModule STD ./stdApp/op/ui -addModule VAC ./vacApp/op/ui -addModule VME ./vmeApp/op/ui -addModule AREA_DETECTOR ./ADCore/ADApp/op/ui/autoconvert -addModule ADCORE ./ADApp/op/ui/autoconvert -addModule ADSIMDETECTOR ./simDetectorApp/op/ui/autoconvert -addModule ADURL ./urlApp/op/ui/autoconvert -addModule ASYN ./opi/caqtdm/autoconvert -addModule AUTOSAVE ./asApp/op/ui/autoconvert -addModule BUSY ./busyApp/op/ui/autoconvert -addModule CALC ./calcApp/op/ui/autoconvert -addModule CAMAC ./camacApp/op/ui/autoconvert -addModule CAPUTRECORDER ./caputRecorderApp/op/ui/autoconvert -addModule DAC128V ./dac128VApp/op/ui/autoconvert -addModule DELAYGEN ./delaygenApp/op/ui/autoconvert -addModule DXP ./dxpApp/op/ui/autoconvert -addModule DEVIOCSTATS ./op/ui/autoconvert -addModule IP ./ipApp/op/ui/autoconvert -addModule IP330 ./ip330App/op/ui/autoconvert -addModule IPUNIDIG ./ipUnidigApp/op/ui/autoconvert -addModule LOVE ./loveApp/op/ui/autoconvert -addModule MCA ./mcaApp/op/ui/autoconvert -addModule MODBUS ./modbusApp/op/ui/autoconvert -addModule MOTOR ./motorApp/op/ui/autoconvert -addModule OPTICS ./opticsApp/op/ui/autoconvert -addModule QUADEM ./quadEMApp/op/ui/autoconvert -addModule SOFTGLUE ./softGlueApp/op/ui/autoconvert -addModule SSCAN ./sscanApp/op/ui/autoconvert -addModule STD ./stdApp/op/ui/autoconvert -addModule VAC ./vacApp/op/ui/autoconvert -addModule VME ./vmeApp/op/ui/autoconvert -# ======== ================ =========================== - - -####################################### -# optional: add support directories not associated with environment variables +# ####################################### +# # optional: add support directories not associated with environment variables if [ -z "/APSshare/caqtdm" ]; then - QTDMDP=${QTDMDP}:/APSshare/uisys/sr/id + CAQTDM_DISPLAY_PATH=$CAQTDM_DISPLAY_PATH:/APSshare/uisys/sr/id fi -####################################### -# Define CAQTDM_DISPLAY_PATH -# the .ui file directory list for caQtDM - -if [ "" == "${CAQTDM_DISPLAY_PATH}" ]; then - export CAQTDM_DISPLAY_PATH=${QTDMDP} -else - # either: pre-pend to display path - export CAQTDM_DISPLAY_PATH=${QTDMDP}:${CAQTDM_DISPLAY_PATH} - - # or: append to display path - #export CAQTDM_DISPLAY_PATH=${CAQTDM_DISPLAY_PATH}:${QTDMDP} -fi - -####################################### -# optional: support for PVs with large data sizes, such as areaDetector -# This should agree with the environment variable set by the ioc -# see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd +# ####################################### +# # optional: support for PVs with large data sizes, such as areaDetector +# # This should agree with the environment variable set by the ioc +# # see 'putenv "EPICS_CA_MAX_ARRAY_BYTES=64008"' in iocBoot/ioc<target>/st.cmd if [ "" == "${EPICS_CA_MAX_ARRAY_BYTES}" ]; then #export EPICS_CA_MAX_ARRAY_BYTES=64008 export EPICS_CA_MAX_ARRAY_BYTES=8000100 fi -####################################### -# optional: execute caQtDM in this support's ui directory - -cd ${EPICS_APP_UI_DIR} - - ####################################### # optional: override system default environment variables for Qt and Qwt # These override system defaults for Qt, Qwt @@ -205,9 +71,7 @@ fi ####################################### # start caQtDM -#caQtDM -noMsg xxx.ui & -# allow for command line option to specify the file to be opened -caQtDM -style plastique -noMsg ${1:-${DEFAULT_UI_FILE}} +/APSshare/bin/caQtDM -style plastique -noMsg ${1:-${DEFAULT_UI_FILE}} # TODO: what about ALL command line parameters? "$*" -- GitLab