-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.release-binaries
More file actions
67 lines (54 loc) · 1.92 KB
/
Dockerfile.release-binaries
File metadata and controls
67 lines (54 loc) · 1.92 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
56
57
58
59
60
61
62
63
64
65
66
67
# syntax=docker/dockerfile:1.7
FROM ubuntu:24.04 AS base
ARG DEBIAN_FRONTEND=noninteractive
ARG LLVM_VERSION=20
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common \
build-essential \
cmake \
ninja-build \
python3 \
git \
tar \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://apt.llvm.org/llvm.sh -o /tmp/llvm.sh \
&& chmod +x /tmp/llvm.sh \
&& /tmp/llvm.sh ${LLVM_VERSION} \
&& rm -f /tmp/llvm.sh \
&& apt-get update \
&& apt-get install -y --no-install-recommends libclang-${LLVM_VERSION}-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /repo
FROM base AS builder
COPY . /repo
RUN cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_DIR=/usr/lib/llvm-${LLVM_VERSION}/lib/cmake/llvm \
-DClang_DIR=/usr/lib/llvm-${LLVM_VERSION}/lib/cmake/clang \
-DCLANG_LINK_CLANG_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DUSE_SHARED_LIB=OFF \
&& cmake --build build -j"$(nproc)" \
&& ./build/stack_usage_analyzer --help >/dev/null
FROM builder AS packager
ARG VERSION=dev
ARG TARGETARCH
RUN set -eux; \
case "${TARGETARCH}" in \
amd64) arch_label="amd64" ;; \
arm64) arch_label="arm64" ;; \
*) echo "unsupported TARGETARCH: ${TARGETARCH}" >&2; exit 1 ;; \
esac; \
package_name="coretrace-stack-analyzer-${VERSION}-linux-${arch_label}"; \
mkdir -p "/out/${package_name}"; \
install -m 0755 /repo/build/stack_usage_analyzer "/out/${package_name}/stack_usage_analyzer"; \
install -m 0644 /repo/README.md "/out/${package_name}/README.md"; \
tar -C /out -czf "/out/${package_name}.tar.gz" "${package_name}"; \
(cd /out && sha256sum "${package_name}.tar.gz" > "${package_name}.tar.gz.sha256"); \
rm -rf "/out/${package_name}"
FROM scratch AS artifacts
COPY --from=packager /out/ /