blob: b1436294ac2210a6906553c3b9e96a4861efe91a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# Contributor: Konstantin Kulikov <k.kulikov2@gmail.com>
# Maintainer: Adam Jensen <adam@acj.sh>
pkgname=bpftrace
pkgver=0.17.1
pkgrel=1
pkgdesc="High-level tracing language for Linux eBPF"
url="https://github.com/iovisor/bpftrace"
arch="aarch64 ppc64le x86_64"
license="Apache-2.0"
_llvmver=16
makedepends="
asciidoctor
bcc-dev
binutils-dev
bison
cereal
clang$_llvmver-dev
clang$_llvmver-static
cmake
elfutils-dev
flex-dev
libbpf-dev
linux-headers
llvm$_llvmver-dev
llvm$_llvmver-static
samurai
"
source="$pkgname-$pkgver.tar.gz::https://github.com/iovisor/bpftrace/archive/v$pkgver.tar.gz
10-link-libbpf.patch
llvm16.patch
"
# Tests require root, network to download gmock and a few tests fail.
# Stripping is done ourselves to keep the BEGIN_trigger symbol required
# for BEGIN probe (see https://github.com/iovisor/bpftrace/issues/954 )
options="!check !strip"
subpackages="$pkgname-doc:doc $pkgname-tools:tools:noarch $pkgname-tools-doc:tools_doc"
build() {
cmake -B build -G Ninja \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DBUILD_TESTING=OFF \
-DCMAKE_PREFIX_PATH=/usr/lib/llvm$_llvmver/lib/cmake \
-DLLVM_REQUESTED_VERSION="$(/usr/lib/llvm$_llvmver/bin/llvm-config --version)" \
-DUSE_SYSTEM_BPF_BCC=1
cmake --build build
}
# Main package contains only bpftrace binary.
package() {
DESTDIR="$pkgdir" cmake --install build
strip --keep-symbol BEGIN_trigger \
--keep-symbol END_trigger \
"$pkgdir"/usr/bin/bpftrace \
"$pkgdir"/usr/bin/bpftrace-aotrt
mv "$pkgdir/usr/share/bpftrace/tools/doc" "$pkgdir/usr/share/bpftrace/tools_doc"
}
# Doc package should contain only man page for bpftrace.
doc() {
mkdir -p "$subpkgdir/usr/share/man/man8"
mv "$pkgdir/usr/share/man/man8/bpftrace.8.gz" "$subpkgdir/usr/share/man/man8/"
}
# Tools are not installed in PATH, because they would conflict with other tools provided by bcc or perf-tools.
tools() {
depends="$pkgname"
pkgdesc="$pkgdesc (tools)"
amove usr/share/bpftrace/tools
}
# Tools docs contains man pages and examples for tools. They shouldn't go into shared MANPATH for the same reasons as tools pkg above.
tools_doc() {
pkgdesc="$pkgdesc (tool docs and examples)"
mkdir -p "$subpkgdir/usr/share/bpftrace"
mv "$pkgdir/usr/share/bpftrace/tools_doc" "$subpkgdir/usr/share/bpftrace/doc"
mv "$pkgdir/usr/share/man/man8" "$subpkgdir/usr/share/bpftrace/"
}
sha512sums="
57f00a0b209d745efe5ce39d0e8efb90a21b5c499b41385814378d828ef507dc2c6d9497f9d23dbb610fcff21f077cba9f7481e7a6a6465825065743289ef4ad bpftrace-0.17.1.tar.gz
1f884e75ee7df8d28e8f613eca64cc56f859806c5a8d0f491c07709b0000be3a29be62a3eab6dfb04fcf9aadd1a4c3fde26e212ea0c40e5a54e59a197f148ed4 10-link-libbpf.patch
a7aba13fb7f60ce90571ea4f2078d2a64fcbd5067e950e4cf0bd961d9c4b1cce645b72834bb6ee6d073542c32c7e3e5fb3ae8d9f38cc96330972649a484f62c3 llvm16.patch
"
|