CONFIG: adjust ordering of library paths (#2200)

- previously OpenFOAM library paths were set before adding in
  MPI-specific elements. However, this may mask some libraries.

  |  New library order  |  Old library order  |
  |---------------------|---------------------|
  |  user-lib (serial)  |  various 3rd-party  |
  |  site-lib (serial)  |  foam-lib (mpi)     |
  |  foam-lib (mpi)     |  ext-lib (mpi)      |
  |  foam-lib (serial)  |  system mpi-libs    |
  |  ext-lib  (mpi)     |  user-lib (serial)  |
  |  ext-lib  (serial)  |  site-lib (serial)  |
  |  various 3rd-party  |  foam-lib (serial)  |
  |  system mpi-libs    |  ext-lib (serial)   |
  |  dummy              |  dummy              |
This commit is contained in:
Mark Olesen
2021-09-06 15:32:04 +02:00
parent 96adf3ae80
commit f89fb3e066
6 changed files with 83 additions and 69 deletions

View File

@ -379,11 +379,9 @@ endsw
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Final
# A real (non-dummy) MPI # Report
if ( "$FOAM_MPI" != dummy ) then if ($?FOAM_VERBOSE && $?prompt) then
if ($?FOAM_VERBOSE && $?prompt) then
echo "Using mpi type : $WM_MPLIB" echo "Using mpi type : $WM_MPLIB"
echo " FOAM_MPI : $FOAM_MPI" echo " FOAM_MPI : $FOAM_MPI"
if ( "${MPI_ARCH_PATH}" == "" ) then if ( "${MPI_ARCH_PATH}" == "" ) then
@ -391,17 +389,8 @@ if ( "$FOAM_MPI" != dummy ) then
else else
echo " prefix : $MPI_ARCH_PATH" echo " prefix : $MPI_ARCH_PATH"
endif endif
endif
# OpenFOAM library interface to (non-dummy) MPI
if ( $?FOAM_EXT_LIBBIN ) then
# External libraries (can be unset)
_foamAddLib "${FOAM_EXT_LIBBIN}/${FOAM_MPI}"
endif
_foamAddLib "${FOAM_LIBBIN}/${FOAM_MPI}"
endif endif
# Cleanup # Cleanup
unset _foamMpiPrefixDir _foamMpiWarning _foamMpiVersion unset _foamMpiPrefixDir _foamMpiWarning _foamMpiVersion

View File

@ -6,7 +6,7 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2020 OpenCFD Ltd. # Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -177,14 +177,10 @@ _foamAddLib "$FOAM_LIBBIN/dummy"
# External (ThirdParty) libraries. Also allowed to be unset # External (ThirdParty) libraries. Also allowed to be unset
if ( -d "$WM_THIRD_PARTY_DIR" ) then if ( -d "$WM_THIRD_PARTY_DIR" ) then
setenv FOAM_EXT_LIBBIN "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib" setenv FOAM_EXT_LIBBIN "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
_foamAddLib "$FOAM_EXT_LIBBIN"
else else
unsetenv FOAM_EXT_LIBBIN unsetenv FOAM_EXT_LIBBIN
endif endif
# OpenFOAM libraries (user, group, standard)
_foamAddLib "${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -133,6 +133,9 @@ while ( $#argv > 0 )
shift shift
end end
#----------------------------------------------------------------------------
# Verify FOAM_CONFIG_ETC (from calling environment or from prefs) # Verify FOAM_CONFIG_ETC (from calling environment or from prefs)
if ( $?FOAM_CONFIG_ETC ) then if ( $?FOAM_CONFIG_ETC ) then
if ( "$FOAM_CONFIG_ETC" == "etc" || "$FOAM_CONFIG_ETC" == "$WM_PROJECT_DIR/etc" ) then if ( "$FOAM_CONFIG_ETC" == "etc" || "$FOAM_CONFIG_ETC" == "$WM_PROJECT_DIR/etc" ) then
@ -143,8 +146,8 @@ endif
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # - avoid local variables shadowing setenv variables
# Prevent local variables from shadowing setenv variables
unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH
if (! $?MANPATH ) setenv MANPATH if (! $?MANPATH ) setenv MANPATH
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
@ -153,12 +156,11 @@ _foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs" _foamClean MANPATH "$foamOldDirs"
_foamClean LD_LIBRARY_PATH "$foamOldDirs" _foamClean LD_LIBRARY_PATH "$foamOldDirs"
# Setup for OpenFOAM compilation etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config settings
# Setup for third-party packages #------------------------------------------------------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Base setup (OpenFOAM compilation), MPI and third-party packages
_foamEtc -config settings
_foamEtc -config mpi _foamEtc -config mpi
_foamEtc -config paraview -- "$FOAM_SETTINGS" # Pass through for evaluation _foamEtc -config paraview -- "$FOAM_SETTINGS" # Pass through for evaluation
_foamEtc -config vtk _foamEtc -config vtk
@ -166,6 +168,30 @@ _foamEtc -config adios2
_foamEtc -config CGAL _foamEtc -config CGAL
_foamEtc -config FFTW _foamEtc -config FFTW
if (! $?FOAM_MPI ) then
setenv FOAM_MPI dummy # Fallback value
endif
# Finalize library paths
# ~~~~~~~~~~~~~~~~~~~~~~
# ThirdParty serial and mpi-specific libraries
if ( $?FOAM_EXT_LIBBIN ) then
_foamAddLib "${FOAM_EXT_LIBBIN}"
if ( "$FOAM_MPI" != dummy ) then
_foamAddLib "${FOAM_EXT_LIBBIN}/${FOAM_MPI}"
endif
endif
# OpenFOAM serial and mpi-specific libraries
_foamAddLib "$FOAM_LIBBIN"
if ( "$FOAM_MPI" != dummy ) then
_foamAddLib "${FOAM_LIBBIN}/${FOAM_MPI}"
endif
# OpenFOAM user, group libraries
_foamAddLib "${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}"
if ( -d "$WM_PROJECT_DIR/doc/man1" ) then if ( -d "$WM_PROJECT_DIR/doc/man1" ) then
_foamAddMan "$WM_PROJECT_DIR/doc" _foamAddMan "$WM_PROJECT_DIR/doc"
endif endif
@ -177,8 +203,9 @@ if ($?prompt) then
endif endif
# Clean environment paths again. Only remove duplicates #------------------------------------------------------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Remove duplicates from environment paths
_foamClean PATH _foamClean PATH
_foamClean MANPATH _foamClean MANPATH

View File

@ -434,30 +434,14 @@ esac
# Ensure MPI_ARCH_PATH is marked for export # Ensure MPI_ARCH_PATH is marked for export
[ -n "$MPI_ARCH_PATH" ] && export MPI_ARCH_PATH [ -n "$MPI_ARCH_PATH" ] && export MPI_ARCH_PATH
# Report
# A real (non-dummy) MPI if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
if [ "$FOAM_MPI" != dummy ]
then then
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
echo "Using mpi type : $WM_MPLIB" 1>&2 echo "Using mpi type : $WM_MPLIB" 1>&2
echo " FOAM_MPI : $FOAM_MPI" 1>&2 echo " FOAM_MPI : $FOAM_MPI" 1>&2
echo " prefix : ${MPI_ARCH_PATH:-unset}" 1>&2 echo " prefix : ${MPI_ARCH_PATH:-[unset]}" 1>&2
fi
# OpenFOAM library interface to (non-dummy) MPI
if command -v _foamAddLib >/dev/null
then
if [ -n "$FOAM_EXT_LIBBIN" ]
then
# External libraries (can be unset)
_foamAddLib "$FOAM_EXT_LIBBIN/$FOAM_MPI"
fi
_foamAddLib "$FOAM_LIBBIN/$FOAM_MPI"
fi
fi fi
# Cleanup # Cleanup
unset _foamMpiPrefixDir _foamMpiVersion _foamMpiWarning unset _foamMpiPrefixDir _foamMpiVersion _foamMpiWarning

View File

@ -6,7 +6,7 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2020 OpenCFD Ltd. # Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -178,14 +178,10 @@ _foamAddLib "$FOAM_LIBBIN/dummy"
if [ -d "$WM_THIRD_PARTY_DIR" ] if [ -d "$WM_THIRD_PARTY_DIR" ]
then then
export FOAM_EXT_LIBBIN="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib" export FOAM_EXT_LIBBIN="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib"
_foamAddLib "$FOAM_EXT_LIBBIN"
else else
unset FOAM_EXT_LIBBIN unset FOAM_EXT_LIBBIN
fi fi
# OpenFOAM libraries (user, group, standard)
_foamAddLib "$FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -181,19 +181,17 @@ else
fi fi
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # Clean standard environment variables
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH MANPATH LD_LIBRARY_PATH export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH "$foamOldDirs" _foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs" _foamClean MANPATH "$foamOldDirs"
_foamClean LD_LIBRARY_PATH "$foamOldDirs" _foamClean LD_LIBRARY_PATH "$foamOldDirs"
# Setup for OpenFOAM compilation etc #------------------------------------------------------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Base setup (OpenFOAM compilation), MPI and third-party packages
_foamEtc -config settings
# Setup for third-party packages _foamEtc -config settings
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config mpi _foamEtc -config mpi
_foamEtc -config paraview -- "$@" # Pass through for evaluation _foamEtc -config paraview -- "$@" # Pass through for evaluation
_foamEtc -config vtk _foamEtc -config vtk
@ -202,6 +200,30 @@ _foamEtc -config CGAL
_foamEtc -config scotch _foamEtc -config scotch
_foamEtc -config FFTW _foamEtc -config FFTW
# Finalize library paths
# ~~~~~~~~~~~~~~~~~~~~~~
# ThirdParty serial and mpi-specific libraries
if [ -n "$FOAM_EXT_LIBBIN" ]
then
_foamAddLib "$FOAM_EXT_LIBBIN"
if [ "${FOAM_MPI:-dummy}" != dummy ]
then
_foamAddLib "$FOAM_EXT_LIBBIN/$FOAM_MPI"
fi
fi
# OpenFOAM serial and mpi-specific libraries
_foamAddLib "$FOAM_LIBBIN"
if [ "${FOAM_MPI:-dummy}" != dummy ]
then
_foamAddLib "$FOAM_LIBBIN/$FOAM_MPI"
fi
# OpenFOAM user, group libraries
_foamAddLib "$FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN"
if [ -d "$WM_PROJECT_DIR/doc/man1" ] if [ -d "$WM_PROJECT_DIR/doc/man1" ]
then then
_foamAddMan "$WM_PROJECT_DIR/doc" _foamAddMan "$WM_PROJECT_DIR/doc"
@ -215,8 +237,9 @@ then
fi fi
# Clean environment paths again. Only remove duplicates #------------------------------------------------------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Remove duplicates from environment paths
export PATH MANPATH LD_LIBRARY_PATH export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH _foamClean PATH
@ -229,7 +252,6 @@ then
MANPATH="${MANPATH}:" MANPATH="${MANPATH}:"
fi fi
# Cleanup temporary information # Cleanup temporary information
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~