Files
ThirdParty-common/etc/tools/ThirdPartyFunctions
mark cf251ea182 ENH: support new rendering backend for paraview >= 5.0
ENH: patch paraview 4.4.0 directly before building

- this avoids more manual steps for the user
2016-06-20 07:07:52 +02:00

193 lines
4.6 KiB
Bash

#---------------------------------*- sh -*-------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
#------------------------------------------------------------------------------
# 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/>.
#
# File
# etc/tools/ThirdPartyFunctions
#
# Description
# Functions for managing the third-party packages
#
# Define the standard buildBASE and installBASE for the platform
# Define WM_NCOMPPROCS always.
#------------------------------------------------------------------------------
# Define the normal build and prefix directories
buildBASE=$WM_THIRD_PARTY_DIR/build/$WM_ARCH$WM_COMPILER
installBASE=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
#
# Mostly building without wmake
# - disable wmakeScheduler variables
# - use max number of cores for building
#
unset WM_HOSTS WM_SCHEDULER
if [ -r /proc/cpuinfo ]
then
WM_NCOMPPROCS=$(egrep "^processor" /proc/cpuinfo | wc -l)
else
WM_NCOMPPROCS=1
fi
export WM_NCOMPPROCS
# echo "Building on $WM_NCOMPPROCS cores"
#
# If WM_CONTINUE_ON_ERROR not set activate the shell option "stop on error"
#
if [ -z "${WM_CONTINUE_ON_ERROR}" ]
then
set -e
fi
# Report error and exit
die()
{
exec 1>&2
echo
echo "Error: see '${0##*/} -help' for usage"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo
exit 1
}
# Test if it matches "*-none"
_foamIsNone()
{
test "${1##*-}" = none
}
# Test if it matches "*-system"
_foamIsSystem()
{
test "${1##*-}" = system
}
#
# Download file $1 from url $2 into download/ directory
#
downloadFile()
{
[ "$#" -eq 2 ] || {
echo "downloadFile called with incorrect number of arguments $@"
return 1
}
local file="$1"
local url="$2"
if [ ! -e download/$file ]
then
mkdir -p download
echo "downloading $tarFile from $url"
( cd download && wget --no-check-certificate $url -O $file )
fi
}
#
# Copy Make/{files,options} from etc/wmakeFiles/PACKAGE
#
# $1 = PACKAGE
# $2 = TARGET DIRECTORY (optional)
cpMakeFiles()
{
set +x
[ "$#" -eq 1 -o "$#" -eq 2 ] || {
echo "cpMakeFiles called with incorrect number of arguments $@"
return 1
}
local pkg=$1
local dst="${2:-.}"
echo "cpMakeFiles" $pkg $dst
wmakeFiles=$WM_THIRD_PARTY_DIR/etc/wmakeFiles/$pkg
for i in $(cd $wmakeFiles && find . -type f)
do
d=${i%/*} # dirname
b=${i##*/} # basename
mkdir -p $dst/$d/Make 2>/dev/null
# NOTE the behaviour of '-nt' can cause problems
#
# - bash, ksh, /usr/bin/test
# True, if file1 exists and file2 does not
#
# - dash, zsh (and maybe others)
# False, if file1 or file2 does not exist
#
if [ ! -e $dst/$d/Make/$b -o $wmakeFiles/$i -nt $dst/$d/Make/$b ]
then
cp $wmakeFiles/$i $dst/$d/Make/$b
fi
done
set -x
}
#
# Apply source-code patch if possible.
# Patches are taken from etc/patches/PACKAGE
#
# $1 = PACKAGE
# $2 = TARGET DIRECTORY (optional)
applyPatch()
{
[ "$#" -eq 1 -o "$#" -eq 2 ] || {
echo "applyPatch called with incorrect number of arguments ($#): $@"
return 1
}
local pkg="$1"
local dst="${2:-.}"
local patch="$WM_THIRD_PARTY_DIR/etc/patches/$pkg"
local sentinel="PATCHED_DURING_OPENFOAM_BUILD"
if [ -r "$patch" ]
then
(
cd $dst || exit 1
if [ -f "$sentinel" ]
then
echo "patch for $pkg was already applied"
else
echo "apply patch for $pkg"
touch "$sentinel"
patch -p1 < $patch 2>&1 | tee $sentinel
fi
)
else
echo "no patch found for $pkg"
fi
}
#------------------------------------------------------------------------------