Introduction
Introduction Statistics Contact Development Disclaimer Help
tbetter way to find HYPRE (not working for A. Damsgaard) and PTScotch - petsc-g…
git clone git://src.adamsgaard.dk/petsc-git-PKGBUILD
Log
Files
Refs
---
commit 2d45841652059d613ca65763f2d2cff899bc82a2
parent 6a822f8eace2d237f67494d94b5a67ca8bb5dbfa
Author: eDgar <eDgar_|at|_openmail.cc>
Date: Mon, 27 Sep 2021 16:41:55 -0500
better way to find HYPRE (not working for A. Damsgaard) and PTScotch
Diffstat:
M .SRCINFO | 6 +++---
M PKGBUILD | 2 +-
M test_optdepends.sh | 57 ++++++++++++++++++++++-------…
3 files changed, 44 insertions(+), 21 deletions(-)
---
diff --git a/.SRCINFO b/.SRCINFO
t@@ -14,7 +14,7 @@ pkgbase = petsc-git
makedepends = git
makedepends = cython
makedepends = chrpath
- makedepends = hypre
+ makedepends = hypre=2.18.2
depends = openmpi
depends = lapack
depends = fftw
t@@ -22,7 +22,7 @@ pkgbase = petsc-git
depends = cython
depends = python-mpi4py
depends = python-numpy
- depends = eigen
+ depends = eigen>=3
depends = openblas
options = !staticlibs
source = git+https://gitlab.com/petsc/petsc.git#branch=release
t@@ -30,7 +30,7 @@ pkgbase = petsc-git
source = test_optdepends.sh
sha512sums = SKIP
sha512sums = b6a1d48aab1c2639a4c1cbd8b313ace253f1c36eedaa3de3508ffbd60…
- sha512sums = 77b257ea28a9f109c48c8447ab2db4204f6dba715626f15e916ec8f54…
+ sha512sums = a4e064c08730058d63120a22c12657a100e5330546d66c44bb85e5bf8…
pkgname = petsc-git
optdepends = boost: Free peer-reviewed portable C++ source libraries
diff --git a/PKGBUILD b/PKGBUILD
t@@ -22,7 +22,7 @@ source=(git+${url}.git#branch=release
test_optdepends.sh)
sha512sums=('SKIP'
'b6a1d48aab1c2639a4c1cbd8b313ace253f1c36eedaa3de3508ffbd6060e1def9…
- '77b257ea28a9f109c48c8447ab2db4204f6dba715626f15e916ec8f54c18d0158…
+ 'a4e064c08730058d63120a22c12657a100e5330546d66c44bb85e5bf84df80a23…
_config=linux-c-opt
_install_dir="/usr"
diff --git a/test_optdepends.sh b/test_optdepends.sh
t@@ -2,6 +2,30 @@
# Test if external packages for PETSC are installed
+# Fair attempt to find the directory of a header file
+find_inc () {
+ local INC;
+ INC="$(find_so "$1")";
+ # * Faster first
+ if [ -f "${INC}" ]; then
+ INC="${INC}";
+ elif [ -f "${INC}"/"$1" ]; then
+ # ** The header is inside INC (a directory) e.g.
+ # /usr/include/scotch
+ # /usr/include/scotch/scotch.h
+ INC="${INC}"/"$1"
+ elif [ -d "${INC}" ]; then
+ # ** INC is a directory, and the header is deep inside
+ # (hopefully faster than `pacman')
+ INC="$(find "${INC}" -name "$1" -print -quit)";
+ elif [ ! "x$2" == "x" ]; then
+ # ** May be there is a package?
+ pacman -Qs "$2" 2>&1>/dev/null && \
+ INC="$(pacman -Qlq "$2" | grep "/$1\$" || printf "")";
+ fi;
+ dirname "${INC}"
+}
+
# Find a shared object (library; .so extension)
# example: find_so libboost_mpi
find_so () {
t@@ -77,7 +101,8 @@ HYPRE_SO="$(find_so libHYPRE.so)"
if [ -f "${HYPRE_SO}" ]; then
CONFOPTS="${CONFOPTS} --with-hypre=1"
CONFOPTS="${CONFOPTS} --with-hypre-lib=${HYPRE_SO}"
- CONFOPTS="${CONFOPTS} --with-hypre-include=/usr/include"
+ HYPRE_INC="$(find_inc "HYPRE.h" "hypre")"
+ CONFOPTS="${CONFOPTS} --with-hypre-include=${HYPRE_INC}"
fi
# MED: Data Modelization and Exchanges (meshes)
t@@ -196,23 +221,21 @@ if [ -f "$(find_so libscalapack.so)" ]; then
fi
# Scotch: Partitioning with sparse matrices
-# TODO: programatic way
-SCOTCH_DIR="/usr/include/scotch"
-if [ -d "${SCOTCH_DIR}" ]; then
- # SCOTCH_LIBS="$(ldconfig -p | awk '/scotch/{printf("'"${SCOTCH_DIR}"'…
- SCOTCH_LIBS="libesmumps.so,libptscotch.so"
- SCOTCH_LIBS="${SCOTCH_LIBS},libptscotcherr.so,libscotch.so"
- SCOTCH_LIBS="${SCOTCH_LIBS},libscotcherr.so"
-
- # Include bzip2 if scotch was built with bzip2 support
- if [ -f "$(find_so libbz2.so)" ]; then
- SCOTCH_LIBS="${SCOTCH_LIBS},${SCOTCH_DIR}/libbz2.so"
- fi
- # Add [], remove trailing ,
- SCOTCH_LIBS="[${SCOTCH_LIBS}]"
+# TODO: general (non-pacman) way
+PTSCOTCH_SO="$(find_so libptscotch.so)"
+if [ -f "${PTSCOTCH_SO}" ]; then
CONFOPTS="${CONFOPTS} --with-ptscotch=1"
- CONFOPTS="${CONFOPTS} --with-ptscotch-lib=${SCOTCH_LIBS}"
- CONFOPTS="${CONFOPTS} --with-ptscotch-include=${SCOTCH_DIR}"
+ SCOTCH_LIBS=$(pacman -Qlq scotch | grep '.so$'| tr '\n' ',')
+ # Check if libscotch was compiled with bz2
+ if [ ! -z "$(nm -D $(find_so libscotch.so) | grep bz)" ]; then
+ CONFOPTS="${CONFOPTS}$(find_so libbz2.so)"
+ else
+ # Remove trailing ,
+ SCOTCH_LIBS="${SCOTCH_LIBS%%,}"
+ fi;
+ CONFOPTS="${CONFOPTS} --with-ptscotch-lib=[${SCOTCH_LIBS}]"
+ CONFOPTS="${CONFOPTS} --with-ptscotch-include="
+ CONFOPTS="${CONFOPTS}$(find_inc ptscotch.h scotch)"
fi
# SuiteSparse: Sparse matrix library
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.