# Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
# Project : SALOME
# Module : Installation Wizard
-# Copyright : 2002-2007 CEA
+# Copyright : 2002-2008 CEA
#
# This script is the part of the SALOME installation procedure.
#
set is_build_configure=0
set is_configure=0
-set med_with_gui=1
+set inst_with_gui=1
set is_delete=0
set verbose_level=2
set params=""
-set b_params=""
-set modules=(KERNEL GUI GEOM MED SMESH VISU SUPERV NETGENPLUGIN GHS3DPLUGIN COMPONENT PYCALCULATOR CALCULATOR HELLO PYHELLO LIGHT)
+set modules=(KERNEL GUI GEOM MED SMESH VISU PARAVIS YACS NETGENPLUGIN GHS3DPLUGIN BLSURFPLUGIN HexoticPLUGIN GHS3DPRLPLUGIN COMPONENT PYCALCULATOR CALCULATOR HELLO PYHELLO LIGHT PYLIGHT SIERPINSKY RANDOMIZER MULTIPR JOBMANAGER)
set optim=""
-set is_install=0
+set is_install=1
set is_help=0
set is_tui=0
set prefix=""
+set def_install_dir="/INSTALL"
+set b_params=""
#########################################################
# parse parameters
else if ( "$1" == "-c" ) then
set is_configure=1
else if ( "$1" == "-w" ) then
- set med_with_gui=0
+ set inst_with_gui=0
else if ( "$1" == "-d" ) then
set is_delete=1
else if ( "$1" == "-o" ) then
set optim="--enable-production=yes --disable-debug"
- else if ( "$1" == "-i" ) then
- set is_install=1
else if ( "$1" == "-v" ) then
shift
set verbose_level=$1
else if ( "$1" == "-t" ) then
set is_tui=1
else
- set ckt=`echo ${modules} | grep $1`
+ set ckt=`echo ${modules} | grep -E "\<$1\>"`
if ( "$ckt" != "" ) then
set params="$params $1"
else
set b_params="$b_params $1"
- echo "\!\!\! Warning \!\!\! Unknown module: $1. Skipping."
+ echo "\!\!\! Warning \!\!\! Unknown module: $1."
endif
endif
shift
echo ""
echo ""
echo "Description:"
-echo " Builds given SALOME modules by performing make and (optionally) make install commands"
+echo " Builds given SALOME modules by performing make and make install commands"
echo ""
echo "Usage:"
echo " build.csh [ <option> ] ... [ <module> [ <module> ... ] ]"
echo ""
echo "-c Perform configure command for all given modules. Default is off."
echo ""
-echo "-w Add --without-ihm key to build_configure and configure"
-echo " commands for MED module to build its sources without GUI."
-echo " By default MED sources are built with GUI."
+echo "-w Add --without-gui key to build_configure and configure commands"
+echo " to build SALOME module sources without GUI."
+echo " By default sources are built with GUI."
echo ""
-echo "-d Delete build directories before calling configure, to enforce full rebuild"
-echo " (and reinstall if -i or -p option is used) of module."
+echo "-d Delete build directories before calling configure, to force full rebuild"
+echo " and reinstall of the module."
echo " Use this option carefully."
echo ""
echo "-o Build sources in optimized mode. Default is off that means debug mode."
echo "-t Performs make dev_docs step to build TUI documentation for those modules"
echo " which support this. Default is off."
echo ""
-echo "-i Performs make install step. Default is off that means only make step."
-echo ""
echo "-p <prefix> Define the directory where to install modules after compilation."
echo " By default the directory where compilation is performed is used."
echo ""
echo "Note: If no keys are given script just performs make step."
echo ""
echo "Example:"
-echo " ./build.csh -o -i -b KERNEL MED GEOM"
+echo " ./build.csh -o -p /home/user/salome -b KERNEL MED GEOM"
echo ""
echo " This will make KERNEL, GEOM and MED modules: build_configure, configure, make"
echo " and install procedures will be performed for all specified modules."
if ( "${params}" != "" ) then
set xparams=""
foreach module (${modules})
- set ckt=`echo ${params} | grep ${module}`
+ set ckt=`echo ${params} | grep -E "\<${module}\>"`
if ( "$ckt" != "" ) then
set xparams="$xparams $module"
endif
end
- set modules=($xparams)
-else
- if ( "${b_params}" != "" ) then
- echo "Nothing to be built. Exiting."
- exit
- endif
+ set modules=($xparams $b_params)
+else if ( "${b_params}" != "" ) then
+ set modules=($b_params)
endif
-echo ">>> The following SALOME packages will be built:"
+echo ">>> The following modules will be built:"
echo $modules
#########################################################
if ( ! -e $env_script ) then
set env_script=`dirname $0`/env_products.csh
endif
+if ( ! -e $env_script ) then
+ set env_script=`dirname $0`/env.sh
+endif
if ( -e $env_script ) then
echo ">>> Setting environment"
source $env_script
else
- echo "\!\!\! Warning \!\!\! Environment is not set: file env_products.csh is not found."
+ echo "\!\!\! Warning \!\!\! Environment is not set."
+ echo "No environment file (env_build.sh, env_products.sh, env.sh) is found."
+ echo "Proceed with the current environment."
endif
set BUILD_DIR=${PWD}
# define installation prefix
#########################################################
if ( "$prefix" == "" ) then
- set prefix=${BUILD_DIR}/INSTALL
- if ( $is_install == 1 ) then
- echo "\!\!\! Warning \!\!\! Installation directory is not set."
- echo "All the modules will be installed to the $prefix"
- else
- set is_kernel=`echo ${modules} | grep KERNEL`
- if ( "$is_kernel" != "" ) then
- echo "\!\!\! Warning \!\!\! KERNEL module requires install step to be performed."
- echo "For this module -i option will be forced."
- echo "The module(s) will be installed to the $prefix"
- endif
- endif
+ echo "\!\!\! Warning \!\!\! Installation directory is not set."
+ echo "All the modules will be installed to the ${BUILD_DIR}${def_install_dir}"
else
set is_absolute=`echo $prefix | grep -e "^/"`
if ( "$is_absolute" == "" ) then
set module_build=${BUILD_DIR}/${module}_BUILD
if ( ${module_src} != "" ) then
- set add_keys=""
cd ${BUILD_DIR}
#########################################################
# check if sources directory exists
#########################################################
# check if build_configure script exists
#########################################################
- if ( ! -e ${module_src}/build_configure ) then
+ if ( ! -e ${module_src}/build_configure && "${module}" != "PARAVIS" ) then
echo "\!\!\! Warning \!\!\! Can not find build_configure script in ${module_src}."
- else
+ else
+ if ( "${module}" == "PARAVIS" ) then
+ echo "\!\!\! Warning \!\!\! build_configure step is not executed for ${module}."
+ else
#########################################################
# call build_configure
#########################################################
- if ( $med_with_gui == 0 && "${module}" == "MED" ) then
- set add_keys="--without-ihm"
+ if (! ($?BUILDCONF_OPTS) ) then
+ set mybuildconf_keys=""
+ else
+ set mybuildconf_keys="${BUILDCONF_OPTS}"
+ endif
+ if ( $inst_with_gui == 0 ) then
+ set mybuildconf_keys="${mybuildconf_keys} --without-gui"
endif
cd ${module_src}
- ./build_configure ${add_keys} >& ${LOG_DIR}/build_configure_${module}.log
+ ./build_configure ${mybuildconf_keys} >& ${LOG_DIR}/build_configure_${module}.log
#########################################################
# echo possible errors
#########################################################
if ( $verbose_level > 0 ) then
- cat ${LOG_DIR}/build_configure_${module}.log | grep -E "(failed|: error:)" > /dev/stderr
+ cat ${LOG_DIR}/build_configure_${module}.log | grep -E "(failed|: error:)" >/dev/stderr
endif
endif
+ endif
endif
#########################################################
# deleting build directory if -d flag is given
#########################################################
if ( -e ${module_build} && $is_delete == 1 ) then
echo "... Removing ${module_build}"
- rm -rf ${module_build}
+ chmod -R +w ${module_build} && rm -rf ${module_build} >& /dev/null
+ if ( "$?" != "0" ) then
+ echo "\!\!\! Warning \!\!\! Cannot remove build directory ${module_build}. Permission denied."
+ endif
endif
#########################################################
# creating build directory if it does not exist
#########################################################
if ( ! -e ${module_build} ) then
- mkdir -p ${module_build}
+ mkdir -p ${module_build} >& /dev/null
+ if ( "$?" != "0" ) then
+ echo "\!\!\! Error \!\!\! Cannot create build directory ${module_build}. Permission denied."
+ continue
+ endif
endif
cd ${module_build}
#########################################################
# number); default is a build directory
#########################################################
set vx=""
- set cfg_file=configure.ac
- if ( ! -e ${module_src}/${cfg_file} ) then
- set cfg_file=configure.in.base
- endif
- if ( -e ${module_src}/${cfg_file} ) then
- set vx=`grep -e "^VERSION=" ${module_src}/${cfg_file} | awk -F= '{ if (NF>1) print $NF; }' | tr -d '[:space:]'`
- endif
- set px=${BUILD_DIR}/${module}
- if ( "$prefix" != "" ) then
- set px=$prefix/${module}
+ if ( -e ${module_src}/configure.ac ) then
+ set vx=`grep -e "^AC_INIT" ${module_src}/configure.ac | sed -e "s%.*\[\([[:digit:].]*\)\].*%\1%g"`
+ else if ( -e ${module_src}/configure.in.base ) then
+ set vx=`grep -e "^VERSION=" ${module_src}/configure.in.base | awk -F= '{ if (NF>1) print $NF; }' | tr -d '[:space:]'`
+ if ( "$vx" == "" ) then
+ set vx=`grep -e "^AC_INIT" ${module_src}/configure.in.base | sed -e "s%.*\[\([[:digit:].]*\)\].*%\1%g"`
+ endif
+ else if ( -e ${module_src}/CMakeLists.txt ) then
+ set ver_maj=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MAJOR | sed -e "s%[A-Z_() ]%%g"`
+ set ver_min=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MINOR | sed -e "s%[A-Z_() ]%%g"`
+ set ver_maintenance=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MAINTENANCE | sed -e "s%[A-Z_() ]%%g"`
+ set vx="${ver_maj}.${ver_min}.${ver_maintenance}"
endif
if ( "$vx" != "" ) then
- set px="$px"_"$vx"
+ set vx="_$vx"
+ endif
+ if ( "$prefix" == "" ) then
+ #set module_root_dir=`printenv ${module}_ROOT_DIR`
+ #if ( "$module_root_dir" != "" ) then
+ # set px=$module_root_dir
+ #else
+ set px=${BUILD_DIR}${def_install_dir}/${module}${vx}
+ #endif
+ else
+ set px=${prefix}/${module}${vx}
endif
#########################################################
# perform configure if -c flag is given or if
#########################################################
# check if configure script exists
#########################################################
- if ( ! -e ${module_src}/configure ) then
+ if ( ! -e ${module_src}/configure && "${module}" != "PARAVIS" ) then
echo "\!\!\! Warning \!\!\! Can not find configure script in ${module_src}."
else
- if ( $med_with_gui == 0 && "${module}" == "MED" ) then
- set add_keys="--without-ihm"
+ if (! ($?BUILDCONF_OPTS) ) then
+ set myconf_keys=""
+ else
+ set myconf_keys="${CONF_OPTS}"
+ endif
+ if ( $inst_with_gui == 0 ) then
+ set myconf_keys="${myconf_keys} --without-gui"
+ endif
+ if ( "${module}" == "MED" && ($?METISDIR) && ($?SCOTCHDIR) ) then
+ set myconf_keys="${myconf_keys} --enable-splitter=yes --with-metis=${METISDIR} --with-scotch=${SCOTCHDIR}"
endif
if ( "${module}" == "NETGENPLUGIN" && ($?NETGENHOME) ) then
- set add_keys="--with-netgen=${NETGENHOME}"
+ set myconf_keys="${myconf_keys} --with-netgen=${NETGENHOME}"
endif
- ${module_src}/configure --prefix=$px ${optim} ${add_keys} >& ${LOG_DIR}/configure_${module}.log
+ if ( "${module}" == "PARAVIS" ) then
+ cd ${module_build}; cmake ${module_src} -DCMAKE_INSTALL_PREFIX=$px >& ${LOG_DIR}/configure_${module}.log
+ else
+ ${module_src}/configure --prefix=$px ${optim} ${myconf_keys} >& ${LOG_DIR}/configure_${module}.log
+ endif
#########################################################
# echo possible errors
#########################################################
if ( $verbose_level > 0 ) then
- cat ${LOG_DIR}/configure_${module}.log | grep ": error:" > /dev/stderr
+ cat ${LOG_DIR}/configure_${module}.log | grep ": error:" >/dev/stderr
endif
if ( $verbose_level > 1 ) then
- cat ${LOG_DIR}/configure_${module}.log | grep ": WARNING:" > /dev/stderr
+ cat ${LOG_DIR}/configure_${module}.log | grep ": WARNING:" >/dev/stderr
endif
endif
endif
# if make step is successful set the ${module}_ROOT_DIR
# environment variable
#########################################################
- if ( $sts == 0 ) then
- setenv ${module}_ROOT_DIR ${module_build}
- endif
+ #if ( $sts == 0 ) then
+ # setenv ${module}_ROOT_DIR ${module_build}
+ #endif
#########################################################
# print make errors
#########################################################
- cat ${LOG_DIR}/make_${module}.log | grep '[*][*][*]' > /dev/stderr
+ cat ${LOG_DIR}/make_${module}.log | grep -Ei '[*][*][*].*error' >/dev/stderr
#########################################################
# print compiler errors and warnings
# Note: here awk is used to concatenate together several lines of single
#########################################################
if ( $verbose_level > 0 ) then
###cat ${LOG_DIR}/make_${module}.log | grep ": error"
- cat ${LOG_DIR}/make_${module}.log | awk 'substr($0,0,1)!=" " {print ""} {printf $0} END {print ""}' | grep "${module_src}/[A-Za-z_0-9./]*:" | sed s@"^${module_src}/src/"@@ > /dev/stderr
+ cat ${LOG_DIR}/make_${module}.log | awk 'substr($0,0,1)!=" " {print ""} {print $0} END {print ""}' | grep "${module_src}/[A-Za-z_0-9./]*:" | sed s@"^${module_src}/src/"@@ >/dev/stderr
endif
if ( $verbose_level > 1 ) then
- cat ${LOG_DIR}/make_${module}.log | awk 'substr($0,0,1)!=" " {print ""} {printf $0} END {print ""}' | grep ": warning" | sed s@"^${module_src}/src/"@@ > /dev/stderr
+ cat ${LOG_DIR}/make_${module}.log | awk 'substr($0,0,1)!=" " {print ""} {print $0} END {print ""}' | grep -E ": warning|* Warning" | sed s@"^${module_src}/src/"@@ >/dev/stderr
endif
#########################################################
# perform make dev_docs step if -t flag is given
if ( "$dd" != "" ) then
echo "... Performing make dev_docs"
make dev_docs >& ${LOG_DIR}/make_dev_docs_${module}.log
- cat ${LOG_DIR}/make_dev_docs_${module}.log | grep '[*][*][*]' > /dev/stderr
+ cat ${LOG_DIR}/make_dev_docs_${module}.log | grep '[*][*][*]' >/dev/stderr
endif
endif
cd ${module_build}
#########################################################
if ( -e $px && $is_delete == 1 ) then
echo "... Removing $px"
- rm -rf $px
+ rm -rf $px >& /dev/null
+ if ( "$?" != "0" ) then
+ echo "\!\!\! Warning \!\!\! Cannot remove install directory ${px}. Permission denied."
+ endif
endif
echo "... Performing make install"
make install >& ${LOG_DIR}/make_install_${module}.log