_replacesarchkernel=('linux%') # '%' gets replaced with kernel suffix

pkgbase=linux-libre-lts-new
pkgver=6.6.74
pkgrel=1
pkgdesc='Linux-Libre LTS Current'
url='https://linux-libre.fsfla.org/'
arch=(x86_64)
license=(GPL-2.0-only)
makedepends=(
  bc
  cpio
  gettext
  libelf
  pahole
  perl
  python
  tar
  xz

  # htmldocs
  # graphviz
  # imagemagick
  # python-sphinx
  # python-yaml
  # texlive-latexextra
)
options=('!debug' '!strip')
#_basever="$({ grep -Eq '[0-9]\.[0-9]+\.[0-9]+' <<< "$pkgver" && printf '%s' "${pkgver%.*}"; } || printf '%s' "$pkgver")"
_srcname="linux-${pkgver}"
source=(
    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/linux-libre-${pkgver}-gnu.tar.xz"{,.sign}
    "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm} #{,.sig}
)
sha256sums=(
    'SKIP'
    'SKIP'
    'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
#    'SKIP'
    '6de8a8319271809ffdb072b68d53d155eef12438e6d04ff06a5a4db82c34fa8a'
#    'SKIP'
    '13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
#    'SKIP'
)
validpgpkeys=(
    '474402C8C582DAFBE389C427BCB7CF877E7D47A7'  # Alexandre Oliva
    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78'  # David P.
)

_replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}")

export KBUILD_BUILD_HOST=parabola
export KBUILD_BUILD_USER=$pkgbase
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"

prepare() {
  cd "$_srcname"

  echo "Adding freedo as boot logo..."
  install -m644 -t drivers/video/logo ../logo_linux_{clut224.ppm,vga16.ppm,mono.pbm}

  echo "Setting version..."
  echo "-$pkgrel" > localversion.10-pkgrel
  echo "${pkgbase#linux-libre}" > localversion.20-pkgname

  echo "Generating config..."

  # Use old config
  # cp ~/new/config .config
  # yes "" | make olddefconfig

  echo "cd /usr/lib/modules/$(uname -r)/kernel/fs/
find ./btrfs/ -type f -exec modprobe {} \\;
find ./ecryptfs/ -type f -exec modprobe {} \\;
find ./exfat/ -type f -exec modprobe {} \\;
find ./ext4/ -type f -exec modprobe {} \\;
find ./fat/ -type f -exec modprobe {} \\;
find ./fuse/ -type f -exec modprobe {} \\;
find ./isofs/ -type f -exec modprobe {} \\;
find ./nfs/ -type f -exec modprobe {} \\;
find ./nfsd/ -type f -exec modprobe {} \\;
find ./ntfs3/ -type f -exec modprobe {} \\;
find ./reiserfs/ -type f -exec modprobe {} \\;
find ./smb/ -type f -exec modprobe {} \\;
find ./squashfs/ -type f -exec modprobe {} \\;
find ./xfs/ -type f -exec modprobe {} \\;
cd \$OLDPWD
modprobe loop
modprobe atkbd" > /tmp/libre-load-fs.sh
  read -p "Run, as root, to load all modules: sh /tmp/libre-load-fs.sh"
  rm -f /tmp/libre-load-fs.sh

  yes "" | make localmodconfig
  yes "" | make localyesconfig

  make -s kernelrelease > version
  echo "Prepared $pkgbase version $(<version)"
}

build() {
  make -C "$_srcname" -j $(nproc --all)
}

_package() {
  pkgdesc="The $pkgdesc kernel"
  depends=(
    coreutils
  )
  optdepends=(
    'wireless-regdb: to set the correct wireless channels of your country'
    'linux-libre-firmware: firmware images needed for some devices'
  )

  provides=("${_replacesarchkernel[@]/%/=$pkgver}" "LINUX-ABI_VERSION=$pkgver")

  cd $_srcname

  echo "Installing boot image..."
  install -D -m 0600 "$(make -s image_name)" "$pkgdir/boot/vmlinuz-${pkgbase}"
  install -D -m 0600 "System.map" "$pkgdir/boot/System.map-${pkgbase}"
}

pkgname=("$pkgbase")
for _p in "${pkgname[@]}"; do
  eval "package_$_p() {
    $(declare -f "_package${_p#$pkgbase}")
    _package${_p#$pkgbase}
  }"
done
