# Maintainer: Shiina Rikka <rikka@rikka.im>

_pkgbase=yt6801
pkgname=yt6801-dkms
pkgver=1.0.34
pkgrel=2
pkgdesc="Kernel module for Motorcomm YT6801 ethernet controller (DKMS)"
arch=('x86_64')
url="https://www.motor-comm.com/product/ethernet-control-chip"
license=('GPL-2.0-or-later')
depends=('dkms')
source=(${_pkgbase}-${pkgver}.zip::'https://www.motor-comm.com/Cn/Skippower/downloadFile.html?id=1817'
        'patch.diff')
sha256sums=('877e6953fc6eb47232a74e47b0daf33de0e7f9e9a395d3bc10d500d3c4150af8'
            '3bad74e58b248d28212f9af468c0522440b9b96a335930f97595cd9f1a5c7b25')

prepare() {
  cd "$srcdir"
  mkdir -p src
  tar -zxf "${_pkgbase}-${pkgver}.tar.gz" -C src
  patch --fuzz=0 -p1 < patch.diff
  rm -- src/fuxi-gmac-ioctl.c
}

check() {
  local result file pattern
  [[ ! -e $srcdir/src/fuxi-gmac-ioctl.c ]] || return 1
  # A missing or unreadable input is a failed verification, not proof that the
  # private interface is absent. grep returns 1 only for a successful no-match.
  for file in fuxi-gmac-net.c Makefile; do
    [[ -f $srcdir/src/$file && -r $srcdir/src/$file ]] || return 1
    if [[ $file == "Makefile" ]]; then
      pattern='fuxi-gmac-ioctl\.o'
    else
      pattern='\.ndo_(do_ioctl|siocdevprivate)'
    fi
    if grep -E "$pattern" "$srcdir/src/$file" >/dev/null; then
      return 1
    else
      result=$?
      (( result == 1 )) || return 1
    fi
  done
}

package() {
  mkdir -p "$pkgdir/usr/src/${_pkgbase}-${pkgver}"

  install -Dm644 "$srcdir"/src/*.c "$pkgdir/usr/src/${_pkgbase}-${pkgver}/"
  install -Dm644 "$srcdir"/src/*.h "$pkgdir/usr/src/${_pkgbase}-${pkgver}/"
  install -Dm644 "$srcdir"/src/Makefile "$pkgdir/usr/src/${_pkgbase}-${pkgver}/"
  install -Dm644 "$srcdir"/src/dkms.conf "$pkgdir/usr/src/${_pkgbase}-${pkgver}/"
  install -Dm644 "$srcdir"/src/motorcomm "$pkgdir/usr/src/${_pkgbase}-${pkgver}/"
}
