Files
sliverarmory-reflektor/testdata/docker/linux-bof.Dockerfile

63 lines
2.0 KiB
Docker

ARG GO_VERSION=1.26.6
ARG ZIG_VERSION=0.14.0
ARG RUST_VERSION=1.94.0
FROM --platform=$TARGETPLATFORM golang:${GO_VERSION}-bookworm
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG ZIG_VERSION
ARG RUST_VERSION
ENV DEBIAN_FRONTEND=noninteractive
ENV CARGO_HOME=/opt/reflektor-cargo
ENV RUSTUP_HOME=/opt/reflektor-rustup
ENV PATH=/opt/reflektor-cargo/bin:${PATH}
RUN test "${TARGETOS}/${TARGETARCH}/${TARGETVARIANT}" = "linux/arm/v7"
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
xz-utils \
file \
binutils \
libcurl4-openssl-dev \
&& rm -rf /var/lib/apt/lists/*
# CGO-free PureGo binaries still carry Go's generic ARM EABI interpreter path.
# Debian armhf names the same loader explicitly, so preserve the generic path
# when the base image does not already provide its compatibility symlink.
RUN test -e /lib/ld-linux-armhf.so.3 \
&& if [ ! -e /lib/ld-linux.so.3 ]; then ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3; fi
RUN curl -fsSL "https://ziglang.org/download/${ZIG_VERSION}/zig-linux-armv7a-${ZIG_VERSION}.tar.xz" -o /tmp/zig.tar.xz \
&& tar -xJf /tmp/zig.tar.xz -C /opt \
&& ln -sf "/opt/zig-linux-armv7a-${ZIG_VERSION}/zig" /usr/local/bin/zig \
&& zig version
RUN curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs -o /tmp/rustup-init.sh \
&& sh /tmp/rustup-init.sh -y --profile minimal \
--default-host armv7-unknown-linux-gnueabihf \
--default-toolchain "${RUST_VERSION}" \
&& rm -f /tmp/rustup-init.sh \
&& rustc --version \
&& cargo --version
WORKDIR /workspace
ENV CGO_ENABLED=0
ENV GOARM=7
ENV GOCACHE=/tmp/go-build-cache
ENV GOMODCACHE=/opt/go-mod-cache
ENV GOPROXY=off
ENV GOTOOLCHAIN=local
ENV REFLEKTOR_BOF_FIXTURE_DIR=/workspace/test/bof-fixtures
ENV REFLEKTOR_BOF_CORPUS_DIR=/workspace/test/corpus/Situational-Awareness-BOFs
COPY go.mod go.sum ./
RUN GOPROXY=https://proxy.golang.org go mod download
COPY . /workspace
CMD ["/bin/bash", "/workspace/testdata/docker/run-linux-bof-tests.sh"]