From 9065346a05289b9b6c816fb0cb9477c841cbbcb1 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 27 Nov 2018 12:23:11 +0100 Subject: [PATCH] ENH: additional handling of questionable bad FOAM_EXT_LIBBIN values - if FOAM_EXT_LIBBIN is unset and some scripts set this to /usr/lib* as a fallback (eg, to avoid an undefined value) this will cause a system library to be found before appropriate *_ARCH_PATH entry. This was noticed during a scotch compilation without third-party: resulting in the system library (/usr/lib64/libscotch.so) to be found instead of the SCOTCH_ARCH_PATH location (/usr/lib64/mpi/gcc/openmpi/lib64/). Simply changing the search order doesn't work for use, since we wish to retain a preference for any dynamic libraries discovered in a real FOAM_EXT_LIBBIN. Circumvent these issues by only taking libraries from FOAM_EXT_LIBBIN if it also points to a location within ThirdParty. --- wmake/scripts/have_adios2 | 3 +-- wmake/scripts/have_boost | 3 +-- wmake/scripts/have_ccmio | 3 +-- wmake/scripts/have_cgal | 3 +-- wmake/scripts/have_fftw | 3 +-- wmake/scripts/have_hypre | 3 +-- wmake/scripts/have_kahip | 3 +-- wmake/scripts/have_metis | 3 +-- wmake/scripts/have_mgridgen | 3 +-- wmake/scripts/have_petsc | 3 +-- wmake/scripts/have_scotch | 3 +-- wmake/scripts/have_zoltan | 3 +-- wmake/scripts/sysFunctions | 21 +++++++++++++++++++++ 13 files changed, 33 insertions(+), 24 deletions(-) diff --git a/wmake/scripts/have_adios2 b/wmake/scripts/have_adios2 index 81055812a0..56d6149e6c 100644 --- a/wmake/scripts/have_adios2 +++ b/wmake/scripts/have_adios2 @@ -79,9 +79,8 @@ have_adios2() then header=$(findFirstFile $ADIOS2_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $ADIOS2_ARCH_PATH/lib/$library \ $ADIOS2_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ ) diff --git a/wmake/scripts/have_boost b/wmake/scripts/have_boost index e78d8ab228..32df1b4216 100644 --- a/wmake/scripts/have_boost +++ b/wmake/scripts/have_boost @@ -74,9 +74,8 @@ have_boost() then header=$(findFirstFile $BOOST_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $BOOST_ARCH_PATH/lib/$library \ $BOOST_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ ) diff --git a/wmake/scripts/have_ccmio b/wmake/scripts/have_ccmio index a957415b6f..9d3dc68aa8 100644 --- a/wmake/scripts/have_ccmio +++ b/wmake/scripts/have_ccmio @@ -80,9 +80,8 @@ have_ccmio() then header=$(findFirstFile $CCMIO_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $CCMIO_ARCH_PATH/lib/$static \ $CCMIO_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ ) diff --git a/wmake/scripts/have_cgal b/wmake/scripts/have_cgal index d641ccad25..3582488443 100644 --- a/wmake/scripts/have_cgal +++ b/wmake/scripts/have_cgal @@ -74,9 +74,8 @@ have_cgal() then header=$(findFirstFile $CGAL_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $CGAL_ARCH_PATH/lib/$library \ $CGAL_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ ) diff --git a/wmake/scripts/have_fftw b/wmake/scripts/have_fftw index c83a4fffa0..317b37677b 100644 --- a/wmake/scripts/have_fftw +++ b/wmake/scripts/have_fftw @@ -75,9 +75,8 @@ have_fftw() then header=$(findFirstFile $FFTW_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $FFTW_ARCH_PATH/lib/$static \ $FFTW_ARCH_PATH/lib/$library \ $FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/have_hypre b/wmake/scripts/have_hypre index 7b7109c7b7..67d9ba35d7 100644 --- a/wmake/scripts/have_hypre +++ b/wmake/scripts/have_hypre @@ -82,9 +82,8 @@ have_hypre() then header=$(findFirstFile $HYPRE_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $HYPRE_ARCH_PATH/lib/$library \ $HYPRE_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ ) diff --git a/wmake/scripts/have_kahip b/wmake/scripts/have_kahip index b1b722b9af..f6288da65d 100644 --- a/wmake/scripts/have_kahip +++ b/wmake/scripts/have_kahip @@ -80,9 +80,8 @@ have_kahip() then header=$(findFirstFile $KAHIP_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $KAHIP_ARCH_PATH/lib/$static \ $KAHIP_ARCH_PATH/lib/$library \ $KAHIP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/have_metis b/wmake/scripts/have_metis index 4075286418..b517e41774 100644 --- a/wmake/scripts/have_metis +++ b/wmake/scripts/have_metis @@ -81,9 +81,8 @@ have_metis() then header=$(findFirstFile $METIS_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $METIS_ARCH_PATH/lib/$static \ $METIS_ARCH_PATH/lib/$library \ $METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/have_mgridgen b/wmake/scripts/have_mgridgen index d8900a5662..cfc9ce5d74 100644 --- a/wmake/scripts/have_mgridgen +++ b/wmake/scripts/have_mgridgen @@ -81,9 +81,8 @@ have_mgridgen() then header=$(findFirstFile $MGRIDGEN_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $MGRIDGEN_ARCH_PATH/lib/$static \ $MGRIDGEN_ARCH_PATH/lib/$library \ $MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/have_petsc b/wmake/scripts/have_petsc index f3f301b420..277532e115 100644 --- a/wmake/scripts/have_petsc +++ b/wmake/scripts/have_petsc @@ -82,9 +82,8 @@ have_petsc() then header=$(findFirstFile $PETSC_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $PETSC_ARCH_PATH/lib/$library \ $PETSC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ ) diff --git a/wmake/scripts/have_scotch b/wmake/scripts/have_scotch index 98c298c221..96d353e55c 100644 --- a/wmake/scripts/have_scotch +++ b/wmake/scripts/have_scotch @@ -81,9 +81,8 @@ have_scotch() then header=$(findFirstFile $SCOTCH_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $SCOTCH_ARCH_PATH/lib/$static \ $SCOTCH_ARCH_PATH/lib/$library \ $SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/have_zoltan b/wmake/scripts/have_zoltan index 40d7a7d26c..e9fa45ea02 100644 --- a/wmake/scripts/have_zoltan +++ b/wmake/scripts/have_zoltan @@ -80,9 +80,8 @@ have_zoltan() then header=$(findFirstFile $ZOLTAN_ARCH_PATH/include/$header) - # FOAM_EXT_LIBBIN is allowed to be unset library=$(findFirstFile \ - $FOAM_EXT_LIBBIN/$library \ + "$(thirdExtLib $library)" \ $ZOLTAN_ARCH_PATH/lib/$static \ $ZOLTAN_ARCH_PATH/lib/$library \ $ZOLTAN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \ diff --git a/wmake/scripts/sysFunctions b/wmake/scripts/sysFunctions index 9b3630c749..64b5cd730f 100644 --- a/wmake/scripts/sysFunctions +++ b/wmake/scripts/sysFunctions @@ -21,6 +21,7 @@ # isSystem # isAbsdir, hasAbsdir # findFirstFile +# thirdExtLib # # Variables provided # extLiba @@ -104,6 +105,26 @@ then return 2 } + # Check for existence of file in FOAM_EXT_LIBBIN, + # but not if either file or FOAM_EXT_LIBBIN are empty or + # if the FOAM_EXT_LIBBIN is not located in the ThirdParty directory + # + # On success, echoes the resolved file and returns 0, otherwise returns 2 + thirdExtLib() + { + local file="$FOAM_EXT_LIBBIN/$1" + + if [ -n "$1" ] && \ + [ -n "$FOAM_EXT_LIBBIN" ] && \ + [ -n "$WM_THIRD_PARTY_DIR" ] && \ + [ -f "$file" -a -r "$file" ] && \ + [ "${FOAM_EXT_LIBBIN#$WM_THIRD_PARTY_DIR}" != "$FOAM_EXT_LIBBIN" ] + then + echo "$file" + else + return 2 + fi + } fi