#!/bin/bash
ls-http()
{
wget -O - ${1:-http://localhost:80/} 2>/dev/null \
 | grep href= | grep -v '[[]DIR]' | sed -e 's/.*href="//' -e 's/".*//'
}
[[ ! -x /bin/ksh93 ]] && echo 'FATAL ERROR: /bin/ksh93 is missing, "rmnlib" environment cannot be installed' && exit 1
echo INFO: /bin/ksh93 FOUND, OK for install
#export MASTER_REPOSITORY=${1:-guillimin.clumeq.ca:/sb/home/winger/ssm-domains/repository}
export MASTER_REPOSITORY=${1:-http://scamail.sca.uqam.ca/armnlib/repository/}
shift
#
# BOOTSTRAP install for environment
# ssm and setup domains will be installed
# this gets done WITHOUT environment
#
# optional argument 1 is the install tree top directory
#
# umask 002 pour ne pas creer de problemes avec les ACLs
umask 002
#
# cd to install tree top directory
#
cd ${1:-${HOME}/ssm-domains-base} || (echo FATAL: installation directory ${1:-${HOME}/ssm-domains-base} not found ; exit 1 ) || exit 1
export BASEDIR=`pwd -P`
echo BASEDIR=$BASEDIR
#
# fill/refresh repository from master repository
#
export REPOSITORY=$BASEDIR/repository
mkdir ${REPOSITORY}
(cd ${REPOSITORY} && for i in $(ls-http $MASTER_REPOSITORY) ; do rm -f $i ; wget --no-verbose ${MASTER_REPOSITORY}/$i ; chmod 755 $i ; done )
#rsync -aruvxlH -e ssh valin@${MASTER_REPOSITORY} ${BASEDIR}
#
# basedir now in "true path" form
#
mkdir -p $BASEDIR/setup
cd $BASEDIR/setup || (echo FATAL: cannot cd to $BASEDIR/setup ; exit 1) || exit 1
mkdir -p ssm_8.11
#
# check python version, if subprocess module missing, make it available 
#
python -c "import subprocess" 2>/dev/null || FixPython=true
if [[ "$FixPython" == true ]]
then
  echo INFO: getting subprocess module 
  export PYTHONPATH=${BASEDIR}/repository
fi
python -c "import subprocess" 2>/dev/null || (echo FATAL: inadequate version of python, 2.4 minimum ; exit 1 ) || exit 1
echo INFO: python is OK 
#
# install ssm version 8.11 and inject a copy of subprocess.py if necessary (python 2.3)
#
if [[ ! -d $BASEDIR/setup/ssm_8.11/all/etc/ssm.d ]]
then
  set -x
  echo y | $REPOSITORY/ssm-installer_8.11_all.ssm --ssmRepositoryUrl $REPOSITORY -d $BASEDIR/setup/ssm_8.11 \
                                                  -U ${USER:-$LOGNAME}} -G ${MyGid} --force
  set +x
  [[ "$FixPython" == true ]] && cp $REPOSITORY/subprocess.py $BASEDIR/setup/ssm_8.11/ssm_8.11_all/lib/ssm.d/ssm/subprocess.py
  unset PYTHONPATH
else
  echo ssm_8.11 already installed in $BASEDIR/setup/ssm_8.11
fi
#
# create setup domains
#
export SSM_SYSTEM_DOMAIN_HOME="$BASEDIR/setup/ssm_8.11"
export SSM_DOMAIN_HOME="$BASEDIR/setup/ssm_8.11"
. "${SSM_DOMAIN_HOME}/etc/ssm.d/profile"
export SSM_USER_DOMAIN_HOME="$BASEDIR/setup/ssm_8.11"
ssm version || exit 1
set -x
ssm created -d $BASEDIR/setup/ssm_8.11 --defaultRepositorySource $REPOSITORY -L ssm_8.11 -y 
mkdir $BASEDIR/setup/v_001 && ssm created -d $BASEDIR/setup/v_001 --defaultRepositorySource $REPOSITORY -L environment_setup -y 
#
# add repository locator for make-ssm (missing because not created with s.ssm-creat)
#
echo "$REPOSITORY" >$BASEDIR/setup/v_001/.SsmDepot
#
# install and publish packages
#
ssm install -p ssm-marker_1.0_all --skipOnInstalled -d $BASEDIR/setup/ssm_8.11 -y 
ssm publish -p ssm-marker_1.0_all --skipOnPublished -d $BASEDIR/setup/ssm_8.11 -y 
ssm install -p 00000-dot-profile_1.0_multi --skipOnInstalled -d $BASEDIR/setup/v_001 -y 
ssm publish -p 00000-dot-profile_1.0_multi --skipOnPublished -d $BASEDIR/setup/v_001 -y 
ssm install -p zzzzz-dot-profile_1.0_multi --skipOnInstalled -d $BASEDIR/setup/v_001 -y 
ssm publish -p zzzzz-dot-profile_1.0_multi --skipOnPublished -d $BASEDIR/setup/v_001 -y 
echo EC_ARCH=$EC_ARCH ARCH=$ARCH BASE_ARCH=$BASE_ARCH
ssm install -p dot-profile-setup_1.0_multi --skipOnInstalled -d $BASEDIR/setup/v_001 -y 
ssm publish -p dot-profile-setup_1.0_multi --skipOnPublished -d $BASEDIR/setup/v_001 -y 
ssm install -p tool-libs_1.0_multi --skipOnInstalled -d $BASEDIR/setup/v_001 -y 
ssm publish -p tool-libs_1.0_multi --skipOnPublished -d $BASEDIR/setup/v_001 -y 
#
# register ssm 8.11 as a subdomain of setup domain
#
ssm registerd -D $BASEDIR/setup/ssm_8.11 -d $BASEDIR/setup/v_001 --force --verbose
# rajouter le code pour arranger le masque des ACL le cas echeant
cd $BASEDIR/
#
# create tools, libs, atm domains
#
set -x
mkdir -p atm libs tools
mkdir tools/run-tools && ssm created -d $BASEDIR/tools/run-tools --defaultRepositorySource $REPOSITORY -L runtime_tools -y
for Package in afsisio_1.0u_all  armnlib_1.0u_all env-climat_1.0u_all env-configs_1.0u_all base_1.0u_linux24-x86-64 env-climat_1.0u_linux24-x86-64 env-utils_1.0u_all
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/tools/run-tools -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/tools/run-tools -y
done
mkdir tools/mpi-tools && ssm created -d $BASEDIR/tools/mpi-tools --defaultRepositorySource $REPOSITORY -L mpi_tools -y
mkdir tools/dev-tools && ssm created -d $BASEDIR/tools/dev-tools --defaultRepositorySource $REPOSITORY -L development_tools -y
for Package in env-utils_1.0_all code-tools_1.0_all env-utils_1.0_linux24-x86-64 fsplit_1.0_linux24-i386 \
               r.gppf_1.0_linux24-x86-64 difftools_1.0_all etagere_1.0_all misc-utils_1.0_multi 
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/tools/dev-tools -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/tools/dev-tools -y
done
mkdir tools/vis-tools && ssm created -d $BASEDIR/tools/vis-tools --defaultRepositorySource $REPOSITORY -L visualization_tools -y
for Package in xrec_5.x_linux24-i386
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/tools/vis-tools -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/tools/vis-tools -y
done
mkdir tools/diag-tools && ssm created -d $BASEDIR/tools/diag-tools --defaultRepositorySource $REPOSITORY -L diagnostic_tools -y
for Package in rdiag_0.0u_linux24-x86-64
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/tools/diag-tools -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/tools/diag-tools -y
done
mkdir libs/hpcs-dev && ssm created -d $BASEDIR/libs/hpcs-dev --defaultRepositorySource $REPOSITORY -L hpcs_libraries -y
for Package in perf-tools_1.0_multi  rpncomm_x.y.z_multi
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/libs/hpcs-dev -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/libs/hpcs-dev -y
done
mkdir libs/rmnlib-dev && ssm created -d $BASEDIR/libs/rmnlib-dev --defaultRepositorySource $REPOSITORY -L rmnlib_libraries -y
for  Package in environment-helpers_1.0u_all rmnlib_1.0u_linux24-x86-64
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/libs/rmnlib-dev -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/libs/rmnlib-dev -y
done
mkdir -p atm/GEMCLIM 
mkdir atm/GEMCLIM/v_3.3.3 && ssm created -d $BASEDIR/atm/GEMCLIM/v_3.3.3 --defaultRepositorySource $REPOSITORY -L gemclim_3.3.3 -y
for Package in gemclim_3.3.3_all gemclim_3.3.3_linux24-x86-64 physics_5.0.4-c_linux24-x86-64 
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/atm/GEMCLIM/v_3.3.3 -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/atm/GEMCLIM/v_3.3.3 -y
done
mkdir atm/GEMCLIM/v_3.3.2.1 && ssm created -d $BASEDIR/atm/GEMCLIM/v_3.3.2.1 --defaultRepositorySource $REPOSITORY -L gemclim_3.3.2.1 -y
for Package in gemclim_3.3.2.1_all gemclim_3.3.2.1_linux26-x86-64 physics_5.0.4-b_linux26-x86-64
do
  ssm install -p ${Package} --skipOnInstalled -d $BASEDIR/atm/GEMCLIM/v_3.3.2.1 -y
  ssm publish -p ${Package} --skipOnPublished -d $BASEDIR/atm/GEMCLIM/v_3.3.2.1 -y
done
repository/FIX_SHORTCUTS
repository/FIX_CACHE
repository/FIX_SSMDEPOT
exit 0
