From 00c1d8c0ef913681186171d6a16f8f8f6c0503ea Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Thu, 9 Jun 2022 10:41:46 +0300 Subject: [PATCH] Add Capstone to AArch64 cross-compilation target --- Dockerfile | 6 +++--- devops/install-capstone.sh | 2 +- .../Dockerfile | 7 +++++++ devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh | 4 ++++ devops/linux-arm64-musl-go-libpcap/build-push.sh | 4 ---- .../Dockerfile | 8 ++++++++ .../linux-x86_64-musl-go-libpcap-capstone/build-push.sh | 4 ++++ devops/linux-x86_64-musl-go-libpcap/build-push.sh | 4 ---- 8 files changed, 27 insertions(+), 12 deletions(-) rename devops/{linux-arm64-musl-go-libpcap => linux-arm64-musl-go-libpcap-capstone}/Dockerfile (75%) create mode 100755 devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh delete mode 100755 devops/linux-arm64-musl-go-libpcap/build-push.sh rename devops/{linux-x86_64-musl-go-libpcap => linux-x86_64-musl-go-libpcap-capstone}/Dockerfile (85%) create mode 100755 devops/linux-x86_64-musl-go-libpcap-capstone/build-push.sh delete mode 100755 devops/linux-x86_64-musl-go-libpcap/build-push.sh diff --git a/Dockerfile b/Dockerfile index 4141655aa..f09650430 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ RUN npm run build ### Base builder image for native builds architecture FROM golang:1.17-alpine AS builder-native-base ENV CGO_ENABLED=1 GOOS=linux -RUN apk add --no-cache libpcap-dev g++ perl-utils git build-base bash +RUN apk add --no-cache libpcap-dev g++ perl-utils curl build-base bash COPY devops/install-capstone.sh . RUN ./install-capstone.sh @@ -41,9 +41,9 @@ ENV GOARCH=arm64 ### Builder image for x86-64 to AArch64 cross-compilation -FROM up9inc/linux-arm64-musl-go-libpcap AS builder-from-amd64-to-arm64v8 +FROM up9inc/linux-arm64-musl-go-libpcap-capstone AS builder-from-amd64-to-arm64v8 ENV CGO_ENABLED=1 GOOS=linux -ENV GOARCH=arm64 CGO_CFLAGS="-I/work/libpcap" +ENV GOARCH=arm64 CGO_CFLAGS="-I/work/libpcap -I/work/capstone/include" ### Builder image for AArch64 to x86-64 cross-compilation diff --git a/devops/install-capstone.sh b/devops/install-capstone.sh index bb36551b5..fb86fb977 100755 --- a/devops/install-capstone.sh +++ b/devops/install-capstone.sh @@ -8,5 +8,5 @@ fi curl https://github.com/aquynh/capstone/archive/4.0.2.tar.gz -Lo ./capstone.tar.gz \ && tar -xzf capstone.tar.gz && mv ./capstone-* ./capstone \ && cd capstone \ - && ./make.sh \ + && CAPSTONE_ARCHS="aarch64 x86" ./make.sh \ && $SUDO ./make.sh install diff --git a/devops/linux-arm64-musl-go-libpcap/Dockerfile b/devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile similarity index 75% rename from devops/linux-arm64-musl-go-libpcap/Dockerfile rename to devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile index 03f8fb7cf..f58f515ff 100644 --- a/devops/linux-arm64-musl-go-libpcap/Dockerfile +++ b/devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile @@ -17,4 +17,11 @@ RUN curl https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz -Lo ./libpcap.tar WORKDIR /work/libpcap RUN ./configure --host=arm && make \ && cp /work/libpcap/libpcap.a /usr/xcc/aarch64-linux-musl-cross/lib/gcc/aarch64-linux-musl/*/ +WORKDIR /work +# Build and install Capstone from source +RUN curl https://github.com/aquynh/capstone/archive/4.0.2.tar.gz -Lo ./capstone.tar.gz \ + && tar -xzf capstone.tar.gz && mv ./capstone-* ./capstone +WORKDIR /work/capstone +RUN CAPSTONE_ARCHS="aarch64" CAPSTONE_STATIC=yes ./make.sh \ +&& cp /work/capstone/libcapstone.a /usr/xcc/aarch64-linux-musl-cross/lib/gcc/aarch64-linux-musl/*/ diff --git a/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh b/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh new file mode 100755 index 000000000..1048c1d52 --- /dev/null +++ b/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +docker build . -t up9inc/linux-arm64-musl-go-libpcap-capstone && docker push up9inc/linux-arm64-musl-go-libpcap-capstone diff --git a/devops/linux-arm64-musl-go-libpcap/build-push.sh b/devops/linux-arm64-musl-go-libpcap/build-push.sh deleted file mode 100755 index 904cb40f4..000000000 --- a/devops/linux-arm64-musl-go-libpcap/build-push.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -e - -docker build . -t up9inc/linux-arm64-musl-go-libpcap && docker push up9inc/linux-arm64-musl-go-libpcap diff --git a/devops/linux-x86_64-musl-go-libpcap/Dockerfile b/devops/linux-x86_64-musl-go-libpcap-capstone/Dockerfile similarity index 85% rename from devops/linux-x86_64-musl-go-libpcap/Dockerfile rename to devops/linux-x86_64-musl-go-libpcap-capstone/Dockerfile index b82454453..fc7a40bd5 100644 --- a/devops/linux-x86_64-musl-go-libpcap/Dockerfile +++ b/devops/linux-x86_64-musl-go-libpcap-capstone/Dockerfile @@ -29,3 +29,11 @@ RUN curl https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz -Lo ./libpcap.tar WORKDIR /libpcap RUN ./configure --host=x86_64 && make \ && cp /libpcap/libpcap.a /usr/local/musl/lib/gcc/x86_64-unknown-linux-musl/*/ +WORKDIR / + +# Build and install Capstone from source +RUN curl https://github.com/aquynh/capstone/archive/4.0.2.tar.gz -Lo ./capstone.tar.gz \ + && tar -xzf capstone.tar.gz && mv ./capstone-* ./capstone +WORKDIR /work/capstone +RUN ./make.sh \ + && ./make.sh install diff --git a/devops/linux-x86_64-musl-go-libpcap-capstone/build-push.sh b/devops/linux-x86_64-musl-go-libpcap-capstone/build-push.sh new file mode 100755 index 000000000..565f36705 --- /dev/null +++ b/devops/linux-x86_64-musl-go-libpcap-capstone/build-push.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +docker build . -t up9inc/linux-x86_64-musl-go-libpcap-capstone && docker push up9inc/linux-x86_64-musl-go-libpcap-capstone diff --git a/devops/linux-x86_64-musl-go-libpcap/build-push.sh b/devops/linux-x86_64-musl-go-libpcap/build-push.sh deleted file mode 100755 index 725366a64..000000000 --- a/devops/linux-x86_64-musl-go-libpcap/build-push.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -e - -docker build . -t up9inc/linux-x86_64-musl-go-libpcap && docker push up9inc/linux-x86_64-musl-go-libpcap