fix: zig working reproducible build
This commit is contained in:
parent
5ff260d30a
commit
a97873e219
3 changed files with 67 additions and 21 deletions
|
@ -1,6 +1,6 @@
|
|||
FROM scratch AS base
|
||||
ENV VERSION=16.0.6
|
||||
ENV SRC_HASH=ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e
|
||||
ENV VERSION=18.1.8
|
||||
ENV SRC_HASH=0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a
|
||||
ENV SRC_FILE=llvm-project-${VERSION}.src.tar.xz
|
||||
ENV SRC_SITE=https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/${SRC_FILE}
|
||||
|
||||
|
@ -18,24 +18,33 @@ COPY --from=stagex/python . /
|
|||
COPY --from=stagex/py-setuptools . /
|
||||
COPY --from=stagex/openssl . /
|
||||
COPY --from=stagex/gcc . /
|
||||
COPY --from=stagex/llvm16 . /
|
||||
COPY --from=stagex/clang . /
|
||||
COPY --from=stagex/llvm . /
|
||||
COPY --from=stagex/zlib . /
|
||||
# HACK: figure out why gcc package puts these in the wrong path at install time
|
||||
COPY --from=stagex/gcc /usr/lib64/* /usr/lib/
|
||||
|
||||
RUN tar -xf ${SRC_FILE}
|
||||
WORKDIR /llvm-project-${VERSION}.src
|
||||
RUN set -eux; \
|
||||
cmake \
|
||||
-S lld \
|
||||
-B build \
|
||||
-G Ninja \
|
||||
-Wno-dev \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/ \
|
||||
-DCMAKE_INSTALL_RPATH=/usr/ \
|
||||
-DLLVM_ENABLE_ZLIB=FORCE_ON; \
|
||||
cmake --build build
|
||||
RUN <<-EOF
|
||||
set -eux
|
||||
CFLAGS="-O2 -DNDEBUG -g1" \
|
||||
CXXFLAGS="-O2 -DNDEBUG -g1" \
|
||||
CC=clang \
|
||||
CXX=clang++ \
|
||||
cmake \
|
||||
-S lld \
|
||||
-B build \
|
||||
-G Ninja \
|
||||
-Wno-dev \
|
||||
-DCMAKE_BUILD_TYPE=None \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/ \
|
||||
-DCMAKE_SKIP_INSTALL_RPATH=ON \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DLLVM_EXTERNAL_LIT=/usr/lib/llvm18/bin/lit \
|
||||
-DLLVM_INCLUDE_TESTS=OFF \
|
||||
-DLLD_BUILT_STANDALONE=ON \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-z,stack-size=2097152"
|
||||
cmake --build build
|
||||
EOF
|
||||
|
||||
FROM build AS install
|
||||
RUN --network=none DESTDIR="/rootfs" cmake --install build
|
||||
|
|
|
@ -20,17 +20,25 @@ COPY --from=stagex/make . /
|
|||
COPY --from=stagex/musl . /
|
||||
COPY --from=stagex/openssl . /
|
||||
COPY --from=stagex/zlib . /
|
||||
COPY --from=stagex/ninja . /
|
||||
|
||||
RUN --network=none tar -xf ${SRC_FILE}
|
||||
WORKDIR /zig-${VERSION}
|
||||
ADD *.patch .
|
||||
RUN --network=none <<-EOF
|
||||
set -eux
|
||||
cmake -Bbuild \
|
||||
patch -p1 < fix-pie-support-detection.patch
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH=/usr \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_BUILD_TYPE=None \
|
||||
-DZIG_STATIC=ON \
|
||||
-DZIG_TARGET_TRIPLE=native-linux-musl \
|
||||
-DZIG_TARGET_MCPU=baseline
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DZIG_PIE=ON \
|
||||
-DZIG_VERSION="${VERSION}" \
|
||||
-DZIG_SHARED_LLVM=ON \
|
||||
-DZIG_USE_LLVM_CONFIG=ON \
|
||||
-DZIG_TARGET_MCPU=baseline \
|
||||
-DZIG_TARGET_TRIPLE=native-linux.6.1-musl
|
||||
cmake --build build
|
||||
EOF
|
||||
|
||||
|
|
29
packages/zig/fix-pie-support-detection.patch
Normal file
29
packages/zig/fix-pie-support-detection.patch
Normal file
|
@ -0,0 +1,29 @@
|
|||
From e2e5ea36f681f0b563b728782c2211fe92374709 Mon Sep 17 00:00:00 2001
|
||||
From: Jan200101 <sentrycraft123@gmail.com>
|
||||
Date: Sun, 26 May 2024 15:13:33 +0200
|
||||
Subject: [PATCH] cmake: correct PIE support detection, add error output for
|
||||
debugging `check_pie_supported` only uses the `OUTPUT_VARIABLE` to to signify
|
||||
errors if PIE is actually supported is signaled by
|
||||
`CMAKE_<lang>_LINK_PIE_SUPPORTED`.
|
||||
|
||||
Checking if `OUTPUT_VARIABLE` is empty is not enough either since the check
|
||||
is bypassed if its results are cached but the output variable is not cached.
|
||||
---
|
||||
CMakeLists.txt | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2daff370fb36..4ed5f001470d 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -125,8 +125,8 @@ check_pie_supported(
|
||||
OUTPUT_VARIABLE ZIG_PIE_SUPPORTED_BY_CMAKE
|
||||
LANGUAGES C CXX
|
||||
)
|
||||
-if(ZIG_PIE AND NOT ZIG_PIE_SUPPORTED_BY_CMAKE)
|
||||
- message(SEND_ERROR "ZIG_PIE was requested but CMake does not support it for \"zigcpp\" target")
|
||||
+if(ZIG_PIE AND NOT CMAKE_CXX_LINK_PIE_SUPPORTED)
|
||||
+ message(SEND_ERROR "ZIG_PIE was requested but CMake does not support it for \"zigcpp\" target: ${ZIG_PIE_SUPPORTED_BY_CMAKE}")
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in a new issue