Skip to content
Snippets Groups Projects
create_modulefile.sh 2.93 KiB
# !/bin/bash

# load config
. ../CONFIG

IMAGE=$1
VERSION=$2
OMPI=$3
# 1 ... classic, 2 ... gpu, 3 ... mic
VERSION2=$VERSION

NAME="$VERSION.lua"

if [ "$IMAGE"  == "CentOS" ]; then
   if [ "$VERSION" == "6" ]; then
      PATH="./centos/6"
   elif [ "$VERSION" == "7" ]; then
      PATH="./centos/7"
   elif [ "$VERSION" == "8" ]; then
      PATH="./centos/8"
   else
      echo "Unsupported OS Version"
      exit 1
   fi
elif [ "$IMAGE"  == "Rocky" ]; then
   if [ "$VERSION" == "8" ]; then
      PATH="./rocky/8"
   elif [ "$VERSION" == "9" ]; then
      PATH="./rocky/9"
   else
      echo "Unsupported OS Version"
      exit 1
   fi
elif [ "$IMAGE"  == "Ubuntu" ]; then
   PATH="./ubuntu/template"
elif [ "$IMAGE"  == "Debian" ]; then
   PATH="./ubuntu/template"
elif [ "$IMAGE"  == "Fedora" ]; then
   PATH="./ubuntu/template"
else
   echo "Unsupported OS"
   exit 1
fi

/bin/cat "$PATH" > "$NAME"

echo "conflict(\"apptainer\")" >> "$NAME"
echo "" >> "$NAME"
if [ ! -z $OMPI ]; then
   echo "if not isloaded(\"OpenMPI/3.1.4-GCC-8.3.0-2.32\") then" >> "$NAME"
   echo "    load(\"OpenMPI/3.1.4-GCC-8.3.0-2.32\")" >> "$NAME"
   echo "end" >> "$NAME"
   echo "" >> "$NAME"
fi
echo "if not isloaded(\"apptainer\") then" >> "$NAME"
echo "    load(\"apptainer\")" >> "$NAME"
echo "end" >> "$NAME"
echo "" >> "$NAME"
echo "if not isloaded(\"apptainer-wrappers\") then" >> "$NAME"
echo "    load(\"apptainer-wrappers\")" >> "$NAME"
echo "end" >> "$NAME"
echo "" >> "$NAME"
echo "add_property(\"state\", \"apptainer\")" >> "$NAME"
echo "" >> "$NAME"
echo "set_alias(\"image-update\",\". image-update\")" >> "$NAME"
echo "setenv(\"IMAGE_ROOT\", \"/apps/all/OS/$IMAGE/$VERSION2\")" >> "$NAME"
echo "setenv(\"IMAGE_OS\", \"$IMAGE\")" >> "$NAME"
echo "setenv(\"IMAGE_VERSION\", \"$VERSION2\")" >> "$NAME"
echo "setenv(\"IMAGE_PATH_LOCAL\", \"\")" >> "$NAME"
echo "" >> "$NAME"
echo "execute {cmd=\"source /apps/all/OS/bin/image-load\",modeA={\"load\"}}" >> "$NAME"

if [ ! -d "$MODULEFILE_PATH/all/$IMAGE" ]; then
   /bin/mkdir -p "$MODULEFILE_PATH/all/$IMAGE" || exit 1
fi

if [ ! -f "$MODULEFILE_PATH/all/$IMAGE/$NAME" ]; then
   /bin/mv ./$NAME $MODULEFILE_PATH/all/$IMAGE/$NAME || exit 1
   /bin/chown $USER_IMAGE:$USER_IMAGE $MODULEFILE_PATH/all/$IMAGE/$NAME && /bin/chmod 0664 $MODULEFILE_PATH/all/$IMAGE/$NAME || exit 1
else
   MD5SUM_orig=`/usr/bin/md5sum /apps/modules/all/$IMAGE/$NAME`
   MD5SUM_new=`/usr/bin/md5sum ./$NAME`
   if [ ! "MD5SUM_orig" == "MD5SUM_new" ]; then
      /bin/mv ./$NAME $MODULEFILE_PATH/all/$IMAGE/$NAME || exit 1
      /bin/chown $USER_IMAGE:$USER_IMAGE $MODULEFILE_PATH/all/$IMAGE/$NAME && /bin/chmod 0664 $MODULEFILE_PATH/all/$IMAGE/$NAME || exit 1
   fi
fi

if [ ! -d "$MODULEFILE_PATH/OS/$IMAGE" ]; then
   /bin/mkdir -p $MODULEFILE_PATH/OS/$IMAGE || exit 1
fi

if [ ! -f "$MODULEFILE_PATH/OS/$IMAGE/$NAME" ]; then
   /bin/ln -s $MODULEFILE_PATH/all/$IMAGE/$NAME $MODULEFILE_PATH/OS/$IMAGE/$NAME || exit 1
   /bin/chown easybuild: $MODULEFILE_PATH/OS/$IMAGE/$NAME
fi