Files
mocha/setup_each_matlab.sh

110 lines
3.6 KiB
Bash

#!/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