View Issue Details

IDProjectCategoryView StatusLast Update
0001997ThirdPartyBugpublic2016-02-16 09:00
Reporterwyldckat Assigned Tohenry  
PrioritylowSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
Summary0001997: Add "export ParaView_INCLUDE_DIR" and/or wmREFRESH to the instructions at the end of building ParaView
DescriptionA recent change in OpenFOAM-dev, namely this line:

  export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-3.0

does raise an interesting detail that some people might find when they finish their first build of ParaView, namely that (I don't know for certain how exactly) this variable might be wrongly set to this 3.0 version.

Therefore, attached is the file "ParaViewFunctions", which adds the lines shown by the 'git diff' shown in the Additional Information section below. By informing that the "ParaView_INCLUDE_DIR" variable should also be defined (at least in most cases), it can help overcome accidental settings to "3.0".

The suggestion to run "wmREFRESH" might be easier in some situations, although it doesn't cover all of the possible build scenarios.
Additional Informationdiff --git a/etc/tools/ParaViewFunctions b/etc/tools/ParaViewFunctions
index 04323da..e4db85e 100644
--- a/etc/tools/ParaViewFunctions
+++ b/etc/tools/ParaViewFunctions
@@ -456,8 +456,13 @@ cat<< INFO
     Set environment variables:
 
         export ParaView_DIR=$ParaView_DIR
+ export ParaView_INCLUDE_DIR=\$ParaView_DIR/include/paraview-$ParaView_MAJOR
         export PATH=\$ParaView_DIR/bin:\$PATH
         export PV_PLUGIN_PATH=\$FOAM_LIBBIN/paraview-$ParaView_MAJOR
+
+ or simply run:
+
+ wmREFRESH
     ---
 INFO
 }
TagsNo tags attached.

Activities

wyldckat

2016-02-15 23:24

updater  

ParaViewFunctions (13,561 bytes)   
#---------------------------------*- sh -*-------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
#    \\/     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 3 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, see <http://www.gnu.org/licenses/>.
#
# File
#     etc/tools/ParaViewFunctions
#
# Description
#     ParaView make/install helper functions
#
#------------------------------------------------------------------------------

# buildBASE, installBASE defined from tools/ThirdPartyFunctions

#
# where things are or should be put
#   ParaView_VERSION and ParaView_MAJOR should already have been set
#
#   ParaView_SOURCE_DIR : location of the original sources
#   ParaView_BINARY_DIR : location of the build
#   ParaView_DIR        : location of the installed program
#
setDirs()
{
    ParaView_SOURCE_DIR=$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION

    [ -d "$ParaView_SOURCE_DIR" ] || {
        echo "did not find ParaView-$ParaView_VERSION in these directories:"
        echo "  WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR"
        echo
        echo "abort build"
        exit 1
    }

    # ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
    ParaView_BINARY_DIR=$buildBASE/ParaView-$ParaView_VERSION

    # ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION-$OBJ_ADD
    ParaView_DIR=$installBASE/ParaView-$ParaView_VERSION

    export ParaView_SOURCE_DIR ParaView_BINARY_DIR ParaView_DIR

    echo
    echo "ParaView_SOURCE_DIR=$ParaView_SOURCE_DIR"
    echo "ParaView_BINARY_DIR=$ParaView_BINARY_DIR"
    echo "ParaView_DIR=$ParaView_DIR"
}


