Files
startup_scripts/pshell
2025-09-30 11:58:45 +02:00

184 lines
4.8 KiB
Bash
Executable File

#!/bin/bash
#Check if running as e-account
for i in "$@"
do
case $i in
-ea|-ea=*)
export ea="${i#*=}"
export pars=""
export epars="-data=~/Data1"
echo "Running as e-account"
#Replace ea into eax
for j in "$@"
do
case $j in
-ea|-ea=*)
pars+='-eax '
;;
*) # unknown option
pars+=$j
pars+=' '
;;
esac
done
if [[ $ea == "-ea" ]] ; then
export cmd='read -p "Enter E-Account: " ea ; echo Authenticating user ${ea}...; su ${ea} -c'
else
export cmd='echo Authenticating user ${ea}...; su ${ea} -c'
fi
if [ -z "$DESKTOP_SESSION" ]
then
echo "SSH session"
cookie=$(xauth list $DISPLAY)
export cmd="${cmd} 'xauth add $cookie; ${BASH_SOURCE} ${pars} ${epars}; sleep 2'"
else
echo "Desktop session"
export cmd="${cmd} '${BASH_SOURCE} ${pars} ${epars}; sleep 2'"
fi
#echo $cmd
xterm -T "Run PShell as E-Account" -fa monaco -fs 14 -bg black -fg green -geometry 80x15+400+100 -e "${cmd}"
exit
;;
esac
done
#Parse JVM arguments, Pshell version and JEP option
export PSHELL_VER=default
export VER_SUFFIX=
export JVM_ARGS=
export UCP=
export JAVA_VER=/opt/gfa/java/openjdk-12_32
export MAIN_CLASS=ch.psi.pshell.ui.App
export COMMAND=
PASS=()
while (($#)); do
case $1 in
-jvmarg=*) JVM_ARGS="${1#*=}" ;;
-ucp=*) UCP="${1#*=}" ;;
-version=*) PSHELL_VER="${1#*=}" ;;
-test) PSHELL_VER="testing" ;;
-last) PSHELL_VER="latest" ;;
-light) VER_SUFFIX="-light" ;;
-javaver=*) JAVA_VER="${1#*=}" ;;
-command=*) COMMAND="${1#*=}" ;;
*) PASS+=("$1") ;;
esac
shift
done
# Show them like before, in one line:
#printf 'Remaining args:'
#for arg in "${PASS[@]}"; do
# printf ' "%s"' "$arg"
#done
#echo
# Restore positional parameters cleanly
set -- "${PASS[@]}"
if [[ $VER_SUFFIX != "" ]] ; then
PSHELL_VER=${PSHELL_VER}${VER_SUFFIX}
fi
if [[ $PSHELL_VER != "default" ]] ; then
echo "Using PShell version:" ${PSHELL_VER}
fi
export JVM_EARGS=
#If starting with -cp the options in PShell manifest fle are not executed: must be don by command line
if [[ $JAVA_VER != *"1.8.0"* ]]; then
#echo 'Java > 1.8'
export JVM_EARGS="--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens java.desktop/sun.swing=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED"
fi
if [[ $PSHELL_VER == v2* ]]; then
MAIN_CLASS=ch.psi.pshell.App
JVM_EARGS="${JVM_EARGS} --enable-native-access=ALL-UNNAMED"
if [[ $JAVA_VER == "/opt/gfa/java/openjdk-12_32" ]]; then #If was not set, set default for v2
JAVA_VER=/opt/gfa/java/jdk-24.0.1
fi
fi
#Standard startup
if [[ $@ != **-py** || $VER_SUFFIX == "-light" ]] ; then
if [[ $UCP == "" ]] ; then
${JAVA_VER}/bin/java ${JVM_EARGS} ${JVM_ARGS} -jar /opt/gfa/pshell/${PSHELL_VER} ${COMMAND} "$@"
exit
fi
fi
if [[ $@ == **-py** && $VER_SUFFIX != "-light" ]] ; then
#Using JEP
#First clean path and vars
#unset JCPDS_PATH
#unset XRF_PEAK_LIBRARY
unset PYTHONPATH
CLEAN_PATH=""
for p in $(echo $PATH | sed 's/:/ /g') ; do
if [[ $p =~ ^.*/opt/gfa/python.*$ ]] ; then
echo 'Remove from path' $p
else
if [ "$CLEAN_PATH" == "" ] ; then
CLEAN_PATH=$p
else
CLEAN_PATH=$CLEAN_PATH:$p
fi
fi
done
if [[ $@ == **-py35** ]] ; then
#Python 3
echo "Setting Python 3.5 for JEP"
#Python 3.5
export PYTHONHOME=/opt/gfa/python-3.5/latest
export JEP_JAR=/opt/gfa/pshell/python/jep/3.9.1/jep-3.9.1.jar
export LD_LIBRARY_PATH=/opt/gfa/pshell/python/jep/3.9.1
export LD_PRELOAD=${PYTHONHOME}/lib/libpython3.5m.so
else
if [[ $@ == **-py3** ]] ; then
#Python 3
echo "Setting Python 3.8 for JEP"
#Python 3.8
export PYTHONHOME=/opt/gfa/python-3.8/latest
export JEP_JAR=${PYTHONHOME}/lib/python3.8/site-packages/jep/jep-3.9.1.jar
export LD_LIBRARY_PATH=${PYTHONHOME}/lib/python3.8/site-packages/jep
export LD_PRELOAD=${PYTHONHOME}/lib/libpython3.8.so
else
#Python 2
echo "Setting Python 2 for JEP"
export PYTHONHOME=/exchange/tmp/pshell/python/anaconda2
export LD_LIBRARY_PATH=${PYTHONHOME}/lib/python2.7/site-packages/jep
export JEP_JAR=${PYTHONHOME}/lib/python2.7/site-packages/jep/jep-3.5.3.jar
fi
fi
fi
if [[ $UCP != "" ]] ; then
UCP=${UCP}:
fi
export PATH=${PYTHONHOME}/bin:$CLEAN_PATH
${JAVA_VER}/bin/java ${JVM_EARGS} ${JVM_ARGS} -cp ${UCP}/opt/gfa/pshell/${PSHELL_VER}:${JEP_JAR} ${MAIN_CLASS} ${COMMAND} "$@"