PKGBUILDs/community/linux-tools/PKGBUILD
2019-09-16 13:21:22 +00:00

309 lines
7.6 KiB
Bash

# Maintainer: Sébastien Luttringer
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - removed x86_energy_perf_policy and turbostat build/package, uses x86 asm
# - removed numactl dep
# - use tarball source
# - add GPIO and IIO utilities packages
pkgbase=linux-tools
pkgname=(
'bpf'
'cgroup_event_listener'
'cpupower'
'hyperv'
'libtraceevent'
'linux-tools-meta'
'perf'
# 'python-perf'
'tmon'
'usbip'
'gpio-utils'
'iio-utils'
)
pkgver=5.3
pkgrel=1
license=('GPL2')
arch=('x86_64')
url='https://www.kernel.org'
options=('!strip' '!distcc' '!makeflags')
makedepends=('git')
# split packages need all package dependencies set manually in makedepends
# kernel source deps
makedepends+=('asciidoc' 'xmlto')
# perf deps
makedepends+=('perl' 'python' 'slang' 'elfutils' 'libunwind' 'audit' 'gtk2')
# cpupower deps
makedepends+=('pciutils')
# usbip deps
makedepends+=('glib2' 'sysfsutils' 'udev')
# tmon deps
makedepends+=('ncurses')
# bpf deps
makedepends+=('python-docutils')
groups=("$pkgbase")
source=("https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${pkgver}.tar.xz"
# "https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-$pkgver.1.xz"
'0001-perf-fix-debug-printf-for-32-bit.patch'
'cpupower.default'
'cpupower.systemd'
'cpupower.service'
'usbipd.service'
'hv_fcopy_daemon.service'
'hv_kvp_daemon.service'
'hv_vss_daemon.service')
md5sums=('c99feaade8047339528fb066ec5f8a49'
'8533ebc2c4ff61269cb37f6f28eb9705'
'56883c159381ba89e50ab8ea65efec77'
'34f5ecc19770a1abbcd0fd65bfd1f065'
'86c4e419e4ba80835c330d49ba3f56ad'
'bb35634f480325a78b943f7e10165e86'
'4295fa68fcc26865030075bb59e9214c'
'340c26526370a07daef713a7a48918d5'
'436df78f98a765efccd9e224bdbdc2a5')
prepare() {
cd linux-$pkgver
# apply patch from the source array (should be a pacman feature)
local filename
for filename in "${source[@]}"; do
filename="${filename##*/}"
if [[ "$filename" =~ \.patch$ ]]; then
msg2 "Applying patch $filename"
patch -p1 -N -i "$srcdir/$filename"
elif [[ "$filename" =~ ^patch- ]]; then
msg2 "Applying linux $filename"
patch -p1 -N -i "$srcdir/${filename%.*}"
fi
done
}
build() {
msg2 'libtraceevent'
pushd linux-$pkgver/tools/lib/traceevent
make
popd
msg2 'perf'
pushd linux-$pkgver/tools/perf
make -f Makefile.perf \
prefix=/usr \
lib=lib/perf \
perfexecdir=lib/perf \
NO_SDT=1 \
PYTHON=python \
PYTHON_CONFIG=python-config \
PERF_VERSION=$pkgver-$pkgrel \
DESTDIR="$pkgdir" \
all man
popd
msg2 'cpupower'
pushd linux-$pkgver/tools/power/cpupower
make VERSION=$pkgver-$pkgrel
popd
msg2 'usbip'
pushd linux-$pkgver/tools/usb/usbip
# Fix gcc compilation
sed -i 's,-Wall -Werror -Wextra,,' configure.ac
./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 'hv'
pushd linux-$pkgver/tools/hv
CFLAGS+=' -DKVP_SCRIPTS_PATH=/usr/lib/hyperv/kvp_scripts/' make
popd
msg2 'gpio'
pushd linux-$pkgver/tools/gpio
make
popd
msg2 'iio'
pushd linux-$pkgver/tools/iio
make
popd
msg2 'bpf'
pushd linux-$pkgver/tools/bpf
# doesn't compile when we don't first compile bpftool in its directory
make -C bpftool all doc
make
popd
}
package_linux-tools-meta() {
pkgdesc='Linux kernel tools meta package'
groups=()
depends=(
'bpf'
'cgroup_event_listener'
'cpupower'
'hyperv'
'libtraceevent'
'perf'
# 'python-perf'
'tmon'
'usbip'
)
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=('glibc' 'perl' 'python' 'slang' 'elfutils' 'libunwind' 'binutils'
'audit' 'coreutils' 'glib2' 'xz' 'zlib' 'libelf' 'bash')
optdepends=('gtk2: support GTK2 browser for perf report')
cd linux-$pkgver/tools/perf
make -f Makefile.perf \
prefix=/usr \
lib=lib/perf \
perfexecdir=lib/perf \
NO_SDT=1 \
PYTHON=python \
PYTHON_CONFIG=python-config \
PERF_VERSION=$pkgver-$pkgrel \
DESTDIR="$pkgdir" \
install install-man
cd "$pkgdir"
# add linker search path
mkdir "$pkgdir/etc/ld.so.conf.d"
echo '/usr/lib/perf' > "$pkgdir/etc/ld.so.conf.d/$pkgname.conf"
# move completion in new directory
install -Dm644 etc/bash_completion.d/perf usr/share/bash-completion/completions/perf
rm -r etc/bash_completion.d
# no exec on usr/share
find usr/share -type f -exec chmod a-x {} \;
}
#package_python-perf(){
# pkgdesc='Linux kernel performance auditing tool (python bindings)'
# depends=('python')
#
# cd linux/tools/perf
#
# make install-python_ext PYTHON=python DESTDIR="$pkgdir"
#}
package_cpupower() {
pkgdesc='Linux kernel tool to examine and tune power saving related features of your processor'
backup=('etc/default/cpupower')
depends=('glibc' 'bash' 'pciutils')
conflicts=('cpufrequtils')
replaces=('cpufrequtils')
install=cpupower.install
pushd linux-$pkgver/tools/power/cpupower
make \
DESTDIR="$pkgdir" \
sbindir='/usr/bin' \
libdir='/usr/lib' \
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_usbip() {
pkgdesc='An USB device sharing system over IP network'
depends=('glibc' 'glib2' 'sysfsutils' 'systemd-libs')
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_hyperv() {
pkgdesc='Hyper-V tools'
depends=('glibc')
cd linux-$pkgver/tools/hv
for _p in hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon; do
install -Dm755 "$_p" "$pkgdir/usr/bin/$_p"
install -Dm644 "$srcdir/$_p.service" "$pkgdir/usr/lib/systemd/system/$_p.service"
done
install -dm755 "$pkgdir/usr/lib/hyperv/kvp_scripts"
}
package_gpio-utils() {
pkgdesc='GPIO character device utilities'
depends=('glibc')
cd linux-$pkgver/tools/gpio
make install DESTDIR="$pkgdir"
}
package_iio-utils() {
pkgdesc='Industrial IO utilities'
depends=('glibc')
cd linux-$pkgver/tools/iio
make install DESTDIR="$pkgdir"
}
package_bpf() {
pkgdesc='BPF tools'
depends=('glibc')
cd linux-$pkgver/tools/bpf
make install prefix=/usr DESTDIR="$pkgdir"
# fix bpftool hard written path
mv "$pkgdir"/usr/sbin/bpftool "$pkgdir"/usr/bin/bpftool
rmdir "$pkgdir"/usr/sbin
# install man pages
make -C bpftool doc-install prefix=/usr DESTDIR="$pkgdir"
}
# vim:set ts=2 sw=2 et: