diff --git a/packages/acpica/Containerfile b/packages/acpica/Containerfile index b098932..3fa7d3b 100644 --- a/packages/acpica/Containerfile +++ b/packages/acpica/Containerfile @@ -18,6 +18,7 @@ COPY --from=stagex/flex . / COPY --from=stagex/m4 . / RUN tar -xf ${SRC_FILE} WORKDIR /acpica-unix-${VERSION} +ENV SOURCE_DATE_EPOCH=1 ENV LDFLAGS="-Wl,-z,pack-relative-relocs" RUN --network=none make NOWERROR=TRUE -j "$(nproc)" diff --git a/packages/lld/Containerfile b/packages/lld/Containerfile index f2c60d7..dc95c98 100644 --- a/packages/lld/Containerfile +++ b/packages/lld/Containerfile @@ -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 diff --git a/packages/zig/Containerfile b/packages/zig/Containerfile index b14ad85..e7c4f9f 100644 --- a/packages/zig/Containerfile +++ b/packages/zig/Containerfile @@ -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 diff --git a/packages/zig/fix-pie-support-detection.patch b/packages/zig/fix-pie-support-detection.patch new file mode 100644 index 0000000..ce052d8 --- /dev/null +++ b/packages/zig/fix-pie-support-detection.patch @@ -0,0 +1,29 @@ +From e2e5ea36f681f0b563b728782c2211fe92374709 Mon Sep 17 00:00:00 2001 +From: Jan200101 +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__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() + + diff --git a/src/macros.mk b/src/macros.mk index c229f6a..1a01498 100644 --- a/src/macros.mk +++ b/src/macros.mk @@ -123,7 +123,7 @@ define build $(CHECK_FLAG) \ -f packages/$(NAME)/Containerfile \ packages/$(NAME) \ - | tar -C out/$(NAME) -x \ + | tar -C out/$(NAME) -mx \ ) \ ) $(eval TIMESTAMP := $(shell TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ"))