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,29 +379,18 @@ endsw
#------------------------------------------------------------------------------
# Final
# A real (non-dummy) MPI
if ( "$FOAM_MPI" != dummy ) then
if ($?FOAM_VERBOSE && $?prompt) then
echo "Using mpi type : $WM_MPLIB"
echo " FOAM_MPI : $FOAM_MPI"
if ( "${MPI_ARCH_PATH}" == "" ) then
echo " prefix : unset"
else
echo " prefix : $MPI_ARCH_PATH"
endif
# Report
if ($?FOAM_VERBOSE && $?prompt) then
echo "Using mpi type : $WM_MPLIB"
echo " FOAM_MPI : $FOAM_MPI"
if ( "${MPI_ARCH_PATH}" == "" ) then
echo " prefix : unset"
else
echo " prefix : $MPI_ARCH_PATH"
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
# Cleanup
unset _foamMpiPrefixDir _foamMpiWarning _foamMpiVersion

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2020 OpenCFD Ltd.
# Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# 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
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"
_foamAddLib "$FOAM_EXT_LIBBIN"
else
unsetenv FOAM_EXT_LIBBIN
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
end
#----------------------------------------------------------------------------
# Verify FOAM_CONFIG_ETC (from calling environment or from prefs)
if ( $?FOAM_CONFIG_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)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Prevent local variables from shadowing setenv variables
# - avoid local variables shadowing setenv variables
unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH
if (! $?MANPATH ) setenv MANPATH
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
@ -153,12 +156,11 @@ _foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$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 paraview -- "$FOAM_SETTINGS" # Pass through for evaluation
_foamEtc -config vtk
@ -166,6 +168,30 @@ _foamEtc -config adios2
_foamEtc -config CGAL
_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
_foamAddMan "$WM_PROJECT_DIR/doc"
endif
@ -177,8 +203,9 @@ if ($?prompt) then
endif
# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#------------------------------------------------------------------------------
# Remove duplicates from environment paths
_foamClean PATH
_foamClean MANPATH

View File

@ -434,30 +434,14 @@ esac
# Ensure MPI_ARCH_PATH is marked for export
[ -n "$MPI_ARCH_PATH" ] && export MPI_ARCH_PATH
# A real (non-dummy) MPI
if [ "$FOAM_MPI" != dummy ]
# Report
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
echo "Using mpi type : $WM_MPLIB" 1>&2
echo " FOAM_MPI : $FOAM_MPI" 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
echo "Using mpi type : $WM_MPLIB" 1>&2
echo " FOAM_MPI : $FOAM_MPI" 1>&2
echo " prefix : ${MPI_ARCH_PATH:-[unset]}" 1>&2
fi
# Cleanup
unset _foamMpiPrefixDir _foamMpiVersion _foamMpiWarning

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2020 OpenCFD Ltd.
# Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# 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" ]
then
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
unset FOAM_EXT_LIBBIN
fi
# OpenFOAM libraries (user, group, standard)
_foamAddLib "$FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN"
#------------------------------------------------------------------------------

View File

@ -181,19 +181,17 @@ else
fi
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Clean standard environment variables
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs"
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
# Setup for OpenFOAM compilation etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config settings
#------------------------------------------------------------------------------
# Base setup (OpenFOAM compilation), MPI and third-party packages
# Setup for third-party packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config settings
_foamEtc -config mpi
_foamEtc -config paraview -- "$@" # Pass through for evaluation
_foamEtc -config vtk
@ -202,6 +200,30 @@ _foamEtc -config CGAL
_foamEtc -config scotch
_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" ]
then
_foamAddMan "$WM_PROJECT_DIR/doc"
@ -215,8 +237,9 @@ then
fi
# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#------------------------------------------------------------------------------
# Remove duplicates from environment paths
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH
@ -229,7 +252,6 @@ then
MANPATH="${MANPATH}:"
fi
# Cleanup temporary information
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~