diff --git a/support/bin/rtcds.in b/support/bin/rtcds.in index 982625a316af33b3bd09ef16c4227efc71718212..9650c8a18d9c9ba8132f3bb89210bb322692b734 100755 --- a/support/bin/rtcds.in +++ b/support/bin/rtcds.in @@ -1,11 +1,9 @@ #!/bin/bash -e RTS_VERSION=${RTS_VERSION:-__VERSION__} -ENV_FILE=${RTS_ENV:-/etc/advligorts/env} -RCG_SRC=${RCG_SRC:-/usr/share/advligorts/src} -RCG_BUILDD=${RCG_BUILDD:-/var/cache/advligorts/rcg-$RTS_VERSION} -RTS_USER=${RTS_USER:-controls} +# this should define all USER_VARS (see below) +ENV_FILE=${RTS_ENV:-/etc/advligorts/env} source "$ENV_FILE" 2>/dev/null || true SITE=${SITE^^*} @@ -13,15 +11,22 @@ site=${SITE,,*} IFO=${IFO^^*} ifo=${IFO,,*} +RCG_SRC=${RCG_SRC:-/usr/share/advligorts/src} +RCG_BUILDD=${RCG_BUILDD:-/var/cache/advligorts/rcg-$RTS_VERSION} +# FIXME: the RCG hard-codes /opt/rtcds as the root +RCG_TARGET=/opt/rtcds/${site}/${ifo} +RTS_USER=${RTS_USER:-controls} + # search paths for C source code CDS_SRC=${CDS_SRC:-$RCG_LIB_PATH} CDS_IFO_SRC=${CDS_IFO_SRC:-$CDS_SRC} # add RCG module source to lib path +# FIXME: rename RCG_MOD_PATH RCG_LIB_PATH=$RCG_LIB_PATH:${RCG_SRC}/src/epics/simLink/:${RCG_SRC}/src/epics/simLink/lib -USER_VARS=(SITE IFO OPTRTCDS RCG_LIB_PATH) -LIST_VARS=(RTS_VERSION ${USER_VARS[@]} RCG_SRC RCG_BUILDD RTS_USER) +USER_VARS=(SITE IFO RCG_LIB_PATH) +LIST_VARS=(RTS_VERSION ${USER_VARS[@]} RCG_SRC RCG_BUILDD RCG_TARGET RTS_USER) EXPORT_VARS=(${USER_VARS[@]} site ifo CDS_SRC CDS_IFO_SRC) ################################################## @@ -49,20 +54,40 @@ check_env() { done } -prep_target(){ - log "creating OPTRTCDS..." - mkdir -p ${OPTRTCDS}/{target,chans}/tmp -} - prep_buildd() { - sudo mkdir -p "$RCG_BUILDD" - sudo chown "$RTS_USER" "$RCG_BUILDD" - if [ -e "$RCG_BUILDD"/Makefile ] ; then - return + if [ -d "$RCG_BUILDD" ] ; then + return fi - log "configuring RCG_BUILDD..." + log "creating RCG_BUILDD $RCG_BUILDD..." + if sudo -u $RTS_USER mkdir -p "$RCG_BUILDD" 2>/dev/null ; then + sudo -u $RTS_USER chown $RTS_USER:$RTS_USER "$RCG_BUILDD" + elif sudo mkdir -p "$RCG_BUILDD" 2>/dev/null ; then + sudo chown $RTS_USER:$RTS_USER "$RCG_BUILDD" + else + log "Could not create build directory '$RCG_BUILDD' (owner: $RTS_USER:$RTS_USER)." + log "Please create manually to continue." + exit 1 + fi + log "configuring RCG_BUILDD $RCG_BUILDD..." cd "$RCG_BUILDD" - "$RCG_SRC"/configure + sudo -u $RTS_USER "$RCG_SRC"/configure +} + +prep_target(){ + if [ -d "$RCG_TARGET" ] ; then + return + fi + log "creating RCG_TARGET $RCG_TARGET..." + if sudo -u $RTS_USER mkdir -p "$RCG_TARGET" 2>/dev/null ; then + sudo -u $RTS_USER chown $RTS_USER:$RTS_USER "$RCG_TARGET" + elif sudo mkdir -p "$RCG_TARGET" 2>/dev/null ; then + sudo chown $RTS_USER:$RTS_USER "$RCG_TARGET" + else + log "Could not create target directory '$RCG_TARGET' (owner: $RTS_USER:$RTS_USER)." + log "Please create manually to continue." + exit 1 + fi + sudo -u $RTS_USER mkdir -p ${RCG_TARGET}/{target,chans/tmp} } ######## @@ -224,6 +249,7 @@ case $cmd in exit 2 fi check_env + prep_target install_sys $@ ;; 'start') diff --git a/support/bin/rts_epics_exec b/support/bin/rts_epics_exec index 8425af5de5aa51f424cfa8e5999e4fb8bf9a966b..605c6a5bdb2f66e9f111cb9a663f51c8e5cf82dc 100755 --- a/support/bin/rts_epics_exec +++ b/support/bin/rts_epics_exec @@ -6,6 +6,7 @@ if [ -z "$sys" ] ; then exit 1 fi export EPICS_DB_INCLUDE_PATH=/usr/lib/epics/dbd -TARGET=${OPTRTCDS}/target/${sys}/${sys}epics -cd ${TARGET} -exec ${TARGET}/${sys}epics ${sys}epics${IFO}.cmd +TARGET=/opt/rtcds/${SITE,,*}/${IFO,,*} +ETARGET=${TARGET}/target/${sys}/${sys}epics +cd ${ETARGET} +exec ./${sys}epics ${sys}epics${IFO}.cmd diff --git a/support/bin/rts_module_ctrl b/support/bin/rts_module_ctrl index 25c44ef7de09f01867cc5d7e6ca6c4158ff5181e..e5ad158613af5e30594cda95d2f83cde173448dd 100755 --- a/support/bin/rts_module_ctrl +++ b/support/bin/rts_module_ctrl @@ -6,10 +6,10 @@ if [ -z "$sys" ] ; then echo "usage: $(basename $0) start|stop <sys>" exit 1 fi -TARGET=${OPTRTCDS}/target/${sys} +TARGET=/opt/rtcds/${SITE,,*}/${IFO,,*} case $cmd in start) - /sbin/insmod "$TARGET"/bin/${sys}.ko + /sbin/insmod "$TARGET"/target/${sys}/bin/${sys}.ko ;; stop) /sbin/rmmod ${sys}