# Maintainer: Tejun Heo <tj@kernel.org>
# Maintainer: Peter Jung ptr1337 <admin@ptr1337.dev>
# Maintainer: Piotr Górski <lucjan.lucjanov@gmail.com>

pkgname=scx-scheds
_gitname=scx
pkgver=1.1.2
pkgrel=1
pkgdesc='sched_ext schedulers and tools'
url='https://github.com/sched-ext/scx'
arch=('x86_64' 'aarch64')
backup=('etc/default/scx')
license=('GPL-2.0-only')
depends=(
  libelf
  libseccomp
  protobuf
  scx-tools
  zlib
)
makedepends=(
  cargo
  clang
  git
  llvm
  llvm-libs
)
options=(!lto)
source=("git+https://github.com/sched-ext/scx?signed#tag=v$pkgver")
sha256sums=('4474c253ee6440f37574cdbfa6a162cdc5d383d0768269ffe484c5c1388da167')
validpgpkeys=(
  697C63013E65270255EBC2608744DC1EB26B5A9A  # Tejun Heo <tj@kernel.org>
  F5504C7B7B8107B40EF9E97AA1148BB3207BCC33  # David Vernet <void@manifault.com>
  A8775C60262EEF2AA34A864F5DAD005C4BFEA770  # Jake Hilton <jake@hillion.co.uk>
  EE2B8DAB1F6D1AA9DD1A4475AD851C1B71DF8FBF  # Andrea Righi <andrea.righi@linux.dev>
  49F2D1CB86447DFD1F14B27A8B61A0894BDB3A92  # Ryan Rhodes Newton <rrnewton@gmail.com>
)

_backports=(
)

_reverts=(
)

prepare() {
  cd $_gitname

  local _c _l
   for _c in "${_backports[@]}"; do
     if [[ "${_c}" == *..* ]]; then _l='--reverse'; else _l='--max-count=1'; fi
     git log --oneline "${_l}" "${_c}"
     git cherry-pick --mainline 1 --no-commit "${_c}"
   done
   for _c in "${_reverts[@]}"; do
     if [[ "${_c}" == *..* ]]; then _l='--reverse'; else _l='--max-count=1'; fi
     git log --oneline "${_l}" "${_c}"
     git revert --mainline 1 --no-commit "${_c}"
   done

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

  export RUSTUP_TOOLCHAIN=stable
  cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
  cd $_gitname
  export RUSTUP_TOOLCHAIN=stable
  export CARGO_TARGET_DIR=target
  cargo build \
     --release \
     --frozen \
     --workspace \
     --exclude scx_rlfifo \
     --exclude scx_mitosis \
     --exclude scx_characterize \
     --exclude xtask \
     --exclude vmlinux_docify \
     --exclude scx_arena_selftests
}

package() {
  cd $_gitname

  # Install all built executables (skip .so and .d files)
  find target/release \
    -maxdepth 1 -type f -executable ! -name '*.so' \
    -exec install -Dm755 -t "$pkgdir/usr/bin/" {} +
}
