#!/bin/ksh # ## ============== MODIFY THE SECTION BELOW TO ADAPT TO YOUR ENVIRONMENT ============== # # # uncomment following line if local python is not adequate # this may or may not work, if it does not, it is necessary # to install and make available python beforehand # PYTHON_NOT_AVAILABLE=--installAndPublishPython # # Path of installation. For example: /$HOME/ssm INST_DOMAIN=$HOME/ssm # # Binary architecture. The possible values are # uncomment the appropriate ARCHITECTURE= line # ARCHITECTURE=aix51-ppc-32 ; EC_ARCH=`uname -s` # ARCHITECTURE=aix51-ppc-64 ;EC_ARCH=`uname -s` # ARCHITECTURE=irix65-mips-n32 ; EC_ARCH=`uname -s` # ARCHITECTURE=linux24-i386 ; EC_ARCH=`uname -s` # ARCHITECTURE=linux24-x86-64 ; EC_ARCH=`uname -s`_x86-64 # ARCHITECTURE=linux24-ia64 ; EC_ARCH=`uname -s`_ia64 export EC_ARCH ARCH export ARCHITECTURE export INST_DOMAIN # # Change to true to install PGI (Available from inside Environment Canada's firewall only) INSTALL_PGI=false # INSTALL_PGI=true # # Change to true to install mpich INSTALL_MPICH=false # INSTALL_MPICH=true # # adjust and uncomment the COMPILER_RULES_FILE=... line if not installing PGI # the following command can be used to get a template for the Compiler_rules file # wget http://collaboration.cmc.ec.gc.ca/science/ssm/CUSTOM_Compiler_rules ; mv CUSTOM_Compiler_rules Compiler_rules # you must then edit this file to adjust it for your compiler COMPILER_RULES_FILE=${HOME}/Compiler_rules # ## ============== USER SHOULD NOT NEED TO MODIFY ANYTHING BEYOND THIS POINT ============== # # if [[ -z $ARCHITECTURE || -z $INST_DOMAIN ]] then echo You need to set the installation path and the binary architecture in this installation file before you can use it exit 1 fi install_publish() { ssm install --clobber -d $INST_DOMAIN -p ${1} --force && \ ssm publish -d $INST_DOMAIN -p ${1} --force || exit 1 } export ARCH=$EC_ARCH export INST_USER=${USER:-$LOGNAME} set nil `groups` export INST_GROUP=$2 export REPO=${REPO:-http://collaboration.cmc.ec.gc.ca/science/ssm} ## ========================== # PHASE 1, install ssm ## ========================== if [[ -x ${INST_DOMAIN}/all/bin/ssm ]] ; then echo PHASE 1 done, skipping else # get installer rm -f ssm-installer_latest_all.ssm wget $REPO/base/ssm-installer_latest_all.ssm chmod 755 ssm-installer_latest_all.ssm # create domain for rmnlib mkdir ${INST_DOMAIN} if [[ -d ${INST_DOMAIN} ]] then echo INSTALLING into ${INST_DOMAIN} else echo ERROR: ${INST_DOMAIN} DOES NOT EXIST, CANNOT INSTALL fi touch $HOME/.profile chmod 444 $HOME/.profile ./ssm-installer_latest_all.ssm -d ${INST_DOMAIN} -G ${INST_GROUP} -U ${INST_USER} \ --defaultRepositorySource "$REPO" \ --pythonRepositoryUrl $REPO/base \ --ssmRepositoryUrl $REPO/base ${PYTHON_NOT_AVAILABLE} \ --user -L RMNLIB-EXPORT || exit 1 rm -f ssm-installer_latest_all.ssm rm -f $HOME/ECssm_${EC_ARCH} $HOME/.profile_${EC_ARCH} ln -s ${INST_DOMAIN} $HOME/ECssm_${EC_ARCH} ln -s ECssm_${EC_ARCH}/all/share/env_univ/.profile $HOME/.profile_${EC_ARCH} echo >>${INST_DOMAIN}/etc/ssm.d/sources.list echo -n http://web-mrb.cmc.ec.gc.ca:9080/ssm >>${INST_DOMAIN}/etc/ssm.d/sources.list echo ================ PHASE 1 finished, ssm is installed ================ echo you can type ./install_ssm.ksh to proceed to next install phase exit 0 fi ## ========================== # PHASE 1, END ## ========================== ## ========================== # PHASE 2, base packages ## ========================== cd ${INST_DOMAIN} if [[ -d ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include ]] then echo PHASE 2 done, skipping else # activate environment export SSMDOMAINHOME=${INST_DOMAIN} if [ -r "${SSMDOMAINHOME}/etc/ssm.d/profile" ]; then . "${SSMDOMAINHOME}/etc/ssm.d/profile" else echo ERROR: cannot find ${SSMDOMAINHOME}/etc/ssm.d/profile exit 1 fi export SSMUSERDOMAINHOME=${INST_DOMAIN} install_publish infrastructure_1.0_${ARCHITECTURE} install_publish environment-base_1.0_all install_publish environment-base_1.0_${ARCHITECTURE} install_publish r.gppf_1.0_${ARCHITECTURE} install_publish env-code-tools_1.0_all install_publish env-utils_1.0_all install_publish data-basic_1.0_all install_publish environment-includes_1.0_all install_publish profile-setup_1.0_all install_publish afsisio_1.0_all ssm install -d `pwd` -p custom-compiler-rules_1.0_all --force || exit 1 echo ===================================================================================================== echo PHASE 2 finished, base packages are now installed echo you can now generate and test the proper Compiler_rules file for your installation, go to directory echo ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup echo you can then type ./install_ssm.ksh to proceed to next install phase echo ===================================================================================================== exit 0 fi ## ========================== # PHASE 2, END ## ========================== ## ========================== # PHASE 3, compiler ## ========================== if [[ -r ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/DONE ]] then echo PHASE 3 done, skipping else # re activate environment export SSMDOMAINHOME=${INST_DOMAIN} if [ -r "${SSMDOMAINHOME}/etc/ssm.d/profile" ]; then . "${SSMDOMAINHOME}/etc/ssm.d/profile" else echo ERROR: cannot find ${SSMDOMAINHOME}/etc/ssm.d/profile exit 1 fi . r.ssmuse.dot ${INST_DOMAIN} # # continue installation (install either the PGI compiler or the setup for the local compiler) # if [[ $INSTALL_PGI = true ]] then ssm install --clobber -d `pwd` -p PGI-CMC_6.1-1_${ARCHITECTURE} -u "http://web-mrb.cmc.ec.gc.ca:9080 ssm" --force && \ ssm publish -d `pwd` -p PGI-CMC_6.1-1_${ARCHITECTURE} --force || exit 1 else echo installing Compiler_rules into include/${EC_ARCH}_CUSTOM/Compiler_rules mkdir -p custom-compiler-rules_1.0_all/include/${EC_ARCH}_CUSTOM COMPILER_RULES_FILE=custom-compiler-rules_1.0_all/setup/include/Compiler_rules cp ${COMPILER_RULES_FILE} custom-compiler-rules_1.0_all/include/${EC_ARCH}_CUSTOM/Compiler_rules || exit 1 cp custom-compiler-rules_1.0_all/setup/include/rpn_macros_arch.h \ custom-compiler-rules_1.0_all/include/${EC_ARCH}_CUSTOM/rpn_macros_arch.h || exit 1 ssm publish -d `pwd` -p custom-compiler-rules_1.0_all --force || exit 1 fi . r.ssmuse.dot ${INST_DOMAIN} echo making directory $ARMNLIB/lib/$EC_ARCH mkdir -p $ARMNLIB/lib/$EC_ARCH # test the FORTRAN compiler mkdir -p /tmp/armnlib cat </tmp/armnlib/tata.f90 program tata print *,'Hello World' stop end EOT (cd /tmp/armnlib ; rm -f tata.bin ; r.f90 -V tata.f90 -o tata.bin ; rm -f tata.f90) /tmp/armnlib/tata.bin || echo SOMETHING WENT VERY WRONG WITH THE COMPILER INSTALL /tmp/armnlib/tata.bin || exit 1 cat </tmp/armnlib/tata.f90 program tata print *,'Hello World' stop end EOT (cd /tmp/armnlib ; rm -f tata.bin ; r.compile -src tata.f90 -o tata.bin ; rm -f tata.f90) /tmp/armnlib/tata.bin || echo SOMETHING WENT VERY WRONG WITH THE COMPILER INSTALL /tmp/armnlib/tata.bin || exit 1 echo ===================================================================================================== echo PHASE 3 finished, compiler is installed and a quick test has been successful echo DONE > ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/DONE echo you can type ./install_ssm.ksh to proceed to next install phase exit 0 fi ## ========================== # PHASE 3, END ## ========================== ## ========================== # PHASE 4, MPI, netcdf ## ========================== if [[ -r ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/PHASE4 ]] then echo PHASE 4 done, skipping else # re activate environment export SSMDOMAINHOME=${INST_DOMAIN} if [ -r "${SSMDOMAINHOME}/etc/ssm.d/profile" ]; then . "${SSMDOMAINHOME}/etc/ssm.d/profile" else echo ERROR: cannot find ${SSMDOMAINHOME}/etc/ssm.d/profile exit 1 fi . r.ssmuse.dot ${INST_DOMAIN} # install netcdf and mpich install_publish netcdf_3.6.0-p1_${ARCHITECTURE} # test mpi installation if [[ $INSTALL_MPICH = true ]] then install_publish Mpich_1.2.7-p1_${ARCHITECTURE} (cd /tmp/armnlib ; cp $INST_DOMAIN/Mpich_1.2.7-p1_${ARCHITECTURE}/maint/demo_mpi.f . ; r.compile -src demo_mpi.f -mpi -o demo_mpi) mpirun -np 2 /tmp/armnlib/demo_mpi rm -f /tmp/armnlib/demo* fi echo echo ===================================================================================================== echo PHASE 4 finished, MPICH and netcdf have been installed with the local compiler echo you can type ./install_ssm.ksh to proceed to next install phase echo The ssm environment was successfully installed echo PHASE4 > ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/PHASE4 exit 0 fi ## ========================== # PHASE 4, END ## ========================== if [[ -r ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/PHASE5 ]] then echo PHASE 5 done, exiting exit 0 fi if [[ "$DO_PHASE5" != "" ]] then # re activate environment export SSMDOMAINHOME=${INST_DOMAIN} if [ -r "${SSMDOMAINHOME}/etc/ssm.d/profile" ]; then . "${SSMDOMAINHOME}/etc/ssm.d/profile" else echo ERROR: cannot find ${SSMDOMAINHOME}/etc/ssm.d/profile exit 1 fi . r.ssmuse.dot ${INST_DOMAIN} install_publish environment-lib-pub_1.0_${ARCHITECTURE} install_publish environment-lib-priv_1.0_${ARCHITECTURE} install_publish rmnlib-bin_1.0_${ARCHITECTURE} install_publish data-samples_1.0_all install_publish env-etagere_1.0_all install_publish env-configs_1.0_all install_publish env-graf_1.0_all install_publish env-base_1.0_all install_publish env-xutils_1.0_all install_publish env-batch_1.0_all install_publish rmnlib-tbin_1.0_${ARCHITECTURE} mkdir ${SSMDOMAINHOME}/rmnlib-tbin_1.0_${ARCHITECTURE}/bin echo echo ===================================================================================================== echo PHASE 5 finished, extensions are installed echo you can type ./install_ssm.ksh to proceed to next install phase echo The ssm environment was successfully installed echo PHASE5 > ${INST_DOMAIN}/custom-compiler-rules_1.0_all/setup/include/PHASE5 exit 0 fi ## ========================== # PHASE 5, END ## ==========================