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

pkgname=bcachefs-tools
pkgver=1.38.8
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=('b1c516bd0da3c4f879748d4cd0cdbd1eb5e7734d54421fb743d16e63a2e015bb')
b2sums=('3dd8bbe1b3306e5f20d9c04d7e8f775e9be73e36b4b81868d1336969a24d143219db6b6d6580786761c2e7c5b129bfedb9dd3a9025d648acc35727cb3dba4695')

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
}

