View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001215 | OpenFOAM | Bug | public | 2014-03-12 09:34 | 2016-03-21 23:05 |
Reporter | Assigned To | henry | |||
Priority | normal | Severity | major | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | Linux | OS | RHEL | OS Version | 5.5 |
Summary | 0001215: conformalVoronoiMesh/foamyHexMesh build ignores ThirdParty boost | ||||
Description | Hello, The etc/config/CGAL.sh script does not take into account the directory name given to a version of boost installed in ThirdParty, so system version will need to be used by default, which might not exist, or could be too old for CGAL. When makeCGAL runs, it builds into, for example: ThirdParty-2.3.0/platforms/linux64Gcc/boost_1_55_0 but the etc/config/CGAL.sh script has hard coded: boost_version=boost-system I got around this by linking: ln -s boost_1_55_0 boost-system It might be best to build something like this into the makeCGAL script. Regards, Graham | ||||
Tags | No tags attached. | ||||
|
Back in August 2011, I had proposed this feature request: http://www.openfoam.org/mantisbt/view.php?id=278 Although the feature proposition is pretty much deprecated by now, there is an idea that could still be re-used for fixing this issue. I'm referring to the use of a "defaults.sh" file, as exemplified here: https://raw.githubusercontent.com/wyldckat/ThirdParty-2.0.x/get-em/etc/defaults.sh - I'll attach a copy here in the bug report a few seconds... In other words, the idea is to have a file "etc/config/defaults.sh" that has the version definitions that are currently embedded in "etc/config/settings.sh", "etc/config/CGAL.sh" and so on. Once such a file exists, it could be used to be sourced from the "make*" scripts in the "ThirdParty-*" folder, for loading the default list of application versions to be used. A sibling "etc/config/unset_defaults.sh" script could be used to 'unset' these version variables. edit: Forgot to mention: this "defaults.sh" file could then be used by "settings.sh" and any other shell script files. |
|
|
|
I think it would be better to keep the settings for CGAL and other additions in separate files because only some will be needed and defaults.sh would become cluttered and difficult to maintain. However, I see no reason why the make scripts in ThirdParty should not source the relevant etc/config/???.sh files to get the settings. |
|
|
|
The attached package "thirdparty_bash_proposal_v1.tar.gz" depends on the proposal "bash_proposal_v1.tar.gz" at #1232 is accepted. This package provides 3 files, indexed to commit c8904e60d2c97: - makeCGAL - Relies on the proposed "etc/config.sh/functions", "config.sh/CGAL" and "config.sh/compiler" files. This will load the OpenFOAM installation default versions for setting the local "*PACKAGE" environment variables, but it will also still use the local default numbers if the global defaults don't exist. In addition, I upper-cased the 1st letters on the comments within the script. - makeGcc - Relies on the proposed "etc/config.sh/functions" and "config.sh/compiler" files for loading the OpenFOAM environment default versions, which are for the "*PACKAGE" environment variables, but it will also still use the local default numbers if the global defaults don't exist. - makeLLVM - same as done in "makeGcc". I didn't extend this to "makeCmake" and "makeGperftools", simply because the environment for CMake is currently loaded in a different way from the conventional one and because I'm not yet familiar with gperftools. |
|
Thanks Bruno Resolved in ThirdParty-dev by commit 578f8827fbc5f709595fc5ab5185053aaa8cf678 |
|
Sorry, I'm reopening this report due to a tiny typo I made in the previous file package. I'm attaching the file "makeCGAL" which fixes the typo (I wrote "scotch" instead of "boost") and it also breaks the line for the "_foamEval" call, so that it doesn't go over the 80 characters per line. As for the original bug report, I missed an important detail that I'll provide the fix for it in issue #1232 in a few minutes. |
|
makeCGAL (8,368 bytes)
#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2012-2016 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/>. # # Script # makeCGAL # # Description # Build script for CGAL # # Note # Normally builds against ThirdParty boost and gmp/mpfr when possible. # To override this behaviour (and use the system boost and/or gmp/mpfr), # simply specify a 'system' version. For example, # makeCGAL boost-system gmp-system # # Mixing system and ThirdParty for gmp/mpfr is not supported. # #------------------------------------------------------------------------------ # Get CGAL, boost and gmp/mpfr versions . $WM_PROJECT_DIR/etc/config.sh/functions _foamEval SOURCE_CGAL_VERSIONS_ONLY=yes \ $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL) _foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/compiler) set -x cgalPACKAGE=${cgal_version:-CGAL-4.7} boostPACKAGE=${boost_version:-boost-system} gmpPACKAGE=${gmp_version:-gmp-system} mpfrPACKAGE=${mpfr_version:-mpfr-system} #------------------------------------------------------------------------------ # Run from third-party directory only wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || { echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR" echo " The environment variables are inconsistent with the installation." echo " Check the OpenFOAM entries in your dot-files and source them." exit 1 } . etc/tools/ThirdPartyFunctions #------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<USAGE usage: ${0##*/} [OPTION] [CGAL-VERSION] [boost-VERSION] [gmp-VERSION] [mpfr-VERSION] options: -gcc force g++ instead of the value from \$WM_CXX -help * build CGAL with $cgalPACKAGE $boostPACKAGE $gmpPACKAGE $mpfrPACKAGE Normally builds against ThirdParty boost and gmp/mpfr when possible. To override this behaviour (and use the system boost and/o gmp/mpfr), simply specify a 'system' version. For example, ${0##*/} boost-system gmp-system Note: mixing system and ThirdParty for gmp/mpfr is not supported. USAGE exit 1 } # Ensure CMake gets the correct C++ compiler [ -n "$WM_CXX" ] && export CXX="$WM_CXX" # Parse options while [ "$#" -gt 0 ] do case "$1" in -h | -help) usage ;; -gcc) export CXX=g++ # use g++ shift ;; gmp-[4-9]* | gmp-sys*) gmpPACKAGE="${1%%/}" shift ;; mpfr-[2-9]* | mpfr-sys*) mpfrPACKAGE="${1%%/}" shift ;; CGAL-[0-9]*) cgalPACKAGE="${1%%/}" shift ;; boost-[0-9]* | boost_[0-9]* | boost-sys* ) boostPACKAGE="${1%%/}" shift ;; *) usage "unknown option/argument: '$*'" ;; esac done #------------------------------------------------------------------------------ # # Build Boost # # BOOST_SOURCE_DIR : location of the original sources BOOST_ARCH_PATH=$installBASE/$boostPACKAGE BOOST_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$boostPACKAGE if [ -d "$BOOST_ARCH_PATH" ] then boostInc="$BOOST_ARCH_PATH/include" boostLib="$BOOST_ARCH_PATH/lib" elif [ -d "$BOOST_SOURCE_DIR" ] then boostInc="$BOOST_ARCH_PATH/include" boostLib="$BOOST_ARCH_PATH/lib" echo "Starting build: boost" ( cd $BOOST_SOURCE_DIR || exit 1 rm -rf $BOOST_ARCH_PATH ./bootstrap.sh \ --prefix=$BOOST_ARCH_PATH \ --with-libraries=thread \ --with-libraries=system \ && ./bjam toolset=$WM_CC -j $WM_NCOMPPROCS install \ && echo "Built: boost" ) || { echo "Error building: boost" exit 1 } else boostInc="/usr/include" # For completeness: # 64-bit needs lib64, but 32-bit needs lib (not lib32) if [ "$WM_ARCH_OPTION" = 64 ] then boostLib="/usr/lib$WM_ARCH_OPTION" else boostLib="/usr/lib" fi fi # Retrieve boost version: if [ -f "$boostInc/boost/version.hpp" ] then BOOST_VERSION_NO=`sed -ne 's/^#define *BOOST_VERSION *\([0-9][0-9]*\).*$/\1/p' $boostInc/boost/version.hpp` else echo "Boost does not appear to be installed" echo "stopping build" exit 1 fi # # Build CGAL # # CGAL_SOURCE_DIR : location of the original sources # CGAL_BINARY_DIR : location of the build # CGAL_DIR : location of the installed program CGAL_SOURCE_DIR=$WM_THIRD_PARTY_DIR/$cgalPACKAGE CGAL_BINARY_DIR=$buildBASE/$cgalPACKAGE CGAL_ARCH_PATH=$installBASE/$cgalPACKAGE CGAL_DIR=$CGAL_ARCH_PATH # # gmp/mpfr installed without compiler name installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH GMP_ARCH_PATH=$installBASE/$gmpPACKAGE MPFR_ARCH_PATH=$installBASE/$mpfrPACKAGE ( # Remove any existing build folder and recreate if [ -d $CGAL_BINARY_DIR ] then echo "removing old build directory" echo " $CGAL_BINARY_DIR" rm -rf $CGAL_BINARY_DIR fi mkdir -p $CGAL_BINARY_DIR cd $CGAL_BINARY_DIR || exit 1 unset configBoost configGmpMpfr echo "----" echo "Configuring $cgalPACKAGE with boost $BOOST_VERSION_NO" echo " Source : $CGAL_SOURCE_DIR" echo " Build : $CGAL_BINARY_DIR" echo " Target : $CGAL_DIR" if [ -d "$BOOST_ARCH_PATH" ] then echo " ThirdParty : boost" configBoost=$(cat <<CMAKE_OPTIONS -DBoost_INCLUDE_DIR=$boostInc -DBoost_LIBRARY_DIRS=$boostLib -DBoost_THREAD_LIBRARY=$boostLib/libboost_thread.so -DBoost_THREAD_LIBRARY_RELEASE=$boostLib/libboost_thread.so -DBoost_SYSTEM_LIBRARY=$boostLib/libboost_system.so -DBoost_SYSTEM_LIBRARY_RELEASE=$boostLib/libboost_system.so -DBoost_VERSION=$BOOST_VERSION_NO CMAKE_OPTIONS ) else echo " system : boost" configBoost=$(cat <<CMAKE_OPTIONS -DBOOST_LIBRARYDIR=$boostLib CMAKE_OPTIONS ) fi if [ -d "$GMP_ARCH_PATH" -a -d "$MPFR_ARCH_PATH" ] then echo " ThirdParty : gmp/mpfr" configGmpMpfr=$(cat <<CMAKE_OPTIONS -DGMP_INCLUDE_DIR=$GMP_ARCH_PATH/include -DGMP_LIBRARIES_DIR=$GMP_ARCH_PATH/lib -DGMP_LIBRARIES=$GMP_ARCH_PATH/lib/libgmp.so -DGMPXX_INCLUDE_DIR=$GMP_ARCH_PATH/include -DGMPXX_LIBRARIES=$GMP_ARCH_PATH/lib/libgmpxx.so -DMPFR_INCLUDE_DIR=$MPFR_ARCH_PATH/include -DMPFR_LIBRARIES_DIR=$MPFR_ARCH_PATH/lib -DMPFR_LIBRARIES=$MPFR_ARCH_PATH/lib/libmpfr.so CMAKE_OPTIONS ) else echo " system : gmp/mpfr" fi echo "----" set -x cmake \ -DCMAKE_INSTALL_PREFIX=$CGAL_ARCH_PATH \ -DCMAKE_BUILD_TYPE=Release \ $configBoost $configGmpMpfr \ $CGAL_SOURCE_DIR \ && make -j $WM_NCOMPPROCS \ && make install || exit 1 echo "----" echo "create '\$CGAL_ARCH_PATH/share/files'" echo "----" mkdir -p $CGAL_ARCH_PATH/share/src rm -f $CGAL_ARCH_PATH/share/files for i in assertions.cpp io.cpp MP_Float.cpp Random.cpp do if [ -e "$CGAL_SOURCE_DIR/src/CGAL/$i" ] then \cp $CGAL_SOURCE_DIR/src/CGAL/$i $CGAL_ARCH_PATH/share/src/ echo "\${CGAL_ARCH_PATH}/share/src/$i" >> $CGAL_ARCH_PATH/share/files fi done echo "Done CGAL" ) #------------------------------------------------------------------------------ |
|
Resolved by commit d88b4ea88db7d35c7b7fe8d869d59be32a224144 |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-03-12 09:34 |
|
New Issue | |
2015-01-27 21:46 | wyldckat | Note Added: 0003595 | |
2015-01-27 21:46 | wyldckat | File Added: defaults.sh | |
2015-01-27 21:48 | wyldckat | Note Edited: 0003595 | |
2015-01-27 22:11 | henry | Note Added: 0003597 | |
2016-02-21 20:24 | wyldckat | Relationship added | related to 0001232 |
2016-03-06 10:49 | wyldckat | File Added: thirdparty_bash_proposal_v1.tar.gz | |
2016-03-06 11:00 | wyldckat | Note Added: 0005997 | |
2016-03-06 11:01 | wyldckat | Assigned To | => henry |
2016-03-06 11:01 | wyldckat | Status | new => assigned |
2016-03-14 11:16 | henry | Note Added: 0006035 | |
2016-03-14 11:16 | henry | Status | assigned => resolved |
2016-03-14 11:16 | henry | Resolution | open => fixed |
2016-03-20 22:30 | wyldckat | Note Added: 0006051 | |
2016-03-20 22:30 | wyldckat | Status | resolved => feedback |
2016-03-20 22:30 | wyldckat | Resolution | fixed => reopened |
2016-03-20 22:30 | wyldckat | File Added: makeCGAL | |
2016-03-21 23:05 | henry | Note Added: 0006053 | |
2016-03-21 23:05 | henry | Status | feedback => resolved |
2016-03-21 23:05 | henry | Resolution | reopened => fixed |