Skip to content
Snippets Groups Projects
create_modulefile.sh 2.93 KiB
Newer Older
  • Learn to ignore specific revisions
  • Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    # !/bin/bash
    
    # load config
    . ../CONFIG
    
    IMAGE=$1
    VERSION=$2
    OMPI=$3
    # 1 ... classic, 2 ... gpu, 3 ... mic
    VERSION2=$VERSION
    
    
    NAME="$VERSION.lua"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    
    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"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
       else
          echo "Unsupported OS Version"
          exit 1
       fi
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    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
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    elif [ "$IMAGE"  == "Ubuntu" ]; then
       PATH="./ubuntu/template"
    
    elif [ "$IMAGE"  == "Debian" ]; then
       PATH="./ubuntu/template"
    elif [ "$IMAGE"  == "Fedora" ]; then
       PATH="./ubuntu/template"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    else
       echo "Unsupported OS"
       exit 1
    fi
    
    /bin/cat "$PATH" > "$NAME"
    
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    echo "conflict(\"apptainer\")" >> "$NAME"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    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
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    echo "if not isloaded(\"apptainer\") then" >> "$NAME"
    echo "    load(\"apptainer\")" >> "$NAME"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    echo "end" >> "$NAME"
    echo "" >> "$NAME"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    echo "if not isloaded(\"apptainer-wrappers\") then" >> "$NAME"
    echo "    load(\"apptainer-wrappers\")" >> "$NAME"
    
    echo "end" >> "$NAME"
    echo "" >> "$NAME"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    echo "add_property(\"state\", \"apptainer\")" >> "$NAME"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    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"
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    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
    
    Lukáš Krupčík's avatar
    Lukáš Krupčík committed
    fi