--- /dev/null
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+ ubuntu18-minimal:
+ name: ubuntu 18.04 minimal
+ runs-on: [ubuntu-18.04]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: setup
+ run: |
+ sudo apt-get install gfortran libopenmpi-dev openmpi-common openmpi-bin libblas-dev liblapack-dev libblas3 liblapack3
+ - name: info
+ run: |
+ g++ -v
+ mpic++ -v
+ cmake --version
+ - name: build
+ run: |
+ echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
+ ./candi.sh -j 2 --packages="once:p4est dealii"
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+
+ ubuntu20-blas:
+ name: ubuntu 20.04
+ runs-on: [ubuntu-20.04]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: setup
+ run: |
+ sudo apt-get install gfortran libopenmpi-dev openmpi-common openmpi-bin
+ - name: info
+ run: |
+ g++ -v
+ mpic++ -v
+ cmake --version
+ - name: build
+ run: |
+ # use our cmake version, as the runner has 3.19 installed, which is too new for deal.II
+ ./candi.sh -j 2 --packages="once:cmake once:openblas once:p4est dealii"
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+
+ osx-minimal:
+ name: OSX clang
+ runs-on: [macos-latest]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: setup
+ run: |
+ # force cmake version:
+ pip install cmake==3.18.4
+ echo "/Library/Frameworks/Python.framework/Versions/2.7/bin" >> $GITHUB_PATH
+ brew install openmpi
+ - name: info
+ run: |
+ mpicxx -v
+ cmake --version
+ - name: build
+ run: |
+ echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
+ ./candi.sh -j 2 --packages="dealii"
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+
+ osx-gcc:
+ name: OSX gcc
+ runs-on: [macos-latest]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: setup
+ run: |
+ # force cmake version:
+ pip install cmake==3.18.4
+ echo "/Library/Frameworks/Python.framework/Versions/2.7/bin" >> $GITHUB_PATH
+ brew install openmpi
+ - name: info
+ run: |
+ export OMPI_CXX=g++-9
+ mpicxx -v
+ cmake --version
+ - name: build
+ run: |
+ export OMPI_CXX=g++-9
+ export OMPI_CC=gcc-9
+ export OMPI_FC=gfortran-9
+ echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
+ ./candi.sh -j 2 --packages="once:p4est once:petsc dealii"
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+# eclipse
+/.cproject
+/.project
+qtcreator/
+
+# visual studio code
+/.vscode
+
+# temporary and backup files
*~
-/src/
-/deal.II-toolchain-build/
-/deal.II-toolchain-unpack/
-*.DS_Store
+*#
+*.swp
+
+# MacOS self-generated files
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+===================================================================
candi (compile&install) for deal.II
- Uwe Koecher <uwe.koecher@hsu-hamburg.de>
- Bruno Turcksin <bruno.turcksin@gmail.com>
- Timo Heister <timo.heister@gmail.com>
+The most recent contributors to candi are:
+
+ Uwe Köcher <koecher@hsu-hamburg.de>
+ Timo Heister <timo.heister@gmail.com>
+ Fabian Castelli <fabian.castelli@kit.edu>
+
+
+The list of all contributors (in the order of their last commit):
+
+Uwe Köcher
+Fabian Castelli
+Timo Heister
+ohcfe
+Reza Rastak
+fvanmaele
+Wolfgang Bangerth
+Daniel Arndt
+Max Rudolph
+Curt Corum
+Lukas van de Wiel
+Rene Gassmoeller
+Bruno Turcksin
+tcclevenger
+Xiaoyu WEI
===================================================================
[deal.II](https://github.com/dealii/dealii) with common dependencies on
linux-based systems.
+
+
Quickstart
----
then install the latest deal.II release and common dependencies:
```bash
- git clone https://github.com/dealii/candi
- cd candi
- ./candi.sh
+ git clone https://github.com/dealii/candi.git
+ cd candi
+ ./candi.sh
```
Follow the instructions on the screen
(you can abort the process by pressing < CTRL > + C)
+
### Examples
-#### Install deal.II on RHEL 7, CentOS 7 or Fedora 26,27,28:
+#### Install deal.II on RHEL 7, CentOS 7 or Fedora:
```bash
module load mpi/openmpi-`uname -i`
./candi.sh
```
-#### Install deal.II on ubuntu 12.04, 14.xx, 15.xx, 16.xx, 17.xx:
+#### Install deal.II on Ubuntu (16.04), 18.04, 20.xx:
```bash
./candi.sh
```
-#### Install deal.II on macOS (10.11), 10.12, 10.13:
+#### Install deal.II on macOS (experimental):
```bash
- ./candi.sh
+ ./candi.sh
```
#### Install deal.II on Windows 10 (1709):
Since the Creators Update in fall 2017 (Windows 10 (1709)) the
Windows Subsystem for Linux (WSL) is an official part.
-Install ubuntu from the Store.
-Then enable the WSL feature,
-e.g. by opening a PowerShell as Administrator and run:
-```bash
- Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
-```
-You need to reboot your system afterwards.
+For a detailed instruction how to install WSL, the new WSL 2 and a recent
+Ubuntu distribution on Windows 10 you can follow the
+[Microsoft Documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
-Within the ubuntu terminal application clone this repository and run candi
+Within the Ubuntu terminal application, upgrade Ubuntu first, then
+clone this repository and run candi
```bash
- sudo apt-get update
- sudo apt-get upgrade
- git clone https://github.com/dealii/candi
- cd candi
- ./candi.sh
+ sudo apt-get update
+ sudo apt-get upgrade
+ git clone https://github.com/dealii/candi.git
+ cd candi
+ ./candi.sh
```
#### Install deal.II on a generic Linux system or cluster:
#### Install deal.II on a system without pre-installed git:
```bash
- wget https://github.com/dealii/candi/archive/master.tar.gz
- tar -xzf master.tar.gz
- cd candi-master
- ./candi.sh
+ wget https://github.com/dealii/candi/archive/master.tar.gz
+ tar -xzf master.tar.gz
+ cd candi-master
+ ./candi.sh
```
Note that in this case you will need to activate the installation of git by
[candi.cfg](candi.cfg).
+
Advanced Configuration
----
### Command line options
-#### Help: `[-h]`
+#### Help: ``[-h]``, ``[--help]``
You can get a list of all command line options by running
```bash
./candi.sh -h
+ ./candi.sh --help
```
You can combine the command line options given below.
-#### Prefix path: ``[-p=<PATH>]``, ``[--prefix=<PATH>]``
+#### Prefix path: ``[-p <path>]``, ``[-p=<path>]``, ``[--prefix=<path>]``
```bash
- ./candi.sh --prefix=Your/Prefix/Path
+ ./candi.sh -p "/path/to/install/dir"
+ ./candi.sh -p="/path/to/install/dir"
+ ./candi.sh --prefix="/path/to/install/dir"
```
-#### Multiple build processes: ``[-j <N>]``, ``[--PROCS=<N>]``
+#### Multiple build processes: ``[-j<N>]``, ``[-j <N>]``, ``[--jobs=<N>]``
```bash
+ ./candi.sh -j<N>
./candi.sh -j <N>
+ ./candi.sh --jobs=<N>
```
* Example: to use 2 build processes type ``./candi.sh -j 2``.
-* Be careful with this option! You need to have enough system memory (e.g. at least 8GB for 2 or more processes).
+* Be careful with this option! You need to have enough system memory (e.g. at
+ least 8GB for 2 or more processes).
+
+#### Specific platform: ``[-pf=<platform>]``, ``[--platform=<platform>]``
+```bash
+ ./candi.sh -pf=./deal.II-toolchain/platforms/...
+ ./candi.sh --platform=./deal.II-toolchain/platforms/...
+```
+
+If your platform is not detected automatically you can specify it with this
+option manually. As shown above, this option is used to install deal.II via
+candi on linux clusters, for example. For a complete list of supported platforms
+see [deal.II-toolchain/platforms](deal.II-toolchain/platforms).
+
+#### User interaction: ``[-y]``, ``[--yes]``, ``[--assume-yes]``
+```bash
+ ./candi.sh -y
+ ./candi.sh --yes
+ ./candi.sh --assume-yes
+```
+
+With this option you skip the user interaction. This might be useful if you
+submit the installation to the queueing system of a cluster.
+
### Configuration file options
* hdf5
* opencascade
-and others. For a complete list see [deal.II-toolchain/packages](deal.II-toolchain/packages).
+and others. For a complete list see
+[deal.II-toolchain/packages](deal.II-toolchain/packages).
+
+There are several options within the configuration file, for example:
+
+* Remove existing build directories to use always a fresh setup
+```bash
+ CLEAN_BUILD={ON|OFF}
+```
-There are several other options within the configuration file, e.g.
+* Enable native compiler optimizations like ``-march=native``
+```bash
+ NATIVE_OPTIMIZATIONS={ON|OFF}
+```
-* the ``DOWNLOAD_PATH`` folder (can be safely removed after installation),
-* the ``UNPACK_PATH`` folder of the downloaded packages (can be safely removed after installation),
-* the ``BUILD_PATH`` folder (can be safely removed after installation),
-* the ``INSTALL_PATH`` destination folder,
+* Enable the build of the deal.II examples
+```bash
+ BUILD_EXAMPLES={ON|OFF}
+```
and more.
+Furthermore you can specify the install directory and other internal
+directories, where the source and build files are stored:
+* The ``DOWNLOAD_PATH`` folder (can be safely removed after installation)
+* The ``UNPACK_PATH`` folder of the downloaded packages (can be safely removed
+ after installation)
+* The ``BUILD_PATH`` folder (can be safely removed after installation)
+* The ``INSTALL_PATH`` destination folder
+
+
### Single package installation mode
If you prefer to install only a single package, you can do so by
# Meta-project to build
PROJECT=deal.II-toolchain
-CLEAN_BUILD=false
+
+# Option {ON|OFF}: Use fresh build directory by remove existing ones?
+CLEAN_BUILD=OFF
#########################################################################
MIRROR="https://tjhei.info/candi-mirror/ https://cecas.clemson.edu/dealii/mirror/"
#########################################################################
-#Choose configuration and components of deal.II
-DEAL_CONFOPTS=""
+# Choose additional configuration and components of deal.II
+DEAL_II_CONFOPTS=""
+
+# Option {ON|OFF}: Enable machine-specific optimizations (e.g. -march=native)?
+NATIVE_OPTIMIZATIONS=OFF
+
+# Option {ON|OFF}: Enable building of dealii examples?
+BUILD_EXAMPLES=ON
+
+# Option {ON|OFF}: Unset CXX and set the compiler as MPI_CXX_COMPILER when configuring deal.II
+#
+# This is recommended for very recent CMake versions but it currently is not reliable enough
+# to enable by default.
+USE_DEAL_II_CMAKE_MPI_COMPILER=OFF
+
+# Option {ON|OFF}: Run tests after installation?
+RUN_DEAL_II_TESTS=OFF
-# enable machine-specific optimizations (implies -march=native etc.)?
-#NATIVE_OPTIMIZATIONS=true
+# Choose the python interpreter to use. We pick python2, python3,
+# python in that order by default. If you want to override this
+# choice, uncomment the following:
+#PYTHON_INTERPRETER=python3
+# Now we pick the packages to install:
PACKAGES="load:dealii-prepare"
# These are system dependencies that are often pre-installed:
#########################################################################
-# Install the following deal.II version:
+# Install the following deal.II version (choose master v9.3.0 ...)
DEAL_II_VERSION=v9.1.1
-# Would you like to build stable version of deal.II?
-# If STABLE_BUILD=false, then the development version of deal.II will be
-# installed.
-STABLE_BUILD=true
-#STABLE_BUILD=false
-
-if [ ${STABLE_BUILD} = "false" ]; then
- DEAL_II_VERSION=master
-fi
-
#########################################################################
# If you want to use Trilinos, decide if you want v12.x.x (AUTO) or v11.x.x
#########################################################################
-# Do you want to use MKL?
+# Option {ON|OFF}: Do you want to use MKL?
MKL=OFF
# MKL_DIR=
# BLAS_DIR=
#########################################################################
-# If you have commits from the deal.II master to cherry-pick in STABLE_BUILD
+# If you have commits from the deal.II master to cherry-pick in stable version
# bugfix for TrilinosWrapper::SparseMatrix ::add(factor, SparseMatrix)
#DEAL_CHERRYPICKCOMMITS="8bcaf55df6754238b2e4e41bf6a5dd276a97bdd2 ${DEAL_CHERRYPICKCOMMITS}"
#########################################################################
-# If you want to change the source code of one or multiple packages
-# switch on the developer mode to avoid a package fetch and unpack.
+# Option {ON|OFF}: If you want to change the source code of one or multiple
+# packages switch on the developer mode to avoid a package fetch and unpack.
# Note: a previous run of candi with the same settings must be done without
# this mode!
DEVELOPER_MODE=OFF
+################################################################################
+
+# OPTION {ON|OFF}: Remove build directory after successful installation
+INSTANT_CLEAN_BUILD_AFTER_INSTALL=OFF
+
+# OPTION {ON|OFF}: Remove downloaded packed src after successful installation
+INSTANT_CLEAN_SRC_AFTER_INSTALL=OFF
+
+# OPTION {ON|OFF}: Remove unpack directory after successful installation
+INSTANT_CLEAN_UNPACK_AFTER_INSTALL=OFF
################################################################################
# Parse command line input parameters
-PREFIX=~/deal.ii-candi
-PROCS=1
+PREFIX=~/dealii-candi
+JOBS=1
CMD_PACKAGES=""
+USER_INTERACTION=ON
while [ -n "$1" ]; do
param="$1"
echo "Usage: $0 [options]"
echo "Options:"
echo " -p <path>, --prefix=<path> set a different prefix path (default $PREFIX)"
- echo " -j <N>, -j<N>, --PROCS=<N> compile with N processes in parallel (default $PROCS)"
+ echo " -j <N>, -j<N>, --jobs=<N> compile with N processes in parallel (default ${JOBS})"
echo " --platform=<platform> force usage of a particular platform file"
echo " --packages=\"pkg1 pkg2\" install the given list of packages instead of the default set in candi.cfg"
+ echo " -y, --yes, --assume-yes automatic yes to prompts"
echo ""
echo "The configuration including the choice of packages to install is stored in candi.cfg, see README.md for more information."
exit 0
;;
-p=*|--prefix=*)
PREFIX="${param#*=}"
- # replace '~' by $HOME
- PREFIX=${PREFIX/#~\//$HOME\/}
;;
#####################################
#####################################
# Number of maximum processes to use
- --PROCS=*)
- PROCS="${param#*=}"
+ --jobs=*)
+ JOBS="${param#*=}"
;;
# Make styled processes with or without space
-j)
shift
- PROCS="${1}"
+ JOBS="${1}"
;;
-j*)
- PROCS="${param#*j}"
+ JOBS="${param#*j}"
;;
#####################################
-pf=*|--platform=*)
GIVEN_PLATFORM="${param#*=}"
;;
+
+ #####################################
+ # Assume yes to prompts
+ -y|--yes|--assume-yes)
+ USER_INTERACTION=OFF
+ ;;
*)
echo "invalid command line option. See -h for more information."
shift
done
-# replace '~' by $HOME:
+# Check the input argument of the install path and (if used) replace the tilde
+# character '~' by the users home directory ${HOME}. Afterwards clear the
+# PREFIX input variable.
PREFIX_PATH=${PREFIX/#~\//$HOME\/}
+unset PREFIX
RE='^[0-9]+$'
-if [[ ! "$PROCS" =~ $RE || $PROCS<1 ]] ; then
- echo "ERROR: invalid number of build processes '$PROCS'"
+if [[ ! "${JOBS}" =~ ${RE} || ${JOBS}<1 ]] ; then
+ echo "ERROR: invalid number of build processes '${JOBS}'"
exit 1
fi
}
cls() {
- # clear screen
- COL=$1; shift
- echo -e "${COL}$@\033c"
+ if [ ${USER_INTERACTION} = ON ]; then
+ # clear screen
+ COL=$1; shift
+ echo -e "${COL}$@\033c"
+ fi
}
default () {
# return 1: No checksum provided (archive found, but unable to verify)
# return 2: ARCHIVE_FILE not found (archive NOT found)
# return 3: CHECKSUM mismatch (archive file corrupted)
-# return 4: Neither md5 nor md5sum found (archive found, but unable to verify)
+# return 4: Not able to compute checksum (archive found, but unable to verify)
+# return 5: Checksum algorithm not found (archive found, but unable to verify)
+# This function tries to verify the downloaded archive by determing and
+# comparing checksums. For a specific package several checksums might be
+# defined. Based on the length of the given checksum the underlying algorithm
+# is determined. The first matching checksum verifies the archive.
verify_archive() {
ARCHIVE_FILE=$1
return 1
fi
- # Skip verifying archive, if CHECKSUM=ignore
- if [ "${CHECKSUM}" = "ignore" ]; then
+ # Skip verifying archive, if CHECKSUM=skip
+ if [ "${CHECKSUM}" = "skip" ]; then
cecho ${WARN} "Skipped checksum check for ${ARCHIVE_FILE}"
return 1
fi
cecho ${INFO} "Verifying ${ARCHIVE_FILE}"
- # Verify CHECKSUM using md5/md5sum
- if builtin command -v md5 > /dev/null; then
- CURRENT="$(md5 -q ${ARCHIVE_FILE})"
- elif builtin command -v md5sum > /dev/null; then
- CURRENT=$(md5sum ${ARCHIVE_FILE} | awk '{print $1}')
- else
- cecho ${BAD} "Neither md5 nor md5sum were found in the PATH"
- return 4
- fi
-
for CHECK in ${CHECKSUM}; do
+ # Verify CHECKSUM using md5/sha1/sha256
+ if [ ${#CHECK} = 32 ]; then
+ ALGORITHM="md5"
+ if builtin command -v md5sum > /dev/null; then
+ CURRENT=$(md5sum ${ARCHIVE_FILE} | awk '{print $1}')
+ elif builtin command -v md5 > /dev/null; then
+ CURRENT="$(md5 -q ${ARCHIVE_FILE})"
+ else
+ cecho ${BAD} "Neither md5sum nor md5 were found in the PATH"
+ return 4
+ fi
+ elif [ ${#CHECK} = 40 ]; then
+ ALGORITHM="sha1"
+ if builtin command -v sha1sum > /dev/null; then
+ CURRENT=$(sha1sum ${ARCHIVE_FILE} | awk '{print $1}')
+ elif builtin command -v shasum > /dev/null; then
+ CURRENT=$(shasum -a 1 ${ARCHIVE_FILE} | awk '{print $1}')
+ else
+ cecho ${BAD} "Neither sha1sum nor shasum were found in the PATH"
+ return 4
+ fi
+ elif [ ${#CHECK} = 64 ]; then
+ ALGORITHM="sha256"
+ if builtin command -v sha256sum > /dev/null; then
+ CURRENT=$(sha256sum ${ARCHIVE_FILE} | awk '{print $1}')
+ elif builtin command -v shasum > /dev/null; then
+ CURRENT=$(shasum -a 256 ${ARCHIVE_FILE} | awk '{print $1}')
+ else
+ cecho ${BAD} "Neither sha256sum nor shasum were found in the PATH"
+ return 4
+ fi
+ else
+ cecho ${BAD} "Checksum algorithm could not be determined"
+ exit 5
+ fi
+
test "${CHECK}" = "${CURRENT}"
if [ $? = 0 ]; then
- echo "${ARCHIVE_FILE}: OK"
+ cecho ${GOOD} "${ARCHIVE_FILE}: OK(${ALGORITHM})"
return 0
- fi
+ else
+ cecho ${BAD} "${ARCHIVE_FILE}: FAILED(${ALGORITHM})"
+ cecho ${BAD} "${CURRENT} does not match given checksum ${CHECK}"
+ fi
done
+ unset ALGORITHM
cecho ${BAD} "${ARCHIVE_FILE}: FAILED"
- cecho ${BAD} "${CURRENT} does not match any in ${CHECKSUM}"
+ cecho ${BAD} "Checksum does not match any in ${CHECKSUM}"
return 3
}
verify_archive ${ARCHIVE_FILE}
archive_state=$?
if [ ${archive_state} = 0 ] || [ ${archive_state} = 1 ] || [ ${archive_state} = 4 ]; then
- # If the download was successful, and the CHECKSUM is matching, ignored, or not possible
+ # If the download was successful, and the CHECKSUM is matching, skipped, or not possible
return 0;
fi
unset archive_state
quit_if_fail "candi: download_archive ${NAME}${PACKING} failed"
elif [ ${PACKING} = "git" ]; then
+ # Go into the unpack dir
cd ${UNPACK_PATH}
- # Suitably clone or update git repositories
+
+ # Clone the git repository if not existing locally
if [ ! -d ${EXTRACTSTO} ]; then
git clone ${SOURCE}${NAME} ${EXTRACTSTO}
quit_if_fail "candi: git clone ${SOURCE}${NAME} ${EXTRACTSTO} failed"
- else
- cd ${EXTRACTSTO}
- git checkout master --force
- quit_if_fail "candi: git checkout master --force failed"
-
- git pull
- quit_if_fail "candi: git pull failed"
- cd ..
fi
- if [ ${STABLE_BUILD} = true ]; then
- cd ${EXTRACTSTO}
- git checkout ${VERSION} --force
- quit_if_fail "candi: git checkout ${VERSION} --force failed"
- cd ..
- fi
+ # Checkout the desired version
+ cd ${EXTRACTSTO}
+ git checkout ${VERSION} --force
+ quit_if_fail "candi: git checkout ${VERSION} --force failed"
+ # Switch to the tmp dir
+ cd ..
elif [ ${PACKING} = "hg" ]; then
cd ${UNPACK_PATH}
# Suitably clone or update hg repositories
default BUILDDIR=${BUILD_PATH}/${NAME}
# Clean the build directory if specified
- if [ -d ${BUILDDIR} ] && [ ${CLEAN_BUILD} = "true" ]; then
+ if [ -d ${BUILDDIR} ] && [ ${CLEAN_BUILD} = ON ]; then
rm -rf ${BUILDDIR}
fi
fi
for target in "${TARGETS[@]}"; do
- echo make ${MAKEOPTS} -j ${PROCS} $target >>candi_build
+ echo make ${MAKEOPTS} -j ${JOBS} $target >>candi_build
done
elif [ ${BUILDCHAIN} = "cmake" ]; then
rm -rf ${BUILDDIR}/CMakeFiles
echo cmake ${CONFOPTS} -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} ${UNPACK_PATH}/${EXTRACTSTO} >>candi_configure
for target in "${TARGETS[@]}"; do
- echo make ${MAKEOPTS} -j ${PROCS} $target >>candi_build
+ echo make ${MAKEOPTS} -j ${JOBS} $target >>candi_build
done
elif [ ${BUILDCHAIN} = "python" ]; then
echo cp -rf ${UNPACK_PATH}/${EXTRACTSTO}/* . >>candi_configure
- echo python setup.py install --prefix=${INSTALL_PATH} >>candi_build
+ echo ${PYTHON_INTERPRETER} setup.py install --prefix=${INSTALL_PATH} >>candi_build
elif [ ${BUILDCHAIN} = "scons" ]; then
echo cp -rf ${UNPACK_PATH}/${EXTRACTSTO}/* . >>candi_configure
for target in "${TARGETS[@]}"; do
- echo scons -j ${PROCS} ${CONFOPTS} prefix=${INSTALL_PATH} $target >>candi_build
+ echo scons -j ${JOBS} ${CONFOPTS} prefix=${INSTALL_PATH} $target >>candi_build
done
elif [ ${BUILDCHAIN} = "custom" ]; then
elif [ -x /usr/bin/sw_vers ]; then
local MACOSVER=$(sw_vers -productVersion)
case ${MACOSVER} in
- 10.11*) echo elcapitan;;
- 10.12*) echo sierra;;
- 10.13*) echo highsierra;;
- 10.14*) echo mojave;;
- 10.15*) echo catalina;;
+ 10.11*) echo macos_elcapitan;;
+ 10.12*) echo macos_sierra;;
+ 10.13*) echo macos_highsierra;;
+ 10.14*) echo macos_mojave;;
+ 10.15*) echo macos_catalina;;
+ 11.4*) echo macos_bigsur;;
esac
elif [ ! -z "$CRAYOS_VERSION" ]; then
echo cray
- elif [ -x /usr/bin/lsb_release ]; then
- local OSVER=$(lsb_release -r -s |grep -o -E '[0-9]+' |head -n 1)
+ elif [ -f /etc/os-release ]; then
+ local OS_ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
+ local OS_VERSIONID=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
+ local OS_MAJOR_VER=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"' | grep -oE '[0-9]+' | head -n 1)
+ local OS_NAME=$(grep -oP '(?<=^NAME=).+' /etc/os-release | tr -d '"')
+ local OS_PRETTY_NAME=$(grep -oP '(?<=^PRETTY_NAME=).+' /etc/os-release | tr -d '"')
- if [ -f /etc/fedora-release ]; then
- echo fedora${OSVER}
+ if [ "$OS_ID" == "fedora" ]; then
+ echo fedora
- elif [ -f /etc/centos-release ]; then
- echo centos${OSVER}
+ elif [ "$OS_ID" == "centos" ]; then
+ echo centos${OS_VERSIONID}
- elif [ -f /etc/redhat-release ]; then
- echo rhel${OSVER}
+ elif [ "$OS_ID" == "rhel" ]; then
+ echo rhel${OS_MAJOR_VER}
- else
- local DISTRO=$(lsb_release -i -s)
- local CODENAME=$(lsb_release -c -s)
- local DESCRIPTION=$(lsb_release -d -s)
- case ${DISTRO}:${CODENAME}:${DESCRIPTION} in
- *:*:*Debian*9*) echo debian9;;
- *:*:*Ubuntu*) echo ubuntu${OSVER};;
- *:*:*openSUSE\ 12*) echo opensuse12;;
- *:*:*openSUSE\ 13*) echo opensuse13;;
- *:*:*openSUSE\ 15*) echo opensuse15;;
- esac
+ elif [ "$OS_ID" == "debian" ]; then
+ echo debian${OS_MAJOR_VER}
+
+ elif [ "$OS_ID" == "ubuntu" ]; then
+ echo ubuntu${OS_MAJOR_VER}
+
+ elif [ "${OS_NAME}" == "openSUSE Leap" ]; then
+ echo opensuse15
+
+ elif [ "${PRETTY_NAME}" == "Arch Linux" ]; then
+ echo arch
+
+ elif [ "${PRETTY_NAME}" == "Manjaro Linux" ]; then
+ echo arch
fi
- elif [ -f /etc/os-release ]; then
- . /etc/os-release
- if [ "${PRETTY_NAME}" == "openSUSE Leap 15.0" ]; then
- echo opensuse15
- fi
fi
}
elif [ -x /usr/bin/sw_vers ]; then
echo macos
- elif [ -f /etc/fedora-release ]; then
- echo linux
-
- elif [ -f /etc/redhat-release ]; then
- echo linux
-
- elif [ -x /usr/bin/lsb_release ]; then
- echo linux
-
elif [ -x /etc/os-release ]; then
echo linux
fi
default INSTALL_PATH=${PREFIX_PATH}
default CONFIGURATION_PATH=${INSTALL_PATH}/configuration
-default CLEAN_BUILD=false
-default STABLE_BUILD=true
+default CLEAN_BUILD=OFF
default DEVELOPER_MODE=OFF
default PACKAGES_OFF=""
awk '/^##/ {exit} {$1=""; print}' <${PLATFORM}
echo
-# Let the user confirm now, that the PLATFORM is set up correctly
-echo "-------------------------------------------------------------------------------"
-cecho ${GOOD} "Please make sure you've read the instructions above and your system"
-cecho ${GOOD} "is ready for installing ${PROJECT}."
-cecho ${BAD} "If not, please abort the installer by pressing <CTRL> + <C> !"
-cecho ${INFO} "Then copy and paste these instructions into this terminal."
-echo
+# If interaction is enabled, let the user confirm, that the platform is set up
+# correctly
+if [ ${USER_INTERACTION} = ON ]; then
+ echo "--------------------------------------------------------------------------------"
+ cecho ${GOOD} "Please make sure you've read the instructions above and your system"
+ cecho ${GOOD} "is ready for installing ${PROJECT}."
+ cecho ${BAD} "If not, please abort the installer by pressing <CTRL> + <C> !"
+ cecho ${INFO} "Then copy and paste these instructions into this terminal."
+ echo
-cecho ${GOOD} "Once ready, hit enter to continue!"
-read
+ cecho ${GOOD} "Once ready, hit enter to continue!"
+ read
+fi
################################################################################
# Output configuration details
cecho ${BAD} "source files from: $(prettify_dir ${UNPACK_PATH})"
echo
else
- cecho ${BAD} "candi: bad variable: DEVELOPER_MODE={OFF|ON}; (your specified option is = ${DEVELOPER_MODE})"
+ cecho ${BAD} "candi: bad variable: DEVELOPER_MODE={ON|OFF}; (your specified option is = ${DEVELOPER_MODE})"
exit 1
fi
echo
echo "-------------------------------------------------------------------------------"
-cecho ${INFO} "Number of (at most) build processes to use: PROCS=${PROCS}"
+cecho ${INFO} "Number of (at most) build processes to use: JOBS=${JOBS}"
echo
echo "-------------------------------------------------------------------------------"
done
echo
-
-echo "-------------------------------------------------------------------------------"
-if [ ${STABLE_BUILD} = true ]; then
- cecho ${INFO} "Building stable releases of ${PROJECT} packages."
-else
- cecho ${WARN} "Building development versions of ${PROJECT} packages."
-fi
-echo
-
# if the program 'module' is available, output the currently loaded modulefiles
if builtin command -v module > /dev/null; then
echo "-------------------------------------------------------------------------------"
fi
################################################################################
-# Force the user to accept the current output
-echo "-------------------------------------------------------------------------------"
-cecho ${GOOD} "Once ready, hit enter to continue!"
-read
+# If interaction is enabled, force the user to accept the current output
+if [ ${USER_INTERACTION} = ON ]; then
+ echo "--------------------------------------------------------------------------------"
+ cecho ${GOOD} "Once ready, hit enter to continue!"
+ read
+fi
################################################################################
# Output configuration details
cecho ${GOOD} "Platform: ${PLATFORM}"
echo
-# If the platform doesn't override the system python by installing its
-# own, figure out the version of the existing python
-default PYTHONVER=`python -c "import sys; print(sys.version[:3])"`
+
+# Figure out what binary to use for python support. Note that older PETSc ./configure only supports python2. For now, prefer
+# using python2 but use what the user supplies as PYTHON_INTERPRETER.
+if builtin command -v python2 --version > /dev/null; then
+ default PYTHON_INTERPRETER="python2"
+fi
+if builtin command -v python2.7 --version > /dev/null; then
+ default PYTHON_INTERPRETER="python2.7"
+fi
+if builtin command -v python3 --version > /dev/null; then
+ default PYTHON_INTERPRETER="python3"
+fi
+default PYTHON_INTERPRETER="python"
+
+# Figure out the version of the existing python:
+default PYTHONVER=`${PYTHON_INTERPRETER} -c "import sys; print(sys.version[:3])"`
# Create necessary directories and set appropriate variables
mkdir -p ${DOWNLOAD_PATH}
# WARNING: do not overwrite this variables!
ORIG_INSTALL_PATH=${INSTALL_PATH}
ORIG_CONFIGURATION_PATH=${CONFIGURATION_PATH}
-ORIG_PROCS=${PROCS}
+ORIG_JOBS=${JOBS}
guess_architecture
unset CONFIG_FILE
unset CHERRYPICKCOMMITS
TARGETS=('' install)
- PROCS=${ORIG_PROCS}
+ JOBS=${ORIG_JOBS}
INSTALL_PATH=${ORIG_INSTALL_PATH}
CONFIGURATION_PATH=${ORIG_CONFIGURATION_PATH}
# Fetch information pertinent to the package
source ${PROJECT}/packages/${PACKAGE}.package
- # Turn to a stable version of the package if that's what the user
- # wants and it exists
- if [ ${STABLE_BUILD} = true ] && [ -e ${PROJECT}/packages/${PACKAGE}-stable.package ]; then
- source ${PROJECT}/packages/${PACKAGE}-stable.package
- fi
-
# Ensure that the package file is sanely constructed
if [ ! "${BUILDCHAIN}" ]; then
cecho ${BAD} "${PACKAGE}.package is not properly formed. Please check that all necessary variables are defined."
package_unpack
fi
package_build
+
+ # Clean build directory after install
+ if [ ${INSTANT_CLEAN_BUILD_AFTER_INSTALL} = ON ]; then
+ rm -rf ${BUILDDIR}
+ fi
+
+ # Clean src after install
+ if [ ${INSTANT_CLEAN_SRC_AFTER_INSTALL} = ON ]; then
+ if [ -f ${DOWNLOAD_PATH}/${NAME}${PACKING} ]; then
+ rm -f ${DOWNLOAD_PATH}/${NAME}${PACKING}
+ fi
+ fi
+
+ # Clean unpack directory after install
+ if [ ${INSTANT_CLEAN_UNPACK_AFTER_INSTALL} = ON ]; then
+ rm -rf ${UNPACK_PATH}/${EXTRACTSTO}
+ fi
else
if [ ! -z "${LOAD}" ]; then
# Let the user know we're loading the current package
-# use development version?
-#CANDI_ADOLC_FROM_GIT=1
+################################################################################
+## ADOLC ##
+################################################################################
-if [ -n "$CANDI_ADOLC_FROM_GIT" ]; then
+# Option {ON|OFF}: Choose whether to load the tarball or the git repository.
+CANDI_ADOLC_LOAD_TARBALL=ON
+
+if [ ${CANDI_ADOLC_LOAD_TARBALL} = ON ]; then
+ # download release tarball
+ VERSION=2.7.2
+ CHECKSUM=701e0856baae91b98397960d5e0a87a549988de9d4002d0e9a56fa08f5455f6e
+ CHECKSUM="${CHECKSUM} 372c86eaa8b11f83825b2d9e0719b5ce3cb7066d"
+ CHECKSUM="${CHECKSUM} ea05bd8e0d6c92d474204876fdcad04d"
+
+ NAME=${VERSION}
+ SOURCE=https://github.com/coin-or/ADOL-C/archive/releases/
+ EXTRACTSTO=ADOL-C-releases-${VERSION}
+ PACKING=.tar.gz
+else
# download git repository
VERSION=master
+ NAME=ADOL-C.git
+ SOURCE=https://github.com/coin-or/
EXTRACTSTO=ADOL-C-master
-
- NAME=adol-c.git
PACKING=git
- SOURCE=https://gitlab.com/adol-c/
-
-else
- # download release tarball
-
- # 2.6.3 is the latest official release, but is not compatible with
- # deal.II. For now we have an un-official 2.6.4 RC that we are using.
-
- #VERSION=2.6.3
- #NAME=ADOL-C-${VERSION}
- #EXTRACTSTO=ADOL-C-${VERSION}
- #SOURCE=https://www.coin-or.org/download/source/ADOL-C/
- #CHECKSUM=f78f67f70d5874830a1ad1c0f54e54f7
- #PACKING=.tgz
-
- VERSION=2.6.4-rc1
- NAME=ADOL-C-${VERSION}
- EXTRACTSTO=ADOL-C-${VERSION}
- SOURCE=https://github.com/tjhei/adol-c/releases/download/v2.6.4-rc1/
- CHECKSUM=cca27e9579c0c9ab4dd0c1cfa1c44433
- PACKING=.tar.gz
fi
-unset CANDI_ADOLC_FROM_GIT
-
+unset CANDI_ADOLC_LOAD_TARBALL
BUILDCHAIN=autotools
package_specific_conf () {
# Generate configuration file
CONFIG_FILE=${CONFIGURATION_PATH}/adolc-${VERSION}
- rm -f $CONFIG_FILE
+ rm -f ${CONFIG_FILE}
echo "
export ADOLC_DIR=${INSTALL_PATH}
" >> $CONFIG_FILE
export ARPACK_DIR=${INSTALL_PATH}
" >> $CONFIG_FILE
}
-
cp -rf ${UNPACK_PATH}/${EXTRACTSTO}/* .
cd build/gcc
mkdir -p ${INSTALL_PATH}
- make -j${PROCS} >> make.output || bdie "Error in make"
+ make -j${JOBS} >> make.output || bdie "Error in make"
cp bin/astyle ${INSTALL_PATH}/
}
quit_if_fail "boost build ./bootstrap.sh failed"
echo "using mpi ;" > user-config.jam
- ./b2 -j ${PROCS} --user-config=user-config.jam --build-dir=candi_build_dir link=shared install ${CONFOPTS}
+ ./b2 -j ${JOBS} --user-config=user-config.jam --build-dir=candi_build_dir link=shared install ${CONFOPTS}
quit_if_fail "boost build ./b2 failed"
}
# tarball install
NAME=cmake-${VERSION}-Linux-x86_64
PACKING=.tar.gz
- CHECKSUM=55e30dd01698e9409b576008fd22394c
+ CHECKSUM=55e30dd01698e9409b576008fd22394c # 3.11.2
BUILDCHAIN=ignore
else
# configure/make/install
NAME=cmake-${VERSION}
PACKING=.tar.gz
- CHECKSUM=d2d554c05fc07cfae7846d2aa205f12a
+ CHECKSUM=d2d554c05fc07cfae7846d2aa205f12a # 3.11.2
if builtin command -v cmake > /dev/null; then
# configure/make with cmake (older or newer version already installed)
export CMAKE_ROOT=${INSTALL_PATH}/share/${MAJOR}
" >> $CONFIG_FILE
}
-
BUILDCHAIN=ignore
################################################################################
-# Loop over the options in DEAL_CONFOPTS and if the package is turned off, add
-# it to the PACKAGES_OFF list.
-for option in ${DEAL_CONFOPTS[@]}; do
+# Loop over the options in DEAL_II_CONFOPTS and if the package is turned off,
+# add it to the PACKAGES_OFF list.
+for option in ${DEAL_II_CONFOPTS[@]}; do
case ${option} in
*DEAL_II_WITH*:BOOL=OFF)
PACKAGE_NAME=${option##*WITH_};
if [ ! -z "${PACKAGES_OFF}" ]; then
cecho ${WARN} "deal.II: forcing package skip for: ${PACKAGES_OFF}"
- cecho ${INFO} "This is coming from your personal DEAL_CONFOPTS settings!"
+ cecho ${INFO} "This is coming from your personal DEAL_II_CONFOPTS settings!"
echo
- cecho ${GOOD} "Please confirm this behaviour by pressing enter..."
- read
+
+ if [ ${USER_INTERACTION} = ON ]; then
+ cecho ${GOOD} "Please confirm this behaviour by pressing enter..."
+ read
+ fi
fi
# Check if we hit cmake-3.10+ and deal.II v8.5.1 configure error (MPI / FindMPI)
+++ /dev/null
-VERSION=${DEAL_II_VERSION}
-NAME=dealii.git
-EXTRACTSTO=deal.II-${VERSION}
-SOURCE=https://github.com/dealii/
-PACKING=git
-BUILDCHAIN=cmake
-
-#########################################################################
-BUILDDIR=${BUILD_PATH}/deal.II-${VERSION}
-INSTALL_PATH=${ORIG_INSTALL_PATH}/deal.II-${VERSION}
-VERSION=master
+VERSION=${DEAL_II_VERSION}
NAME=dealii.git
EXTRACTSTO=deal.II-${VERSION}
SOURCE=https://github.com/dealii/
INSTALL_PATH=${ORIG_INSTALL_PATH}/deal.II-${VERSION}
################################################################################
-# Please do not change the line below!
+# Please do not change the lines below!
################################################################################
-#Choose general configuration and components of deal.II
+# Choose general configuration and components of deal.II
CONFOPTS=" \
-D CMAKE_BUILD_TYPE=DebugRelease \
-D DEAL_II_FORCE_BUNDLED_BOOST:BOOL=OFF \
-D DEAL_II_WITH_ZLIB:BOOL=ON"
-if [ "${NATIVE_OPTIMIZATIONS}" = "true" ]; then
+# Choice of whether to build the dealii examples
+if [ ${BUILD_EXAMPLES} = ON ] || [ ${BUILD_EXAMPLES} = OFF ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_COMPONENT_EXAMPLES:BOOL=${BUILD_EXAMPLES}"
+else
+ cecho ${BAD} "candi: bad variable: BUILD_EXAMPLES={ON|OFF}; (your specified option is = ${BUILD_EXAMPLES})"
+ exit 1
+fi
+
+# Choice of whether native compiler optimizations should be enabled
+if [ ${NATIVE_OPTIMIZATIONS} = ON ]; then
CONFOPTS="${CONFOPTS} \
-D CMAKE_CXX_FLAGS='-march=native'"
fi
+if [ ${USE_DEAL_II_CMAKE_MPI_COMPILER} = ON ]; then
+ # Disable CXX, CC for deal.II as recommended in
+ # https://github.com/dealii/dealii/issues/11478 and set MPI_*_COMPILER
+ # cmake variables. This only works for recent CMake versions.
+ CONFOPTS="${CONFOPTS} \
+ -D MPI_CXX_COMPILER=${CXX} \
+ -D MPI_C_COMPILER=${CC}"
+
+ unset CXX
+ unset CC
+fi
+
# add the user-specified flags at the end (so things can be overriden):
CONFOPTS="${CONFOPTS} \
-${DEAL_CONFOPTS}"
-
+${DEAL_II_CONFOPTS}"
################################################################################
# Check if we hit cmake-3.10+ and deal.II v8.5.1 configure error (MPI / FindMPI)
# metis
if [[ ${PACKAGES_OFF} =~ 'metis' ]]; then
- # Disable METIS for deal.II, if a special DEAL_CONFOPTS together with
+ # Disable METIS for deal.II, if a special DEAL_II_CONFOPTS together with
# the dealii-prepare loop forces metis to be off
if [ ! -z "${METIS_DIR}" ]; then
cecho ${INFO} "deal.II: unset METIS_DIR due to forced DEAL_II_WITH_METIS:BOOL=OFF option"
-D MUMPS_DIR=${MUMPS_DIR}"
fi
-# p4est
+########################################
+# P4EST
if [[ ${PACKAGES_OFF} =~ 'p4est' ]]; then
- # Disable p4est for deal.II, if a special DEAL_CONFOPTS together with
- # the dealii-prepare loop forces p4est to be off
if [ ! -z "${P4EST_DIR}" ]; then
cecho ${INFO} "deal.II: unset P4EST_DIR due to forced DEAL_II_WITH_P4EST:BOOL=OFF option"
unset P4EST_DIR
if [ ! -z "${P4EST_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with P4EST"
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_P4EST:BOOL=ON \
- -D P4EST_DIR=${P4EST_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_P4EST:BOOL=ON \
+ -D P4EST_DIR=${P4EST_DIR}"
fi
# hdf5
if [[ ${PACKAGES_OFF} =~ 'hdf5' ]]; then
- # Disable hdf5 for deal.II, if a special DEAL_CONFOPTS together with
+ # Disable hdf5 for deal.II, if a special DEAL_II_CONFOPTS together with
# the dealii-prepare loop forces hdf5 to be off
if [ ! -z "${HDF5_DIR}" ]; then
cecho ${INFO} "deal.II: unset HDF5_DIR due to forced DEAL_II_WITH_HDF5:BOOL=OFF option"
-D HDF5_DIR=${HDF5_DIR}"
fi
-# trilinos
+########################################
+# TRILINOS
if [[ ${PACKAGES_OFF} =~ 'trilinos' ]]; then
- # Disable trilinos for deal.II, if a special DEAL_CONFOPTS together with
- # the dealii-prepare loop forces trilinos to be off
if [ ! -z "${TRILINOS_DIR}" ]; then
cecho ${INFO} "deal.II: unset TRILINOS_DIR due to forced DEAL_II_WITH_TRILINOS:BOOL=OFF option"
unset TRILINOS_DIR
if [ ! -z "${TRILINOS_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with TRILINOS"
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_TRILINOS:BOOL=ON \
- -D TRILINOS_DIR=${TRILINOS_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_TRILINOS:BOOL=ON \
+ -D TRILINOS_DIR=${TRILINOS_DIR}"
fi
# petsc
if [[ ${PACKAGES_OFF} =~ 'petsc' ]]; then
- # Disable petsc for deal.II, if a special DEAL_CONFOPTS together with
+ # Disable petsc for deal.II, if a special DEAL_II_CONFOPTS together with
# the dealii-prepare loop forces petsc to be off
if [ ! -z "${PETSC_DIR}" ]; then
cecho ${INFO} "deal.II: unset PETSC_DIR due to forced DEAL_II_WITH_PETSC:BOOL=OFF option"
# slepc
if [[ ${PACKAGES_OFF} =~ 'slepc' ]]; then
- # Disable slepc for deal.II, if a special DEAL_CONFOPTS together with
+ # Disable slepc for deal.II, if a special DEAL_II_CONFOPTS together with
# the dealii-prepare loop forces slepc to be off
if [ ! -z "${SLEPC_DIR}" ]; then
cecho ${INFO} "deal.II: unset SLEPC_DIR due to forced DEAL_II_WITH_SLEPC:BOOL=OFF option"
-D SLEPC_DIR=${SLEPC_DIR}"
fi
-# opencascade
+########################################
+# OPENCASCADE
if [[ ${PACKAGES_OFF} =~ 'opencascade' ]]; then
- # Disable OPENCASCADE for deal.II, if a special DEAL_CONFOPTS together with
- # the dealii-prepare loop forces opencascade to be off
if [ ! -z "${OPENCASCADE_DIR}" ]; then
cecho ${INFO} "deal.II: unset OPENCASCADE_DIR due to forced DEAL_II_WITH_OPENCASCADE:BOOL=OFF option"
unset OPENCASCADE_DIR
if [ ! -z "${OPENCASCADE_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with OPENCASCADE"
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_OPENCASCADE:BOOL=ON"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_OPENCASCADE:BOOL=ON"
fi
################################################################################
+package_specific_install() {
+ if [ ${RUN_DEAL_II_TESTS} = ON ]; then
+ make test 2>&1 | tee candi_test.log
+ fi
+}
package_specific_conf() {
############################################################################
-# see http://gmsh.info/src/
-VERSION=3.0.6
-CHECKSUM=78bbfdd695b29cfef18a99f93226afc5
+################################################################################
+## GMSH ##
+################################################################################
-#VERSION=2.16.0
-#CHECKSUM=762c10f159dab4b042e3140b1c348427
+# Option {ON|OFF}: Choose whether to load the tarball or the git repository.
+CANDI_GMSH_LOAD_TARBALL=ON
-NAME=gmsh-${VERSION}-source
-PACKING=.tgz
-SOURCE=http://gmsh.info/src/
-EXTRACTSTO=gmsh-${VERSION}-source
+if [ ${CANDI_GMSH_LOAD_TARBALL} = ON ]; then
+ # see http://gmsh.info/src/
+
+ VERSION=3.0.6
+ CHECKSUM=78bbfdd695b29cfef18a99f93226afc5
+
+ # VERSION=2.16.0
+ # CHECKSUM=762c10f159dab4b042e3140b1c348427
+
+ NAME=gmsh-${VERSION}-source
+ PACKING=.tgz
+ EXTRACTSTO=gmsh-${VERSION}-source
+ SOURCE=http://gmsh.info/src/
+else
+ VERSION=gmsh_3_0_6
+ NAME=gmsh.git
+ PACKING=git
+ EXTRACTSTO=${VERSION}
+ SOURCE=https://gitlab.onelab.info/gmsh/
+fi
+unset CANDI_GMSH_LOAD_TARBALL
BUILDCHAIN=cmake
# -D ENABLE_BUILD_SHARED=ON
# -D ENABLE_BUILD_DYNAMIC=ON
-
package_specific_register () {
export GMSH_DIR=${INSTALL_PATH}
export PATH=${INSTALL_PATH}/bin:$PATH
MAJORVER=1.10
MINORVER=5
+CHECKSUM=e115eeb66e944fa7814482415dd21cc4
+
+#MAJORVER=1.10
+#MINORVER=7
+#CHECKSUM=006ed785942f4ed9a6f31556d0ef8ba5
+
VERSION=${MAJORVER}.${MINORVER}
NAME=hdf5-${VERSION}
SOURCE=http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-${MAJORVER}/${NAME}/src/
PACKING=.tar.gz
-CHECKSUM=e115eeb66e944fa7814482415dd21cc4
BUILDCHAIN=autotools
CONFOPTS="--enable-shared --enable-parallel"
cd ${BUILDDIR}
cp -rf ${UNPACK_PATH}/${EXTRACTSTO}/* .
- make -j ${PROCS} PREFIX=${INSTALL_PATH}
+ make -j ${JOBS} PREFIX=${INSTALL_PATH}
quit_if_fail "make failed"
- make install -j ${PROCS} PREFIX=${INSTALL_PATH}
+ make install -j ${JOBS} PREFIX=${INSTALL_PATH}
quit_if_fail "make install failed"
}
package_specific_register () {
export LAPACK_DIR=${INSTALL_PATH}/lib
export BLAS_DIR=${INSTALL_PATH}/lib
- export BLAS_LIB=${INSTALL_PATH}/lib/libopenblas.so
+ export BLAS_LIB=${INSTALL_PATH}/lib/libopenblas.${LDSUFFIX}
# older cmake (for example 3.5) does not detect openblas by default so
# we force detection by adding to the deal.II configure line:
- export DEAL_CONFOPTS="-D LAPACK_FOUND=true -D LAPACK_LIBRARIES=${INSTALL_PATH}/lib/libopenblas.so ${DEAL_CONFOPTS}"
+ export DEAL_II_CONFOPTS="-D LAPACK_FOUND=true -D LAPACK_LIBRARIES=${INSTALL_PATH}/lib/libopenblas.${LDSUFFIX} ${DEAL_II_CONFOPTS}"
}
package_specific_conf () {
echo "
export LAPACK_DIR=${INSTALL_PATH}/lib
export BLAS_DIR=${INSTALL_PATH}/lib
-export BLAS_LIB=${INSTALL_PATH}/lib/libopenblas.so
+export BLAS_LIB=${INSTALL_PATH}/lib/libopenblas.${LDSUFFIX}
" >> $CONFIG_FILE
}
-# NOTE: uncomment the following line to use the git repository
-# and not a release tarball:
-#CANDI_OPENCASCADE_FROM_GIT=1
+################################################################################
+## OPENCASCADE ##
+################################################################################
-if [ -n "$CANDI_OPENCASCADE_FROM_GIT" ]; then
- # download git repository (huge download)
- # if possible, try to download a release tarball (see below)
-
- # checkout specific release version
- # VERSION=OCE-0.18.2
- # checkout current development version (master)
- VERSION=master
-
- if [ "${VERSION}" = "master" ]; then
- EXTRACTSTO=OCE-master
- fi
-
- # set up git repository
- NAME=oce.git
- PACKING=git
- SOURCE=https://github.com/tpaviot/
-
-else
+# Option {ON|OFF}: Choose whether to load the tarball or the git repository.
+CANDI_OPENCASCADE_LOAD_TARBALL=ON
+
+if [ ${CANDI_OPENCASCADE_LOAD_TARBALL} = ON ]; then
# download release tarball
-
- #VERSION=0.17
- #CHECKSUM=f1a89395c4b0d199bea3db62b85f818d
- #VERSION=0.18.1
- #CHECKSUM=2a7597f4243ee1f03245aeeb02d00956
VERSION=0.18.2
CHECKSUM=6dfd68e459e2c62387579888a867281f
+ # VERSION=0.18.1
+ # CHECKSUM=2a7597f4243ee1f03245aeeb02d00956
+
+ # VERSION=0.17
+ # CHECKSUM=f1a89395c4b0d199bea3db62b85f818d
+
NAME=OCE-${VERSION}
- PACKING=.tar.gz
SOURCE=https://github.com/tpaviot/oce/archive/
EXTRACTSTO=oce-OCE-${VERSION}
+ PACKING=.tar.gz
+else
+ # download git repository (huge download)
+
+ # checkout specific release version
+ #VERSION=master
+ #VERSION=OCE-0.18.3
+ VERSION=OCE-0.18.2
+
+ # set up git repository
+ NAME=oce.git
+ PACKING=git
+ EXTRACTSTO=OCE-${VERSION}
+ SOURCE=https://github.com/tpaviot/
fi
-unset CANDI_OPENCASCADE_FROM_GIT
+unset CANDI_OPENCASCADE_LOAD_TARBALL
BUILDCHAIN=cmake
BUILDDIR=${BUILD_PATH}/${EXTRACTSTO}
INSTALL_PATH=${INSTALL_PATH}/${EXTRACTSTO}
-CONFOPTS="-D OCE_INSTALL_PREFIX=${INSTALL_PATH} \
- -D OCE_VISUALISATION=OFF \
- -D OCE_DISABLE_TKSERVICE_FONT=ON \
- -D OCE_DATAEXCHANGE=ON \
- -D OCE_OCAF=OFF \
- -D OCE_DISABLE_X11=ON \
-"
+CONFOPTS="\
+ -D OCE_INSTALL_PREFIX=${INSTALL_PATH} \
+ -D OCE_VISUALISATION:BOOL=OFF \
+ -D OCE_DISABLE_TKSERVICE_FONT:BOOL=ON \
+ -D OCE_DATAEXCHANGE:BOOL=ON \
+ -D OCE_OCAF:BOOL=OFF \
+ -D OCE_DISABLE_X11:BOOL=ON"
package_specific_patch () {
cd ${UNPACK_PATH}/${EXTRACTSTO}
+ ################################################################################
+## P4EST ##
+################################################################################
+
#VERSION=1.1;CHECKSUM=37ba7f4410958cfb38a2140339dbf64f
#VERSION=2.0;CHECKSUM=1b7440a78a28ebf713361acfea70ee78
-VERSION=2.2;CHECKSUM=6943949a6678589ebf1686ee7bad7ea1
-NAME=p4est-$VERSION
+VERSION=2.2
+CHECKSUM=1549cbeba29bee2c35e7cc50a90a04961da5f23b6eada9c8047f511b90a8e438
+CHECKSUM="${CHECKSUM} 28cbaf51a335c8cc8e78bb38bbb99251ba7ebf80"
+CHECKSUM="${CHECKSUM} 6943949a6678589ebf1686ee7bad7ea1"
+
+NAME=p4est-${VERSION}
+PACKING=.tar.gz
EXTRACTSTO=p4est-${VERSION}
SOURCE=https://p4est.github.io/release/
-PACKING=.tar.gz
+
BUILDCHAIN=custom
INSTALL_PATH=${INSTALL_PATH}/${NAME}
-package_specific_setup () {
- function bdie () {
+package_specific_setup() {
+ function bdie() {
echo "Error: $@"
exit 1
}
if [ -z "${ZLIB_INCLUDE}" ]; then
ZLIB_INCLUDE=${ZLIB_DIR}/include
fi
- CFLAGS="$CFLAGS -I${ZLIB_INCLUDE}"
+ CFLAGS="${CFLAGS} -I${ZLIB_INCLUDE}"
fi
- if test -z "$CFLAGS" -a -z "$P4EST_CFLAGS_FAST" ; then
+ if test -z "${CFLAGS}" -a -z "${P4EST_CFLAGS_FAST}"; then
export CFLAGS_FAST="-O2"
else
- export CFLAGS_FAST="$CFLAGS $P4EST_CFLAGS_FAST"
+ export CFLAGS_FAST="${CFLAGS} ${P4EST_CFLAGS_FAST}"
fi
- echo "CFLAGS_FAST: $CFLAGS_FAST"
-
- if test -z "$CFLAGS" -a -z "$P4EST_CFLAGS_DEBUG" ; then
+ echo "CFLAGS_FAST: ${CFLAGS_FAST}"
+
+ if test -z "${CFLAGS}" -a -z "${P4EST_CFLAGS_DEBUG}"; then
export CFLAGS_DEBUG="-O0 -g"
else
- export CFLAGS_DEBUG="$CFLAGS $P4EST_CFLAGS_DEBUG"
+ export CFLAGS_DEBUG="${CFLAGS} ${P4EST_CFLAGS_DEBUG}"
fi
- echo "CFLAGS_DEBUG: $CFLAGS_DEBUG"
+ echo "CFLAGS_DEBUG: ${CFLAGS_DEBUG}"
- # choose names for fast and debug build directories
+ # Choose names for fast and debug build directories
BUILD_FAST="${BUILD_PATH}/${NAME}/FAST"
BUILD_DEBUG="${BUILD_PATH}/${NAME}/DEBUG"
-
- # choose names for fast and debug installation directories
+
+ # Choose names for fast and debug installation directories
INSTALL_FAST="${INSTALL_PATH}/FAST"
INSTALL_DEBUG="${INSTALL_PATH}/DEBUG"
-
+
echo
echo "This script tries configure and build the p4est library."
- echo "Build FAST: $BUILD_FAST"
- echo "Build DEBUG: $BUILD_DEBUG"
- echo "Install FAST: $INSTALL_FAST"
- echo "Install DEBUG: $INSTALL_DEBUG"
+ echo "Build FAST: ${BUILD_FAST}"
+ echo "Build DEBUG: ${BUILD_DEBUG}"
+ echo "Install FAST: ${INSTALL_FAST}"
+ echo "Install DEBUG: ${INSTALL_DEBUG}"
echo "Checking environment: CFLAGS P4EST_CFLAGS_FAST P4EST_CFLAGS_DEBUG"
-
+
test -f "${UNPACK_PATH}/${EXTRACTSTO}/src/p4est.h" || bdie "Main header file missing"
test -f "${UNPACK_PATH}/${EXTRACTSTO}/configure" || bdie "Configure script missing"
-
+
echo "See output in files .../config.output and .../make.output"
echo
-
+
# remove old versions
if test -d "${BUILD_PATH}/${NAME}"; then
rm -rf "${BUILD_PATH}/${NAME}"
quit_if_fail "p4est: rm -rf ${BUILD_PATH}/${NAME} failed"
fi
-
- echo "Build FAST version in $BUILD_FAST"
- mkdir -p "$BUILD_FAST"
- cd "$BUILD_FAST"
+
+ echo "Build FAST version in ${BUILD_FAST}"
+ mkdir -p "${BUILD_FAST}"
+ cd "${BUILD_FAST}"
"${UNPACK_PATH}/${EXTRACTSTO}/configure" --enable-mpi --enable-shared \
--disable-vtk-binary --without-blas \
- --prefix="$INSTALL_FAST" CFLAGS="$CFLAGS_FAST" \
- CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="$FF" \
- "$@" > config.output || bdie "Error in configure"
- make -C sc -j${PROCS} > make.output || bdie "Error in make sc"
- make -j${PROCS} >> make.output || bdie "Error in make p4est"
- make install >> make.output || bdie "Error in make install"
- echo "FAST version installed in $INSTALL_FAST"
-
+ --prefix="${INSTALL_FAST}" CFLAGS="${CFLAGS_FAST}" \
+ CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="${FF}" \
+ "$@" >config.output || bdie "Error in configure"
+ make -C sc -j${JOBS} >make.output || bdie "Error in make sc"
+ make -j${JOBS} >>make.output || bdie "Error in make p4est"
+ make install >>make.output || bdie "Error in make install"
+ echo "FAST version installed in ${INSTALL_FAST}"
+
echo
- echo "Build DEBUG version in $BUILD_DEBUG"
- mkdir -p "$BUILD_DEBUG"
- cd "$BUILD_DEBUG"
+ echo "Build DEBUG version in ${BUILD_DEBUG}"
+ mkdir -p "${BUILD_DEBUG}"
+ cd "${BUILD_DEBUG}"
"${UNPACK_PATH}/${EXTRACTSTO}/configure" --enable-debug --enable-mpi --enable-shared \
--disable-vtk-binary --without-blas \
- --prefix="$INSTALL_DEBUG" CFLAGS="$CFLAGS_DEBUG" \
- CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="$FF" \
- "$@" > config.output || bdie "Error in configure"
- make -C sc -j${PROCS} > make.output || bdie "Error in make sc"
- make -j${PROCS} >> make.output || bdie "Error in make p4est"
- make install >> make.output || bdie "Error in make install"
- grep -q "#define P4EST_HAVE_ZLIB" $INSTALL_DEBUG/include/p4est_config.h || bdie "Error: p4est couldn't find zlib"
- echo "DEBUG version installed in $INSTALL_DEBUG"
+ --prefix="${INSTALL_DEBUG}" CFLAGS="${CFLAGS_DEBUG}" \
+ CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="${FF}" \
+ "$@" >config.output || bdie "Error in configure"
+ make -C sc -j${JOBS} >make.output || bdie "Error in make sc"
+ make -j${JOBS} >>make.output || bdie "Error in make p4est"
+ make install >>make.output || bdie "Error in make install"
+ grep -q "#define P4EST_HAVE_ZLIB" ${INSTALL_DEBUG}/include/p4est_config.h || bdie "Error: p4est couldn't find zlib"
+ echo "DEBUG version installed in ${INSTALL_DEBUG}"
echo
-
+
cd "${BUILD_PATH}/${NAME}"
touch candi_successful_build
}
-package_specific_register () {
+package_specific_register() {
export P4EST_DIR=${INSTALL_PATH}
}
-package_specific_conf () {
+package_specific_conf() {
# Generate configuration file
CONFIG_FILE=${CONFIGURATION_PATH}/${NAME}
- rm -f $CONFIG_FILE
+ rm -f ${CONFIG_FILE}
echo "
export P4EST_DIR=${INSTALL_PATH}
-" >> $CONFIG_FILE
+" >>${CONFIG_FILE}
}
make config prefix=${INSTALL_PATH} shared=1
quit_if_fail "parmetis/metis make config failed"
- make -j${PROCS}
+ make -j${JOBS}
quit_if_fail "parmetis/metis make failed"
make install
make config prefix=${INSTALL_PATH} shared=1 cc=$CC cxx=$CXX
quit_if_fail "parmetis make config failed"
- make -j${PROCS}
+ make -j${JOBS}
quit_if_fail "parmetis make failed"
make install
--with-64-bit-indices=0
"
-if [ "${NATIVE_OPTIMIZATIONS}" = "true" ]; then
+if [ ${NATIVE_OPTIMIZATIONS} = ON ]; then
CONFOPTS="${CONFOPTS} \
COPTFLAGS='-O3 -march=native -mtune=native' \
CXXOPTFLAGS='-O3 -march=native -mtune=native' \
+################################################################################
+## SUPERLU_DIST ##
+################################################################################
+
VERSION=5.1.2
+CHECKSUM=0a99bbb5f6c26a9c1d7ab17ea35d4e6f
+
NAME=superlu_dist_${VERSION}
+PACKING=.tar.gz
EXTRACTSTO=SuperLU_DIST_${VERSION}
SOURCE=http://crd-legacy.lbl.gov/~xiaoye/SuperLU/
-PACKING=.tar.gz
-CHECKSUM=0a99bbb5f6c26a9c1d7ab17ea35d4e6f
BUILDCHAIN=cmake
+
INSTALL_PATH=${INSTALL_PATH}/${NAME}
-CONFOPTS=" \
- $CONFOPTS \
- -D TPL_PARMETIS_INCLUDE_DIRS:PATH=${PARMETIS_DIR}/include \
- -D TPL_PARMETIS_LIBRARIES:FILEPATH=${PARMETIS_DIR}/lib/libparmetis.${LDSUFFIX} \
- -D CMAKE_C_FLAGS:STRING=\"-std=c99 -fPIC\" \
- -D BUILD_SHARED_LIBS:BOOL=ON"
+CONFOPTS="${CONFOPTS} \
+ -D TPL_PARMETIS_INCLUDE_DIRS:PATH=${PARMETIS_DIR}/include \
+ -D TPL_PARMETIS_LIBRARIES:FILEPATH=${PARMETIS_DIR}/lib/libparmetis.${LDSUFFIX} \
+ -D CMAKE_C_FLAGS:STRING=\"-std=c99 -fPIC\" \
+ -D BUILD_SHARED_LIBS:BOOL=ON"
package_specific_register () {
export SUPERLU_DIR=${INSTALL_PATH}
+################################################################################
+## TRILINOS ##
+################################################################################
+
if [ -z "${TRILINOS_MAJOR_VERSION}" ]; then
TRILINOS_MAJOR_VERSION=AUTO
fi
INSTALL_PATH=${INSTALL_PATH}/${NAME}
-#########################################################################
+################################################################################
# If you have further options for trilinos, please set:
#TRILINOS_CONFOPTS=""
-#########################################################################
+################################################################################
# Please do not change the following options
# Set blas and lapack directories
if [ ! -z "${BLAS_DIR}" ]; then
cecho ${INFO} "trilinos: configuration with BLAS_DIR=${BLAS_DIR}"
- CONFOPTS="\
- ${CONFOPTS} \
- -D BLAS_LIBRARY_DIRS:STRING=${BLAS_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D BLAS_LIBRARY_DIRS:STRING=${BLAS_DIR}"
fi
if [ ! -z "${LAPACK_DIR}" ]; then
cecho ${INFO} "trilinos: configuration with LAPACK_DIR=${LAPACK_DIR}"
- CONFOPTS="
- ${CONFOPTS} \
- -D LAPACK_LIBRARY_DIRS:STRING=${LAPACK_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D LAPACK_LIBRARY_DIRS:STRING=${LAPACK_DIR}"
fi
# Set intel MKL options
-if [ ${MKL} = "ON" ]; then
+if [ ${MKL} = ON ]; then
cecho ${INFO} "trilinos: configuration with MKL"
+
if [ -z "${BLAS_DIR}" ] && [ -z "${LAPACK_DIR}" ]; then
cecho ${INFO} "trilinos: configuration with BLAS_DIR=${MKL_DIR}"
cecho ${INFO} "trilinos: configuration with LAPACK_DIR=${MKL_DIR}"
- CONFOPTS=" \
- ${CONFOPTS} \
- -D BLAS_LIBRARY_DIRS:STRING=${MKL_DIR} \
- -D LAPACK_LIBRARY_DIRS:STRING=${MKL_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D BLAS_LIBRARY_DIRS:STRING=${MKL_DIR} \
+ -D LAPACK_LIBRARY_DIRS:STRING=${MKL_DIR}"
fi
+
+ # Trilinos will complain that MKL does not support HAVE_TEUCHOS_BLASFLOAT. See
+ # the discussion in https://github.com/dealii/candi/pull/92 for more details.
+ cecho ${INFO} "trilinos: disabling some Tpetra instantiations because you are using MKL"
- CONFOPTS=" \
- ${CONFOPTS} \
- -D BLAS_LIBRARY_NAMES:STRING='mkl_core;mkl_sequential' \
- -D LAPACK_LIBRARY_NAMES:STRING=mkl_intel_lp64"
+ CONFOPTS="${CONFOPTS} \
+ -D BLAS_LIBRARY_NAMES:STRING='mkl_core;mkl_sequential' \
+ -D Tpetra_INST_FLOAT:BOOL=OFF \
+ -D Tpetra_INST_COMPLEX_FLOAT:BOOL=OFF \
+ -D LAPACK_LIBRARY_NAMES:STRING=mkl_intel_lp64"
+else
+ if [ ! -z "${BLAS_LIB}" ]; then
+ # We need to specify the full name if using openblas.package:
+ cecho ${INFO} "trilinos: configuration with BLAS_LIB=${BLAS_LIB}"
+ CONFOPTS="${CONFOPTS} \
+ -D TPL_BLAS_LIBRARIES:STRING=${BLAS_LIB} \
+ -D TPL_LAPACK_LIBRARIES:STRING=${BLAS_LIB}"
+ fi
fi
# Set compilers & compiler options
if [ ! -z "${CC}" ]; then
- CONFOPTS="\
- ${CONFOPTS} \
- -D CMAKE_C_COMPILER=${CC}"
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_C_COMPILER=${CC}"
fi
if [ ! -z "${CXX}" ]; then
- CONFOPTS="\
- ${CONFOPTS} \
- -D CMAKE_CXX_COMPILER=${CXX}"
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_CXX_COMPILER=${CXX}"
fi
if [ ! -z "${FC}" ]; then
- CONFOPTS="\
- ${CONFOPTS} \
- -D CMAKE_Fortran_COMPILER=${FC}"
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_Fortran_COMPILER=${FC}"
fi
CONFOPTS="${CONFOPTS} \
- -D CMAKE_CXX_FLAGS:STRING=-fPIC -g -O3 \
- -D CMAKE_C_FLAGS:STRING=-fPIC -g -O3 \
- -D CMAKE_FORTRAN_FLAGS:STRING=-g -O5 \
- -D Trilinos_EXTRA_LINK_FLAGS:STRING=-lgfortran"
+ -D CMAKE_CXX_FLAGS:STRING='-fPIC -g -O3' \
+ -D CMAKE_C_FLAGS:STRING='-fPIC -g -O3' \
+ -D CMAKE_FORTRAN_FLAGS:STRING='-g -O3' \
+ -D Trilinos_EXTRA_LINK_FLAGS:STRING='-lgfortran'"
# Add ParMETIS, if present
if [ ! -z "${PARMETIS_DIR}" ]; then
cecho ${INFO} "trilinos: configuration with ParMETIS"
-
+
# NOTE: if parmetis v4.0.3 is not found, but installed, add
# -D HAVE_PARMETIS_VERSION_4_0_3=ON"
-
- CONFOPTS="\
- ${CONFOPTS} \
- ${TRILINOS_PARMETIS_CONFOPTS} \
- -D TPL_ENABLE_ParMETIS:BOOL=ON \
- -D TPL_ParMETIS_LIBRARIES:FILEPATH='${PARMETIS_DIR}/lib/libparmetis.${LDSUFFIX};${PARMETIS_DIR}/lib/libmetis.${LDSUFFIX}' \
- -D TPL_ParMETIS_INCLUDE_DIRS:PATH=${PARMETIS_DIR}/include"
+
+ CONFOPTS="${CONFOPTS} \
+ ${TRILINOS_PARMETIS_CONFOPTS} \
+ -D TPL_ENABLE_ParMETIS:BOOL=ON \
+ -D TPL_ParMETIS_LIBRARIES:FILEPATH='${PARMETIS_DIR}/lib/libparmetis.${LDSUFFIX};${PARMETIS_DIR}/lib/libmetis.${LDSUFFIX}' \
+ -D TPL_ParMETIS_INCLUDE_DIRS:PATH=${PARMETIS_DIR}/include"
fi
# Add SuperLU_dist, if present
-D TPL_ENABLE_MPI:BOOL=ON \
-D Trilinos_ENABLE_OpenMP:BOOL=OFF \
-D TPL_ENABLE_TBB:BOOL=OFF \
- -D Trilinos_VERBOSE_CONFIGURE:BOOL=FALSE \
+ -D Trilinos_VERBOSE_CONFIGURE:BOOL=OFF \
-D Trilinos_ENABLE_Sacado:BOOL=ON \
-D Trilinos_ENABLE_Stratimikos:BOOL=ON \
-D Trilinos_ENABLE_Belos:BOOL=ON \
-D LAPACK_INCLUDE_DIRS=$CRAY_LIBSCI_PREFIX_DIR/include \
-D LAPACK_LIBRARY_NAMES=sci_gnu"
-DEAL_CONFOPTS=" \
+DEAL_II_CONFOPTS=" \
-D DEAL_II_COMPILER_HAS_FUSE_LD_GOLD=OFF \
-D DEAL_II_WITH_LAPACK=OFF \
-D DEAL_II_WITH_BLAS=OFF \
+++ /dev/null
-# Fedora 22
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
+++ /dev/null
-# Fedora 23
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
# version number is not set to AUTO.
# The last point is due to own compilers (e.g. intel) which support
# Trilinos 12.
-if [ ${STABLE_BUILD} == "true" ] && [ ${DEAL_II_VERSION} == "v8.3.0" ] && [ ${TRILINOS_MAJOR_VERSION} == "AUTO" ]; then
+if [ ${DEAL_II_VERSION} ~= "master" ] && [ ${DEAL_II_VERSION} == "v8.3.0" ] && [ ${TRILINOS_MAJOR_VERSION} == "AUTO" ]; then
TRILINOS_MAJOR_VERSION=11
fi
# automake autoconf gfortran \
# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev \
+# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
# splint tcl tcl-dev environment-modules qt4-dev-tools
#
# Then run candi again.
--- /dev/null
+# Arch Linux / Manjaro
+
+# This build script assumes that you have several packages already
+# installed via pacman using the following command:
+#
+# $ sudo pacman -Syu core/gcc extra/openmpi extra/cmake \
+# core/make core/awk core/which core/sed core/gcc-fortran \
+# core/grep core/file core/binutils core/diffutils extra/git \
+# extra/lapack
+#
+##
+
+#
+# Define the additional packages for this platform.
+#PACKAGES="once:cmake ${PACKAGES}"
+
#
# sudo yum install patch svn git wget \
# @development-tools gcc-c++ cmake \
+# centos-release-scl devtoolset-9 \
# openmpi openmpi-devel \
# patch \
# libtool libtool-ltdl libtool-ltdl-devel \
# blas blas-devel lapack lapack-devel \
# doxygen graphviz graphviz-devel qt-devel
#
+# Be sure to switch to the recent compilers with
+# $ scl enable devtoolset-9 bash
# Please load the 'openmpi' compiler with
# $ module load mpi/openmpi-x86_64
# and then set the compiler enviroment variables to
#
# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
+PACKAGES="once:cmake ${PACKAGES}"
-# Fedora 27
+# Fedora
# This build script assumes that you have several packages already
# installed via Fedora's dnf using the following command:
#
# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
+# @development-tools gcc-c++ cmake patch libtool lua lua-devel \
+# doxygen graphviz graphviz-devel \
# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
+# openmpi openmpi-devel \
+# metis metis-devel
#
# Please load the 'openmpi' compiler with
# $ module load mpi/openmpi-x86_64
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# Fedora 26
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# Fedora 28
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
--- /dev/null
+# macOS Big Sur (11.4)
+#
+# macOS support is experimental and requires:
+# - a recent version of xcode with command line tools
+# - openmpi installed using homebrew and
+# - cmake
+#
+# Detailed Installation Notes:
+# - install Xcode from AppStore, open it and accept the license.
+# - Open Terminal, and install Xcode command line tools via
+# $ xcode-select --install
+# and then run
+# $ xcodebuild -license
+# to accept the license.
+#
+# Install Homebrew in a Terminal via
+# $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+#
+# Install the following via Homebrew
+# $ brew install cmake
+# $ brew install openmpi
+#
+# Put the following definitions into your bashrc to use gcc (instead of apple clang):
+# export OMPI_CXX=g++-9
+# export OMPI_CC=gcc-9
+# export OMPI_FC=gfortran-9
+#
+# (Optional) Install the following via Homebrew
+# $ brew install wget
+# $ brew install gnuplot
+#
+# $ brew install bash
+# and follow the shell activation notes.
+#
+# $ brew install modules
+# and follow the activation notes to use the modulefile configuration.
+#
+##
#
# Install the following via Homebrew
# $ brew install cmake
-# $ brew install openmpi --c++11 --with-mpi-thread-multiple
+# $ brew install openmpi
#
# (Optional) Install the following via Homebrew
# $ brew install wget
#
# Install the following via Homebrew
# $ brew install cmake
-# $ brew install openmpi --c++11 --with-mpi-thread-multiple
+# $ brew install openmpi
#
# (Optional) Install the following via Homebrew
# $ brew install wget
+++ /dev/null
-# openSUSE 12
-#
-# This build script assumes that you have several packages already
-# installed via openSUSE's zypper using the following commands:
-#
-# > su -c 'zypper -n in -t pattern devel_basis devel_C_C++ devel_qt4'
-#
-# > su -c 'zypper -n in Modules gcc-fortran subversion git cmake \
-# openmpi openmpi-devel splint blas-devel lapack-devel \
-# doxygen graphviz graphviz-devel'
-#
-# Then reboot and run candi again.
-#
-# NOTE: There is a small "bug" in openmpi 1.6, you must set the following
-# softlink to run mpi-programs:
-# > su -c 'mkdir /usr/lib64/mpi/gcc/openmpi/etc'
-#
-# > su -c 'ln -s /etc/openmpi-default-hostfile \
-# /usr/lib64/mpi/gcc/openmpi/etc/openmpi-default-hostfile'
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# openSUSE 13
-#
-# This build script assumes that you have several packages already
-# installed via openSUSE's zypper using the following commands:
-#
-# > su -c 'zypper -n in -t pattern devel_basis devel_C_C++ devel_qt4'
-#
-# and
-#
-# > su -c 'zypper -n in Modules gcc-fortran subversion git cmake \
-# openmpi openmpi-devel splint blas-devel lapack-devel \
-# doxygen graphviz graphviz-devel'
-#
-# Then reboot and run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
# installed via ubuntu's apt-get using the following commands:
#
# > sudo apt-get install build-essential lsb-release wget \
-# automake autoconf gfortran \
+# bc python automake autoconf gfortran \
# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev \
+# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
# splint tcl tcl-dev environment-modules qt4-dev-tools
#
# Then run candi again.
# installed via ubuntu's apt-get using the following commands:
#
# > sudo apt-get install build-essential lsb-release wget \
-# automake autoconf gfortran \
+# bc python automake autoconf gfortran \
# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev \
+# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
# splint tcl tcl-dev environment-modules qt4-dev-tools
#
# Then run candi again.
--- /dev/null
+# Ubuntu 20.04
+#
+# This build script assumes that you have several packages already
+# installed via ubuntu's apt-get using the following commands:
+#
+# > sudo apt-get install lsb-release git subversion wget bc libgmp-dev \
+# build-essential autoconf automake cmake libtool gfortran python \
+# libboost-all-dev zlib1g-dev \
+# openmpi-bin openmpi-common libopenmpi-dev \
+# libblas3 libblas-dev liblapack3 liblapack-dev libsuitesparse-dev
+#
+# Then run candi again.
+#
+#
+# To use native compiler optimizations on Intel's 11th-Gen (TigerLake)
+# you may need to use the GNU Compiler collection Version 10 or newer.
+# To priorize v10 over the default v9, do
+#
+# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 \
+# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20
+#
+# update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10 \
+# update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20
+#
+# update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 10 \
+# update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-10 20
+#
+# with super-user privileges and invoke an operating system update.
+##
+
+# Define the additional packages for this platform.
+#PACKAGES="once:cmake ${PACKAGES}"