-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathgenerator.Dockerfile
More file actions
55 lines (44 loc) · 2.09 KB
/
Copy pathgenerator.Dockerfile
File metadata and controls
55 lines (44 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
FROM golang:1.27.0-alpine@sha256:4c9fe60190a2a3350ddc51de80d0224b8a6698d12bdfc999fee45ea9d6c46dbc AS base
FROM base AS dist
WORKDIR /src
ENV PROTOC_VERSION=32.0
ENV PROTOC_X86_64_SHA256="7ca037bfe5e5cabd4255ccd21dd265f79eb82d3c010117994f5dc81d2140ee88"
ENV PROTOC_AARCH_64_SHA256="56af3fc2e43a0230802e6fadb621d890ba506c5c17a1ae1070f685fe79ba12d0"
ARG TARGETARCH
RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories
RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk add clang22 llvm22 wget unzip curl make bash git
RUN apk cache purge
COPY internal/tools/generator/ internal/tools/generator/
# Install protoc
# Deal with the arm64==aarch64 ambiguity
RUN if [ "$TARGETARCH" = "arm64" ]; then \
curl -qL https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-aarch_64.zip -o protoc.zip; \
echo "${PROTOC_AARCH_64_SHA256} protoc.zip" > protoc.zip.sha256 ; \
else \
curl -qL https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip -o protoc.zip; \
echo "${PROTOC_X86_64_SHA256} protoc.zip" > protoc.zip.sha256 ; \
fi; \
sha256sum -c protoc.zip.sha256 \
&& unzip protoc.zip -d /usr/local \
&& rm protoc.zip
# Install protoc-gen-go, protoc-gen-go-grpc, and eBPF tools.
RUN --mount=type=cache,target=/go/pkg \
cd internal/tools/generator \
&& go build -o /go/bin/protoc-gen-go google.golang.org/protobuf/cmd/protoc-gen-go \
&& go build -o /go/bin/protoc-gen-go-grpc google.golang.org/grpc/cmd/protoc-gen-go-grpc \
&& go build -o /go/bin/bpf2go github.com/cilium/ebpf/cmd/bpf2go \
&& protoc --version \
&& /go/bin/protoc-gen-go --version \
&& /go/bin/protoc-gen-go-grpc --version
RUN cat <<EOF > /generate.sh
#!/bin/sh
export PATH="/usr/lib/llvm22/bin:\$PATH"
export BPF2GO=/go/bin/bpf2go
export BPF_CLANG=clang-22
export BPF_CFLAGS="-O2 -g -Wall -Werror"
export GOCACHE=/tmp/go-build
make generate
EOF
RUN chmod +x /generate.sh
ENTRYPOINT ["/generate.sh"]