Skip to content

Commit 6f50e28

Browse files
committed
ci: build bpftrace from source for arm64
1 parent 52b107f commit 6f50e28

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
3+
set -x -euo pipefail
4+
5+
BPFTRACE_VERSION=${BPFTRACE_VERSION:-0.22.1}
6+
BUILD_BPFTRACE=${BUILD_BPFTRACE:-}
7+
8+
BIN_DIR=/usr/local/bin
9+
sudo mkdir -p $BIN_DIR
10+
11+
if [[ -n "$BUILD_BPFTRACE" ]]; then
12+
# see https://github.com/bpftrace/bpftrace/blob/master/docker/Dockerfile.ubuntu
13+
sudo apt-get install -y \
14+
asciidoctor binutils-dev bison build-essential clang cmake flex git libbpf-dev \
15+
libbpfcc-dev libcereal-dev libelf-dev libiberty-dev libpcap-dev llvm-dev liblldb-dev \
16+
libclang-dev systemtap-sdt-dev zlib1g-dev
17+
git clone --depth 1 -b v${BPFTRACE_VERSION} https://github.com/bpftrace/bpftrace
18+
cd bpftrace/src
19+
cmake -B build -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR=$(llvm-config --prefix)/lib/cmake/llvm
20+
make -C build -j$(nproc)
21+
cd -
22+
sudo mv bpftrace/src/build/bpftrace $BIN_DIR/bpftrace
23+
else # download AppImage
24+
sudo curl -L -o $BIN_DIR/bpftrace https://github.com/bpftrace/bpftrace/releases/download/v${BPFTRACE_VERSION}/bpftrace
25+
fi
26+
27+
sudo chmod +x $BIN_DIR/bpftrace
28+
29+
# mount tracefs to avoid warnings from bpftrace
30+
grep -q tracefs /proc/mounts || mount -t tracefs tracefs /sys/kernel/tracing
31+
32+
# sanity check
33+
bpftrace --version
34+

.github/scripts/setup.sh

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,12 @@ BPFTRACE_VERSION=${BPFTRACE_VERSION:-0.22.1}
77
GCC_VERSION=${GCC_VERSION:-13}
88

99
# Install pre-requisites
10-
export DEBIAN_FRONTEND=noninteractive
1110
apt-get update -y
11+
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
1212
apt-get install -y curl file gawk libfuse2t64 make sudo
1313

1414
# Install CC
1515
apt-get install -y gcc-${GCC_VERSION} g++-${GCC_VERSION}
1616

17-
# Download bpftrace release
18-
apt-get install -y bpftrace
19-
# BIN_DIR=/usr/local/bin
20-
# mkdir -p $BIN_DIR
21-
# curl -L -o bpftrace https://github.com/bpftrace/bpftrace/releases/download/v${BPFTRACE_VERSION}/bpftrace
22-
# chmod +x bpftrace
23-
# mv bpftrace $BIN_DIR
24-
# bpftrace --version
17+
${GITHUB_WORKSPACE}/.github/scripts/install-bpftrace.sh
2518

26-
# mount tracefs to avoid warnings from bpftrace
27-
grep -q tracefs /proc/mounts || mount -t tracefs tracefs /sys/kernel/tracing

.github/workflows/test.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ jobs:
1010
build-and-test:
1111

1212
strategy:
13+
fail-fast: false
1314
matrix:
1415
runs-on: [ 'ubuntu-latest', 'ubuntu-24.04-arm' ]
1516
shared: [ 0, 1 ]
@@ -20,13 +21,16 @@ jobs:
2021
name: ${{ endsWith(matrix.runs-on, '-arm') && 'arm64' || 'x86_64' }} SHARED=${{ matrix.shared }} gcc-${{ matrix.gcc-version }}
2122

2223
env:
24+
ARCH: ${{ endsWith(matrix.runs-on, '-arm') && 'arm64' || 'x86_64' }}
2325
GCC_VERSION: ${{ matrix.gcc-version }}
2426
SHARED: ${{ matrix.shared }}
2527

2628
steps:
2729
- uses: actions/checkout@v4
2830

2931
- name: Install prerequisites
32+
env:
33+
BUILD_BPFTRACE: ${{ env.ARCH == 'arm64' && 'true' || '' }}
3034
run: sudo -E .github/scripts/setup.sh
3135

3236
- name: Build SHARED=${{ matrix.shared }}

0 commit comments

Comments
 (0)