summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: f550422d4d2162f65862aa5e2d4ebb65d7bdabb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Maintainer: Anton Kudelin <kudelin at proton dot me>

pkgname=fleur
pkgver=8.1
pkgrel=1
pkgdesc="A full-potential linearized augmented planewave code"
arch=(x86_64 aarch64)
url="https://www.flapw.de"
license=(MIT)
depends=(libxml2 elpa libxc fftw hdf5-openmpi)
makedepends=(cmake ninja gcc-fortran python vim)
checkdepends=(python-pytest python-py python-pytest-html)
source=(https://iffgit.fz-juelich.de/fleur/fleur/-/archive/MaX-R$pkgver/$pkgname-MaX-R$pkgver.tar.bz2
        libxc-f03.patch)
sha256sums=('6960e037c34e5b704cd79718ec34c7147ccbf06a16fef397c7e3316f47e99a39'
            'a69a6514d063fb928bf77c34481cd8c2ab5d2da3eaeb25f2b1367839f8875696')

prepare() {
  # Handling ELPA
  _elpaver=$( ls /usr/include | grep elpa | sed 's/elpa_openmp-//g' )

  cd "$pkgname-MaX-R$pkgver"
  patch -p1 -i ../libxc-f03.patch
}

build() {
  cd "$srcdir"
  cmake \
    -B build \
    -S $pkgname-MaX-R$pkgver \
    -D CMAKE_INSTALL_PREFIX=/usr \
    -D CMAKE_Fortran_COMPILER=mpifort \
    -D CMAKE_Fortran_FLAGS="-I/usr/include/elpa_openmp-$_elpaver/elpa -I/usr/include/elpa_openmp-$_elpaver/modules -I/usr/include -O2 -march=native" \
    -D CMAKE_C_FLAGS="-std=gnu89 -O2 -march=native" \
    -D CLI_FLEUR_USE_HDF5=ON \
    -D CLI_FLEUR_USE_ELPA="external" \
    -D CLI_ELPA_OPENMP=ON \
    -D CLI_FLEUR_USE_MPI=ON \
    -G Ninja \
    -W no-dev
  cmake --build build
}

check() {
  cd "$srcdir/build"
  export juDFT_MPI="mpirun --oversubscribe -np {mpi_procs} "
  export OMP_NUM_THREADS=1
  PYTEST_ADDOPTS="$srcdir/$pkgname-MaX-R$pkgver/testing --build_dir=$srcdir/build" \
    python -m pytest -p no:cacheprovider
}

package() {
  cd "$srcdir"
  DESTDIR="$pkgdir" cmake --install build
  install -Dm755 "$srcdir/$pkgname-MaX-R$pkgver/LICENSE" \
    "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}