From a9aefa3b1cab50d23054fffd92bf123d32628239 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20K=C3=B6cher?= Date: Thu, 1 Jul 2021 13:31:23 +0200 Subject: [PATCH] sync dealii-9.0 with master corrects dealii version --- .github/workflows/main.yml | 92 ++++++ .gitignore | 24 +- AUTHORS | 28 +- README.md | 119 +++++-- VERSION | 2 +- candi.cfg | 60 ++-- candi.sh | 305 +++++++++++------- deal.II-toolchain/packages/adolc.package | 51 ++- deal.II-toolchain/packages/arpack-ng.package | 1 - deal.II-toolchain/packages/astyle.package | 2 +- deal.II-toolchain/packages/boost.package | 2 +- deal.II-toolchain/packages/cmake.package | 5 +- .../packages/dealii-prepare.package | 15 +- .../packages/dealii-stable.package | 10 - deal.II-toolchain/packages/dealii.package | 80 +++-- deal.II-toolchain/packages/gmsh.package | 36 ++- deal.II-toolchain/packages/openblas.package | 10 +- .../packages/opencascade.package | 71 ++-- deal.II-toolchain/packages/p4est.package | 110 ++++--- deal.II-toolchain/packages/parmetis.package | 4 +- deal.II-toolchain/packages/petsc.package | 2 +- .../packages/superlu_dist.package | 21 +- deal.II-toolchain/packages/trilinos.package | 89 ++--- deal.II-toolchain/platforms/.single | 0 .../platforms/contributed/cray.platform | 2 +- .../platforms/deprecated/fedora22.platform | 22 -- .../platforms/deprecated/fedora23.platform | 22 -- .../ubuntu12.platform | 0 .../ubuntu14.platform | 2 +- .../ubuntu15.platform | 0 .../ubuntu17.platform | 2 +- .../platforms/supported/arch.platform | 16 + .../platforms/supported/centos7.platform | 5 +- .../{fedora27.platform => fedora.platform} | 11 +- .../platforms/supported/fedora26.platform | 23 -- .../platforms/supported/fedora28.platform | 23 -- .../platforms/supported/macos_bigsur.platform | 38 +++ .../supported/macos_catalina.platform | 38 +++ ...itan.platform => macos_elcapitan.platform} | 2 +- ...rra.platform => macos_highsierra.platform} | 2 +- .../platforms/supported/macos_mojave.platform | 38 +++ ...{sierra.platform => macos_sierra.platform} | 0 .../platforms/supported/opensuse12.platform | 25 -- .../platforms/supported/opensuse13.platform | 20 -- .../platforms/supported/ubuntu16.platform | 4 +- .../platforms/supported/ubuntu18.platform | 4 +- .../platforms/supported/ubuntu20.platform | 32 ++ 47 files changed, 897 insertions(+), 573 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 deal.II-toolchain/packages/dealii-stable.package delete mode 100644 deal.II-toolchain/platforms/.single delete mode 100644 deal.II-toolchain/platforms/deprecated/fedora22.platform delete mode 100644 deal.II-toolchain/platforms/deprecated/fedora23.platform rename deal.II-toolchain/platforms/{supported => deprecated}/ubuntu12.platform (100%) rename deal.II-toolchain/platforms/{supported => deprecated}/ubuntu14.platform (88%) rename deal.II-toolchain/platforms/{supported => deprecated}/ubuntu15.platform (100%) rename deal.II-toolchain/platforms/{supported => deprecated}/ubuntu17.platform (89%) create mode 100644 deal.II-toolchain/platforms/supported/arch.platform rename deal.II-toolchain/platforms/supported/{fedora27.platform => fedora.platform} (74%) delete mode 100644 deal.II-toolchain/platforms/supported/fedora26.platform delete mode 100644 deal.II-toolchain/platforms/supported/fedora28.platform create mode 100644 deal.II-toolchain/platforms/supported/macos_bigsur.platform create mode 100644 deal.II-toolchain/platforms/supported/macos_catalina.platform rename deal.II-toolchain/platforms/supported/{elcapitan.platform => macos_elcapitan.platform} (94%) rename deal.II-toolchain/platforms/supported/{highsierra.platform => macos_highsierra.platform} (93%) create mode 100644 deal.II-toolchain/platforms/supported/macos_mojave.platform rename deal.II-toolchain/platforms/supported/{sierra.platform => macos_sierra.platform} (100%) delete mode 100644 deal.II-toolchain/platforms/supported/opensuse12.platform delete mode 100644 deal.II-toolchain/platforms/supported/opensuse13.platform create mode 100644 deal.II-toolchain/platforms/supported/ubuntu20.platform diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..8b67384 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,92 @@ +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 diff --git a/.gitignore b/.gitignore index a16527f..4d1798b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,21 @@ +# 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 diff --git a/AUTHORS b/AUTHORS index 50025fb..4f5e1a8 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,8 +1,30 @@ +=================================================================== candi (compile&install) for deal.II - Uwe Koecher - Bruno Turcksin - Timo Heister +The most recent contributors to candi are: + + Uwe Köcher + Timo Heister + Fabian Castelli + + +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 =================================================================== diff --git a/README.md b/README.md index 5296bc2..d93bdab 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ The ``candi.sh`` shell script downloads, configures, builds, and installs [deal.II](https://github.com/dealii/dealii) with common dependencies on linux-based systems. + + Quickstart ---- @@ -12,52 +14,50 @@ The following commands download the current stable version of the installer and 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: @@ -72,10 +72,10 @@ the path to ``BLAS`` and ``LAPACK`` in the configuration file #### 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 @@ -83,31 +83,60 @@ uncommenting the line `#PACKAGES="${PACKAGES} once:git"` in [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=]``, ``[--prefix=]`` +#### Prefix path: ``[-p ]``, ``[-p=]``, ``[--prefix=]`` ```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 ]``, ``[--PROCS=]`` +#### Multiple build processes: ``[-j]``, ``[-j ]``, ``[--jobs=]`` ```bash + ./candi.sh -j ./candi.sh -j + ./candi.sh --jobs= ``` * 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=]`` +```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 @@ -125,17 +154,37 @@ Currently, we provide the packages * 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 diff --git a/VERSION b/VERSION index 45c2eaf..6a5fe5c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -9.0.1-r6 +9.0.1-r7 diff --git a/candi.cfg b/candi.cfg index 7eb2081..1df7e75 100644 --- a/candi.cfg +++ b/candi.cfg @@ -2,7 +2,9 @@ # 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 ######################################################################### @@ -25,12 +27,30 @@ INSTALL_PATH=${PREFIX_PATH} 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: @@ -64,19 +84,9 @@ PACKAGES="${PACKAGES} dealii" ######################################################################### -# Install the following deal.II version: +# Install the following deal.II version (choose master v9.3.0 ...) DEAL_II_VERSION=v9.0.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 @@ -86,7 +96,7 @@ TRILINOS_MAJOR_VERSION=AUTO ######################################################################### -# Do you want to use MKL? +# Option {ON|OFF}: Do you want to use MKL? MKL=OFF # MKL_DIR= # BLAS_DIR= @@ -94,16 +104,26 @@ MKL=OFF ######################################################################### -# 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 diff --git a/candi.sh b/candi.sh index 2d50de6..5afb4ed 100755 --- a/candi.sh +++ b/candi.sh @@ -39,9 +39,10 @@ TIC_GLOBAL="$(${DATE_CMD} +%s)" ################################################################################ # 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" @@ -53,9 +54,10 @@ while [ -n "$1" ]; do echo "Usage: $0 [options]" echo "Options:" echo " -p , --prefix= set a different prefix path (default $PREFIX)" - echo " -j , -j, --PROCS= compile with N processes in parallel (default $PROCS)" + echo " -j , -j, --jobs= compile with N processes in parallel (default ${JOBS})" echo " --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 @@ -69,8 +71,6 @@ while [ -n "$1" ]; do ;; -p=*|--prefix=*) PREFIX="${param#*=}" - # replace '~' by $HOME - PREFIX=${PREFIX/#~\//$HOME\/} ;; ##################################### @@ -81,18 +81,18 @@ while [ -n "$1" ]; do ##################################### # 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}" ;; ##################################### @@ -100,6 +100,12 @@ while [ -n "$1" ]; do -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." @@ -108,12 +114,15 @@ while [ -n "$1" ]; do 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 @@ -163,9 +172,11 @@ cecho() { } 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 () { @@ -192,7 +203,12 @@ quit_if_fail() { # 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 @@ -212,34 +228,64 @@ verify_archive() { 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 } @@ -303,7 +349,7 @@ download_archive () { 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 @@ -325,28 +371,22 @@ package_fetch () { 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 @@ -448,7 +488,7 @@ package_build() { 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 @@ -484,7 +524,7 @@ package_build() { 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 @@ -492,17 +532,17 @@ package_build() { 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 @@ -562,43 +602,48 @@ guess_platform() { 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.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 } @@ -610,15 +655,6 @@ guess_ostype() { 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 @@ -664,8 +700,7 @@ default BUILD_PATH=${PREFIX_PATH}/tmp/build 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="" @@ -806,16 +841,19 @@ echo 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 + !" -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 + !" + 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 @@ -838,7 +876,7 @@ elif [ ${DEVELOPER_MODE} = "ON" ]; then 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 @@ -848,7 +886,7 @@ cecho ${GOOD} "Package configuration in: $(prettify_dir ${CONFIGURATION_PATH})" 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 "-------------------------------------------------------------------------------" @@ -858,15 +896,6 @@ for PACKAGE in ${PACKAGES[@]}; do 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 "-------------------------------------------------------------------------------" @@ -952,10 +981,12 @@ if [ -z "$CC" ] || [ -z "$CXX" ] || [ -z "$FC" ] || [ -z "$FF" ]; then 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 @@ -967,9 +998,22 @@ cecho ${GOOD} "Project: ${PROJECT}" 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} @@ -1004,7 +1048,7 @@ EOF # WARNING: do not overwrite this variables! ORIG_INSTALL_PATH=${INSTALL_PATH} ORIG_CONFIGURATION_PATH=${CONFIGURATION_PATH} -ORIG_PROCS=${PROCS} +ORIG_JOBS=${JOBS} guess_architecture @@ -1055,7 +1099,7 @@ for PACKAGE in ${PACKAGES[@]}; do unset CONFIG_FILE unset CHERRYPICKCOMMITS TARGETS=('' install) - PROCS=${ORIG_PROCS} + JOBS=${ORIG_JOBS} INSTALL_PATH=${ORIG_INSTALL_PATH} CONFIGURATION_PATH=${ORIG_CONFIGURATION_PATH} @@ -1070,12 +1114,6 @@ for PACKAGE in ${PACKAGES[@]}; do # 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." @@ -1106,6 +1144,23 @@ for PACKAGE in ${PACKAGES[@]}; do 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 diff --git a/deal.II-toolchain/packages/adolc.package b/deal.II-toolchain/packages/adolc.package index f5d8054..bb9e2f2 100644 --- a/deal.II-toolchain/packages/adolc.package +++ b/deal.II-toolchain/packages/adolc.package @@ -1,37 +1,30 @@ -# 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 @@ -47,7 +40,7 @@ package_specific_register () { 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 diff --git a/deal.II-toolchain/packages/arpack-ng.package b/deal.II-toolchain/packages/arpack-ng.package index 39c7520..3e03bc8 100644 --- a/deal.II-toolchain/packages/arpack-ng.package +++ b/deal.II-toolchain/packages/arpack-ng.package @@ -26,4 +26,3 @@ package_specific_conf () { export ARPACK_DIR=${INSTALL_PATH} " >> $CONFIG_FILE } - diff --git a/deal.II-toolchain/packages/astyle.package b/deal.II-toolchain/packages/astyle.package index 09784b9..6160ead 100644 --- a/deal.II-toolchain/packages/astyle.package +++ b/deal.II-toolchain/packages/astyle.package @@ -13,7 +13,7 @@ package_specific_setup () { 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}/ } diff --git a/deal.II-toolchain/packages/boost.package b/deal.II-toolchain/packages/boost.package index a8ee302..8611ad3 100644 --- a/deal.II-toolchain/packages/boost.package +++ b/deal.II-toolchain/packages/boost.package @@ -16,7 +16,7 @@ package_specific_build () { 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" } diff --git a/deal.II-toolchain/packages/cmake.package b/deal.II-toolchain/packages/cmake.package index 6e779be..fa6d4e2 100644 --- a/deal.II-toolchain/packages/cmake.package +++ b/deal.II-toolchain/packages/cmake.package @@ -16,13 +16,13 @@ if [ ${PLATFORM_OSTYPE} == "linux" ]; then # 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) @@ -56,4 +56,3 @@ export PATH=${INSTALL_PATH}/bin:\${PATH} export CMAKE_ROOT=${INSTALL_PATH}/share/${MAJOR} " >> $CONFIG_FILE } - diff --git a/deal.II-toolchain/packages/dealii-prepare.package b/deal.II-toolchain/packages/dealii-prepare.package index 9dd2d45..645c6c2 100644 --- a/deal.II-toolchain/packages/dealii-prepare.package +++ b/deal.II-toolchain/packages/dealii-prepare.package @@ -2,9 +2,9 @@ NAME=dealii-prepare 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_}; @@ -20,10 +20,13 @@ PACKAGES_OFF=`echo "$PACKAGES_OFF" | tr '[:upper:]' '[:lower:]'` 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) diff --git a/deal.II-toolchain/packages/dealii-stable.package b/deal.II-toolchain/packages/dealii-stable.package deleted file mode 100644 index 6a01e73..0000000 --- a/deal.II-toolchain/packages/dealii-stable.package +++ /dev/null @@ -1,10 +0,0 @@ -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} diff --git a/deal.II-toolchain/packages/dealii.package b/deal.II-toolchain/packages/dealii.package index 572dbf8..6ff184b 100644 --- a/deal.II-toolchain/packages/dealii.package +++ b/deal.II-toolchain/packages/dealii.package @@ -1,4 +1,4 @@ -VERSION=master +VERSION=${DEAL_II_VERSION} NAME=dealii.git EXTRACTSTO=deal.II-${VERSION} SOURCE=https://github.com/dealii/ @@ -10,10 +10,10 @@ BUILDDIR=${BUILD_PATH}/deal.II-${VERSION} 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 \ @@ -28,15 +28,36 @@ CONFOPTS=" \ -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) @@ -81,7 +102,7 @@ fi # 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" @@ -105,10 +126,9 @@ if [ ! -z "${MUMPS_DIR}" ]; then -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 @@ -117,15 +137,14 @@ fi 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" @@ -141,10 +160,9 @@ if [ ! -z "${HDF5_DIR}" ]; then -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 @@ -153,15 +171,14 @@ fi 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" @@ -179,7 +196,7 @@ fi # 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" @@ -195,10 +212,9 @@ if [ ! -z "${SLEPC_DIR}" ]; then -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 @@ -207,12 +223,16 @@ fi 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() { ############################################################################ diff --git a/deal.II-toolchain/packages/gmsh.package b/deal.II-toolchain/packages/gmsh.package index 0765582..52054ae 100644 --- a/deal.II-toolchain/packages/gmsh.package +++ b/deal.II-toolchain/packages/gmsh.package @@ -1,14 +1,31 @@ -# 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 @@ -33,7 +50,6 @@ CONFOPTS=" -D ENABLE_MPI=OFF \ # -D ENABLE_BUILD_SHARED=ON # -D ENABLE_BUILD_DYNAMIC=ON - package_specific_register () { export GMSH_DIR=${INSTALL_PATH} export PATH=${INSTALL_PATH}/bin:$PATH diff --git a/deal.II-toolchain/packages/openblas.package b/deal.II-toolchain/packages/openblas.package index 6623c1d..9b41030 100644 --- a/deal.II-toolchain/packages/openblas.package +++ b/deal.II-toolchain/packages/openblas.package @@ -13,20 +13,20 @@ package_specific_build () { 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 () { @@ -36,6 +36,6 @@ 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 } diff --git a/deal.II-toolchain/packages/opencascade.package b/deal.II-toolchain/packages/opencascade.package index 595efb6..d79a703 100644 --- a/deal.II-toolchain/packages/opencascade.package +++ b/deal.II-toolchain/packages/opencascade.package @@ -1,54 +1,53 @@ -# 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} diff --git a/deal.II-toolchain/packages/p4est.package b/deal.II-toolchain/packages/p4est.package index c200eb2..91b79ba 100644 --- a/deal.II-toolchain/packages/p4est.package +++ b/deal.II-toolchain/packages/p4est.package @@ -1,15 +1,21 @@ -VERSION=2.0;CHECKSUM=1b7440a78a28ebf713361acfea70ee78 +################################################################################ +## P4EST ## +################################################################################ + #VERSION=1.1;CHECKSUM=37ba7f4410958cfb38a2140339dbf64f -NAME=p4est-$VERSION +VERSION=2.0;CHECKSUM=1b7440a78a28ebf713361acfea70ee78 + +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 } @@ -24,93 +30,93 @@ package_specific_setup () { 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} } diff --git a/deal.II-toolchain/packages/parmetis.package b/deal.II-toolchain/packages/parmetis.package index 2a4ec83..56bf695 100644 --- a/deal.II-toolchain/packages/parmetis.package +++ b/deal.II-toolchain/packages/parmetis.package @@ -16,7 +16,7 @@ package_specific_build() { 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 @@ -28,7 +28,7 @@ package_specific_build() { 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 diff --git a/deal.II-toolchain/packages/petsc.package b/deal.II-toolchain/packages/petsc.package index ffa1c5f..00c9f4a 100644 --- a/deal.II-toolchain/packages/petsc.package +++ b/deal.II-toolchain/packages/petsc.package @@ -37,7 +37,7 @@ CONFOPTS=" --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' \ diff --git a/deal.II-toolchain/packages/superlu_dist.package b/deal.II-toolchain/packages/superlu_dist.package index 0b68d59..6c26753 100644 --- a/deal.II-toolchain/packages/superlu_dist.package +++ b/deal.II-toolchain/packages/superlu_dist.package @@ -1,19 +1,24 @@ +################################################################################ +## 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} diff --git a/deal.II-toolchain/packages/trilinos.package b/deal.II-toolchain/packages/trilinos.package index ffe0151..bb3ccdb 100644 --- a/deal.II-toolchain/packages/trilinos.package +++ b/deal.II-toolchain/packages/trilinos.package @@ -1,3 +1,7 @@ +################################################################################ +## TRILINOS ## +################################################################################ + if [ -z "${TRILINOS_MAJOR_VERSION}" ]; then TRILINOS_MAJOR_VERSION=AUTO fi @@ -40,84 +44,91 @@ BUILDCHAIN=cmake 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 @@ -145,7 +156,7 @@ CONFOPTS="${TRILINOS_CONFOPTS} \ -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 \ diff --git a/deal.II-toolchain/platforms/.single b/deal.II-toolchain/platforms/.single deleted file mode 100644 index e69de29..0000000 diff --git a/deal.II-toolchain/platforms/contributed/cray.platform b/deal.II-toolchain/platforms/contributed/cray.platform index 5cdfb76..b078096 100644 --- a/deal.II-toolchain/platforms/contributed/cray.platform +++ b/deal.II-toolchain/platforms/contributed/cray.platform @@ -32,7 +32,7 @@ TRILINOS_CONFOPTS=" \ -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 \ diff --git a/deal.II-toolchain/platforms/deprecated/fedora22.platform b/deal.II-toolchain/platforms/deprecated/fedora22.platform deleted file mode 100644 index 290e917..0000000 --- a/deal.II-toolchain/platforms/deprecated/fedora22.platform +++ /dev/null @@ -1,22 +0,0 @@ -# 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}" diff --git a/deal.II-toolchain/platforms/deprecated/fedora23.platform b/deal.II-toolchain/platforms/deprecated/fedora23.platform deleted file mode 100644 index 844000a..0000000 --- a/deal.II-toolchain/platforms/deprecated/fedora23.platform +++ /dev/null @@ -1,22 +0,0 @@ -# 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}" diff --git a/deal.II-toolchain/platforms/supported/ubuntu12.platform b/deal.II-toolchain/platforms/deprecated/ubuntu12.platform similarity index 100% rename from deal.II-toolchain/platforms/supported/ubuntu12.platform rename to deal.II-toolchain/platforms/deprecated/ubuntu12.platform diff --git a/deal.II-toolchain/platforms/supported/ubuntu14.platform b/deal.II-toolchain/platforms/deprecated/ubuntu14.platform similarity index 88% rename from deal.II-toolchain/platforms/supported/ubuntu14.platform rename to deal.II-toolchain/platforms/deprecated/ubuntu14.platform index 1ffa4ff..7ee026d 100644 --- a/deal.II-toolchain/platforms/supported/ubuntu14.platform +++ b/deal.II-toolchain/platforms/deprecated/ubuntu14.platform @@ -20,7 +20,7 @@ # 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 diff --git a/deal.II-toolchain/platforms/supported/ubuntu15.platform b/deal.II-toolchain/platforms/deprecated/ubuntu15.platform similarity index 100% rename from deal.II-toolchain/platforms/supported/ubuntu15.platform rename to deal.II-toolchain/platforms/deprecated/ubuntu15.platform diff --git a/deal.II-toolchain/platforms/supported/ubuntu17.platform b/deal.II-toolchain/platforms/deprecated/ubuntu17.platform similarity index 89% rename from deal.II-toolchain/platforms/supported/ubuntu17.platform rename to deal.II-toolchain/platforms/deprecated/ubuntu17.platform index 5004333..3be159c 100644 --- a/deal.II-toolchain/platforms/supported/ubuntu17.platform +++ b/deal.II-toolchain/platforms/deprecated/ubuntu17.platform @@ -7,7 +7,7 @@ # 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. diff --git a/deal.II-toolchain/platforms/supported/arch.platform b/deal.II-toolchain/platforms/supported/arch.platform new file mode 100644 index 0000000..3df0229 --- /dev/null +++ b/deal.II-toolchain/platforms/supported/arch.platform @@ -0,0 +1,16 @@ +# 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}" + diff --git a/deal.II-toolchain/platforms/supported/centos7.platform b/deal.II-toolchain/platforms/supported/centos7.platform index 466df91..b1bfe3f 100644 --- a/deal.II-toolchain/platforms/supported/centos7.platform +++ b/deal.II-toolchain/platforms/supported/centos7.platform @@ -5,6 +5,7 @@ # # 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 \ @@ -12,6 +13,8 @@ # 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 @@ -27,5 +30,5 @@ TRILINOS_PARMETIS_CONFOPTS="\ # # Define the additional packages for this platform. -#PACKAGES="once:cmake ${PACKAGES}" +PACKAGES="once:cmake ${PACKAGES}" diff --git a/deal.II-toolchain/platforms/supported/fedora27.platform b/deal.II-toolchain/platforms/supported/fedora.platform similarity index 74% rename from deal.II-toolchain/platforms/supported/fedora27.platform rename to deal.II-toolchain/platforms/supported/fedora.platform index e141d8f..7960dc3 100644 --- a/deal.II-toolchain/platforms/supported/fedora27.platform +++ b/deal.II-toolchain/platforms/supported/fedora.platform @@ -1,14 +1,14 @@ -# 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 @@ -20,4 +20,3 @@ # # Define the additional packages for this platform. #PACKAGES="once:cmake ${PACKAGES}" - diff --git a/deal.II-toolchain/platforms/supported/fedora26.platform b/deal.II-toolchain/platforms/supported/fedora26.platform deleted file mode 100644 index aea6a6f..0000000 --- a/deal.II-toolchain/platforms/supported/fedora26.platform +++ /dev/null @@ -1,23 +0,0 @@ -# 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}" - diff --git a/deal.II-toolchain/platforms/supported/fedora28.platform b/deal.II-toolchain/platforms/supported/fedora28.platform deleted file mode 100644 index 81e51f4..0000000 --- a/deal.II-toolchain/platforms/supported/fedora28.platform +++ /dev/null @@ -1,23 +0,0 @@ -# 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}" - diff --git a/deal.II-toolchain/platforms/supported/macos_bigsur.platform b/deal.II-toolchain/platforms/supported/macos_bigsur.platform new file mode 100644 index 0000000..b4c4116 --- /dev/null +++ b/deal.II-toolchain/platforms/supported/macos_bigsur.platform @@ -0,0 +1,38 @@ +# 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. +# +## diff --git a/deal.II-toolchain/platforms/supported/macos_catalina.platform b/deal.II-toolchain/platforms/supported/macos_catalina.platform new file mode 100644 index 0000000..a2bb36d --- /dev/null +++ b/deal.II-toolchain/platforms/supported/macos_catalina.platform @@ -0,0 +1,38 @@ +# macOS 10.15 (Catalina) +# +# 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. +# +## diff --git a/deal.II-toolchain/platforms/supported/elcapitan.platform b/deal.II-toolchain/platforms/supported/macos_elcapitan.platform similarity index 94% rename from deal.II-toolchain/platforms/supported/elcapitan.platform rename to deal.II-toolchain/platforms/supported/macos_elcapitan.platform index 824ffb2..62bb54b 100644 --- a/deal.II-toolchain/platforms/supported/elcapitan.platform +++ b/deal.II-toolchain/platforms/supported/macos_elcapitan.platform @@ -18,7 +18,7 @@ # # 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 diff --git a/deal.II-toolchain/platforms/supported/highsierra.platform b/deal.II-toolchain/platforms/supported/macos_highsierra.platform similarity index 93% rename from deal.II-toolchain/platforms/supported/highsierra.platform rename to deal.II-toolchain/platforms/supported/macos_highsierra.platform index b501c04..0d54c34 100644 --- a/deal.II-toolchain/platforms/supported/highsierra.platform +++ b/deal.II-toolchain/platforms/supported/macos_highsierra.platform @@ -18,7 +18,7 @@ # # 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 diff --git a/deal.II-toolchain/platforms/supported/macos_mojave.platform b/deal.II-toolchain/platforms/supported/macos_mojave.platform new file mode 100644 index 0000000..7163969 --- /dev/null +++ b/deal.II-toolchain/platforms/supported/macos_mojave.platform @@ -0,0 +1,38 @@ +# macOS 10.14 (Mojave) +# +# 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. +# +## diff --git a/deal.II-toolchain/platforms/supported/sierra.platform b/deal.II-toolchain/platforms/supported/macos_sierra.platform similarity index 100% rename from deal.II-toolchain/platforms/supported/sierra.platform rename to deal.II-toolchain/platforms/supported/macos_sierra.platform diff --git a/deal.II-toolchain/platforms/supported/opensuse12.platform b/deal.II-toolchain/platforms/supported/opensuse12.platform deleted file mode 100644 index cb0c3e3..0000000 --- a/deal.II-toolchain/platforms/supported/opensuse12.platform +++ /dev/null @@ -1,25 +0,0 @@ -# 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}" - diff --git a/deal.II-toolchain/platforms/supported/opensuse13.platform b/deal.II-toolchain/platforms/supported/opensuse13.platform deleted file mode 100644 index 09c00d5..0000000 --- a/deal.II-toolchain/platforms/supported/opensuse13.platform +++ /dev/null @@ -1,20 +0,0 @@ -# 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}" - diff --git a/deal.II-toolchain/platforms/supported/ubuntu16.platform b/deal.II-toolchain/platforms/supported/ubuntu16.platform index 263c1c0..be44182 100644 --- a/deal.II-toolchain/platforms/supported/ubuntu16.platform +++ b/deal.II-toolchain/platforms/supported/ubuntu16.platform @@ -4,10 +4,10 @@ # 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. diff --git a/deal.II-toolchain/platforms/supported/ubuntu18.platform b/deal.II-toolchain/platforms/supported/ubuntu18.platform index 7bfcf97..454824a 100644 --- a/deal.II-toolchain/platforms/supported/ubuntu18.platform +++ b/deal.II-toolchain/platforms/supported/ubuntu18.platform @@ -4,10 +4,10 @@ # 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. diff --git a/deal.II-toolchain/platforms/supported/ubuntu20.platform b/deal.II-toolchain/platforms/supported/ubuntu20.platform new file mode 100644 index 0000000..b474e83 --- /dev/null +++ b/deal.II-toolchain/platforms/supported/ubuntu20.platform @@ -0,0 +1,32 @@ +# 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}" -- 2.39.5