# Maintainer: Sébastien Luttringer # ALARM: Kevin Mihelich # - removed x86_energy_perf_policy and turbostat build/package, uses x86 asm # - removed numactl dep # - use tarball source # - add GPIO and IIO utilities packages # - build perf with WERROR=0 pkgbase=linux-tools pkgname=( 'bootconfig' 'bpf' 'cpupower' 'hyperv' 'linux-tools-meta' 'perf' 'tmon' 'usbip' 'gpio-utils' 'iio-utils' ) pkgver=6.9 pkgrel=2 license=('GPL-2.0-only') arch=('x86_64') url='https://www.kernel.org' options=('!strip' '!lto' '!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' 'python-setuptools' 'slang' 'elfutils' 'libunwind' 'audit' 'zstd' 'libcap' 'libtraceevent' 'openssl' 'clang') # cpupower deps makedepends+=('pciutils') # usbip deps makedepends+=('glib2' 'sysfsutils' 'udev') # tmon deps makedepends+=('ncurses') # bpf deps makedepends+=('readline' 'zlib' 'libelf' 'libcap' 'python-docutils') # turbostat deps makedepends+=('libcap') # bpftool makedepends+=('llvm' 'clang') groups=("$pkgbase") source=("https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${pkgver}.tar.xz" # "https://cdn.kernel.org/pub/linux/kernel/v6.x/patch-$pkgver.2.xz" 'cpupower.default' 'cpupower.systemd' 'cpupower.service' 'usbipd.service' 'hv_fcopy_daemon.service' 'hv_kvp_daemon.service' 'hv_vss_daemon.service' ) sha256sums=('24fa01fb989c7a3e28453f117799168713766e119c5381dac30115f18f268149' '4fa509949d6863d001075fa3e8671eff2599c046d20c98bb4a70778595cd1c3f' 'b692f4859ed3fd9831a058a450a84d8c409bf7e3e45aac1c2896a14bb83f3d7a' '42d2ec9f1d9cc255ee7945a27301478364ef482f5a6ddfc960189f03725ccec2' '2e187734d8aec58a3046d79883510d779aa93fb3ab20bd3132c1a607ebe5498f' '16855c197d2334f820cb190312a5a7fffe9165189db01344a957e582e39e17d8' 'b1315cb77a35454e1af9172f821a52e2a0cb18561be05a340d21cf337b01ae61' '2d5e2f8d40b6f19bf2e1dead57ca105d72098fb0b418c09ff2e0cb91089710af') prepare() { cd linux-$pkgver # apply patch from the source array (should be a pacman feature) local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" src="${src%.xz}" [[ $src = *.patch || $src = patch-* ]] || continue echo ":: Applying patch $src" patch -p1 -N -i "$srcdir/$src" done # force our perf version cat > tools/perf/util/PERF-VERSION-GEN << EOF #!/bin/sh echo '#define PERF_VERSION "$pkgver-$pkgrel"' > "\${1:-.}"/PERF-VERSION-FILE EOF } build() { echo ':: perf' pushd linux-$pkgver/tools/perf make -f Makefile.perf \ prefix=/usr \ lib=lib/perf \ perfexecdir=lib/perf \ WERROR=0 \ NO_SDT=1 \ BUILD_BPF_SKEL=1 \ WERROR=0 \ PYTHON=python \ PYTHON_CONFIG=python-config \ DESTDIR="$pkgdir" popd echo ':: cpupower' pushd linux-$pkgver/tools/power/cpupower make VERSION=$pkgver-$pkgrel popd echo ':: usbip' pushd linux-$pkgver/tools/usb/usbip # Fix gcc compilation sed -i 's,-Wall -Werror -Wextra,-fcommon,' configure.ac ./autogen.sh ./configure --prefix=/usr --sbindir=/usr/bin make popd echo ':: tmon' pushd linux-$pkgver/tools/thermal/tmon make popd echo ':: hv' pushd linux-$pkgver/tools/hv CFLAGS+=' -DKVP_SCRIPTS_PATH=\"/usr/lib/hyperv/kvp_scripts/\"' make popd echo ':: gpio' pushd linux-$pkgver/tools/gpio make popd echo ':: iio' pushd linux-$pkgver/tools/iio make popd echo ':: bpf' pushd linux-$pkgver/tools/bpf # doesn't compile when we don't first compile bpftool in its own directory and # man pages require to be also launch from the subdirectory make -C bpftool all doc # runqslower, require kernel binary path to build, skip it make -W runqslower popd echo ':: bootconfig' pushd linux-$pkgver/tools/bootconfig make popd } package_linux-tools-meta() { pkgdesc='Linux kernel tools meta package' groups=() depends=( 'bootconfig' 'bpf' 'cpupower' 'hyperv' 'perf' 'tmon' 'usbip' ) conflicts=( 'acpidump' ) } package_perf() { pkgdesc='Linux kernel performance auditing tool' depends=('glibc' 'perl' 'python' 'slang' 'elfutils' 'libunwind' 'binutils' 'numactl' 'audit' 'coreutils' 'glib2' 'xz' 'zlib' 'libelf' 'bash' 'zstd' 'libcap' 'libtraceevent' 'openssl') cd linux-$pkgver/tools/perf make -f Makefile.perf \ prefix=/usr \ lib=lib/perf \ perfexecdir=lib/perf \ EXTRA_CFLAGS=' -Wno-error=bad-function-cast -Wno-error=declaration-after-statement -Wno-error=switch-enum' \ NO_SDT=1 \ BUILD_BPF_SKEL=1 \ WERROR=0 \ PYTHON=python \ PYTHON_CONFIG=python-config \ DESTDIR="$pkgdir" \ install install-python_ext 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_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_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' 'readline' 'zlib' 'libelf' 'libcap' 'zstd' 'llvm-libs' 'binutils') cd linux-$pkgver/tools/bpf # skip runsqlower until disabled in build make -W runqslower_install 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/share DESTDIR="$pkgdir" } package_bootconfig() { pkgdesc='Apply, delete or show boot config to initrd' depends=('glibc') cd linux-$pkgver/tools/bootconfig install -dm755 "$pkgdir/usr/bin" make install DESTDIR="$pkgdir" } # vim:set ts=2 sw=2 et: