Introduction
Introduction Statistics Contact Development Disclaimer Help
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}"
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.