+++ /dev/null
-#!/bin/bash -noprofile
-
-####################################################################################
-# File : build.sh
-# Created : Thu Jan 27 09:50:55 2005
-# Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
-# Project : SALOME
-# Module : Installation Wizard
-# Copyright : 2002-2012 CEA
-#
-# This script is the part of the SALOME installation procedure.
-#
-# This script can be used to build and install SALOME modules from sources.
-# Try build.sh -h for more details about usage.
-#
-####################################################################################
-
-###############################################################
-# Prints usage information and exits
-###############################################################
-usage(){
- echo ""
- echo "Description:"
- echo " Builds given SALOME modules by performing make and "
- echo " make install commands"
- echo ""
- echo "Usage:"
- echo " build.sh [ <option> ] ... [ <module> [ <module> ... ] ]"
- echo ""
- echo "<module> Modules to build, separated by space(s)."
- echo " If no modules are given - all SALOME modules are assumed."
- echo " Note, that modules given in command lines are automatically"
- echo " sorted in such order to support correct modules dependencies."
- echo ""
- echo "Options:"
- echo "-b Perform build_configure command for all given modules."
- echo " This option forces configure (-c) key to be set. Default is off."
- echo ""
- echo "-c Perform configure command for all given modules. Default is off."
- echo ""
- 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 force full"
- echo " rebuild and reinstall of the module."
- echo " Use this option carefully."
- echo ""
- echo "-o Build sources in optimized mode. Default is off that means"
- echo " debug mode."
- echo " Use this option together with -c or -b."
- echo " This option can require -d option to be set (to ensure that"
- echo " previously created build directories are removed to enforce"
- echo " rebuild in optimized mode)."
- echo ""
- echo "-t Performs make dev_docs step to build TUI documentation for those"
- echo " modules which support this. Default is off."
- 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 "-v <level> Verbose level (0-2, default 2): print information on build status:"
- echo " 0: only 'make' errors"
- echo " 1: 0 + compiler and other errors (build_configure, configure)"
- echo " 2: 1 + compiler and other warnings "
- echo ""
- echo "-h Prints this help information."
- echo ""
- echo "Note: If no keys are given script just performs make step."
- echo ""
- echo "Example:"
- echo " ./build.csh -o -p /home/user/salome -b KERNEL MED GEOM"
- echo ""
- echo " This will make KERNEL, GEOM and MED modules: build_configure,"
- echo " configure, make and install procedures will be performed for all"
- echo " specified modules. The modules will be built in the optimized mode."
- echo ""
- exit 1
-}
-
-is_build_configure=0
-is_configure=0
-inst_with_gui=1
-is_delete=0
-verbose_level=2
-params=""
-#modules="KERNEL GUI GEOM MED SMESH VISU PARAVIS YACS NETGENPLUGIN GHS3DPLUGIN BLSURFPLUGIN HexoticPLUGIN GHS3DPRLPLUGIN COMPONENT PYCALCULATOR CALCULATOR HELLO PYHELLO LIGHT PYLIGHT SIERPINSKY RANDOMIZER HEXABLOCK HEXABLOCKPLUGIN ATOMIC ATOMGEN ATOMSOLV HOMARD JOBMANAGER"
-modules="KERNEL GUI GEOM MED SMESH VISU PARAVIS YACS NETGENPLUGIN GHS3DPLUGIN BLSURFPLUGIN HexoticPLUGIN GHS3DPRLPLUGIN PYHELLO"
-optim=""
-is_install=1
-is_tui=0
-prefix=""
-def_install_dir="/INSTALL"
-
-#########################################################
-# parse parameters
-#########################################################
-while getopts ":hbcwdotv:p:" option ; do
- case $option in
- h ) usage ;;
- b ) is_build_configure=1 ; is_configure=1 ;;
- c ) is_configure=1 ;;
- w ) inst_with_gui=0 ;;
- d ) is_delete=1 ;;
- o ) optim="--enable-production=yes --disable-debug" ;;
- t ) is_tui=1 ;;
- v ) verbose_level=$OPTARG ;;
- p ) is_install=1 ; prefix=$OPTARG ;;
- ? ) usage ;;
- esac
-done
-# shift to have the good number of other args
-shift $((OPTIND - 1))
-
-b_params=""
-
-for arg in $@ ; do
- known=0
- for m in $modules ; do
- if [ "$m" == "$arg" ] ; then known=1 ; break ; fi
- done
- if [ $known -eq 0 ] ; then
- echo
- echo '!!! Warning !!! Unknown module: '$arg'.'
- b_params="$b_params $arg"
- else
- params="$params $arg"
- fi
-done
-
-#########################################################
-# sort modules in proper order according to the dependancies
-#########################################################
-if [ "${params}" != "" ] ; then
- xparams=""
- for module in ${modules} ; do
- found=0
- for p in $params ; do
- if [ "$p" == "$module" ] ; then found=1 ; break ; fi
- done
- if [ $found -eq 1 ] ; then
- xparams="$xparams $module"
- fi
- done
- modules="$xparams $b_params"
-elif [ "${b_params}" != "" ] ; then
- modules="$b_params"
-fi
-
-echo
-echo ">>> The following modules will be built:"
-echo $modules
-echo
-
-#########################################################
-# set environment
-#########################################################
-env_script=`dirname $0`/env_build.sh
-if [ ! -e $env_script ] ; then
- env_script=`dirname $0`/env_products.sh
-fi
-if [ ! -e $env_script ] ; then
- env_script=`dirname $0`/env.sh
-fi
-if [ -e $env_script ] ; then
- echo
- echo ">>> Setting environment"
- source $env_script
-else
- echo
- 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.'
-fi
-
-BUILD_DIR=${PWD}
-LOG_DIR=${BUILD_DIR}/LOGS
-
-#########################################################
-# define installation prefix
-#########################################################
-if [ "$prefix" == "" ] ; then
- echo
- echo '!!! Warning !!! Installation directory is not set.'
- echo "All the modules will be installed to the ${BUILD_DIR}${def_install_dir}"
-else
- if [ "`echo $prefix | grep -E '^/'`" == "" ] ; then
- prefix=${BUILD_DIR}/$prefix
- echo
- echo '!!! Warning !!! Relative prefix is used.'
- echo "All the modules will be installed to the $prefix."
- fi
-fi
-
-#########################################################
-# create log directory
-#########################################################
-if [ ! -e ${LOG_DIR} ] ; then
- mkdir -p ${LOG_DIR}
-fi
-
-echo
-echo "==========================================================================="
-echo "Starting SALOME build at `date`"
-echo "==========================================================================="
-echo
-
-#########################################################
-# loop for all given modules
-#########################################################
-for module in ${modules}; do
- echo ">>> Processing ${module} module"
-
- module_src=`printenv ${module}_SRC_DIR`
- module_build=${BUILD_DIR}/${module}_BUILD
-
- if [ "${module_src}" != "" ] ; then
- cd ${BUILD_DIR}
- #########################################################
- # check if sources directory exists
- #########################################################
- if [ ! -e ${module_src} ] ; then
- echo
- echo '!!! Error !!! Cannot find module sources directory:'
- echo "${module_src} does not exist."
- echo
- continue
- fi
- #########################################################
- # check if configure script exists
- #########################################################
- cfg_exist=0
- if [ -e ${module_src}/configure ] || [ -e ${module_src}/CMakeLists.txt ] ; then
- cfg_exist=1
- fi
- #########################################################
- # perform build_configure if -b flag is given or if
- # configure script does not exist (first compilation?)
- #########################################################
- if [ $is_build_configure -eq 1 ] || [ $cfg_exist -eq 0 ] ; then
- echo "... Performing build_configure"
- #########################################################
- # check if build_configure script exists
- #########################################################
- if [ ! -e ${module_src}/build_configure ] && [ "${module}" != "PARAVIS" ] ; then
- echo '!!! Warning !!! Cannot find build_configure script in '${module_src}'.'
- else
- if [ "${module}" == "PARAVIS" ]; then
- echo '!!! Warning !!! build_configure step is not executed for '${module}'.'
- else
- #########################################################
- # call build_configure
- #########################################################
- mybuildconf_keys="${BUILDCONF_OPTS}"
- if [ $inst_with_gui -eq 0 ] ; then
- mybuildconf_keys="${mybuildconf_keys} --without-gui"
- fi
- cd ${module_src}
- ./build_configure ${mybuildconf_keys} >& ${LOG_DIR}/build_configure_${module}.log
- #########################################################
- # echo possible errors
- #########################################################
- if [ $verbose_level -gt 0 ] ; then
- cat ${LOG_DIR}/build_configure_${module}.log | grep -E "(failed|: error:)" >&2
- fi
- fi
- fi
- fi
- #########################################################
- # deleting build directory if -d flag is given
- #########################################################
- if [ -e ${module_build} ] && [ $is_delete -eq 1 ] ; then
- echo "... Removing ${module_build}"
- chmod -R +w ${module_build} && rm -rf ${module_build} >& /dev/null
- if [ "$?" != "0" ] ; then
- echo
- echo '!!! Warning !!! Cannot remove build directory ${module_build}. Permission denied.'
- echo
- fi
- fi
- #########################################################
- # creating build directory if it does not exist
- #########################################################
- if [ ! -e ${module_build} ] ; then
- mkdir -p ${module_build} >& /dev/null
- if [ "$?" != "0" ] ; then
- echo
- echo '!!! Error !!! Cannot create build directory ${module_build}. Permission denied.'
- echo
- continue
- fi
- fi
- cd ${module_build}
- #########################################################
- # check if top Makefile exists in build directory, i.e.
- # is it necessary to run configure script
- #########################################################
- mkfile_exist=0
- if [ -e ${module_build}/Makefile ] ; then
- mkfile_exist=1
- fi
- #########################################################
- # check if configure options are changed from the
- # previous launch
- #########################################################
- opts_changed=0
- #########################################################
- # define installation directory (by using module's version
- # number); default is a build directory
- #########################################################
- vx=""
- if [ -e ${module_src}/configure.ac ] ; then
- vx=`grep -e "^AC_INIT" ${module_src}/configure.ac | sed -e "s%.*\[\([[:digit:].]*\)\].*%\1%g"`
- elif [ -e ${module_src}/configure.in.base ] ; then
- vx=`grep -e "^VERSION=" ${module_src}/configure.in.base | awk -F= '{ if (NF>1) print $NF; }' | tr -d '[:space:]'`
- if [ "$vx" == "" ] ; then
- vx=`grep -e "^AC_INIT" ${module_src}/configure.in.base | sed -e "s%.*\[\([[:digit:].]*\)\].*%\1%g"`
- fi
- elif [ -e ${module_src}/CMakeLists.txt ] ; then
- ver_maj=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MAJOR | sed -e "s%[A-Z_() ]%%g"`
- ver_min=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MINOR | sed -e "s%[A-Z_() ]%%g"`
- ver_maintenance=`cat ${module_src}/CMakeLists.txt | grep SET\(VERSION_MAINTENANCE | sed -e "s%[A-Z_() ]%%g"`
- vx="${ver_maj}.${ver_min}.${ver_maintenance}"
- fi
- if [ "$vx" != "" ] ; then
- vx="_$vx"
- fi
- if [ "$prefix" == "" ] ; then
- px=${BUILD_DIR}${def_install_dir}/${module}${vx}
- else
- px=$prefix/${module}${vx}
- fi
- #########################################################
- # perform configure if -c flag is given or if
- # Makefile does not exist (first compilation?)
- #########################################################
- if [ $is_configure -eq 1 ] || [ $mkfile_exist -eq 0 ] || [ $opts_changed -eq 1 ] ; then
- echo "... Performing configure"
- #########################################################
- # check if configure script exists
- #########################################################
- if [ ! -e ${module_src}/configure ] && [ "${module}" != "PARAVIS" ] ; then
- echo
- echo '!!! Warning !!! Can not find configure script in '${module_src}'.'
- echo
- else
- myconf_keys="${CONF_OPTS}"
- if [ $inst_with_gui -eq 0 ] ; then
- myconf_keys="${myconf_keys} --without-gui"
- fi
- if [ "${module}" == "MED" ] && [ "${METISDIR}" != "" ] && [ "${SCOTCHDIR}" != "" ] ; then
- myconf_keys="${myconf_keys} --enable-splitter=yes --with-metis=${METISDIR} --with-scotch=${SCOTCHDIR}"
- fi
- if [ "${module}" == "NETGENPLUGIN" ] && [ "$NETGENHOME" != "" ] ; then
- myconf_keys="${myconf_keys} --with-netgen=${NETGENHOME}"
- fi
-
- 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
- fi
-
- #########################################################
- # echo possible errors
- #########################################################
- if [ $verbose_level -gt 0 ] ; then
- cat ${LOG_DIR}/configure_${module}.log | grep ": error:" >&2
- fi
- if [ $verbose_level -gt 1 ] ; then
- cat ${LOG_DIR}/configure_${module}.log | grep ": WARNING:" >&2
- fi
- fi
- fi
- #########################################################
- # perform make
- #########################################################
- echo "... Performing make"
- #########################################################
- # first clear dependencies
- #########################################################
- find . -name ".dep*" -type f -exec rm -f {} \; >& /dev/null
- #########################################################
- # then make
- #########################################################
- if [ "${module}" == "PARAVIS" ] ; then
- VTK_AUTOLOAD_PATH_BACKUP=${VTK_AUTOLOAD_PATH}
- test "${VTK_AUTOLOAD_PATH}" != "" && unset VTK_AUTOLOAD_PATH
- fi
- make >& ${LOG_DIR}/make_${module}.log
- sts=$?
- if [ "${module}" == "PARAVIS" ] ; then
- test "${VTK_AUTOLOAD_PATH_BACKUP}" != "" && export VTK_AUTOLOAD_PATH=${VTK_AUTOLOAD_PATH_BACKUP}
- fi
- #########################################################
- # if make step is successful set the ${module}_ROOT_DIR
- # environment variable
- #########################################################
- #if [ $sts -eq 0 ] ; then
- # export ${module}_ROOT_DIR=${module_build}
- #fi
- #########################################################
- # print make errors
- #########################################################
- cat ${LOG_DIR}/make_${module}.log | grep -Ei '[*][*][*].*error' >&2
- #########################################################
- # print compiler errors and warnings
- # Note: here awk is used to concatenate together several lines of single
- # error or warning message produced by stupid gnu compiler
- # Actually, instead of that we could use 'fmessage length=n' option of g++...
- #########################################################
- if [ $verbose_level -gt 0 ] ; then
- ###cat ${LOG_DIR}/make_${module}.log | grep ": error"
- 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/"@@ >&2
- fi
- if [ $verbose_level -gt 1 ] ; then
- 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/"@@ >&2
- fi
- #########################################################
- # perform make dev_docs step if -t flag is given
- #########################################################
- if [ $is_tui -eq 1 ] && [ $sts -eq 0 ] && [ -d ${module_build}/doc ] ; then
- cd ${module_build}/doc
- dd=`cat Makefile | grep -E "dev_docs[[:space:]]*:"`
- 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 '[*][*][*]' >&2
- fi
- fi
- cd ${module_build}
- #########################################################
- # perform make if -i or -p flags are given
- #########################################################
- if [ $is_install -eq 1 ] && [ $sts -eq 0 ] || [ "${module}" == "KERNEL" ] ; then
- #########################################################
- # deleting build directory if -d flag is given
- #########################################################
- if [ -e $px ] && [ $is_delete -eq 1 ] ; then
- echo "... Removing $px"
- rm -rf $px >& /dev/null
- if [ "$?" != "0" ] ; then
- echo
- echo '!!! Warning !!! Cannot remove install directory ${px}. Permission denied.'
- echo
- fi
- fi
- echo "... Performing make install"
- make install >& ${LOG_DIR}/make_install_${module}.log
- sts=$?
- #########################################################
- # if make install step is successful set the
- # ${module}_ROOT_DIR environment variable
- #########################################################
- if [ $sts -eq 0 ] ; then
- export ${module}_ROOT_DIR=$px
- fi
- fi
- echo ">>> Finished ${module} module"
- else
- echo
- echo '!!! Error !!! Cannot find module sources. '${module}'_SRC_DIR environment variable is not set.'
- echo
- fi
-done
-#########################################################
-# finalize
-#########################################################
-cd ${BUILD_DIR}
-
-echo
-echo "==========================================================================="
-echo "SALOME build finished at `date`"
-echo "==========================================================================="
-echo