# $Id: PKGBUILD 137464 2015-07-27 00:24:34Z seblu $
# Maintainer: Sébastien Luttringer

pkgbase=linux-tools
pkgname=(
  'cgroup_event_listener'
  'cpupower'
  'libtraceevent'
  'linux-tools-meta'
  'perf'
  'tmon'
  'turbostat'
  'usbip'
  'x86_energy_perf_policy'
)
pkgver=4.1
pkgrel=4
license=('GPL2')
arch=('i686' 'x86_64')
url='http://www.kernel.org'
options=('!strip')
# split packages need all package dependencies set manually in makedepends
# kernel source deps
makedepends=('asciidoc' 'xmlto')
# perf deps
makedepends+=('perl' 'python2' 'libnewt' 'elfutils' 'libunwind' 'numactl' 'audit' 'gtk2')
# cpupower deps
makedepends+=('pciutils')
# usbip deps
makedepends+=('glib2' 'sysfsutils' 'udev')
# tmon deps
makedepends+=('ncurses')
groups=("$pkgbase")
validpgpkeys=('ABAF11C65A2970B130ABE3C479BE3E4300411886'  # Linus Torvalds
              '647F28654894E3BD457199BE38DBBDC86092693E') # Greg Kroah-Hartman
source=("http://ftp.kernel.org/pub/linux/kernel/v${pkgver:0:1}.x/linux-$pkgver.tar"{.xz,.sign}
        #"http://ftp.kernel.org/pub/linux/kernel/v${pkgver:0:1}.x/patch-$pkgver.3"{.xz,.sign}
        'cpupower.default'
        'cpupower.systemd'
        'cpupower.service'
        'usbipd.service'
        '02-archlinux-paths.patch'
        '04-fix-usip-h-path.patch')
# http://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc
sha256sums=('caf51f085aac1e1cea4d00dbbf3093ead07b551fc07b31b2a989c05f8ea72d9f'
            'SKIP'
            '4fa509949d6863d001075fa3e8671eff2599c046d20c98bb4a70778595cd1c3f'
            'fbf6e0ce6eb0ef15703fe212958de6ca46e62188900b5e9f9272ed3cc9cfd54e'
            'a89284d0ecb556ca53a66d1c2087b5fd6d0a901ab2769cd3aebb93f4478905dc'
            '2e187734d8aec58a3046d79883510d779aa93fb3ab20bd3132c1a607ebe5498f'
            '91f7d91d4270f207102c469c575dd176c3be7897d78d26057d047db164eaf9ca'
            'e5543d8d6d3fbc7f8d9d25c428a882737d2e0169455f70cbc3f73076ff33dd5d')

prepare() {
  local _patch
  for _patch in patch-$pkgver.? *.patch; do
    [[ -e "$_patch" ]] || continue
    msg2 "Applying $_patch"
    patch -N -p1 -d linux-$pkgver < "$_patch"
  done
}

build() {
  msg2 'libtraceevent'
  pushd linux-$pkgver/tools/lib/traceevent
  make
  popd

  msg2 'perf'
  pushd linux-$pkgver/tools/perf
  make \
    WERROR=0 \
    DESTDIR="$pkgdir/usr" \
    perfexecdir='lib/perf' \
    PYTHON=python2 \
    PYTHON_CONFIG=python2-config \
    PERF_VERSION=$pkgver-$pkgrel \
    all man
  popd

  msg2 'cpupower'
  pushd linux-$pkgver/tools/power/cpupower
  # we cannot use --as-needed
  #LDFLAGS=${LDFLAGS:+"$LDFLAGS,--no-as-needed"}
  make VERSION=$pkgver-$pkgrel
  popd

  msg2 'x86_energy_perf_policy'
  pushd linux-$pkgver/tools/power/x86/x86_energy_perf_policy
  make
  popd

  msg2 'usbip'
  pushd linux-$pkgver/tools/usb/usbip
  ./autogen.sh
  ./configure --prefix=/usr --sbindir=/usr/bin
  make
  popd

  msg2 'tmon'
  pushd linux-$pkgver/tools/thermal/tmon
  make
  popd

  msg2 'cgroup_event_listener'
  pushd linux-$pkgver/tools/cgroup
  make
  popd

  msg2 'turbostat'
  pushd linux-$pkgver/tools/power/x86/turbostat
  make
  popd
}

