Salome HOME
*** empty log message ***
[tools/install.git] / config_files / common.sh
index 9a89b4d15c23c958759638eae44e6582e522fd39..d3c7afaf4bf3bd3d0e8494d7666ef3c6e3176c6b 100755 (executable)
@@ -6,7 +6,7 @@
 #  Author    : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
 #  Project   : SALOME
 #  Module    : Installation Wizard
-#  Copyright : 2002-2006 CEA
+#  Copyright : 2002-2007 CEA
 #
 #  This script is the part of the SALOME installation procedure.
 #
@@ -16,6 +16,30 @@ export DELIM="------"
 export SHRC="salome.sh"
 export CSHRC="salome.csh"
 
+
+#this function takes several parameters
+#first parameter contains path to module source filder
+#second parameters is value of $VERSION variables form MODULE.sh file
+
+check_salome_src_version(){
+root_dir=`printenv $1`
+module_version=$2
+
+if [ -n "$root_dir" ]; then
+    cfg_file=configure.ac
+    if [ ! -f ${root_dir}/${cfg_file} ] ; then
+       cfg_file=configure.in.base
+    fi
+    if [ -f ${root_dir}/${cfg_file} ] ; then
+       ver=`grep -e "^AC_INIT" ${root_dir}/${cfg_file} | sed -e "s%.*\[\([[:digit:].]*\)\].*%\1%g"`
+       if [ "$ver" = "${module_version}" ]; then
+           return 0
+       fi
+    fi
+fi
+return 1
+}
+
 #this function takes several parameters
 #first parameter contains descriptor of output file
 #next parameters is command for execution
@@ -84,8 +108,8 @@ for i in $SHRC $CSHRC ; do
     touch ${install_work}/$i
 done
 
