From c621ea261f2d64f1eee53fbb578620442b0f7d42 Mon Sep 17 00:00:00 2001 From: Fernandez Date: Tue, 18 Aug 2026 15:07:03 +0800 Subject: [PATCH] fix(build): enable parallel openssl compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 透传 GNU Make jobserver 到 OpenSSL 递归构建 - 保留 SOURCE_DATE_EPOCH 以维持可复现构建 - Sophon BM1688 容器实测并发峰值为 27 Signed-off-by: Fernandez --- cmake/openssl.cmake | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cmake/openssl.cmake b/cmake/openssl.cmake index 65b18546d..437135fd0 100644 --- a/cmake/openssl.cmake +++ b/cmake/openssl.cmake @@ -20,6 +20,9 @@ set(OPENSSL_REPRODUCIBLE_ENV ${CMAKE_COMMAND} -E env SOURCE_DATE_EPOCH=${COSMO_REPRODUCIBLE_BUILD_EPOCH} ) +set(OPENSSL_REPRODUCIBLE_MAKE_ARGS + SOURCE_DATE_EPOCH=${COSMO_REPRODUCIBLE_BUILD_EPOCH} +) if(COSMO_TARGET_ARCH STREQUAL "x86_64") set(OPENSSL_SOURCE_DIR ${CMAKE_BINARY_DIR}/openssl_source) @@ -66,9 +69,12 @@ ExternalProject_Add( CONFIGURE_COMMAND ${OPENSSL_REPRODUCIBLE_ENV} ${OPENSSL_CONFIGURE_COMMAND} - BUILD_COMMAND ${OPENSSL_REPRODUCIBLE_ENV} ${CMAKE_MAKE_PROGRAM} - INSTALL_COMMAND ${OPENSSL_REPRODUCIBLE_ENV} - ${CMAKE_MAKE_PROGRAM} install_sw + # Keep $(MAKE) literal so the generated parent recipe forwards GNU Make's + # jobserver to OpenSSL's recursive _build_sw invocation. Passing the epoch + # as a make variable preserves the reproducible-build environment without + # inserting a process wrapper that closes the jobserver file descriptors. + BUILD_COMMAND $(MAKE) ${OPENSSL_REPRODUCIBLE_MAKE_ARGS} + INSTALL_COMMAND $(MAKE) ${OPENSSL_REPRODUCIBLE_MAKE_ARGS} install_sw UPDATE_COMMAND "" BUILD_ALWAYS OFF