package_linux-tools-meta() {
  pkgdesc='Linux kernel tools meta package'
  groups=()
  depends=(
    'cgroup_event_listener'
    'cpupower'
    'libtraceevent'
    'perf'
    'tmon'
    'turbostat'
    'usbip'
    'x86_energy_perf_policy'
  )
  conflicts=(
    'acpidump'
  )
}

package_libtraceevent() {
  pkgdesc='Linux kernel trace event library'
  depends=('glibc')

  cd linux-$pkgver/tools/lib/traceevent
  install -dm 755 "$pkgdir/usr/lib"
  install -m 644 libtraceevent.so "$pkgdir/usr/lib"
}

package_perf() {
  pkgdesc='Linux kernel performance auditing tool'
  depends=('perl' 'python2' 'libnewt' 'elfutils' 'libunwind' 'binutils'
           'numactl' 'audit')
  optdepends=('gtk2: support GTK2 browser for perf report')

  cd linux-$pkgver/tools/perf
  make \
    WERROR=0 \
    DESTDIR="$pkgdir/usr" \
    perfexecdir='lib/perf' \
    PYTHON=python2 \
    PYTHON_CONFIG=python2-config \
    PERF_VERSION=$pkgver-$pkgrel \
    install install-man
  # move completion in new directory
  cd "$pkgdir"
  install -Dm644 usr/etc/bash_completion.d/perf usr/share/bash-completion/completions/perf
  rm -r usr/etc
}

package_cpupower() {
  pkgdesc='Linux kernel tool to examine and tune power saving related features of your processor'
  backup=('etc/default/cpupower')
  depends=('bash' 'pciutils')
  conflicts=('cpufrequtils')
  replaces=('cpufrequtils')
  install=cpupower.install

  pushd linux-$pkgver/tools/power/cpupower
  make \
    DESTDIR="$pkgdir" \
    sbindir='/usr/bin' \
    mandir='/usr/share/man' \
    docdir='/usr/share/doc/cpupower' \
    install install-man
  popd
  # install startup scripts
  install -Dm 644 $pkgname.default "$pkgdir/etc/default/$pkgname"
  install -Dm 644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service"
  install -Dm 755 $pkgname.systemd "$pkgdir/usr/lib/systemd/scripts/$pkgname"
}

package_x86_energy_perf_policy() {
  pkgdesc='Read or write MSR_IA32_ENERGY_PERF_BIAS'
  depends=('glibc')

  cd linux-$pkgver/tools/power/x86/x86_energy_perf_policy
  install -Dm 755 x86_energy_perf_policy "$pkgdir/usr/bin/x86_energy_perf_policy"
  install -Dm 644 x86_energy_perf_policy.8 "$pkgdir/usr/share/man/man8/x86_energy_perf_policy.8"
}

package_usbip() {
  pkgdesc='An USB device sharing system over IP network'
  depends=('glib2' 'sysfsutils' 'libsystemd')

  pushd linux-$pkgver/tools/usb/usbip
  make install DESTDIR="$pkgdir"
  popd
  # module loading
  install -Dm 644 /dev/null "$pkgdir/usr/lib/modules-load.d/$pkgname.conf"
  printf 'usbip-core\nusbip-host\n' > "$pkgdir/usr/lib/modules-load.d/$pkgname.conf"
  # systemd
  install -Dm 644 usbipd.service "$pkgdir/usr/lib/systemd/system/usbipd.service"
}

package_tmon() {
  pkgdesc='Monitoring and Testing Tool for Linux kernel thermal subsystem'
  depends=('glibc' 'ncurses')

  cd linux-$pkgver/tools/thermal/tmon
  make install INSTALL_ROOT="$pkgdir"
}

package_cgroup_event_listener() {
  pkgdesc='Simple listener of cgroup events'
  depends=('glibc')

  cd linux-$pkgver/tools/cgroup
  install -Dm755 cgroup_event_listener "$pkgdir/usr/bin/cgroup_event_listener"
}

package_turbostat() {
  pkgdesc='Report processor frequency and idle statistics'
  depends=('glibc')

  cd linux-$pkgver/tools/power/x86/turbostat
  make install DESTDIR="$pkgdir"
}

# vim:set ts=2 sw=2 et:
