# Maintainer: Troy Engel <troyengel+arch@gmail.com>
# Contributor: Manuel Mendez <mmendez534@gmail.com>

pkgbase=bcc-git
pkgname=('bcc-git' 'bcc-tools-git' 'python-bcc-git')
pkgver=0.37.0.r3.6485e1298
pkgrel=1
pkgdesc="BPF Compiler Collection - latest git code"
arch=('x86_64')
url="https://github.com/iovisor/bcc"
license=('Apache-2.0')
conflicts=('bcc')
makedepends=('cmake' 'clang>=3.7.0' 'llvm>=3.7.0' 'flex' 'bison' 'python'
             'python-setuptools' 'git' 'libelf' 'zlib' 'ncurses' 'gcc-libs')
source=('bcc-git::git+https://github.com/iovisor/bcc'
        'libbpf::git+https://github.com/libbpf/libbpf'
        'bcc'
        '_bcc')
sha256sums=('SKIP' 'SKIP'
            '77a711328281759b9da81a326a16b220132544dd4a83fa9c59781f37c390cf5d'
            '37222cff28f342e89ca9e6ba6eabfffbc079f8c6a3eeab9aebab058a9fc738fa')

pkgver() {
  cd "${srcdir}/${pkgbase}"
  printf "%s" "$(git describe --long | sed 's/\([^-]*-\)g/r\1/;s/-/./g;s/^v//')"
}

prepare() {
  cd "$srcdir/bcc-git"
  git submodule init
  git config submodule.src/cc/libbpf.url "$srcdir/libbpf"
  git -c protocol.file.allow=always submodule update
}

build() {
  rm -rf "${srcdir}/${pkgbase}/build"
  mkdir -p "${srcdir}/${pkgbase}/build"
  cd "${srcdir}/${pkgbase}/build"

  export LDFLAGS=-ltinfo
  # we don't care which python here for the core C library
  cmake .. \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
    -DPYTHON_PREFIX=/usr \
    -DENABLE_EXAMPLES=off \
    -DENABLE_TESTS=off \
    -DENABLE_LLVM_SHARED=on
  make
}

package_bcc-git() {
  pkgdesc="BPF Compiler Collection  - C library and examples"
  provides=('bcc' 'libbcc')
  conflicts=('bcc' 'libbcc')
  depends=('libelf' 'zlib' 'ncurses' 'gcc-libs' 'clang')
  optdepends=('bcc-tools-git: Python utilites using the BCC library'
              'python-bcc-git: Python 3 bindings for BCC'
              'linux-headers: kernel header files')

  # this installs the kitchen sink
  cd "${srcdir}/${pkgbase}/build"
  make DESTDIR="${pkgdir}/" install

  # these go in a split package python*-bcc
  rm -rf "${pkgdir}"/usr/lib/python*

  # these go in a split package bcc-tools
  rm -rf "${pkgdir}"/usr/share/bcc/{tools,man}
}

package_bcc-tools-git() {
  pkgdesc="BPF Compiler Collection - Tools"
  depends=('bcc-git' 'python-bcc-git')
  conflicts=('bcc-tools')

  cd "${srcdir}/${pkgbase}/build/tools"
  make DESTDIR="${pkgdir}/" install

  cd "${srcdir}/${pkgbase}/build/man"
  make DESTDIR="${pkgdir}/" install
  mv "${pkgdir}"/usr/share/bcc/man "${pkgdir}"/usr/share/man
  mv "${pkgdir}"/usr/share/man/man8/{,bcc-}trace.8.gz

  mkdir -p "${pkgdir}"/usr/share/doc
  mv "${pkgdir}"/usr/share/bcc/tools/doc "${pkgdir}"/usr/share/doc/bcc

  cd "${srcdir}"
  install -Dm755 bcc "${pkgdir}"/usr/bin/bcc
  install -Dm644 _bcc "${pkgdir}"/usr/share/zsh/site-functions/_bcc

}

package_python-bcc-git() {
  pkgdesc="BPF Compiler Collection - Python 3 bindings"
  depends=('bcc-git' 'python')
  conflicts=('python-bcc')

  # the C lib s already built, force a quick python3 binding build
  cd "${srcdir}/${pkgbase}/build"
  cmake .. -DPYTHON_CMD="python" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=/usr/lib
  make

  # now install just those bindings
  cd "${srcdir}/${pkgbase}/build/src/python"
  make DESTDIR="${pkgdir}/" install
}

