X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=config_files%2Fcommon.sh;h=a7c0c47baba3f49bfa0f35b2d2bcaf27fb687bdd;hb=1a5386dd06e7c8b847fc15a343947fa05658f112;hp=7410799c69313ad6974ff44907332ada4fbef1c0;hpb=8c4aa9f247169d1841ae7d228be4a0eef23e8bf7;p=tools%2Finstall.git diff --git a/config_files/common.sh b/config_files/common.sh index 7410799..a7c0c47 100755 --- a/config_files/common.sh +++ b/config_files/common.sh @@ -88,10 +88,50 @@ if [ $# -eq 3 ] ; then product_env=${install_work}/env_${product_name}.sh (test -e ${product_env} && rm ${product_env} ) fi -### !!! writing salome.sh file !!! -> add global functions +### !!! writing salome.sh file !!! -> define INSTALL_ROOT cat >> ${install_work}/$SHRC < /dev/null + if [ $? -eq 0 ] ; then + cat >> ${install_work}/$SHRC < set inital variables +pre_vars="PATH LD_LIBRARY_PATH LD_RUN_PATH PYTHONPATH TCLLIBPATH" +for i in $pre_vars ; do +cat >> ${install_work}/$CSHRC < dump products environment files, changing 'export' by 'setenv(a|p)' where necessary +### Note, that for performance reasons temporary environment files used during installation procedure itself +### are created without using setenv(a|p) aliases. + +# 1. first dump all environment files into the $SHRC file +product_sequence="$2" +for i in $product_sequence ; do + cat ${install_work}/env_${i}.sh >> ${install_work}/$SHRC 2>/dev/null +done + +# 2. writing global functions to _salome.sh file +cat >> ${install_work}/_$SHRC <") nb = split("",b,":"); \\ + else nb = split(\$1,b,":"); \\ s = "" ; \\ for(i=1;i<=nb;i++) { \\ if(!(b[i] in ccc)) { \\ @@ -144,6 +185,7 @@ echo \$out_var # to the variable (first parameter) exporta () { xenv=\`printenv \$1\` +if [ -z "\$xenv" ]; then xenv=""; fi out_var=\`cleandup \$xenv \$2 0\` export \$1=\$out_var } @@ -152,16 +194,16 @@ export \$1=\$out_var # to the variable (first parameter) exportp () { xenv=\`printenv \$1\` +if [ -z "\$xenv" ]; then xenv=""; fi out_var=\`cleandup \$xenv \$2 1\` export \$1=\$out_var } ########################################################################### EOF -### !!! writing salome.csh file !!! -> add global aliases -cat >> ${install_work}/$CSHRC <> ${install_work}/_$CSHRC < set inital variables -pre_vars="PATH LD_LIBRARY_PATH LD_RUN_PATH PYTHONPATH TCLLIBPATH" -for i in $pre_vars ; do -cat >> ${install_work}/$CSHRC < dump products environment files, changing 'export' by 'setenv(a|p)' where necessary -product_sequence="$2" -for i in $product_sequence ; do - sed -e 's%^export\([[:blank:]]*\)PATH=\$[{]\?PATH[}]\?:\(.*\)%exporta\1PATH \2%g' -e 's%^export\([[:blank:]]*\)PATH=\(.*\):\$[{]\?PATH[}]\?%exportp\1PATH \2%g' ${install_work}/env_${i}.sh > ${INSTALL_WORK}/_tmp1 2>/dev/null - sed -e 's%^export\([[:blank:]]*\)LD_LIBRARY_PATH=\$[{]\?LD_LIBRARY_PATH[}]\?:\(.*\)%exporta\1LD_LIBRARY_PATH \2%g' -e 's%^export\([[:blank:]]*\)LD_LIBRARY_PATH=\(.*\):\$[{]\?LD_LIBRARY_PATH[}]\?%exportp\1LD_LIBRARY_PATH \2%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null - sed -e 's%^export\([[:blank:]]*\)PYTHONPATH=\$[{]\?PYTHONPATH[}]\?:\(.*\)%exporta\1PYTHONPATH \2%g' -e 's%^export\([[:blank:]]*\)PYTHONPATH=\(.*\):\$[{]\?PYTHONPATH[}]\?%exportp\1PYTHONPATH \2%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null - 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 2>/dev/null - cat ${INSTALL_WORK}/_tmp2 >> ${install_work}/$SHRC 2>/dev/null - - 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 - cat ${INSTALL_WORK}/_tmp1 >> ${install_work}/$CSHRC 2>/dev/null +cat ${install_work}/$CSHRC >> ${install_work}/_$CSHRC + +# 4. put the contents of salome.sh to _salome.sh replacing export by export(a|p) aliases where necessary +sed -e 's%export\([[:blank:]]*\)PATH=\$[{]\?PATH[}]\?:\(.*\)%exporta\1PATH \2%g' -e 's%export\([[:blank:]]*\)PATH=\(.*\):\$[{]\?PATH[}]\?%exportp\1PATH \2%g' ${install_work}/$SHRC > ${INSTALL_WORK}/_tmp1 2>/dev/null +sed -e 's%export\([[:blank:]]*\)LD_LIBRARY_PATH=\$[{]\?LD_LIBRARY_PATH[}]\?:\(.*\)%exporta\1LD_LIBRARY_PATH \2%g' -e 's%export\([[:blank:]]*\)LD_LIBRARY_PATH=\(.*\):\$[{]\?LD_LIBRARY_PATH[}]\?%exportp\1LD_LIBRARY_PATH \2%g' ${INSTALL_WORK}/_tmp1 > ${INSTALL_WORK}/_tmp2 2>/dev/null +sed -e 's%export\([[:blank:]]*\)PYTHONPATH=\$[{]\?PYTHONPATH[}]\?:\(.*\)%exporta\1PYTHONPATH \2%g' -e 's%export\([[:blank:]]*\)PYTHONPATH=\(.*\):\$[{]\?PYTHONPATH[}]\?%exportp\1PYTHONPATH \2%g' ${INSTALL_WORK}/_tmp2 > ${INSTALL_WORK}/_tmp1 2>/dev/null +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 +cat ${INSTALL_WORK}/_tmp2 >> ${install_work}/_$SHRC + +# 5. Create a salome.csh file from salome.sh by replacing export by setenv, etc. +sed -e 's%export \([[:alnum:]_[:blank:]]*\)\=%setenv \1 %g' ${install_work}/$SHRC > ${INSTALL_WORK}/_tmp1 2>/dev/null +cat ${INSTALL_WORK}/_tmp1 >> ${install_work}/$CSHRC - rm -f ${INSTALL_WORK}/_tmp1 ${INSTALL_WORK}/_tmp2 -done +# 6. Create a _salome.csh file from _salome.sh by replacing export by setenv, exporta by setenva, etc. +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 + +rm -f ${INSTALL_WORK}/_tmp1 ${INSTALL_WORK}/_tmp2 if [ $# -eq 4 ] ; then product_dir=$4 if [ -e ${product_dir} ] ; then - cp -f ${install_work}/$SHRC ${install_work}/$CSHRC ${product_dir}/. + cp -f ${install_work}/_$SHRC ${product_dir}/$SHRC + cp -f ${install_work}/_$CSHRC ${product_dir}/$CSHRC fi fi -cp -f ${install_work}/$CSHRC ${install_root}/env_products.csh -cp -f ${install_work}/$SHRC ${install_root}/env_products.sh +sed -e 's%setenv ENV_FOR_LAUNCH 1%setenv ENV_FOR_LAUNCH 0%' ${install_work}/_$CSHRC > ${install_root}/env_products.csh +sed -e 's%export ENV_FOR_LAUNCH=1%export ENV_FOR_LAUNCH=0%' ${install_work}/_$SHRC > ${install_root}/env_products.sh +rm -f ${install_work}/_$SHRC +rm -f ${install_work}/_$CSHRC ### !!! copying build.csh script if [ -e ./build.csh ]; then cp -f ./build.csh ${install_root} @@ -344,4 +386,50 @@ else echo $arg1:$arg2 fi return $to_tail -} \ No newline at end of file +} + +where_tcl(){ +if test -z "${TCLHOME}"; then + TCLHOME=/usr +fi +tclcfg=`find ${TCLHOME}/lib -name "tclConfig.sh" 2> /dev/null` +file="" +maxver=0 +for f in $tclcfg; do + ver=`cat $f | grep -e "TCL_VERSION=.*" | sed -e "s%TCL_VERSION=[\'|\"]\(.*\)[\'|\"]%\1%g" | awk -F. '{x=0;for(i=1;i<=3;i++){x=x*100;if(i<=NF)x+=$i;}print x;}'` + if [ $maxver -lt $ver ]; then + maxver=$ver + file=$f + fi +done +if test -n "$file"; then + echo `dirname $file` + return 0 +else + echo "" + return 1 +fi +} + +where_tk(){ +if test -z "${TCLHOME}"; then + TCLHOME=/usr +fi +tclcfg=`find ${TCLHOME}/lib -name "tkConfig.sh" 2> /dev/null` +file="" +maxver=0 +for f in $tclcfg; do + ver=`cat $f | grep -e "TK_VERSION=.*" | sed -e "s%TK_VERSION=[\'|\"]\(.*\)[\'|\"]%\1%g" | awk -F. '{x=0;for(i=1;i<=3;i++){x=x*100;if(i<=NF)x+=$i;}print x;}'` + if [ $maxver -lt $ver ]; then + maxver=$ver + file=$f + fi +done +if test -n "$file"; then + echo `dirname $file` + return 0 +else + echo "" + return 1 +fi +}