-if [ $# -eq 3 ] ; then
-    product_name=$3;
+if [ $# -eq 4 ] ; then
+    product_name=$4;
     product_env=${install_work}/env_${product_name}.sh
     (test -e ${product_env} && rm ${product_env} )
 fi
@@ -126,19 +150,43 @@ done
 ### are created without using setenv(a|p) aliases.
 
 # 0. add /usr/lib or /usr/lib64 dir to the LD_LIBRARY_PATH
-if test `uname -m` = "x86_64" ; then
-echo 'export LD_LIBRARY_PATH=/usr/lib64:${LD_LIBRARY_PATH}' >> ${install_work}/$SHRC 2>/dev/null
+#if test `uname -m` = "x86_64" ; then
+#echo 'export LD_LIBRARY_PATH=/usr/lib64:${LD_LIBRARY_PATH}' >> ${install_work}/$SHRC 2>/dev/null
+#echo '' >> ${install_work}/$SHRC 2>/dev/null
+#else
+#echo 'export LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH}' >> ${install_work}/$SHRC 2>/dev/null
+#echo '' >> ${install_work}/$SHRC 2>/dev/null
+#fi
+
+# Licence activation 
+
+# Source of license environment file
+
+echo '#------ License activation ------' >> ${install_work}/$SHRC 2>/dev/null
+echo 'export LICENSE_FILE=/product/distene/dlim8.var.sh' >> ${install_work}/$SHRC 2>/dev/null
 echo '' >> ${install_work}/$SHRC 2>/dev/null
-else
-echo 'export LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH}' >> ${install_work}/$SHRC 2>/dev/null
+echo 'if [ -e "${LICENSE_FILE}" ] ; then' >> ${install_work}/$SHRC 2>/dev/null
+echo 'export SIMULOGD_LICENSE_FILE=29029@amun' >> ${install_work}/$SHRC 2>/dev/null
+echo 'source ${LICENSE_FILE}' >> ${install_work}/$SHRC 2>/dev/null
+echo 'fi' >> ${install_work}/$SHRC 2>/dev/null
 echo '' >> ${install_work}/$SHRC 2>/dev/null
-fi
 
 # 1. first dump all environment files into the $SHRC file
 product_sequence="$2"
+install_products="$3"
 for i in $product_sequence ; do
     env_file=${install_work}/env_${i}.sh
-    ( test -e $env_file && cat $env_file >> ${install_work}/$SHRC 2>/dev/null )
+    _env_file=${install_work}/_env_${i}.sh
+    if [ -e $_env_file ] ; then
+       cat $_env_file >> ${install_work}/$SHRC 2>/dev/null
+    elif [ -e $env_file ] ; then
+       echo $install_products | grep -q "\b${i}\b"
+       if [ $? -eq 1 ] ; then
+           cat $env_file | sed 's/^/## /' >> ${install_work}/$SHRC 2>/dev/null
+       else
+           cat $env_file >> ${install_work}/$SHRC 2>/dev/null
+       fi
+    fi
 done
 
 # 2. writing global functions to _salome.sh file
@@ -314,13 +362,13 @@ sed -e 's%export\([[:blank:]]*\)PYTHONPATH=\$[{]\?PYTHONPATH[}]\?:\(.*\)%exporta
 sed -e 's%export\([[:blank:]]*\)LD_RUN_PATH=\$[{]\?LD_RUN_PATH[}]\?:\(.*\)%exporta\1LD_RUN_PATH \2%g' -e 's%export\([[:blank:]]*\)LD_RUN_PATH=\(.*\):\$[{]\?LD_RUN_PATH[}]\?%exportp\1LD_RUN_PATH \2%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2
 
 # Setting "/usr/X11R6/lib" path in LD_LIBRARY_PATH for the libGL.so.1 file
-if test `uname -m` = "x86_64" ; then
-echo '# Setting /usr/X11R6/lib64 path in LD_LIBRARY_PATH for the libGL.so.1 file' >> ${INSTALL_WORK}/_tmp2
-echo 'export LD_LIBRARY_PATH=/usr/X11R6/lib64:${LD_LIBRARY_PATH}' >> ${INSTALL_WORK}/_tmp2
-else
-echo '# Setting /usr/X11R6/lib path in LD_LIBRARY_PATH for the libGL.so.1 file' >> ${INSTALL_WORK}/_tmp2
-echo 'export LD_LIBRARY_PATH=/usr/X11R6/lib:${LD_LIBRARY_PATH}' >> ${INSTALL_WORK}/_tmp2
-fi
+#if test `uname -m` = "x86_64" ; then
+#echo '# Setting /usr/X11R6/lib64 path in LD_LIBRARY_PATH for the libGL.so.1 file' >> ${INSTALL_WORK}/_tmp2
+#echo 'export LD_LIBRARY_PATH=/usr/X11R6/lib64:${LD_LIBRARY_PATH}' >> ${INSTALL_WORK}/_tmp2
+#else
+#echo '# Setting /usr/X11R6/lib path in LD_LIBRARY_PATH for the libGL.so.1 file' >> ${INSTALL_WORK}/_tmp2
+#echo 'export LD_LIBRARY_PATH=/usr/X11R6/lib:${LD_LIBRARY_PATH}' >> ${INSTALL_WORK}/_tmp2
+#fi
 
 cat ${INSTALL_WORK}/_tmp2 >> ${install_work}/_$SHRC
 
@@ -332,18 +380,24 @@ cat ${INSTALL_WORK}/_tmp1 >> ${install_work}/$CSHRC
 sed -e 's%export \([[:alnum:]_[:blank:]]*\)\=%setenv \1 %g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
 sed -e 's%exporta \([[:alnum:]_[:blank:]]*\)%setenva \1%g'  ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
 sed -e 's%exportp \([[:alnum:]_[:blank:]]*\)%setenvp \1%g'  ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
-sed -e 's%if \[ -n "\${ENV_FOR_LAUNCH}" \] ; then%if ( ${?ENV_FOR_LAUNCH} ) then%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
-sed -e 's%if \[ "\${ENV_FOR_LAUNCH}" == "1" \] ; then%if ( "\${ENV_FOR_LAUNCH}" == "1" ) then%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
-sed -e 's%^\([[:blank:]]*\)fi\([[:blank:]]*\)$%\1endif\2%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
-cat ${INSTALL_WORK}/_tmp2 >> ${install_work}/_$CSHRC 2>/dev/null
+sed -e 's%if \[ -n "\${PYTHONPATH}" \] ; then%if ( ${?PYTHONPATH} ) then%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
+sed -e 's%if \[ -n "\${ENV_FOR_LAUNCH}" \] ; then%if ( ${?ENV_FOR_LAUNCH} ) then%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
+sed -e 's%if \[ "\${ENV_FOR_LAUNCH}" == "1" \] ; then%if ( "\${ENV_FOR_LAUNCH}" == "1" ) then%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
+sed -e 's%^\([[:blank:]]*\)fi\([[:blank:]]*\)$%\1endif\2%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
+sed -e 's%var.sh%var.csh%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null
+sed -e 's%if \[ -e "\${LICENSE_FILE}" \] ; then%if ( -e ${LICENSE_FILE} ) then%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null
+
+cat ${INSTALL_WORK}/_tmp1 >> ${install_work}/_$CSHRC 2>/dev/null
 
 rm -f ${INSTALL_WORK}/_tmp1 ${INSTALL_WORK}/_tmp2
 
-if [ $# -eq 4 ] ; then
-    product_dir=$4
+if [ $# -eq 5 ] ; then
+    product_dir=$5
     if [ -e ${product_dir} ] ; then
-       cp -f ${install_work}/_$SHRC  ${product_dir}/$SHRC
-       cp -f ${install_work}/_$CSHRC ${product_dir}/$CSHRC
+       test -e ${product_dir}/$SHRC && mv ${product_dir}/$SHRC ${product_dir}/${SHRC}_`date +%F_%T`
+       cp ${install_work}/_$SHRC  ${product_dir}/$SHRC
+       test -e ${product_dir}/$CSHRC && mv ${product_dir}/$CSHRC ${product_dir}/${CSHRC}_`date +%F_%T`
+       cp ${install_work}/_$CSHRC ${product_dir}/$CSHRC
     fi
 fi
 sed -e 's%setenv ENV_FOR_LAUNCH 1%setenv ENV_FOR_LAUNCH 0%' ${install_work}/_$CSHRC > ${install_root}/env_build.csh
@@ -376,25 +430,25 @@ done
 #try use already existing product
 try_existing()
 {
-product_dir=$1;  install_root=$2;  install_work=$3;  product_sequence="$4";  product_type=$5
+product_dir=$1;  install_root=$2;  install_work=$3;
+product_sequence="$4"; installed_products="$5";  product_type=$6
 env_file=${product_dir}/env_${product_type}.sh
 if [ -f ${env_file} ] ; then
-    cp -f ${env_file} ${install_work}
-    make_env ${install_root} ${install_work} "${product_sequence}"
+    cp -f ${env_file} ${install_work}/_env_${product_type}.sh
+    make_env ${install_root} ${install_work} "${product_sequence}" "${installed_products}"
     source ${install_work}/$SHRC
     check_version
     if [ $? -eq 0 ] ; then
-       if [ -d ${product_dir} ] && [ -w ${product_dir} ] ; then
-           #makedir ${product_dir}
-           print_env
-           return 0    
-       fi
-    else
-       rm -f ${install_work}/env_${product_type}.sh
-       make_env ${install_root} ${install_work} "${product_sequence}"
+       return 0
     fi
 fi
-return 1;
+echo ${product_type} | grep -q '_src$'
+if [ $? -eq 1 ] ; then
+    print_env_bin
+else
+    print_env_src
+fi
+return 0
 }
 
 #check existance of lib passed as first parameter
@@ -558,7 +612,17 @@ return 1
 }
 
 where_gl_libs(){
-# first search libGL.la file and check if this file is correct
+# search libGL.so* file and correct libGL.la in the same directory
+for d in /usr/X11R6/lib64 /usr/lib64 /usr/X11R6/lib /usr/lib ; do
+    if [ "`ls ${d}/libGL.so* 2>/dev/null`" ] && [ -f ${d}/libGL.la ]; then
+       libdir=`grep "libdir=" ${d}/libGL.la | sed -e "s%libdir='\(.*\)'%\1%" -e "s%/*$%%g"`
+       if [ "$libdir" == "$d" ] ; then
+           echo "$d"
+           return 0
+       fi
+    fi
+done
+# search libGL.la file and check if this file is correct
 for d in /usr/X11R6/lib64 /usr/lib64 /usr/X11R6/lib /usr/lib ; do
     if [ -f ${d}/libGL.la ] ; then
        libdir=`grep "libdir=" ${d}/libGL.la | sed -e "s%libdir='\(.*\)'%\1%"`
@@ -585,7 +649,8 @@ if [ -z "$ldir" ] || [ ! -d "$ldir" ]; then return 1; fi
 
 srcdir=`pwd`
 
-SALOME_MODULES="`env | awk -F_ '/[[:alnum:]]*_ROOT_DIR/ { print $1 }'`"
+#SALOME_MODULES="`env | awk -F_ '/[[:alnum:]]*_ROOT_DIR/ { print $1 }'`"
+SALOME_MODULES="`env | awk -F_ '/[a-zA-Z0-9]*_ROOT_DIR/ { print $1 }'`"
 
 cd $ldir
 ldir=`pwd`
@@ -597,14 +662,19 @@ if [ "$l" != "X" ] ; then
     l=`basename $l`
     cd $ldir; cd $d
     # 1. process salome modules dependencies
+
     for mod in $SALOME_MODULES; do
        moddir=`printenv ${mod}_ROOT_DIR`
        if [ -n "${moddir}" ] ; then
            #echo $l $mod $moddir
-           sed -e "s%[[:space:]]\(-L\)\?[^[:space:]]*${mod}[^[:space:]/]*/lib% \1${moddir}/lib%g" $l > $l"_"
+#          sed -e "s%[[:space:]]\(-L\)\?[^[:space:]]*${mod}[^[:space:]/]*/\(lib\|lib64\)% \1${moddir}/${myldir}%g" $l > $l"_"
+#          sed -e "s%[[:space:]]\(-L\)\?[^[:space:]]*${mod}[^[:space:]/]*/lib% \1${moddir}/lib%g" $l > $l"_"
+           sed -e "s%[[:space:]]\(-L\)\?[^[:space:]]*${mod}[^[:space:]/]*/lib% \1${moddir}/lib%g" \
+               -e "s%^libdir='[^[:space:]]*${mod}[^[:space:]]*/\(lib.*\)'%libdir='${moddir}/\1'%g" $l > $l"_"
            mv -f $l"_" $l
        fi
     done
+
     # 2. process CAS.CADE dependencies
     casdir=`printenv CASROOT`/lib
     if [ ! -d ${casdir} ] ; then casdir=`printenv CASROOT`/Linux/lib ; fi
@@ -621,14 +691,22 @@ if [ "$l" != "X" ] ; then
     if [ ! -d ${omnidir} ] ; then omnidir=`printenv OMNIORBDIR`/lib ; fi
     if [ -n "${OMNIORBDIR}" ] && [ -d "${omnidir}" ] ; then
        # echo $l $OMNIORBDIR $omnidir
-       sed -e "s%-L[^[:space:]]*omni[^[:space:]]*%-L${omnidir}%g" $l > $l"_"
+       sed -e "s%-L[^[:space:]]*omni[^[:space:]]*%-L${omnidir}%g" \
+           -e "s%-R[^[:space:]]*omni[^[:space:]]*%-R${omnidir}%g" $l > $l"_"
        mv -f $l"_" $l
     fi
     # 4. process VTK dependencies
-    vtkdir=`printenv VTKHOME`/lib/vtk
-    if [ -n "${VTKHOME}" ] && [ -d "${vtkdir}" ] ; then
+    if test `uname -m` = "x86_64" ; then
+    vtkdir=`printenv VTKHOME`/lib64/vtk-5.0
+    vtkldir=`printenv VTKHOME`/lib64
+    else
+    vtkdir=`printenv VTKHOME`/lib/vtk-5.0
+    vtkldir=`printenv VTKHOME`/lib
+    fi
+    if [ -n "${VTKHOME}" ] && [ -d "${vtkdir}" ] && [ -d "${vtkldir}" ] ; then
        # echo $l $VTKHOME $vtkdir
-       sed -e "s%-L[^[:space:]]*VTK[^[:space:]]*/lib/vtk%-L${vtkdir}%g" $l > $l"_"
+       sed -e "s%-L[^[:space:]]*VTK[^[:space:]]*/\(lib\|lib64\)/vtk\-5\.0%-L${vtkdir}%g" \
+           -e "s%-L[^[:space:]]*VTK[^[:space:]]*/\(lib\|lib64\)%-L${vtkldir}%g" $l > $l"_"
        mv -f $l"_" $l
     fi
     # 5. process HDF dependencies
@@ -697,12 +775,43 @@ if [ "$l" != "X" ] ; then
        sed -e "s%-L[^[:space:]]*boost[^[:space:]]*/lib%-L${boostdir}%g" $l > $l"_"
        mv -f $l"_" $l
     fi
-    # 14. modify libdir
-    #sed -e "s%^libdir='\(.*\)'%libdir='${PRODUCT_DIR}/lib/salome'%g" $l > $l"_"
-    mod=`basename $ldir | awk -F_ '{print $1}'`
-    moddir=`printenv ${mod}_ROOT_DIR`
-    sed -e "s%^libdir='[^[:space:]]*${mod}[^[:space:]]*/\(lib.*\)'%libdir='${moddir}/\1'%g" $l > $l"_"
-    mv -f $l"_" $l
+
+#    # 14. modify libdir
+#    #sed -e "s%^libdir='\(.*\)'%libdir='${PRODUCT_DIR}/lib/salome'%g" $l > $l"_"
+#    mod=`basename $ldir | awk -F_ '{print $1}'`
+#    moddir=`printenv ${mod}_ROOT_DIR`
+#    sed -e "s%^libdir='[^[:space:]]*${mod}[^[:space:]]*/\(lib.*\)'%libdir='${moddir}/\1'%g" $l > $l"_"
+#    mv -f $l"_" $l
+
+    # 15. process libxml dependencies
+    libxmldir=`printenv LIBXML_DIR`/lib
+    if [ ! -d ${libxmldir} ] ; then libxmldir=`printenv  LIBXML_DIR`/lib ; fi
+    sed -e "s%\(.*\)\([[:space:]].*/lib/libxml2.la[[:space:]]\)\(.*\)%\1 ${libxmldir}/libxml2.la \3%g" \
+        -e "s%-L[^[:space:]]*libxml2[^[:space:]]*/lib%-L${libxmldir}%g" $l > $l"_"
+    mv -f $l"_" $l     
+
+    # 16. process metis dependencies
+    metisdir=`printenv METISDIR`
+    if [ ! -d ${metisdir} ] ; then metisdir=`printenv  METISDIR` ; fi
+    sed -e "s%-L[^[:space:]]*metis[^[:space:]]*%-L${metisdir}%g" $l > $l"_"
+    mv -f $l"_" $l     
+
+    # 3. process scotch dependencies
+    scotchdir=`printenv SCOTCHDIR`/bin
+    if [ ! -d ${scotchdir} ] ; then scotchdir=`printenv SCOTCHDIR`/bin ; fi
+    sed    -e "s%-L[^[:space:]]*scotch[^[:space:]]*/bin%-L${scotchdir}%g" $l > $l"_"
+    mv -f $l"_" $l     
+
+    # 4. process libGL.la dependencies
+    if test `uname -m` = "x86_64" ; then
+    libGLpath=/usr/lib64/libGL.la
+    else
+    libGLpath=/usr/lib/libGL.la
+    fi
+       sed -e "s%$libGLpath%""%g" $l > $l"_"
+       mv -f $l"_" $l
+
+
 fi
 done