mirror of
https://develop.openfoam.com/Development/ThirdParty-common.git
synced 2025-12-08 06:57:50 +00:00
ENH: reproducible build naming for openmpi
- configure with the arch + package only for the prefix.
When OPAL_PREFIX is unset, yields this type of information:
Prefix: /linux64Gcc/openmpi-4.0.3
Libdir: /linux64Gcc/openmpi-4.0.3/lib
This ensures that the final binaries do not have the original build
location, which makes for more reliable testing before shipping.
ENH: improve handling of header-only CGAL
- test for existence now also checks our cached build information
for header-only configuration
- cleanup build artifacts from boost (in-source build).
Skip install of generated man, info, doc pages.
These are usually browsed/searched elsewhere anyhow.
This commit is contained in:
127
makeCGAL
127
makeCGAL
@ -37,27 +37,56 @@ then
|
|||||||
dir="${2%/}" # <- *_ARCH_PATH
|
dir="${2%/}" # <- *_ARCH_PATH
|
||||||
[ -d "$dir/include" ] || exit 2
|
[ -d "$dir/include" ] || exit 2
|
||||||
|
|
||||||
# 2020-08-10: Needs reworking for header-only installations!
|
# CGAL
|
||||||
if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libCGAL$EXT_SO" ]
|
[ -f "$dir"/include/CGAL/version.h ] || exit 2
|
||||||
|
|
||||||
|
unset _my_cgal_libdir
|
||||||
|
_cacheinfo="$dir"/share/openfoam-build
|
||||||
|
if [ -f "$_cacheinfo" ]
|
||||||
then
|
then
|
||||||
echo " CGAL include: $dir/include"
|
_my_cgal_libdir="$(sed -ne 's#^CGAL_HEADER_ONLY=##p' "$_cacheinfo" 2>/dev/null)"
|
||||||
echo " CGAL library: $dir/lib$WM_COMPILER_LIB_ARCH"
|
if [ "$_my_cgal_libdir" = true ]
|
||||||
# Additional information about boost
|
then
|
||||||
dir="${3%/}" # <- BOOST_ARCH_PATH
|
_my_cgal_libdir=header
|
||||||
for root in "$dir" /usr
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$_my_cgal_libdir" != header ]
|
||||||
|
then
|
||||||
|
unset _my_cgal_libdir
|
||||||
|
libName="libCGAL"
|
||||||
|
for libdirName in "lib$WM_COMPILER_LIB_ARCH" lib
|
||||||
do
|
do
|
||||||
if [ -d "$root/include/boost" ] \
|
if [ -r "$dir/$libdirName/$libName$EXT_SO" ]
|
||||||
&& [ -r "$root/lib$WM_COMPILER_LIB_ARCH/libboost_system$EXT_SO" ]
|
|
||||||
then
|
then
|
||||||
echo " boost include: $root/include"
|
_my_cgal_libdir="$dir/$libdirName"
|
||||||
echo " boost library: $root/lib$WM_COMPILER_LIB_ARCH"
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 2
|
|
||||||
fi
|
fi
|
||||||
|
[ -n "$_my_cgal_libdir" ] || exit 2
|
||||||
|
|
||||||
|
echo " CGAL include: $dir/include"
|
||||||
|
echo " CGAL library: $_my_cgal_libdir"
|
||||||
|
|
||||||
|
# Additional information about boost
|
||||||
|
dir="${3%/}" # <- BOOST_ARCH_PATH
|
||||||
|
libName="libboost_system"
|
||||||
|
for root in "$dir" /usr
|
||||||
|
do
|
||||||
|
[ -d "$root/include/boost" ] || continue
|
||||||
|
for libdirName in "lib$WM_COMPILER_LIB_ARCH" lib
|
||||||
|
do
|
||||||
|
if [ -r "$root/$libdirName/$libName$EXT_SO" ]
|
||||||
|
then
|
||||||
|
echo " boost include: $root/include"
|
||||||
|
echo " boost library: $root/$libdirName"
|
||||||
|
exit 0 # Success
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
exit 2
|
||||||
fi
|
fi
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
if : # Run from third-party directory
|
if : # Run from third-party directory
|
||||||
@ -350,6 +379,34 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Cleanup in-source build artifacts
|
||||||
|
(
|
||||||
|
set +e # Ignore errors
|
||||||
|
cd "$BOOST_SOURCE" 2>/dev/null || exit 0
|
||||||
|
|
||||||
|
echo "Cleanup in-source build artifacts: $BOOST_PACKAGE"
|
||||||
|
rm -f project-config.jam* user-config.jam*
|
||||||
|
rm -f b2 bjam bootstrap.log
|
||||||
|
rm -rf \
|
||||||
|
bin.v2 stage \
|
||||||
|
libs/config/checks/architecture/bin \
|
||||||
|
tools/build/src/engine/bootstrap \
|
||||||
|
tools/build/src/engine/bin.* \
|
||||||
|
;
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$BOOST_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $BOOST_PACKAGE"
|
||||||
|
rm -rf "$BOOST_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rmdir "$BOOST_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -463,6 +520,28 @@ recordCGALinfo()
|
|||||||
{
|
{
|
||||||
CGAL_VERSION=$(sed -ne 's/^ *# *define *CGAL_VERSION_NR *\([0-9][0-9]*\).*$/\1/p' $CGAL_PREFIX/include/CGAL/version.h 2>/dev/null)
|
CGAL_VERSION=$(sed -ne 's/^ *# *define *CGAL_VERSION_NR *\([0-9][0-9]*\).*$/\1/p' $CGAL_PREFIX/include/CGAL/version.h 2>/dev/null)
|
||||||
|
|
||||||
|
# which libdirName?
|
||||||
|
_my_cgal_libdir=unknown
|
||||||
|
for libdirName in "lib$WM_COMPILER_LIB_ARCH" lib
|
||||||
|
do
|
||||||
|
if [ -d "$CGAL_PREFIX/$libdirName" ]
|
||||||
|
then
|
||||||
|
_my_cgal_libdir="$libdirName"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# which libdirName?
|
||||||
|
_my_boost_libdir=unknown
|
||||||
|
for libdirName in "lib$WM_COMPILER_LIB_ARCH" lib
|
||||||
|
do
|
||||||
|
if [ -d "$BOOST_PREFIX/$libdirName" ]
|
||||||
|
then
|
||||||
|
_my_boost_libdir="$libdirName"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
cat<<BUILD_INFO > "$buildInfoFile"
|
cat<<BUILD_INFO > "$buildInfoFile"
|
||||||
# Information from OpenFOAM build on '$(date)'
|
# Information from OpenFOAM build on '$(date)'
|
||||||
#
|
#
|
||||||
@ -473,8 +552,8 @@ MPFR=${MPFR_ARCH_PATH##*/}
|
|||||||
CGAL_VERSION=$CGAL_VERSION
|
CGAL_VERSION=$CGAL_VERSION
|
||||||
BOOST_VERSION=$BOOST_VERSION
|
BOOST_VERSION=$BOOST_VERSION
|
||||||
|
|
||||||
CGAL_lib=lib$WM_COMPILER_LIB_ARCH
|
CGAL_lib=$_my_cgal_libdir
|
||||||
BOOST_lib=lib$WM_COMPILER_LIB_ARCH
|
BOOST_lib=$_my_boost_libdir
|
||||||
CGAL_HEADER_ONLY=${optHeadersOnly:-default}
|
CGAL_HEADER_ONLY=${optHeadersOnly:-default}
|
||||||
BUILD_INFO
|
BUILD_INFO
|
||||||
}
|
}
|
||||||
@ -503,11 +582,14 @@ cgalIsCurrent()
|
|||||||
local info=$(sed -n -e '/^[A-Z]/p' $buildInfoFile 2>/dev/null)
|
local info=$(sed -n -e '/^[A-Z]/p' $buildInfoFile 2>/dev/null)
|
||||||
[ -n "$info" ] || return 1
|
[ -n "$info" ] || return 1
|
||||||
|
|
||||||
|
# Check of lib/ vs lib64/ could be spurious...
|
||||||
local libDirName="lib$WM_COMPILER_LIB_ARCH"
|
local libDirName="lib$WM_COMPILER_LIB_ARCH"
|
||||||
|
|
||||||
echo "checking information from existing build ..."
|
echo "checking information from existing build ..."
|
||||||
echo " ${CGAL_PREFIX}"
|
echo " ${CGAL_PREFIX}"
|
||||||
|
|
||||||
|
[ -f "$CGAL_PREFIX"/include/CGAL/version.h ] || return 1
|
||||||
|
|
||||||
infoValueEq CGAL "${CGAL_PREFIX##*/}" "$info" || return 1
|
infoValueEq CGAL "${CGAL_PREFIX##*/}" "$info" || return 1
|
||||||
infoValueEq BOOST "${BOOST_PREFIX##*/}" "$info" || return 1
|
infoValueEq BOOST "${BOOST_PREFIX##*/}" "$info" || return 1
|
||||||
infoValueEq GMP "${GMP_ARCH_PATH##*/}" "$info" || return 1
|
infoValueEq GMP "${GMP_ARCH_PATH##*/}" "$info" || return 1
|
||||||
@ -660,6 +742,7 @@ CMAKE_OPTIONS
|
|||||||
# For CGAL < 4.9, for installation into lib64/, not lib/
|
# For CGAL < 4.9, for installation into lib64/, not lib/
|
||||||
# Name only (not path) for CGAL_INSTALL_LIB_DIR
|
# Name only (not path) for CGAL_INSTALL_LIB_DIR
|
||||||
echo "----"
|
echo "----"
|
||||||
|
rm -rf "$CGAL_PREFIX"
|
||||||
set -x && \
|
set -x && \
|
||||||
${cmake:?} \
|
${cmake:?} \
|
||||||
-DCMAKE_INSTALL_PREFIX="$CGAL_PREFIX" \
|
-DCMAKE_INSTALL_PREFIX="$CGAL_PREFIX" \
|
||||||
@ -677,7 +760,7 @@ CMAKE_OPTIONS
|
|||||||
&& make install || exit 1
|
&& make install || exit 1
|
||||||
|
|
||||||
echo "----"
|
echo "----"
|
||||||
echo "create '\$CGAL_PREFIX/share/files'"
|
echo "create '\$CGAL_ARCH_PATH/share/files'"
|
||||||
echo "----"
|
echo "----"
|
||||||
mkdir -p "$CGAL_PREFIX"/share/src
|
mkdir -p "$CGAL_PREFIX"/share/src
|
||||||
rm -f "$CGAL_PREFIX"/share/files
|
rm -f "$CGAL_PREFIX"/share/files
|
||||||
@ -691,6 +774,16 @@ CMAKE_OPTIONS
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$CGAL_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $CGAL_PACKAGE"
|
||||||
|
rm -rf "$CGAL_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
## Leave: rmdir "$CGAL_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
# Record our build-status
|
# Record our build-status
|
||||||
recordCGALinfo
|
recordCGALinfo
|
||||||
|
|||||||
15
makeFFTW
15
makeFFTW
@ -127,9 +127,6 @@ fi
|
|||||||
#
|
#
|
||||||
# For 64-bit
|
# For 64-bit
|
||||||
# - FFTW itself will normally build into 'lib64',
|
# - FFTW itself will normally build into 'lib64',
|
||||||
# but provide --libdir on configure to be 100% certain
|
|
||||||
# - Third-Party builds into 'lib64'
|
|
||||||
# - system is normally built into 'lib64'
|
|
||||||
|
|
||||||
PKG_SOURCE="$(findSourceDir "$PACKAGE")"
|
PKG_SOURCE="$(findSourceDir "$PACKAGE")"
|
||||||
PACKAGE="$(basename "$PKG_SOURCE")"
|
PACKAGE="$(basename "$PKG_SOURCE")"
|
||||||
@ -186,7 +183,6 @@ else
|
|||||||
cd "$PKG_BUILD" && set -x && \
|
cd "$PKG_BUILD" && set -x && \
|
||||||
"$PKG_SOURCE"/configure \
|
"$PKG_SOURCE"/configure \
|
||||||
--prefix="$PKG_PREFIX" \
|
--prefix="$PKG_PREFIX" \
|
||||||
--libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \
|
|
||||||
--enable-shared --disable-static \
|
--enable-shared --disable-static \
|
||||||
--disable-fortran \
|
--disable-fortran \
|
||||||
$configOpt \
|
$configOpt \
|
||||||
@ -200,6 +196,17 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$PKG_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $PACKAGE"
|
||||||
|
rm -rf "$PKG_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rmdir "$PKG_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -132,6 +132,17 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$PKG_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $PACKAGE"
|
||||||
|
rm -rf "$PKG_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rmdir "$PKG_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
29
makeMPICH
29
makeMPICH
@ -178,23 +178,42 @@ else
|
|||||||
rm -rf "$PKG_BUILD"
|
rm -rf "$PKG_BUILD"
|
||||||
mkdir -p "$PKG_BUILD"
|
mkdir -p "$PKG_BUILD"
|
||||||
|
|
||||||
|
# reproducible build naming
|
||||||
|
local_destdir="$(dirname $PKG_PREFIX)"
|
||||||
|
local_prefix="/$(basename $local_destdir)/$(basename $PKG_PREFIX)"
|
||||||
|
local_destdir="$(dirname $local_destdir)"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "configured prefix: $local_prefix"
|
||||||
|
echo "install directory: $local_destdir"
|
||||||
|
echo
|
||||||
|
|
||||||
cd "$PKG_BUILD" && set -x && \
|
cd "$PKG_BUILD" && set -x && \
|
||||||
"$PKG_SOURCE"/configure \
|
"$PKG_SOURCE"/configure \
|
||||||
--prefix="$PKG_PREFIX" \
|
--prefix="$local_prefix" \
|
||||||
--libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \
|
|
||||||
--disable-fortran --disable-g \
|
--disable-fortran --disable-g \
|
||||||
--enable-shared --disable-static \
|
--enable-shared --disable-static \
|
||||||
$configOpt \
|
$configOpt \
|
||||||
&& set +x \
|
&& set +x \
|
||||||
&& make -j $WM_NCOMPPROCS \
|
&& make -j $WM_NCOMPPROCS \
|
||||||
&& make install \
|
&& make install DESTDIR="$local_destdir" \
|
||||||
&& echo "Built: $PACKAGE" \
|
&& echo "Built: $PACKAGE"
|
||||||
&& pkgconfigAdjust "$PKG_PREFIX"
|
|
||||||
) || {
|
) || {
|
||||||
echo "Error building: $PACKAGE"
|
echo "Error building: $PACKAGE"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$PKG_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $PACKAGE"
|
||||||
|
rm -rf "$PKG_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rmdir "$PKG_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -64,7 +64,7 @@ _foamAddMan() { true; }
|
|||||||
_foamAddPath() { true; }
|
_foamAddPath() { true; }
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# Obtain version from OpenFOAM etc/config.sh file:
|
# Obtain version from OpenFOAM etc/config.sh file:
|
||||||
WM_MPLIB=MV2MPI # Ensure we get the correct MPI
|
WM_MPLIB=MVA2MPI # Ensure we get the correct MPI
|
||||||
_foamConfig mpi
|
_foamConfig mpi
|
||||||
|
|
||||||
PACKAGE="${FOAM_MPI:-system}"
|
PACKAGE="${FOAM_MPI:-system}"
|
||||||
@ -185,7 +185,6 @@ else
|
|||||||
cd "$PKG_BUILD" && set -x && \
|
cd "$PKG_BUILD" && set -x && \
|
||||||
"$PKG_SOURCE"/configure \
|
"$PKG_SOURCE"/configure \
|
||||||
--prefix="$PKG_PREFIX" \
|
--prefix="$PKG_PREFIX" \
|
||||||
--libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \
|
|
||||||
--disable-fortran --disable-g \
|
--disable-fortran --disable-g \
|
||||||
--enable-shared --disable-static \
|
--enable-shared --disable-static \
|
||||||
$configOpt \
|
$configOpt \
|
||||||
|
|||||||
36
makeOPENMPI
36
makeOPENMPI
@ -196,24 +196,50 @@ else
|
|||||||
rm -rf "$PKG_BUILD"
|
rm -rf "$PKG_BUILD"
|
||||||
mkdir -p "$PKG_BUILD"
|
mkdir -p "$PKG_BUILD"
|
||||||
|
|
||||||
|
# The real prefix is /path/ThirdParty/platforms/arch/openmpi-x.y.z
|
||||||
|
# but configure with prefix="/arch/openmpi-x.y.z"
|
||||||
|
# and install into "/path/ThirdParty/platforms"
|
||||||
|
|
||||||
|
# The final binaries are then independent of the build location and
|
||||||
|
# will always require OPAL_PREFIX to run
|
||||||
|
|
||||||
|
local_destdir="$(dirname $PKG_PREFIX)"
|
||||||
|
local_prefix="/$(basename $local_destdir)/$(basename $PKG_PREFIX)"
|
||||||
|
local_destdir="$(dirname $local_destdir)"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "configured prefix: $local_prefix"
|
||||||
|
echo "install directory: $local_destdir"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Do not specify '--libdir' or relocating becomes difficult
|
||||||
cd "$PKG_BUILD" && set -x && \
|
cd "$PKG_BUILD" && set -x && \
|
||||||
"$PKG_SOURCE"/configure \
|
"$PKG_SOURCE"/configure \
|
||||||
--prefix="$PKG_PREFIX" \
|
--prefix="$local_prefix" \
|
||||||
--libdir="$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH" \
|
|
||||||
--disable-orterun-prefix-by-default \
|
--disable-orterun-prefix-by-default \
|
||||||
--enable-shared --disable-static \
|
--enable-shared --disable-static \
|
||||||
--enable-mpi-fortran=none \
|
--enable-mpi-fortran=none \
|
||||||
$configOpt \
|
$configOpt \
|
||||||
&& set +x \
|
&& set +x \
|
||||||
&& make -j $WM_NCOMPPROCS \
|
&& make -j $WM_NCOMPPROCS \
|
||||||
&& make install \
|
&& make install DESTDIR="$local_destdir" \
|
||||||
&& echo "Built: $PACKAGE" \
|
&& echo "Built: $PACKAGE"
|
||||||
&& pkgconfigAdjust "$PKG_PREFIX"
|
|
||||||
) || {
|
) || {
|
||||||
echo "Error building: $PACKAGE"
|
echo "Error building: $PACKAGE"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Unneeded generated files
|
||||||
|
for dir in share/doc share/info share/man
|
||||||
|
do
|
||||||
|
if [ -d "$PKG_PREFIX/$dir" ]
|
||||||
|
then
|
||||||
|
echo "Discard $dir files to save space: $PACKAGE"
|
||||||
|
rm -rf "$PKG_PREFIX/$dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rmdir "$PKG_PREFIX"/share 2>/dev/null || true
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user