From 3e0686e5c2e0a6207905fd6dceae191a39106b5c Mon Sep 17 00:00:00 2001 From: Simarpreet Singh Date: Fri, 16 Nov 2018 22:33:57 -0800 Subject: [PATCH 1/2] pkg/bpftrace: Add bpftrace as a core pkg Signed-off-by: Simarpreet Singh --- pkg/bpftrace/Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ pkg/bpftrace/build.yml | 4 ++++ 2 files changed, 41 insertions(+) create mode 100644 pkg/bpftrace/Dockerfile create mode 100644 pkg/bpftrace/build.yml diff --git a/pkg/bpftrace/Dockerfile b/pkg/bpftrace/Dockerfile new file mode 100644 index 000000000..f4f345497 --- /dev/null +++ b/pkg/bpftrace/Dockerfile @@ -0,0 +1,37 @@ +FROM linuxkit/alpine:ace75d0ec6978762d445083d6c8c6336bdb658ed AS build +RUN apk add --update \ + bison \ + build-base \ + clang-dev \ + clang-static \ + cmake \ + elfutils-dev \ + flex-dev \ + git \ + linux-headers \ + llvm5-dev \ + llvm5-static \ + zlib-dev + +# Put LLVM directories where CMake expects them to be +RUN ln -s /usr/lib/cmake/llvm5 /usr/lib/cmake/llvm +RUN ln -s /usr/include/llvm5/llvm /usr/include/llvm +RUN ln -s /usr/include/llvm5/llvm-c /usr/include/llvm-c + +ENV GITREPO=https://github.com/iovisor/bpftrace.git +ENV COMMIT=8f7f8214d7dd7bc25b7740a3c0e9a580a89e0244 +ENV STATIC_LINKING=on +ENV RUN_TESTS=0 + +RUN git clone ${GITREPO} /bpftrace \ + && cd /bpftrace/ \ + && mkdir -p /bpftrace/build \ + && git checkout ${COMMIT} \ + && chmod +x /bpftrace/docker/build.sh \ + && /bpftrace/docker/build.sh /bpftrace/build Release -j$(nproc) + +FROM scratch +ENTRYPOINT [] +CMD [] +WORKDIR / +COPY --from=build /bpftrace/build/src/bpftrace /usr/bin/bpftrace \ No newline at end of file diff --git a/pkg/bpftrace/build.yml b/pkg/bpftrace/build.yml new file mode 100644 index 000000000..fc714787a --- /dev/null +++ b/pkg/bpftrace/build.yml @@ -0,0 +1,4 @@ +image: bpftrace +network: true +arches: + - amd64 From 5c4523939b020eed16c1de23b34d9a56f01b4a13 Mon Sep 17 00:00:00 2001 From: Simarpreet Singh Date: Tue, 20 Nov 2018 17:21:59 -0800 Subject: [PATCH 2/2] pkg/bpftrace: Add a trivial test for pkg/bpftrace Signed-off-by: Simarpreet Singh --- test/cases/040_packages/002_bpftrace/check.sh | 9 ++++++ test/cases/040_packages/002_bpftrace/test.sh | 23 +++++++++++++++ test/cases/040_packages/002_bpftrace/test.yml | 29 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 test/cases/040_packages/002_bpftrace/check.sh create mode 100644 test/cases/040_packages/002_bpftrace/test.sh create mode 100644 test/cases/040_packages/002_bpftrace/test.yml diff --git a/test/cases/040_packages/002_bpftrace/check.sh b/test/cases/040_packages/002_bpftrace/check.sh new file mode 100644 index 000000000..89dea9cd5 --- /dev/null +++ b/test/cases/040_packages/002_bpftrace/check.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +nsenter -t1 -m -- /usr/bin/bpftrace -l +if [ "$?" -ne "0" ]; then + printf "bpftrace test suite FAILED\n" >&1 + exit 1 +fi; + +printf "bpftrace test suite PASSED\n" >&1 \ No newline at end of file diff --git a/test/cases/040_packages/002_bpftrace/test.sh b/test/cases/040_packages/002_bpftrace/test.sh new file mode 100644 index 000000000..a45574d55 --- /dev/null +++ b/test/cases/040_packages/002_bpftrace/test.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# SUMMARY: Check that the bpftrace package works +# REPEAT: + +set -e + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" +NAME=bpftrace + +clean_up() { + rm -rf ${NAME}-* +} +trap clean_up EXIT + +# Test code goes here +linuxkit build -format kernel+initrd -name "${NAME}" test.yml +RESULT="$(linuxkit run ${NAME})" +echo "${RESULT}" +echo "${RESULT}" | grep -q "suite PASSED" + +exit 0 diff --git a/test/cases/040_packages/002_bpftrace/test.yml b/test/cases/040_packages/002_bpftrace/test.yml new file mode 100644 index 000000000..9fd303ae6 --- /dev/null +++ b/test/cases/040_packages/002_bpftrace/test.yml @@ -0,0 +1,29 @@ +kernel: + image: linuxkit/kernel:4.14.86 + cmdline: "console=ttyS0 console=ttyAMA0" +init: + - linuxkit/init:v0.5 + - linuxkit/runc:v0.5 + - linuxkit/bpftrace:67b5c3b4f13a4acf22eab8f422091e1efc06852d +onboot: + - name: bpftrace-test + image: alpine:3.8 + binds: + - /check.sh:/check.sh + command: ["sh", "./check.sh"] + pid: host + net: host + ipc: host + capabilities: + - all + - name: poweroff + image: linuxkit/poweroff:2687ed712690766b8156a77ac600005b532d2c7d + command: ["/bin/sh", "/poweroff.sh", "10"] +files: + - path: check.sh + source: ./check.sh +trust: + org: + - linuxkit + image: + - alpine:3.8 \ No newline at end of file