# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

pkgbase=pahole
pkgname=(
  pahole
  ostra-cg
)
pkgver=1.31
pkgrel=1
epoch=1
pkgdesc="Type info tools"
url="https://git.kernel.org/pub/scm/devel/pahole/pahole.git"
arch=(x86_64 aarch64)
license=(GPL-2.0-only)
depends=(
  bash
  glibc
  libelf
  zlib
)
makedepends=(
  cmake
  git
  ninja
  python
  python-matplotlib
)
source=(
  "git+$url?signed#tag=v$pkgver"
  "git+https://github.com/libbpf/libbpf"
  0001-CMakeLists.txt-Install-ostra.py-into-Python3_SITELIB.patch
)
b2sums=('5e09c58120f0c5259d2bd437aeaf434e703549fbe6fa999e374b07354e7717a2faf1245d6013af3bbc29f1b76a0f2ef8da1374c9ee174b44fea3602e02dd8b5e'
        'SKIP'
        'd1b01015f6da9738e5632be112c198d07fe023adf00377967ef0566a885e35c1c4f2db48b5924a06cb42ed2e23a1703a53923132f22c116e570a7a698efef34d')
validpgpkeys=(
  2DBF5BAA46FB4DED338A335BD65016F35352AA40  # Arnaldo Carvalho de Melo <acme@kernel.org>
)

prepare() {
  cd pahole

  # https://bugs.archlinux.org/task/70013
  git apply -3 ../0001-CMakeLists.txt-Install-ostra.py-into-Python3_SITELIB.patch

  git submodule init
  git submodule set-url lib/bpf "$srcdir/libbpf"
  git -c protocol.file.allow=always -c protocol.allow=never submodule update
}

build() {
  local cmake_options=(
    -D CMAKE_BUILD_TYPE=None
    -D CMAKE_INSTALL_PREFIX=/usr
    -D GIT_SUBMODULE=OFF
    -D LIBBPF_EMBEDDED=ON
  )

  cmake -S pahole -B build -G Ninja "${cmake_options[@]}"
  cmake --build build
}

check() {
  ctest --test-dir build --output-on-failure --stop-on-failure -j$(nproc)
}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_pahole() {
  optdepends=('ostra-cg: Generate call graphs from encoded traces')
  provides=(libdwarves{,_emit,_reorganize}.so)

  DESTDIR="$pkgdir" cmake --install build

  _pick ostra "$pkgdir"/usr/{bin/ostra-cg,lib/python*}
}

package_ostra-cg() {
  pkgdesc="Generate call graphs from encoded traces"
  depends=(
    pahole
    python
    python-matplotlib
  )

  mv ostra/* "$pkgdir"

  python -m compileall -d /usr/lib "$pkgdir/usr/lib"
  python -O -m compileall -d /usr/lib "$pkgdir/usr/lib"
}

# vim:set sw=2 sts=-1 et:
