From 166c3cea79cca5ac801ae17be93381f7a2247313 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:42:12 -0500 Subject: [PATCH 01/14] add actions workflow --- .github/workflows/build.yml | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b236fea --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,46 @@ +name: Build Snoopy + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.17 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ + libllvm12 llvm-12-dev libclang-12-dev python3 zlib1g-dev libelf-dev libfl-dev \ + python3-setuptools liblzma-dev + + - name: Install BCC + run: | + git clone https://github.com/iovisor/bcc.git + mkdir bcc/build + cd bcc/build + cmake .. + make + sudo make install + cd ../.. + + - name: Build Snoopy + run: go build -v -o snoopy + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: snoopy + path: snoopy From 1e8bca0d3737e523f4fb1833289638bfe3d71fd8 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:43:28 -0500 Subject: [PATCH 02/14] fix --- .github/workflows/build.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b236fea..5354aee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,19 +28,23 @@ jobs: - name: Install BCC run: | - git clone https://github.com/iovisor/bcc.git - mkdir bcc/build - cd bcc/build - cmake .. - make - sudo make install - cd ../.. + sudo apt-get install -y software-properties-common + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD + echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list + sudo apt-get update + sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r) + + - name: Install specific gobpf version + run: go get github.com/iovisor/gobpf@v0.2.0 + + - name: Update go.mod + run: go mod tidy - name: Build Snoopy run: go build -v -o snoopy - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: snoopy path: snoopy From 32eeb83e5e76d7c64e1dc70218796085df82903a Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:45:05 -0500 Subject: [PATCH 03/14] fix --- .github/workflows/build.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5354aee..e1be188 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,16 +23,21 @@ jobs: run: | sudo apt-get update sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ - libllvm12 llvm-12-dev libclang-12-dev python3 zlib1g-dev libelf-dev libfl-dev \ - python3-setuptools liblzma-dev + libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev \ + python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf - name: Install BCC run: | - sudo apt-get install -y software-properties-common - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD - echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list - sudo apt-get update - sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r) + git clone https://github.com/iovisor/bcc.git + mkdir bcc/build; cd bcc/build + cmake .. + make + sudo make install + cmake -DPYTHON_CMD=python3 .. # build python3 binding + pushd src/python/ + make + sudo make install + popd - name: Install specific gobpf version run: go get github.com/iovisor/gobpf@v0.2.0 From 59a3ce6b87340bb6cb1b380d4e98756c61ef9988 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:48:06 -0500 Subject: [PATCH 04/14] simplify --- .github/workflows/build.yml | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1be188..be46133 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,38 +12,22 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: - go-version: 1.17 - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ - libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev \ - python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf + go-version: '1.21' - name: Install BCC run: | - git clone https://github.com/iovisor/bcc.git - mkdir bcc/build; cd bcc/build - cmake .. - make - sudo make install - cmake -DPYTHON_CMD=python3 .. # build python3 binding - pushd src/python/ - make - sudo make install - popd + sudo apt-get update + sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r) - name: Install specific gobpf version - run: go get github.com/iovisor/gobpf@v0.2.0 - - - name: Update go.mod - run: go mod tidy + run: | + go get github.com/iovisor/gobpf@v0.2.0 + go mod tidy - name: Build Snoopy run: go build -v -o snoopy @@ -52,4 +36,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: snoopy - path: snoopy + path: snoopy \ No newline at end of file From 5e62dee41570c7fd4ad12cd248971c1d57e6d31b Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:49:22 -0500 Subject: [PATCH 05/14] simplify --- .github/workflows/build.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index be46133..2da31ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,19 @@ jobs: - name: Install BCC run: | sudo apt-get update - sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r) + sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ + libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev \ + python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf + git clone https://github.com/iovisor/bcc.git + mkdir bcc/build; cd bcc/build + cmake .. + make + sudo make install + cmake -DPYTHON_CMD=python3 .. # build python3 binding + pushd src/python/ + make + sudo make install + popd - name: Install specific gobpf version run: | @@ -36,4 +48,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: snoopy - path: snoopy \ No newline at end of file + path: snoopy From ab6d4268928e3536b4c05e3ddfe951d0f70fb8c2 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:51:32 -0500 Subject: [PATCH 06/14] test --- .github/workflows/build.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2da31ff..11a7f62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,19 +12,22 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v2 - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v2 with: - go-version: '1.21' + go-version: 1.17 - - name: Install BCC + - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev \ python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf + + - name: Install BCC + run: | git clone https://github.com/iovisor/bcc.git mkdir bcc/build; cd bcc/build cmake .. @@ -37,9 +40,10 @@ jobs: popd - name: Install specific gobpf version - run: | - go get github.com/iovisor/gobpf@v0.2.0 - go mod tidy + run: go get github.com/iovisor/gobpf@v0.2.0 + + - name: Update go.mod + run: go mod tidy - name: Build Snoopy run: go build -v -o snoopy @@ -48,4 +52,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: snoopy - path: snoopy + path: snoopy \ No newline at end of file From c76da8547f0ad982c67aa9a97e468cddf36f0641 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 17:53:48 -0500 Subject: [PATCH 07/14] 13 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 11a7f62..3c74cec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ - libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev \ + libllvm13 llvm-13-dev libclang-13-dev python3 zlib1g-dev libelf-dev libfl-dev \ python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf - name: Install BCC @@ -52,4 +52,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: snoopy - path: snoopy \ No newline at end of file + path: snoopy From 9fb375d8cb535df838555c47c1695475f46899a2 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 18:00:37 -0500 Subject: [PATCH 08/14] 13 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3c74cec..611975b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.20 - name: Install dependencies run: | From ef818e10c493b841b8015aae65cb2467d797ee3f Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 18:03:52 -0500 Subject: [PATCH 09/14] go --- .github/workflows/build.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 611975b..35b8ec2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,9 +15,9 @@ jobs: - uses: actions/checkout@v2 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v4 with: - go-version: 1.20 + go-version: '1.20' - name: Install dependencies run: | @@ -26,7 +26,15 @@ jobs: libllvm13 llvm-13-dev libclang-13-dev python3 zlib1g-dev libelf-dev libfl-dev \ python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf + - name: Cache BCC + id: cache-bcc + uses: actions/cache@v2 + with: + path: /usr/local/lib/python3.*/dist-packages/bcc + key: ${{ runner.os }}-bcc-${{ hashFiles('**/bcc_version.txt') }} + - name: Install BCC + if: steps.cache-bcc.outputs.cache-hit != 'true' run: | git clone https://github.com/iovisor/bcc.git mkdir bcc/build; cd bcc/build @@ -38,6 +46,7 @@ jobs: make sudo make install popd + echo $(git -C bcc rev-parse HEAD) > bcc_version.txt - name: Install specific gobpf version run: go get github.com/iovisor/gobpf@v0.2.0 From db0389aba2a7838ec536b17fdec35a954a1b1874 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 18:13:17 -0500 Subject: [PATCH 10/14] go --- .github/workflows/build.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 35b8ec2..2a3a953 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,19 +34,9 @@ jobs: key: ${{ runner.os }}-bcc-${{ hashFiles('**/bcc_version.txt') }} - name: Install BCC - if: steps.cache-bcc.outputs.cache-hit != 'true' run: | - git clone https://github.com/iovisor/bcc.git - mkdir bcc/build; cd bcc/build - cmake .. - make - sudo make install - cmake -DPYTHON_CMD=python3 .. # build python3 binding - pushd src/python/ - make - sudo make install - popd - echo $(git -C bcc rev-parse HEAD) > bcc_version.txt + sudo apt-get update + sudo apt-get install -y bcc=0.16.17-3.3 - name: Install specific gobpf version run: go get github.com/iovisor/gobpf@v0.2.0 From e753272551b9919e424f43e3a2faf63bc2c5886b Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 23:29:00 -0500 Subject: [PATCH 11/14] build --- .github/workflows/build.yml | 61 ++++++++++++++++++++++++------------- Dockerfile | 61 +++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 22 deletions(-) create mode 100644 Dockerfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a3a953..c73df7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,40 +9,57 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.20' - - - name: Install dependencies + - name: Install essential packages and kernel headers run: | sudo apt-get update - sudo apt-get install -y bison build-essential cmake flex git libedit-dev \ - libllvm13 llvm-13-dev libclang-13-dev python3 zlib1g-dev libelf-dev libfl-dev \ - python3-setuptools liblzma-dev libdebuginfod-dev arping netperf iperf + sudo apt-get install -y \ + bison \ + build-essential \ + cmake \ + flex \ + git \ + libedit-dev \ + libllvm14 \ + llvm-14-dev \ + libclang-14-dev \ + python3 \ + zlib1g-dev \ + libelf-dev \ + libfl-dev \ + python3-setuptools \ + liblzma-dev \ + libdebuginfod-dev \ + arping \ + netperf \ + iperf \ + wget \ + curl \ + kmod \ + linux-headers-generic - - name: Cache BCC - id: cache-bcc - uses: actions/cache@v2 + - name: Set up Go + uses: actions/setup-go@v4 with: - path: /usr/local/lib/python3.*/dist-packages/bcc - key: ${{ runner.os }}-bcc-${{ hashFiles('**/bcc_version.txt') }} + go-version: '1.20.5' - name: Install BCC run: | sudo apt-get update - sudo apt-get install -y bcc=0.16.17-3.3 - - - name: Install specific gobpf version - run: go get github.com/iovisor/gobpf@v0.2.0 + sudo apt-get install -y \ + bpfcc-tools \ + libbpfcc \ + libbpfcc-dev - - name: Update go.mod - run: go mod tidy + - name: Set up kernel headers + run: | + sudo apt-get update + sudo apt-get install -y linux-headers-$(uname -r) + sudo ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build - name: Build Snoopy run: go build -v -o snoopy diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2cc0a02 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,61 @@ +# Use a multi-arch base image +FROM --platform=$BUILDPLATFORM ubuntu:22.04 + +# Install essential packages and kernel headers +RUN apt-get update && apt-get install -y \ + bison \ + build-essential \ + cmake \ + flex \ + git \ + libedit-dev \ + libllvm14 \ + llvm-14-dev \ + libclang-14-dev \ + python3 \ + zlib1g-dev \ + libelf-dev \ + libfl-dev \ + python3-setuptools \ + liblzma-dev \ + libdebuginfod-dev \ + arping \ + netperf \ + iperf \ + wget \ + curl \ + kmod \ + linux-headers-generic \ + && rm -rf /var/lib/apt/lists/* + +# Install Go (architecture-independent method) +RUN curl -L https://go.dev/dl/go1.20.5.linux-$(dpkg --print-architecture).tar.gz | tar -C /usr/local -xzf - + +# Set Go environment variables +ENV PATH="/usr/local/go/bin:${PATH}" +ENV GOPATH="/go" +ENV PATH="${GOPATH}/bin:${PATH}" + +# Install BCC +RUN apt-get update && apt-get install -y \ + bpfcc-tools \ + libbpfcc \ + libbpfcc-dev \ + && rm -rf /var/lib/apt/lists/* + +# Set up kernel headers +RUN apt-get update && apt-get install -y linux-headers-$(uname -r) \ + && ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build \ + && rm -rf /var/lib/apt/lists/* + +# Set the working directory in the container +WORKDIR /app + +# Copy the current directory contents into the container at /app +COPY . . + +# Build the Go application +RUN go build -o snoopy + +# Command to run the executable +CMD ["./snoopy"] From 1e6e59cec41e2a2e3f6d935609b375dc93dbb6e0 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 23:35:02 -0500 Subject: [PATCH 12/14] arm --- .github/workflows/build.yml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c73df7a..d2ed1b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,13 +7,18 @@ on: branches: [ main ] jobs: - build: runs-on: ubuntu-22.04 + strategy: + matrix: + arch: [amd64, arm64] steps: - uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Install essential packages and kernel headers run: | sudo apt-get update @@ -40,7 +45,8 @@ jobs: wget \ curl \ kmod \ - linux-headers-generic + linux-headers-generic \ + gcc-aarch64-linux-gnu - name: Set up Go uses: actions/setup-go@v4 @@ -62,10 +68,18 @@ jobs: sudo ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build - name: Build Snoopy - run: go build -v -o snoopy + env: + GOARCH: ${{ matrix.arch }} + CGO_ENABLED: 1 + run: | + if [ "${{ matrix.arch }}" = "arm64" ]; then + CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOARCH=arm64 go build -v -o snoopy-arm64 + else + go build -v -o snoopy-amd64 + fi - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: snoopy - path: snoopy + name: snoopy-${{ matrix.arch }} + path: snoopy-${{ matrix.arch }} From 86db4e750e413d8b74aa8f3a510ad679e72662fb Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 23:38:17 -0500 Subject: [PATCH 13/14] arm --- .github/workflows/build.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d2ed1b5..777902e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,10 +56,17 @@ jobs: - name: Install BCC run: | sudo apt-get update - sudo apt-get install -y \ - bpfcc-tools \ - libbpfcc \ - libbpfcc-dev + if [ "${{ matrix.arch }}" = "arm64" ]; then + sudo apt-get install -y \ + bpfcc-tools:arm64 \ + libbpfcc:arm64 \ + libbpfcc-dev:arm64 + else + sudo apt-get install -y \ + bpfcc-tools \ + libbpfcc \ + libbpfcc-dev + fi - name: Set up kernel headers run: | From edcb5dc0e5ecc384218bb367699cc006282b2e11 Mon Sep 17 00:00:00 2001 From: tks98 Date: Fri, 18 Oct 2024 23:42:51 -0500 Subject: [PATCH 14/14] arm --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 777902e..64a0a8d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,14 +56,15 @@ jobs: - name: Install BCC run: | sudo apt-get update + sudo apt-get install -y bpfcc-tools if [ "${{ matrix.arch }}" = "arm64" ]; then + sudo dpkg --add-architecture arm64 + sudo apt-get update sudo apt-get install -y \ - bpfcc-tools:arm64 \ libbpfcc:arm64 \ libbpfcc-dev:arm64 else sudo apt-get install -y \ - bpfcc-tools \ libbpfcc \ libbpfcc-dev fi