# Maintainer: Kira <[@kira](https://dev.kira-linux.org/kira)>

pkgname=bcachefs-tools
pkgver=1.39.2
pkgrel=1
pkgdesc='BCacheFS filesystem utilities'
arch=('x86_64')
url='https://bcachefs.org/'
license=('GPL-2.0-only')
_tools_depends=(
    glibc
    keyutils libkeyutils.so
    libaio libaio.so
    libgcc
    libsodium libsodium.so
    libunwind libunwind.so
    liburcu
    lz4
    libudev.so
    udev
    util-linux-libs libblkid.so libuuid.so
    zlib libz.so
    zstd libzstd.so
)
makedepends=(
  ${_tools_depends[@]}
  rust
  rust-bindgen
  clang
  git
  jq
  llvm
  pkgconf
)
options=(!lto)

source=(
  https://github.com/koverstreet/bcachefs-tools/archive/refs/tags/v${pkgver}.tar.gz
)
sha256sums=('87e08942d4a94a38c463202cde31b2923e1fb67698e661a61c781f80b95e4997')
b2sums=('79d40bbd52345c6c2aa682ad1ddd8bc98b1e32110f34b82c0076cf6cadad9a24ea83e866727b9cbd18e23b46194d1f5a7b5d82e4e2719f3e97dc25f106a81d92')

build() {
  cd ${pkgname}-${pkgver}

  # this uses malloc_usable_size, which is incompatible with fortification level 3
  # https://github.com/koverstreet/bcachefs-tools/issues/237
  export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
  export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"

  make \
    LIBEXECDIR=/usr/lib \
    DESTDIR="${pkgdir}" \
    ROOT_SBINDIR="/usr/bin" \
    INITRAMFS_DIR=/usr/lib/initcpio
}

package() {
  depends=(
    ${_tools_depends[@]}
  )
  cd ${pkgname}-${pkgver}

  # this uses malloc_usable_size, which is incompatible with fortification level 3
  # https://github.com/koverstreet/bcachefs-tools/issues/237
  export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
  export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"

  make \
    PREFIX="/usr" \
    LIBEXECDIR=/usr/lib \
    DESTDIR="${pkgdir}" \
    ROOT_SBINDIR="/usr/bin" \
    INITRAMFS_DIR=/usr/lib/initcpio \
    install

  # replace incompatible initcpio hooks
  # rm -rf "${pkgdir}"/usr/lib/initcpio/*
  # install -dm755 "${pkgdir}"/usr/lib/initcpio/{hooks,install}
  # install -Dm644 arch/etc/initcpio/hooks/bcachefs "${pkgdir}"/usr/lib/initcpio/hooks/
  # install -Dm644 arch/etc/initcpio/install/bcachefs "${pkgdir}"/usr/lib/initcpio/install/

  # we do not have initcpio hookers on Kira Linux
  rm -rf "${pkgdir}"/usr/lib/initcpio

  # remove dkms module from the main package
  rm -rf "${pkgdir}"/usr/src

  # package completions
  install -dm755 "${pkgdir}"/usr/share/{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
  "${pkgdir}"/usr/bin/bcachefs completions bash > "${pkgdir}"/usr/share/bash-completion/completions/bcachefs
  "${pkgdir}"/usr/bin/bcachefs completions fish > "${pkgdir}"/usr/share/fish/vendor_completions.d/bcachefs.fish
  "${pkgdir}"/usr/bin/bcachefs completions zsh > "${pkgdir}"/usr/share/zsh/site-functions/_bcachefs
}

