tChanges by eDgar: use test_optdepends, remove patch - petsc-git-PKGBUILD - bui… | |
git clone git://src.adamsgaard.dk/petsc-git-PKGBUILD | |
Log | |
Files | |
Refs | |
--- | |
commit acf8ee6afcc1b738e1337c2901eeb948346c64d6 | |
parent b3de4b154ef9aa84493368218f6a96e13df17ed7 | |
Author: Lucas Heitzmann Gabrielli <[email protected]> | |
Date: Tue, 12 May 2020 12:13:21 -0300 | |
Changes by eDgar: use test_optdepends, remove patch | |
Diffstat: | |
M .SRCINFO | 30 +++++++++++++++++++++++++----- | |
M PKGBUILD | 134 ++++++++++++++++++++++-------… | |
D patch.diff | 13 ------------- | |
A test_optdepends.sh | 139 ++++++++++++++++++++++++++++++ | |
4 files changed, 262 insertions(+), 54 deletions(-) | |
--- | |
diff --git a/.SRCINFO b/.SRCINFO | |
t@@ -1,6 +1,6 @@ | |
pkgbase = petsc-git | |
- pkgdesc = Portable, extensible toolkit for scientific computation | |
- pkgver = 20191031 | |
+ pkgdesc = Portable, extensible toolkit for scientific computation with… | |
+ pkgver = 20200512 | |
pkgrel = 1 | |
url = https://www.mcs.anl.gov/petsc/ | |
install = petsc.install | |
t@@ -10,18 +10,38 @@ pkgbase = petsc-git | |
makedepends = gcc | |
makedepends = gcc-fortran | |
makedepends = cmake | |
+ makedepends = sowing | |
depends = python2 | |
depends = openmpi | |
depends = boost | |
depends = lapack | |
depends = fftw | |
depends = hdf5 | |
+ optdepends = hdf5: large files | |
+ optdepends = fftw: Fast-Fourier Transform | |
+ optdepends = openblas: Linear algebra libraries | |
+ optdepends = scalapack: Parallel memory linear algebra | |
+ optdepends = mumps: Sparse solver library | |
+ optdepends = hypre: Large and sparse linear with massive parallel comp… | |
+ optdepends = suitesparse: Sparse matrix library | |
+ optdepends = metis: Partitioning library (for meshes) | |
+ optdepends = scotch: Partitioning with sparse matrices | |
+ optdepends = superlu: Subroutines for sparsse linear systems | |
+ optdepends = eigen: Lightweight C++ template library for vector and ma… | |
+ optdepends = openmp: Parallel distributed tasks | |
+ optdepends = hwloc: Portable Hardware Locality (abstraction of hierarc… | |
+ optdepends = cgns: Recording and recovering computer data | |
+ optdepends = png | |
+ optdepends = med>=4.0: Data Modelization and Exchanges (meshes) | |
+ optdepends = boost: Free peer-reviewed portable C++ source libraries | |
+ optdepends = yaml: configuration files | |
+ optdepends = opencl: GPU computing | |
provides = petsc | |
conflicts = petsc | |
- source = petsc::git+https://gitlab.com/petsc/petsc#branch=maint | |
- source = patch.diff | |
+ source = petsc::git+https://gitlab.com/petsc/petsc.git#branch=maint | |
+ source = test_optdepends.sh | |
sha256sums = SKIP | |
- sha256sums = fdf016437dd94f33316e734e35858476aeea1ca0f3ab4d0ee36029b01… | |
+ sha256sums = 2c21313b21b7a76ed4d39d040ef60462f8760ae3d4b76ff6aa717ebc4… | |
pkgname = petsc-git | |
diff --git a/PKGBUILD b/PKGBUILD | |
t@@ -1,25 +1,76 @@ | |
+# Based on AUR petsc and petsc-git package. Adapted to my | |
+# MOOSE requirements | |
+ | |
# Maintainer: Lucas H. Gabrielli <[email protected]> | |
pkgname=petsc-git | |
-pkgver=20191031 | |
+pkgver=20200512 | |
pkgrel=1 | |
_config=linux-c-opt | |
-pkgdesc="Portable, extensible toolkit for scientific computation" | |
+pkgdesc="Portable, extensible toolkit for scientific computation with MUMPS, H… | |
provides=(petsc) | |
conflicts=(petsc) | |
arch=('i686' 'x86_64') | |
url="https://www.mcs.anl.gov/petsc/" | |
license=('BSD') | |
depends=('python2' 'openmpi' 'boost' 'lapack' 'fftw' 'hdf5') | |
-makedepends=('gcc' 'gcc-fortran' 'cmake') | |
+makedepends=('gcc' 'gcc-fortran' 'cmake' 'sowing') | |
+optdepends=("hdf5: large files" | |
+ "fftw: Fast-Fourier Transform" | |
+ "openblas: Linear algebra libraries" | |
+ "scalapack: Parallel memory linear algebra" | |
+ "mumps: Sparse solver library" | |
+ "hypre: Large and sparse linear with massive parallel computing" | |
+ "suitesparse: Sparse matrix library" | |
+ "metis: Partitioning library (for meshes)" | |
+ "scotch: Partitioning with sparse matrices" | |
+ "superlu: Subroutines for sparsse linear systems" | |
+ "eigen: Lightweight C++ template library for vector and matrix mat… | |
+ "openmp: Parallel distributed tasks" | |
+ "hwloc: Portable Hardware Locality (abstraction of hierarchical ar… | |
+ "cgns: Recording and recovering computer data" | |
+ "png" | |
+ "med>=4.0: Data Modelization and Exchanges (meshes)" | |
+ "boost: Free peer-reviewed portable C++ source libraries" | |
+ "yaml: configuration files" | |
+ "opencl: GPU computing") | |
install=petsc.install | |
-source=(petsc::git+https://gitlab.com/petsc/petsc#branch=maint | |
- patch.diff) | |
+source=(petsc::git+https://gitlab.com/petsc/petsc.git#branch=maint | |
+ test_optdepends.sh) | |
sha256sums=('SKIP' | |
- 'fdf016437dd94f33316e734e35858476aeea1ca0f3ab4d0ee36029b016498de7') | |
+ '2c21313b21b7a76ed4d39d040ef60462f8760ae3d4b76ff6aa717ebc43a2275b') | |
_petsc_arch="arch-${_config}" | |
+##################################################################### | |
+# From UPC: Building And Using Static And Shared "C" Libraries.html # | |
+# #+begin_QUOTE # | |
+# we need that all jump calls ("goto", in assembly speak) # | |
+# and subroutine calls will use relative addresses, and not # | |
+# absolute addresses. Thus, we need to use ... ~-fPIC~ or # | |
+# ~-fpic~ # | |
+# #+end_QUOTE # | |
+##################################################################### | |
+############################################################################### | |
+# From makepkg.conf # | |
+# -march (or -mcpu) builds exclusively for an architecture # | |
+# -mtune optimizes for an architecture, but builds for whole processor family # | |
+############################################################################### | |
+# -O3 optimises | |
+generic_flags="-fPIC -fopenmp -O3 -march=x86-64 -mtune=generic" | |
+# generic_flags="-fPIC -fopenmp -O3 -march=amdfam10 -mtune=generic" | |
+ | |
+export COPTFLAGS=-O3 | |
+export CXXOPTFLAGS=-O3 | |
+export FOPTFLAGS=-O3 | |
+export CPPFLAGS="$generic_flags -O2 -D-FORTIFY-SOURCE=2" | |
+export CFLAGS="$generic_flags" | |
+export CXXFLAGS="$generic_flags" | |
+export FFLAGS="$generic_flags" | |
+export FCFLAGS="$generic_flags" | |
+export F90FLAGS="$generic_flags" | |
+export F77FLAGS="$generic_flags" | |
+ | |
pkgver() { | |
cd petsc | |
t@@ -35,39 +86,67 @@ prepare() { | |
done < <( find ${srcdir} -name "*" -type f -exec grep -le "$MATCH" \{\} + ) | |
cd "${srcdir}/petsc" | |
- patch -p1 < ../patch.diff | |
+ # patch -p1 < ../patch.diff | |
+ sed -i 's-\(self.publicInstall[^=]*=[[:space:]]\)[^#]*-\10 -g' config/BuildS… | |
+ | |
+ sed -i "s/\(raise RuntimeError('--download-openblas libraries cannot be used… | |
} | |
build() { | |
cd petsc | |
- CONFOPTS='--with-shared-libraries=1 --COPTFLAGS=-O3 --CXXOPTFLAGS=-O3 --with… | |
+ declare -a CONFOPTS | |
+ # Run python2 ./configure --help for the meaning of this | |
+ CONFOPTS=( | |
+ --COPTFLAGS="$COPTFLAGS" | |
+ --CXXOPTFLAGS="CXXOPTFLAGS" | |
+ --CPPFLAGS="$CPPFLAGS" | |
+ --CFLAGS="$CFLAGS" | |
+ --CXXFLAGS="$CXXFLAGS" | |
+ --FFLAGS="$FFLAGS" | |
+ --FCFLAGS="$FCFLAGS" | |
+ --F90FLAGS="$F90FLAGS" | |
+ --F77FLAGS="$F77FLAGS" | |
+ | |
+ --with-cxx-dialect=C++11 | |
+ --with-mpi=1 | |
+ --with-pic=1 | |
+ --with-shared-libraries=1 | |
+ --with-zlib=1 | |
+ | |
+ --with-scalar-type=complex | |
+ # Add this to test_optdepends.sh | |
+ --with-opencl=1 | |
+ --with-yaml=1 | |
+ ) | |
# if --with-debugging=1 is set then PETSC_ARCH is automatically set to | |
# "linux-c-debug" for some things, so _config should be changed to "linux-c-… | |
#CONFOPTS="${CONFOPTS} --with-debugging=1" | |
- # Removed pastix due to incompatibility with current MPI (2019-10-31) | |
- for external_pkg in amd eigen hypre metis mumps parmetis party ptscotch scal… | |
- do | |
- CONFOPTS="${CONFOPTS} --download-${external_pkg}=1" | |
- done | |
+ CONFOPTS=( "${CONFOPTS[@]}" $(sh "${srcdir}"/test_optdepends.sh) ) | |
+ | |
+ dirpkg=${srcdir}/petsc/${_petsc_arch}/externalpackages/ | |
export PETSC_DIR="${srcdir}/petsc" | |
export PETSC_ARCH="${_petsc_arch}" | |
- python2 ./configure LDFLAGS="$LDFLAGS" --prefix=/opt/petsc/${_config} ${CONF… | |
- | |
+ python2 ./configure LDFLAGS="$LDFLAGS" \ | |
+ --prefix=/usr/petsc/${_config} \ | |
+ --MAKEFLAGS="$MAKEFLAGS" \ | |
+ $(for (( i=1; i<=${#CONFOPTS[@]}; i++)); do | |
+ echo "${CONFOPTS[$i]}"; | |
+ done) | |
+ make clean | |
make all | |
} | |
- | |
package() { | |
cd petsc | |
_build_dir="${srcdir}/petsc" | |
- _install_dir=/opt/petsc/${_config} | |
+ _install_dir=/usr/petsc/${_config} | |
export PETSC_DIR=${_build_dir} | |
export PETSC_ARCH="${_petsc_arch}" | |
t@@ -88,7 +167,7 @@ package() { | |
#mkdir -p ${pkgdir}/usr/share/doc/petsc/include | |
#cp -r ${_build_dir}/include/*.html ${pkgdir}/usr/share/doc/petsc/include/ | |
- # install licence (even though there is no such word as licenses) | |
+ # install license (even though there is no such word as licenses) | |
install -Dm 644 ${_build_dir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname… | |
mkdir -p "${pkgdir}/etc/profile.d" | |
t@@ -99,22 +178,5 @@ package() { | |
install -dm 755 "${pkgdir}/etc/ld.so.conf.d/" | |
echo "${_install_dir}/lib" > "${pkgdir}/etc/ld.so.conf.d/petsc.conf" | |
- sed -i "s#-L${_build_dir}/${_petsc_arch}/lib ##" "${pkgdir}${_install_… | |
- sed -i \ | |
- -e "s#prefix=.*#prefix=${_install_dir}#" \ | |
- -e "s#libdir=.*#libdir=\${prefix}/lib#" \ | |
- -e "s#includedir=.*#includedir=\${prefix}/include#" \ | |
- "${pkgdir}${_install_dir}/lib/pkgconfig/superlu.pc" | |
- sed -i \ | |
- -e "s#prefix=.*#prefix=${_install_dir}#" \ | |
- -e "s#libdir=.*#libdir=\${prefix}/lib#" \ | |
- -e "s#includedir=.*#includedir=\${prefix}/include#" \ | |
- "${pkgdir}${_install_dir}/lib/pkgconfig/superlu_dist.pc" | |
- sed -i \ | |
- -e "s#prefix=.*#prefix=${_install_dir};#" \ | |
- -e "s#libdir=.*#libdir=\${prefix}/lib;#" \ | |
- "${pkgdir}${_install_dir}/lib/petsc/bin/sundials-config" | |
- | |
- # install pkgconfig settings | |
- #install -Dm 644 "${_build_dir}/${_petsc_arch}/lib/pkgconfig/PETSc.pc" "${pk… | |
+ sed -i "s#-L${_build_dir}/${_petsc_arch}/lib ##" "${pkgdir}${_install_dir}/l… | |
} | |
diff --git a/patch.diff b/patch.diff | |
t@@ -1,13 +0,0 @@ | |
-diff --git a/config/BuildSystem/config/package.py b/config/BuildSystem/config/… | |
-index d7777d623b..9dfcf66cee 100644 | |
---- a/config/BuildSystem/config/package.py | |
-+++ b/config/BuildSystem/config/package.py | |
-@@ -60,7 +60,7 @@ class Package(config.base.Configure): | |
- self.excludedDirs = [] # list of directory names that could b… | |
- self.downloadonWindows = 0 # 1 means the --download-package works o… | |
- self.requirescxx11 = 0 | |
-- self.publicInstall = 1 # Installs the package in the --prefix d… | |
-+ self.publicInstall = 0 # Installs the package in the --prefix d… | |
- # during the configuration/installation … | |
- self.parallelMake = 1 # 1 indicates the package supports make … | |
- | |
diff --git a/test_optdepends.sh b/test_optdepends.sh | |
t@@ -0,0 +1,139 @@ | |
+#!/bin/bash | |
+ | |
+# Test if external packages for PETSC are installed | |
+ | |
+# CONFOPTS="" | |
+ | |
+# # External downloads | |
+# for external_pkg in hypre fblaslapack metis parmetis superlu_dist mumps scal… | |
+# CONFOPTS="${CONFOPTS} --download-${external_pkg}=1" | |
+# done | |
+ | |
+# Add hypre support | |
+if [ -f "/usr/lib/libHYPRE.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-hypre=1" | |
+fi | |
+ | |
+# Add mumps support | |
+if [ -f "/usr/lib/libmumps_common.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-mumps=1" | |
+fi | |
+ | |
+# Add fftw support | |
+if [ -f "/usr/lib/libfftw3_mpi.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-fftw=1" | |
+fi | |
+ | |
+# Add hdf5 support | |
+if [[ "$(h5stat -V)" ]]; then | |
+ CONFOPTS="${CONFOPTS} --with-hdf5=1" | |
+fi | |
+ | |
+# Add scalapack support | |
+if [ -f "/usr/lib/pkgconfig/scalapack.pc" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-scalapack=1" | |
+fi | |
+ | |
+# Add suitesparse support | |
+if [ -f "/usr/include/SuiteSparse_config.h" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-suitesparse=1" | |
+fi | |
+ | |
+# Add metis support | |
+if [ -f "/usr/include/metis.h" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-metis=1" | |
+ # Add parmetis support | |
+ if [ -f "/usr/include/parmetis.h" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-parmetis=1" | |
+ fi | |
+fi | |
+ | |
+# Add scotch support | |
+SCOTCH_DIR="/usr/include/scotch" | |
+if [ -d "${SCOTCH_DIR}" ]; then | |
+ SCOTCH_LIBS="libesmumps.so,libptscotch.so,libptscotcherr.so,libscotch.… | |
+ # Include bzip2 if scotch was build with bzip2 support | |
+ if [ -f /usr/include/bzlib.h ];then | |
+ SCOTCH_LIBS="${SCOTCH_LIBS},libbz2.so" | |
+ fi | |
+ SCOTCH_LIBS="[${SCOTCH_LIBS}]" | |
+ CONFOPTS="${CONFOPTS} --with-ptscotch=1 --with-ptscotch-lib=${SCOTCH_L… | |
+fi | |
+ | |
+# Add superlu support | |
+SUPERLU_DIR="/usr/include/superlu" | |
+if [ -d "${SUPERLU_DIR}" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-superlu=1 --with-superlu-lib=-lsuperlu --… | |
+fi | |
+ | |
+# Incompatible with complex | |
+# # Add sundials support | |
+# SUNDIALS_DIR="/usr/include/sundials/" | |
+# if [ -d "${SUNDIALS_DIR}" ]; then | |
+# CONFOPTS="${CONFOPTS} --with-sundials=1 --with-sundials-include=${SU… | |
+# fi | |
+ | |
+# Add openblas support | |
+if [ -f "/usr/lib/libblas.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-openblas=1" | |
+fi | |
+ | |
+# Add OpenCL support | |
+OPENCL_DIR="/usr/include/CL/" | |
+if [ -f "${OPENCL_DIR}/cl.h" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-opencl=1" | |
+else | |
+ CONFOPTS="${CONFOPTS} --with-opencl=0" | |
+fi | |
+ | |
+# Add eigen support | |
+EIGEN_DIR="/usr/include/eigen3" | |
+if [ -d "${EIGEN_DIR}" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-eigen=1 --with-eigen-include=${EIGEN_DIR}" | |
+fi | |
+ | |
+# Add OpenMP support | |
+if [ -f "/usr/lib/libomp.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-openmp=1" | |
+fi | |
+ | |
+# Add hwloc support | |
+if [ -f "/usr/lib/libhwloc.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-hwloc=1 --with-hwloc-pkg-config=/usr/lib/… | |
+fi | |
+ | |
+# Add CGNS support | |
+if [ -f "/usr/lib/libcgns.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-cgns=1" | |
+fi | |
+ | |
+# Add PNG support | |
+if [ -f "/usr/lib/libpng.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-png=1 --with-png-pkg-config=/usr/lib/pkgc… | |
+fi | |
+ | |
+# Add MED support | |
+if [ -f "/usr/lib/libmed.so" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-med=1" | |
+fi | |
+ | |
+# # Add pastix support | |
+# PASTIX_CONF=$(which pastix-conf) | |
+# if [ -f "${PASTIX_CONF}" ]; then | |
+# PASTIX_DIR="$($PASTIX_CONF --incs | sed 's/-I//')" | |
+# if [ ! -d ${PASTIX_DIR} ]; then | |
+# PASTIX_DIR="[]" | |
+# fi | |
+# #PASTIX_LIBS="$($PASTIX_CONF --libs)" | |
+# PASTIX_LIBS="[libpastix.a,librt.so,libhwloc.so,libpthread.a]" | |
+# CONFOPTS="${CONFOPTS} --with-pastix=1 --with-pastix-lib=${PASTIX_LIB… | |
+# fi | |
+ | |
+# Add trilinos support | |
+if [ "${TRILINOS_DIR}" ]; then | |
+ CONFOPTS="${CONFOPTS} --with-ml-dir=${TRILINOS_DIR}" | |
+ # Add boost support (may be useful for trilinos) | |
+ CONFOPTS="${CONFOPTS} --with-boost=1" | |
+fi | |
+ | |
+echo "${CONFOPTS}" |