#
# set ParaView_VERSION and adjust ParaView_MAJOR accordingly
#
setVersion()
{
    [ "$#" -ge 1 ] && ParaView_VERSION="${1##paraview-}"

    # the major version is "<digits>.<digits>"
    ParaView_MAJOR=$(echo $ParaView_VERSION | \
        sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/')

    export ParaView_VERSION ParaView_MAJOR
}


#------------------------------------------------------------------------------

#
# extract and echo date stamp information from
#     VTK/Utilities/kwsys/kwsysDateStamp.cmake
# since the order of the entries is already correct, can use simple sed script
#
echoDateStamp()
{
    (
        set -- $(
            sed -ne 's/^SET(KWSYS_DATE_STAMP_[A-Z]*\([ 0-9]*\)).*$/\1/p' \
            $ParaView_SOURCE_DIR/VTK/Utilities/kwsys/kwsysDateStamp.cmake
        )

        IFS='-'
        echo "date-stamp: $*"
    )
}


#
# extract version information from
#     CMakeLists.txt
# since the order of the entries is already correct, can use simple sed script
#
getVersion()
{
    (
        set -- $(
            sed -ne 's/^SET(PARAVIEW_VERSION_[A-Z]*\([ 0-9]*\)).*$/\1/p' \
            $ParaView_SOURCE_DIR/CMakeLists.txt
        )

        IFS='.'
        echo "$*"
    )
}

#
# compare version information
#
checkVersion()
{
    local ver=$(getVersion)
    if [ "$ParaView_VERSION" != "$ver" ]
    then
        echo "MISMATCH!"
        echo "    specified $ParaView_VERSION"
        echo "    found     $ver"
    fi
}

#
# set CMake cache variables
#
addCMakeVariable()
{
    while [ -n "$1" ]
    do
        CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
        shift
    done
}


#
# verbose makefiles
#
addVerbosity()
{
    [ "$withVERBOSE" = true ] && addCMakeVariable  "CMAKE_VERBOSE_MAKEFILE=TRUE"
}


#
# define options for mpi support
#
addMpiSupport()
{
    [ "${withMPI:=false}" = true ] || return
    OBJ_ADD="$OBJ_ADD-mpi"

    addCMakeVariable  "PARAVIEW_USE_MPI=ON VTK_USE_MPI=ON"
    addCMakeVariable  "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS"
}


#
# define options for python support
#
addPythonSupport()
{
    [ "${withPYTHON:=false}" = true ] || 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 -pythnon-lib input: 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')

           [ -e "$PYTHON_LIBRARY" ] || {
               echo "*** Error: Unable to determine path to python library."
           }
        fi

        [ -e "$PYTHON_LIBRARY" ] || {
            echo "    Please set the full path to the python library "
            echo "    (including libpython) using the -python-lib option, "
            echo "    or deactivate python support by not using the -python "
            echo "    option"
            exit 1
        }

        pythonMajor=$(echo $PYTHON_LIBRARY | sed 's/.*libpython\(.*\)\.so.*/\1/')
        pythonInclude=/usr/include/python$pythonMajor

        # note - we could also allow for a PYTHON_INCLUDE variable ...
        [ -d "$pythonInclude" ] || {
            echo "    No python headers found in $pythonInclude/"
            echo "    Please install python headers or deactivate "
            echo "    python support by not using the -python option"
            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 found"
        echo "***        Deactivate python support by not using the -python "
        echo "***        option"
        exit 1
    fi
}


#
# define options for mesa support
#
addMesaSupport()
{
    [ "${withMESA:=false}" = true ] || return

    if [ -d "$MESA_INCLUDE" -a -f "$MESA_LIBRARY" ]
    then
        OBJ_ADD="$OBJ_ADD-mesa"

        addCMakeVariable  "VTK_OPENGL_HAS_OSMESA=ON"
        addCMakeVariable  "OSMESA_INCLUDE_DIR=$MESA_INCLUDE"
        addCMakeVariable  "OSMESA_LIBRARY=$MESA_LIBRARY"

    else
       echo "*** Error: no MESA information found"
       echo "***        Deactivate MESA support by not using the -mesa option, "
       echo "***        or set the correct paths for:"
       echo "***        -mesa-include ($MESA_INCLUDE)"
       echo "***        -mesa-lib ($MESA_LIBRARY)"
       exit 1
    fi
}


addQtSupport()
{
    QtVersion=none
    [ "${withQT:=false}" = true ] || return

    addCMakeVariable "PARAVIEW_BUILD_QT_GUI=ON"

    unset qmakeExe
    if [ -n "$QMAKE_PATH" ]
    then
        if [ -d "$QMAKE_PATH" ]
        then
            if [ -x "$QMAKE_PATH/qmake" ]
            then
                qmakeExe=$QMAKE_PATH/qmake
            elif [ -x "$QMAKE_PATH/bin/qmake" ]
            then
                qmakeExe=$QMAKE_PATH/bin/qmake
            fi
        elif [ -x "$QMAKE_PATH" ]
        then
            qmakeExe=$QMAKE_PATH
        fi

        if [ -n "$qmakeExe" ]
        then
            # use absolute path
            if [ "${qmakeExe#/}" = "$qmakeExe" ]
            then
                qmakeExe="$(cd ${qmakeExe%/qmake} 2>/dev/null && pwd)/qmake"
            fi
        else
            echo
            echo "qmake not found under specified QMAKE_PATH"
            echo "    QMAKE_PATH=$QMAKE_PATH"
            echo "leaving unspecified"
            echo
        fi
    fi

    # default to using qmake from the path
    if [ -n "$qmakeExe" ]
    then
        addCMakeVariable "QT_QMAKE_EXECUTABLE:FILEPATH=$qmakeExe"
    else
        qmakeExe=qmake
    fi


    # Check qmake can be found
    if type $qmakeExe >/dev/null 2>&1
    then
        # Check the Qt version selected
        # parse -> "Using Qt version X.Y.Z in ..."
        QtVersion=$($qmakeExe -query QT_VERSION)

        # split Major.Minor.Revision - could also use IFS hacking
        set -- $(echo "$QtVersion" | sed -e 's/\./ /g')

        QtMajor=$1
        QtMinor=$2

        if [ $QtMajor -lt 4 ] || [ $QtMajor -eq 4 -a $QtMinor -lt 5 ]
        then
            echo "*** Error: Qt version provided < 4.5"
            echo "***     Please use the -qmake option to specify the location of a version of Qt >= 4.5 "
            echo "***     e.g."
            echo "***         -qmake /usr/local/qt-4.6.2/bin/qmake"
            echo "***         -qmake $installBASE/qt-4.6.2/bin/qmake"
            exit 1
        fi
    else
        echo "*** Error: cannot find qmake either at \$QMAKE_PATH or in current \$PATH"
        exit 1
    fi
}


#
# configure via cmake, but don't actually build anything
#
configParaView()
{
    unset cmakeExe
    if [ -n "$CMAKE_PATH" ]
    then
        if [ -d "$CMAKE_PATH" ]
        then
            if [ -x "$CMAKE_PATH/cmake" ]
            then
                cmakeExe=$CMAKE_PATH/cmake
            elif [ -x "$CMAKE_PATH/bin/cmake" ]
            then
                cmakeExe=$CMAKE_PATH/bin/cmake
            fi
        elif [ -x "$CMAKE_PATH" ]
        then
            cmakeExe=$CMAKE_PATH
        fi

        if [ -n "$cmakeExe" ]
        then
            # use absolute path
            if [ "${cmakeExe#/}" = "$cmakeExe" ]
            then
                cmakeExe="$(cd ${cmakeExe%/cmake} 2>/dev/null && pwd)/cmake"
            fi
        else
            echo
            echo "cmake not found under specified CMAKE_PATH"
            echo "    CMAKE_PATH=$CMAKE_PATH"
            echo "leaving unspecified"
            echo
        fi
    fi

    # default to using cmake from the path
    [ -n "$cmakeExe" ] || cmakeExe=cmake

    # remove any existing build folder and recreate
    if [ -d $ParaView_BINARY_DIR ]
    then
        echo "removing old build directory"
        echo "    $ParaView_BINARY_DIR"
        rm -rf $ParaView_BINARY_DIR
    fi
    mkdir -p $ParaView_BINARY_DIR

    addCMakeVariable  "CMAKE_BUILD_TYPE:STRING=$buildType"

    cd $ParaView_BINARY_DIR || exit 1  # change to build folder

    echo "----"
    echo "Configuring paraview-$ParaView_VERSION (major version: $ParaView_MAJOR)"
    echo "    MPI    support : ${withMPI:-false}"
    echo "    Python support : ${withPYTHON:-false}"
    echo "    MESA   support : ${withMESA:-false}"
    echo "    Qt dev support : ${withQT:-false}"
    echo "    Source         : $ParaView_SOURCE_DIR"
    echo "    Build          : $ParaView_BINARY_DIR"
    echo "    Target         : $ParaView_DIR"
    echo "    Build type     : $buildType"
    echo "----"
    echo
    echo "$cmakeExe" \
        -DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
        $CMAKE_VARIABLES \
        $ParaView_SOURCE_DIR
    echo
    echo "----"
    echo

    # run cmake to create Makefiles
    $cmakeExe \
        -DCMAKE_INSTALL_PREFIX:PATH=$ParaView_DIR \
        $CMAKE_VARIABLES \
        $ParaView_SOURCE_DIR
}


#
# invoke make
# also link bin/ to lib/paraview-* for development without installation
#
makeParaView()
{
    cd $ParaView_BINARY_DIR || exit 1  # change to build folder
    echo "    Starting make"
    time make -j $WM_NCOMPPROCS
    echo "    Done make"

    # remove lib if it is a link
    # (how this was previously handled before 'make install' worked)
    [ -L lib ] && rm lib 2>/dev/null
}


#
# install the program
#
installParaView()
{
    cd $ParaView_BINARY_DIR || exit 1  # change to build folder
    echo "    Installing ParaView to $ParaView_DIR"

    make install

cat<< INFO
    ---
    Installation complete for paraview-$ParaView_VERSION
    Set environment variables:

        export ParaView_DIR=$ParaView_DIR
        export ParaView_INCLUDE_DIR=\$ParaView_DIR/include/paraview-$ParaView_MAJOR
        export PATH=\$ParaView_DIR/bin:\$PATH
        export PV_PLUGIN_PATH=\$FOAM_LIBBIN/paraview-$ParaView_MAJOR

    or simply run:

        wmREFRESH
    ---
INFO
}


#------------------------------------------------------------------------------

# clear the referenced variables before using any of the functions
unset withMPI  withVERBOSE
unset withQT      QMAKE_PATH
unset withMESA    MESA_INCLUDE    MESA_LIBRARY
unset withPYTHON  PYTHON_INCLUDE  PYTHON_LIBRARY
unset CMAKE_VARIABLES
unset OBJ_ADD
unset buildType

# start with these general settings
addCMakeVariable  "BUILD_SHARED_LIBS:BOOL=ON  VTK_USE_RPATH:BOOL=OFF"

# include development files in "make install"
addCMakeVariable  "PARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"

# don't build test tree
addCMakeVariable  "BUILD_TESTING:BOOL=OFF"


# ----------------------------------------------------------------- end-of-file
ParaViewFunctions (13,561 bytes)   

henry

2016-02-16 07:55

manager   ~0005948

export ParaView_INCLUDE_DIR=\$ParaView_DIR/include/paraview-$ParaView_MAJOR

will not work for ParaView-4.4.0 and 5.0.0 due to a bug in the Cmake files in those versions which creates the include directory $ParaView_DIR/include/paraview-3.0

See bug-report
http://www.openfoam.org/mantisbt/view.php?id=1986

I worked-around it with

    export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-$ParaView_MAJOR
    if [ ! -d $ParaView_INCLUDE_DIR -a -d $ParaView_DIR/include/paraview-3.0 ]
    then
        export ParaView_INCLUDE_DIR=$ParaView_DIR/include/paraview-3.0
    fi

So in your instructions I would suggest to run

wmREFRESH

to ensure the "correct" include directory is set.

henry

2016-02-16 09:00

manager   ~0005950

Thanks for the patch
Resolved by commit 43f2b369458ff87d0c85c493586d12b75855cf32

Issue History

Date Modified Username Field Change
2016-02-15 23:24 wyldckat New Issue
2016-02-15 23:24 wyldckat Status new => assigned
2016-02-15 23:24 wyldckat Assigned To => henry
2016-02-15 23:24 wyldckat File Added: ParaViewFunctions
2016-02-16 07:55 henry Note Added: 0005948
2016-02-16 09:00 henry Note Added: 0005950
2016-02-16 09:00 henry Status assigned => resolved
2016-02-16 09:00 henry Resolution open => fixed