From a60dd21278cfed1d511e666b62ca478a45571488 Mon Sep 17 00:00:00 2001 From: henry Date: Mon, 18 May 2009 09:24:16 +0100 Subject: [PATCH] Upgraded the ParaView build scripts to version 3.3-cvs. --- bin/tools/buildParaView3.2.1 | 71 ----- bin/tools/buildParaView3.3 | 192 +++++++++++ bin/tools/buildParaViewFunctions | 673 +++++++++++++++++++++++---------------- 3 files changed, 589 insertions(+), 347 deletions(-) delete mode 100755 bin/tools/buildParaView3.2.1 create mode 100755 bin/tools/buildParaView3.3 rewrite bin/tools/buildParaViewFunctions (74%) diff --git a/bin/tools/buildParaView3.2.1 b/bin/tools/buildParaView3.2.1 deleted file mode 100755 index e6a87af..0000000 --- a/bin/tools/buildParaView3.2.1 +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# ========= | -# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox -# \\ / O peration | -# \\ / A nd | Copyright (C) 1991-2008 OpenCFD Ltd. -# \\/ M anipulation | -#------------------------------------------------------------------------------ -# License -# This file is part of OpenFOAM. -# -# OpenFOAM is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenFOAM; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# Script -# buildParaView -# -# Description -# Build and install ParaView -# - run from folder above ParaView source folder or place the -# ParaView source under $WM_PROJECT_INST_DIR -# -#------------------------------------------------------------------------------ -. $WM_PROJECT_DIR/bin/tools/buildParaViewFunctions - -# set -x - -PARAVIEW_SRC="ParaView3.2.1" -PARAVIEW_MAJOR_VERSION="3.2" - -VERBOSE=OFF -INCLUDE_MPI=ON -MPI_MAX_PROCS=32 -INCLUDE_PYTHON=ON -PYTHON_LIBRARY="" -INCLUDE_MESA=OFF - -set +x - -# provide a shortcut for repeated builds - use with caution -if [ "$#" -gt 0 ] -then - CMAKE_SKIP=YES -fi - -# set paraview environment -PARAVIEW_SRC_DIR=$PWD/$PARAVIEW_SRC -#PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS/obj$OBJ_ADD -PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_ARCH$WM_COMPILER - -addMpiSupport # set MPI specific options -addPythonSupport # set python specific options -addMesaSupport # set MESA specific options - -buildParaView -installParaView - -echo "done" - -#------------------------------------------------------------------------------ diff --git a/bin/tools/buildParaView3.3 b/bin/tools/buildParaView3.3 new file mode 100755 index 0000000..88b86a9 --- /dev/null +++ b/bin/tools/buildParaView3.3 @@ -0,0 +1,192 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# buildParaView3.3-cvs +# +# Description +# Build and install ParaView +# - run from folder above ParaView source folder or place the +# ParaView source under $WM_THIRD_PARTY_DIR +# +#------------------------------------------------------------------------------ +. ./buildParaViewFunctions + +PARAVIEW_SRC=ParaView3.3-cvs +PARAVIEW_MAJOR_VERSION=3.3 + +# User options: +# ~~~~~~~~~~~~~ + +# MPI support: +WITH_MPI=OFF +MPI_MAX_PROCS=32 + +# Python support: +# note: script will try to determine the appropriate python library. +# If it fails, specify the path using the PYTHON_LIBRARY variable +WITH_PYTHON=OFF +PYTHON_LIBRARY="" +# PYTHON_LIBRARY="/usr/lib64/libpython2.5.so.1.0" + +# MESA graphics support: +WITH_MESA=OFF + +# +# No further editing below this line +#------------------------------------------------------------------------------ +Script=${0##*/} + +usage() { + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat< \(.*\) (.*/\1/p'` - fi - - if [ ! -n "$PYTHON_LIBRARY" ]; then - echo "*** Error: Unable to determine path to python library." - echo " Please set the variable PYTHON_LIBRARY to the full" - echo " path to (and including) libpython, or deactivate" - echo " python support by setting INCLUDE_PYTHON=OFF" - exit 1 - fi - PYTHON_MAJOR_VERSION=`echo $PYTHON_LIBRARY | \ - sed 's/.*libpython\(.*\)\.so.*/\1/'` - PYTHON_INCLUDE_DIR=/usr/include/python$PYTHON_MAJOR_VERSION - - addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON" - addCMakeVariable "PYTHON_INCLUDE_PATH=$PYTHON_INCLUDE_DIR" - addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY" - else - echo "*** Error: python not installed" - echo "*** De-activate python support by setting " \ - "INCLUDE_PYTHON=OFF" - exit 1 - fi -} - - -addMesaSupport () -{ - [ "$INCLUDE_MESA" = ON ] || return - - MESA_INCLUDE_DIR=/usr/include/GL - MESA_LIBRARY=/usr/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so - - if [ -d "$MESA_INCLUDE_DIR" -a -f "$MESA_LIBRARY" ]; then - OBJ_ADD="$OBJ_ADD-mesa" - addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON" - addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR" - addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY" - else - echo "*** Error: no MESA information found" - exit 1 - fi -} - - -buildParaView () -{ - # set general options - addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON" - addCMakeVariable "VTK_USE_RPATH:BOOL=OFF" - addCMakeVariable "CMAKE_BUILD_TYPE:STRING=Release" - - # set paraview environment - unset PARAVIEW_SRC_DIR - for i in $PWD $WM_THIRD_PARTY_DIR - do - if [ -d $i/$PARAVIEW_SRC ] - then - PARAVIEW_SRC_DIR=$i/$PARAVIEW_SRC - break - fi - done - - [ -d "$PARAVIEW_SRC_DIR" ] || { - echo "did not find $PARAVIEW_SRC in these directories:" - echo " PWD=$PWD" - echo " WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR" - echo "abort build" - exit 1 - } - - # PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_OPTIONS/obj$OBJ_ADD - PARAVIEW_OBJ_DIR=$PARAVIEW_SRC_DIR/platforms/$WM_ARCH$WM_COMPILER - - # provide a shortcut for repeated builds - use with caution - if [ "$CMAKE_SKIP" = YES ] - then - - # change to build folder - cd $PARAVIEW_OBJ_DIR || exit 1 - - else - - # remove existing build folder if present - if [ -e "$PARAVIEW_OBJ_DIR" ]; then - rm -rf $PARAVIEW_OBJ_DIR - fi - - # create paraview build folder - mkdir -p $PARAVIEW_OBJ_DIR - cd $PARAVIEW_OBJ_DIR - - echo "Building $PARAVIEW_SRC" - echo " MPI support : $INCLUDE_MPI" - echo " Python support : $INCLUDE_PYTHON" - echo " MESA support : $INCLUDE_MESA" - echo " Source : $PARAVIEW_SRC_DIR" - echo " Target : $PARAVIEW_OBJ_DIR" - - # make paraview - cmake \ - -DCMAKE_INSTALL_PREFIX=$PARAVIEW_APP_DIR \ - $CMAKE_VARIABLES \ - $PARAVIEW_SRC_DIR - fi - - if [ -r /proc/cpuinfo ]; then - WM_NCOMPPROCS=`egrep "^processor" /proc/cpuinfo | wc -l` - - if [ $WM_NCOMPPROCS -gt 8 ]; then - WM_NCOMPPROCS=8 - fi - - make -j $WM_NCOMPPROCS - else - make - fi -} - - -installParaView () -{ - if [ -e "$PARAVIEW_OBJ_DIR/bin/paraview" ]; then - echo " Build complete" - - cd $PARAVIEW_OBJ_DIR - - # Replace PARAVIEW_SRC_DIR path with ParaView_INST_DIR - # environment variables - echo " Replacing path hard links" - find . -iname \*.cmake -execdir sed -i \ - "s,$PARAVIEW_SRC_DIR,\$ENV{ParaView_INST_DIR},g" {} ';' \ - -print - - # Replace local MPI_ARCH_PATH path with MPI_ARCH_PATH - # environment variables - if [ "$INCLUDE_MPI" = ON ]; then - find . -iname \*.cmake -execdir sed -i \ - "s,$MPI_ARCH_PATH,\$ENV{MPI_ARCH_PATH},g" {} ';' \ - -print - fi - - # Replace local CMAKE_HOME path with CMAKE_HOME - # environment variables - find . -iname '*cmake*' -execdir sed -i \ - "s,$CMAKE_HOME,\$ENV{CMAKE_HOME},g" {} ';' \ - -print - - # Replace local WM_COMPILER_DIR path with WM_COMPILER_DIR - # environment variables - find . -iname '*cmake*' -execdir sed -i \ - "s,$WM_COMPILER_DIR,\$ENV{WM_COMPILER_DIR},g" {} ';' \ - -print - - # create a softlink to the $PARAVIEW_OBJ_DIR/bin folder - # - workaround for chosen install location - echo " Creating paraview $PARAVIEW_MAJOR_VERSION soft link to /bin" - ( mkdir lib && cd lib && ln -s ../bin \ - paraview-$PARAVIEW_MAJOR_VERSION ) - - # info on symlinks to screen - echo "" - echo " ---" - echo " Installation complete" - echo " Set environment variables:" - echo " - ParaView_INST_DIR to $PARAVIEW_SRC_DIR" - echo " - ParaView_DIR to $PARAVIEW_OBJ_DIR" - echo " - PV_PLUGIN_PATH to $FOAM_LIBBIN" - echo " Add $PARAVIEW_OBJ_DIR/bin to PATH" - # echo " Add $ParaView_INST_DIR/lib to LD_LIBRARY_PATH" - echo " ---" - fi -} - - -# for good measure - clear a few variables before using any of the functions - -unset VERBOSE INCLUDE_MPI INCLUDE_PYTHON INCLUDE_MESA PYTHON_LIBRARY -unset CMAKE_VARIABLES OBJ_ADD -unset CMAKE_SKIP - - -# ----------------------------------------------------------------- end-of-file +#---------------------------------*- sh -*------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# buildParaViewFunctions +# +# Description +# ParaView build/install helper functions +# +#------------------------------------------------------------------------------ + +# ParaView_INST_DIR : location of the original sources +# ParaView_DIR : location of the build (for the ParaViewConfig.cmake) +# and the installed program + + +# +# set CMake cache variables +# +addCMakeVariable() +{ + while [ -n "$1" ] + do + CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1" + shift + done +} + + +# +# verbose makefiles +# +addVerbosity() +{ + [ "$VERBOSE" = ON ] && addCMakeVariable CMAKE_VERBOSE_MAKEFILE=TRUE +} + + +# +# define options for mpi support +# +addMpiSupport() +{ + [ "$WITH_MPI" = ON ] || return + OBJ_ADD="$OBJ_ADD-mpi" + + addCMakeVariable PARAVIEW_USE_MPI=ON VTK_USE_MPI=ON + addCMakeVariable MPI_INCLUDE_PATH=$MPI_ARCH_PATH/include + addCMakeVariable MPI_LIBRARY=$MPI_ARCH_PATH/lib/libmpi.so + addCMakeVariable VTK_MPIRUN_EXE=$MPI_ARCH_PATH/bin/mpirun + addCMakeVariable VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS +} + + +# +# define options for python support +# +addPythonSupport() +{ + [ "$WITH_PYTHON" = ON ] || return + OBJ_ADD="$OBJ_ADD-py" + + if pythonBin=$(which python 2>/dev/null) + then + if [ -n "$PYTHON_LIBRARY" ] + then + # check $PYTHON_LIBRARY if it has been set + if [ ! -e "$PYTHON_LIBRARY" ] + then + echo "*** Error: libpython not found at location specified " \ + "by PYTHON_LIBRARY=$PYTHON_LIBRARY" + fi + else + # Try to get $PYTHON_LIBRARY from dynamically linked binary + PYTHON_LIBRARY=$(ldd $pythonBin | \ + sed -ne '/libpython/s/.* => \(.*\) (.*/\1/p') + + if [ ! -e "$PYTHON_LIBRARY" ] + then + echo "*** Error: Unable to determine path to python library." + fi + fi + + [ -e "$PYTHON_LIBRARY" ] || { + echo " Please set the variable PYTHON_LIBRARY to the full" + echo " path to (and including) libpython, or deactivate" + echo " python support by setting WITH_PYTHON=OFF" + exit 1 + } + + pythonMajor=$(echo $PYTHON_LIBRARY | sed 's/.*libpython\(.*\)\.so.*/\1/') + pythonInclude=/usr/include/python$pythonMajor + + [ -e "$PYTHON_LIBRARY" ] || { + echo " Please set the variable PYTHON_LIBRARY to the full" + echo " path to (and including) libpython, or deactivate" + echo " python support by setting WITH_PYTHON=OFF" + exit 1 + } + + # note - we could also allow for a PYTHON_INCLUDE variable ... + [ -e "$pythonInclude" ] || { + echo " No python include headers found" + echo " Please install python headers or deactivate " + echo " python support by setting WITH_PYTHON=OFF" + exit 1 + } + + addCMakeVariable PARAVIEW_ENABLE_PYTHON=ON + addCMakeVariable PYTHON_INCLUDE_PATH=$pythonInclude + addCMakeVariable PYTHON_LIBRARY=$PYTHON_LIBRARY + + echo "----" + echo "Python information:" + echo " executable : $pythonBin" + echo " version : $pythonMajor" + echo " include path : $pythonInclude" + echo " library : $PYTHON_LIBRARY" + + unset pythonBin pythonInclude pythonMajor + else + echo "*** Error: python not installed" + echo "*** Deactivate python support by setting WITH_PYTHON=OFF" + exit 1 + fi +} + + +# +# define options for mesa support +# +addMesaSupport() +{ + [ "$WITH_MESA" = ON ] || return + + if [ -d "$MESA_INCLUDE_DIR" -a -f "$MESA_LIBRARY" ] + then + OBJ_ADD="$OBJ_ADD-mesa" + + addCMakeVariable VTK_OPENGL_HAS_OSMESA=ON + addCMakeVariable OSMESA_INCLUDE_DIR=$MESA_INCLUDE_DIR + addCMakeVariable OSMESA_LIBRARY=$MESA_LIBRARY + + else + echo "*** Error: no MESA information found" + echo "*** Deactivate MESA support by setting WITH_MESA=OFF, or" + echo "*** correct paths given by:" + echo "*** - MESA_INCLUDE_DIR ($MESA_INCLUDE_DIR)" + echo "*** - MESA_LIBRARY ($MESA_LIBRARY)" + exit 1 + fi +} + + +# +# discover where things are or should be put +# +getPaths() +{ + # set paraview environment + for i in $PWD $WM_THIRD_PARTY_DIR + do + ParaView_INST_DIR=$i/$PARAVIEW_SRC + [ -d $ParaView_INST_DIR ] && break + done + + if [ ! -d "$ParaView_INST_DIR" ] + then + # last chance: maybe already in the paraview directory + [ "${PWD##*/}" = $PARAVIEW_SRC ] && ParaView_INST_DIR=$PWD + + [ -d "$ParaView_INST_DIR" ] || { + echo "did not find $PARAVIEW_SRC in these directories:" + echo " PWD=$PWD" + echo " WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR" + echo "abort build" + exit 1 + } + fi + + # ParaView_DIR=$ParaView_INST_DIR/platforms/$WM_ARCH$WM_COMPILER$OBJ_ADD + ParaView_DIR=$ParaView_INST_DIR/platforms/$WM_ARCH$WM_COMPILER + echo "ParaView_DIR=$ParaView_DIR" +} + + +# +# configure via cmake, but don't actually build anything +# +configParaView() +{ + # remove any existing build folder and recreate + if [ -d $ParaView_DIR ] + then + echo "removing old build/install directory" + rm -rf $ParaView_DIR + fi + mkdir -p $ParaView_DIR + + cd $ParaView_DIR + + echo "----" + echo "Configuring $PARAVIEW_SRC" + echo " MPI support : $WITH_MPI" + echo " Python support : $WITH_PYTHON" + echo " MESA support : $WITH_MESA" + echo " Source : $ParaView_INST_DIR" + echo " Target : $ParaView_DIR" + echo "----" + echo + echo cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \ + $CMAKE_VARIABLES \ + ../.. + echo + echo "----" + echo + + # run cmake to create Makefiles + cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \ + $CMAKE_VARIABLES \ + ../.. + +} + + +# +# invoke make +# also link bin/ to lib/paraview-* for development without installation +# +makeParaView() +{ + cd $ParaView_DIR || exit 1 # change to build folder + echo " Starting make" + + if [ -r /proc/cpuinfo ] + then + WM_NCOMPPROCS=$(egrep "^processor" /proc/cpuinfo | wc -l) + [ $WM_NCOMPPROCS -le 8 ] || WM_NCOMPPROCS=8 + + time make -j $WM_NCOMPPROCS + else + time make + fi + echo " Done make" + + echo " For quicker development, linking lib/paraview-$PARAVIEW_MAJOR_VERSION/ -> bin/" + rm -rf lib/paraview-$PARAVIEW_MAJOR_VERSION + mkdir lib 2>/dev/null + ( cd lib && ln -s ../bin paraview-$PARAVIEW_MAJOR_VERSION ) +} + + +# +# adjust hard-links (internal function) +# Note: use loop with grep to avoid touching too many files +# +fixHardLinks() +{ + envName=$1 + string=$2 + shift 2 + + echo "-- Replacing path hard links for \$$envName" + + for fileSpec + do + echo -n " $fileSpec: " + for i in $(find . -type f -iname "$fileSpec") + do + if grep -q "$string" $i + then + echo -n "#" + sed -i "s,$string,\$ENV{$envName},g" $i + fi + done + echo + done +} + + +# +# replace absolute paths with environment variables +# This triggers a partial (or even a full) rebuild, but might let us +# find our files later if we relocate the build +# +fixCMakeFiles() +{ + cd $ParaView_DIR || exit 1 # change to build folder + + # Replace path with env variable: ParaView_DIR + fixHardLinks ParaView_DIR "$ParaView_DIR" '*.cmake' + + # Replace path with env variable: ParaView_INST_DIR + fixHardLinks ParaView_INST_DIR "$ParaView_INST_DIR" '*.cmake' + + # Replace path with env variable: MPI_ARCH_PATH + if [ "$WITH_MPI" = ON ] + then + fixHardLinks MPI_ARCH_PATH "$MPI_ARCH_PATH" '*.cmake' + fi + + # Replace path with env variable: CMAKE_HOME + if [ -r "$CMAKE_HOME" ] + then + fixHardLinks CMAKE_HOME "$CMAKE_HOME" '*cmake*' + fi + + # Replace path with env variable: WM_COMPILER_DIR + # (include cmake.check_cache) + # This triggers a complete rebuild (with cmake-2.6.2), but is likely + # needed when redistributing files + fixHardLinks WM_COMPILER_DIR "$WM_COMPILER_DIR" '*cmake*' +} + + +# +# make html documentation (mostly just for the readers/writers) +# +makeDocs() +{ + cd $ParaView_DIR || exit 1 # change to build folder + echo " Creating html documentation" + + make HTMLDocumentation +} + + +# +# actually install the program +# +installParaView() +{ + cd $ParaView_DIR || exit 1 # change to build folder + echo " Installing ParaView to $ParaView_DIR" + + echo "disabled 'make install' for now, just use links" + + # about.txt may be missing + paraviewLibDir="$ParaView_DIR/lib/paraview-$PARAVIEW_MAJOR_VERSION" + if [ -d "$paraviewLibDir" -a ! -e "$paraviewLibDir/about.txt" ] + then + echo "paraview-$PARAVIEW_MAJOR_VERSION installed - $(date)" > $paraviewLibDir/about.txt + fi + +cat<< INFO + --- + Installation complete + Set environment variables: + + export ParaView_INST_DIR=$ParaView_INST_DIR + export ParaView_DIR=$ParaView_DIR + export PV_PLUGIN_PATH=$FOAM_LIBBIN + export PATH=\$ParaView_DIR/bin:\$PATH + --- +INFO +} + + +# clear all the variables used before using any of the functions +unset VERBOSE +unset WITH_MPI WITH_MESA +unset WITH_PYTHON PYTHON_LIBRARY +unset CMAKE_VARIABLES +unset OBJ_ADD + +# start with these general settings +addCMakeVariable VTK_USE_TK=FALSE +addCMakeVariable BUILD_SHARED_LIBS:BOOL=ON VTK_USE_RPATH:BOOL=OFF +addCMakeVariable CMAKE_BUILD_TYPE:STRING=Release + +# include development files in "make install" +addCMakeVariable PARAVIEW_INSTALL_DEVELOPMENT:BOOL=ON + +# ----------------------------------------------------------------- end-of-file -- 2.11.4.GIT