#!/bin/bash # user prompt for setup step while [[ ! $step =~ ^(0|1|2|3|4|5|6)$ ]] do echo "Which setup step should be run?" echo " 0 - cleanup (make clean)" echo " 1 - local build (make)" echo " 2 - test local build (matlab -batch ...)" echo " 3 - install build to /opt/gfa/cafe/mocha/ (make install)" echo " 4 - deploy build to pmodules" echo " 5 - update pmodule info files" echo " 6 - test module (module load && matlab -batch ...)" read -p "choose step (0-6): " step done ca office network module use Cafe vrhel=${RHREL} vcafe=1.22.0 vcafem=1.22 vepics=7.0.9 for vmatlab in 2025a 2024b 2024a 2023b 2023a 2022b 2022a 2021b 2021a 2020b 2020a 2019b 2019a 2018b 2018a do if [[ "$vmatlab" =~ ^(2018a|2018b|2019a|2019b|2020a|2020b|2021a|2021b)$ ]]; then vgcc=7.3.0 elif [[ "$vmatlab" =~ ^(2022a|2022b|2023a|2023b|2024a|2024b|2025a)$ ]]; then vgcc=10.4.0 fi printf "\n\n\n=======================================================================\n" printf "=======================================================================\n" echo "Versions" echo " Matlab: $vmatlab" echo " RHEL: $vrhel" echo " gcc: $vgcc" echo " Cafe: $vcafe" echo " EPICS: $vepics" printf "=======================================================================\n" printf "=======================================================================\n" module unload cafe-matlab module unload matlab module load matlab/$vmatlab module unload gcc module load gcc/$vgcc module list if [ $step -eq 0 ]; then echo "0 - cleanup (make clean)" make -f makefile_rel_$vcafem-gcc-$vgcc clean elif [ $step -eq 1 ]; then echo "1 - local build (make)" make -f makefile_rel_$vcafem-gcc-$vgcc elif [ $step -eq 2 ]; then echo "2 - test local build (matlab -batch ...)" if [[ "$vmatlab" =~ ^(2019a|2019b|2020a|2020b|2021a|2021b|2022a|2022b|2023a|2023b|2024a|2024b|2025a)$ ]]; then matlab -batch "cd RHEL8-x86_64/$vmatlab;disp(mocha('version'));example" else matlab -nodisplay -nosplash -nodesktop -r "cd RHEL8-x86_64/$vmatlab;disp(mocha('version'));example;exit" fi elif [ $step -eq 3 ]; then echo "3 - install build to /opt/gfa/cafe/mocha/ (make install)" make -f makefile_rel_$vcafem-gcc-$vgcc install elif [ $step -eq 4 ]; then echo "4 - deploy build to pmodules" new_dir="/opt/psi/Cafe/cafe-matlab/$vmatlab-$vrhel-gcc-$vgcc-cafe-$vcafe/libexec" src_dir="/opt/gfa/cafe/mocha/mocha-$vcafe-gcc-$vgcc/lib/$vrhel-x86_64/$vmatlab" echo " new Dir: $new_dir" echo " src Dir: $src_dir" mkdir -p $new_dir # cp mocha mex file cp $src_dir/* $new_dir # cp mca/ca scripts cp /afs/psi.ch/project/cafe/gitlab/CAFE/mocha/scripts/* $new_dir ls -la $new_dir rm -f /opt/psi/Cafe/cafe-matlab/$vmatlab ln -s $vmatlab-$vrhel-gcc-$vgcc-cafe-$vcafe /opt/psi/Cafe/cafe-matlab/$vmatlab elif [ $step -eq 5 ]; then echo "5 - update pmodule info files" cp modulefile_template $vmatlab sed -i -e "s/vmatlab/$vmatlab/g" $vmatlab sed -i -e "s/vrhel/$vrhel/g" $vmatlab sed -i -e "s/vepics/$vepics/g" $vmatlab sed -i -e "s/vgcc/$vgcc/g" $vmatlab sed -i -e "s/vcafe/$vcafe/g" $vmatlab cp $vmatlab /opt/psi/Cafe/modulefiles/cafe-matlab/$vmatlab rm $vmatlab elif [ $step -eq 6 ]; then echo "6 - test module (module load && matlab -batch ...)" echo $vmatlab module help cafe-matlab/$vmatlab module load cafe-matlab/$vmatlab module list if [[ "$vmatlab" =~ ^(2019a|2019b|2020a|2020b|2021a|2021b|2022a|2022b|2023a|2023b|2024a|2024b|2025a)$ ]]; then matlab -batch "cd RHEL8-x86_64/$vmatlab;disp(mocha('version'));example" else matlab -nodisplay -nosplash -nodesktop -r "cd RHEL8-x86_64/$vmatlab;disp(mocha('version'));example;exit" fi fi done