From a8047d3b122d69e8074a477c6b93f966fa77d3bc Mon Sep 17 00:00:00 2001 From: crueter Date: Tue, 2 Jun 2026 07:02:31 +0200 Subject: [PATCH] [cmake] Fix OpenSSL flaky build by using a CMake script (#4047) Something weird is happening with the CI that causes frequent build errors. For reasons I am not entirely certain of, Ninja fails to properly spawn a POSIX shell instance during the Make phase. More investigation is in order, but for now fix it with the grand power of shelling out to CMake script Signed-off-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4047 Reviewed-by: Lizzie --- .../0004-use-shell-wrapper.patch | 39 +++++++++++++++++++ cpmfile.json | 3 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 .patch/openssl-cmake/0004-use-shell-wrapper.patch diff --git a/.patch/openssl-cmake/0004-use-shell-wrapper.patch b/.patch/openssl-cmake/0004-use-shell-wrapper.patch new file mode 100644 index 0000000000..76a19644df --- /dev/null +++ b/.patch/openssl-cmake/0004-use-shell-wrapper.patch @@ -0,0 +1,39 @@ +--- a/CMakeLists.txt 2026-06-01 23:53:16.498043856 -0400 ++++ b/CMakeLists.txt 2026-06-01 23:53:23.910543615 -0400 +@@ -312,13 +312,29 @@ + ${OPENSSL_SHARED_CRYPTO_LIBRARY} + ${OPENSSL_SHARED_SSL_LIBRARY} + ) +-add_custom_command( +- OUTPUT ${OPENSSL_BUILD_OUTPUT} +- COMMAND ${OPENSSL_BUILD_COMMAND} +- DEPENDS ${OPENSSL_SOURCES} +- WORKING_DIRECTORY ${OpenSSL_BINARY_DIR} +- VERBATIM +-) ++if (WIN32) ++ add_custom_command( ++ OUTPUT ${OPENSSL_BUILD_OUTPUT} ++ COMMAND ${OPENSSL_BUILD_COMMAND} ++ DEPENDS ${OPENSSL_SOURCES} ++ WORKING_DIRECTORY ${OpenSSL_BINARY_DIR} ++ VERBATIM) ++else() ++ set(_openssl_build_script "${CMAKE_CURRENT_BINARY_DIR}/BuildOpenSSL.cmake") ++ file(WRITE ${_openssl_build_script} ++ "execute_process(\n" ++ " COMMAND ${OPENSSL_BUILD_COMMAND}\n" ++ " WORKING_DIRECTORY ${OpenSSL_BINARY_DIR}\n" ++ " RESULT_VARIABLE _r)\n" ++ "if(_r)\n" ++ " message(FATAL_ERROR \"OpenSSL build failed: \${_r}\")\n" ++ "endif()\n") ++ add_custom_command( ++ OUTPUT ${OPENSSL_BUILD_OUTPUT} ++ COMMAND ${CMAKE_COMMAND} -P ${_openssl_build_script} ++ DEPENDS ${OPENSSL_SOURCES} ++ VERBATIM) ++endif() + + if(PROJECT_IS_TOP_LEVEL) + add_custom_target(openssl-build ALL DEPENDS ${OPENSSL_BUILD_OUTPUT}) diff --git a/cpmfile.json b/cpmfile.json index fdcf4b60d5..48201e627d 100644 --- a/cpmfile.json +++ b/cpmfile.json @@ -19,7 +19,8 @@ "patches": [ "0001-cpmutil-compat.patch", "0002-use-ccache.patch", - "0003-use-cmake-compiler-flags.patch" + "0003-use-cmake-compiler-flags.patch", + "0004-use-shell-wrapper.patch" ] }, "openssl": {