# Maintainer: Yurii Kolesnykov <root@yurikoles.com>
# Contributor: Jonathon Fernyhough <jonathon"m2x+dev>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>
# Contributor: Iacopo Isimbaldi <isiachi@rhye.it>
#
# Based on aur/zfs-dkms by Kevin Stolp <kevinstolp@gmail.com>
# Based on archzfs/zfs-dkms-git by Jan Houben <jan@nexttrex.de>
#
# Pull Requests are welcome here: https://github.com/yurikoles-aur/zfs-dkms-git
#

pkgname=zfs-dkms-git
pkgver=2.4.99.r305.gb9b84445ea
pkgrel=1
epoch=2
pkgdesc='Kernel modules for the Zettabyte File System.'
arch=('any')
url='https://zfsonlinux.org/'
license=('CDDL-1.0')
groups=('zfs-git')
makedepends=('git')
provides=(
  "zfs=${pkgver}"
  "zfs-dkms=${pkgver}"
  "ZFS-MODULE=${pkgver}"
  "SPL-MODULE=${pkgver}"
)
conflicts=('zfs-dkms')
source=(
  'git+https://github.com/openzfs/zfs.git'
  '0001-only-build-the-module-in-dkms.conf.patch'
)
sha256sums=('SKIP'
  '3e742db489eec60dbabb52178f590b96e29b166f359fc2167e188eeabceb0921')
b2sums=('SKIP'
  '62ea720676e0cbf096d8c5f3b944d77ce6f3f54f55e221f80afd00061d577b5dea177150cfc785bb91586f93e1b3eb500661b38bb4d2cba26e8929b245957ee3')

pkgver() {
  git -C zfs describe --long | sed 's/^zfs-//;s/-rc/rc/;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
  cd zfs

  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    [[ $src = *.patch ]] || continue
    echo "Applying patch $src..."
    patch -Np1 < "../$src"
  done

  # remove unneeded sections from module build
  sed -ri "/^AC_CONFIG_FILES\(\[$/,/^\]\)$/{
/^AC_CONFIG_FILES\(\[$/p
/^\]\)$/p
/^\s*(module\/.+|zfs.release|Makefile)$/!d
}
/^AC_CONFIG_FILES\(\[.*\]\)$/d
" configure.ac

  autoreconf -fi
}

build() {
  cd zfs

  ./scripts/dkms.mkconf -n zfs -v ${pkgver} -f dkms.conf

  # update metadata
  ./scripts/make_gitrev.sh include/zfs_gitrev.h
  _meta_release=${pkgver#*.r}
  sed -i -e "s/Release:[[:print:]]*/Release:      ${_meta_release/./_}/" META
}

package() {
  depends=(
    'dkms'
    "zfs-utils-git=${epoch}:${pkgver}"
  )

  cd zfs

  dkmsdir="${pkgdir}/usr/src/zfs-${pkgver}"
  install -d "${dkmsdir}"/{config,scripts}
  cp -a configure dkms.conf Makefile.in META zfs_config.h.in zfs.release.in include/ module/ "${dkmsdir}"/
  cp config/compile config/config.* config/missing config/*sh "${dkmsdir}"/config/
  cp scripts/dkms.postbuild scripts/objtool-wrapper.in "${dkmsdir}"/scripts/

  # Install the license
  install -Dm644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
