From ba61019a50c93b0ebbe2792d3ad08095c03f632e Mon Sep 17 00:00:00 2001 From: Yaroslav Gurov <31506978+ygurov@users.noreply.github.com> Date: Thu, 28 May 2026 13:17:27 +0200 Subject: [PATCH] fix: enable bundled openssl for every platform except NE-based ones (#2660) * fix: enable bundled openssl for every platform except NE-based ones * fix(conan): trigger CI/CD on crutial cmake changes * fix: install dylibs/dlls from conan and use proper RPATH * fix: adjust windows runtime deps --- .github/workflows/deploy.yml | 3 +++ CMakeLists.txt | 4 ++-- client/CMakeLists.txt | 25 +++++++++++++++++++++++-- cmake/platform_settings.cmake | 9 +++++++-- service/server/CMakeLists.txt | 34 ++++++++++++++++++++++++++-------- 5 files changed, 61 insertions(+), 14 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ce05fbf22..2c566aacc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,6 +23,9 @@ jobs: - 'recipes/**' - 'conanfile.py' - '.github/workflows/deploy.yml' + - 'cmake/conan_provider.cmake' + - 'cmake/platform_settings.cmake' + - 'cmake/recipes_bootstrap.cmake' Bake-Prebuilts-Linux: runs-on: ubuntu-latest diff --git a/CMakeLists.txt b/CMakeLists.txt index 34d073a66..fe069964c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,9 @@ project(${PROJECT} VERSION ${AMNEZIAVPN_VERSION} HOMEPAGE_URL "https://amnezia.org/" ) +# trigger conan to kick off `conan install` globally +find_package(OpenSSL REQUIRED) if (PREBUILTS_ONLY) - # trigger conan to kick off `conan install` - find_package(OpenSSL REQUIRED) return() endif() diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ab7ed7c76..6bb069b5b 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -212,11 +212,32 @@ endif() install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_BINDIR} + RUNTIME_DEPENDENCY_SET client_deps COMPONENT AmneziaVPN ) -install(FILES $ - DESTINATION ${CMAKE_INSTALL_BINDIR} + +if(APPLE) + set(RUNTIME_DEPS_DIR ${CMAKE_INSTALL_BINDIR}/AmneziaVPN.app/Contents/Frameworks) +else() + set(RUNTIME_DEPS_DIR ${CMAKE_INSTALL_BINDIR}) +endif() + +install(RUNTIME_DEPENDENCY_SET client_deps + PRE_EXCLUDE_REGEXES + [[api-ms-win-.*]] + [[ext-ms-.*]] + [[kernel32\.dll]] + [[hvsifiletrust\.dll]] + [[libc\.so\..*]] [[libgcc_s\.so\..*]] [[libm\.so\..*]] [[libstdc\+\+\.so\..*]] + [[.*\.framework]] + [[^[Qq]t.*]] + POST_EXCLUDE_REGEXES + [[^.*[\\/]system32[\\/].*\.dll$]] + [[^/lib.*]] + [[^/usr/lib.*]] + DIRECTORIES ${CONAN_RUNTIME_LIB_DIRS} COMPONENT AmneziaVPN + DESTINATION "${RUNTIME_DEPS_DIR}" ) set(deploy_tool_options "") diff --git a/cmake/platform_settings.cmake b/cmake/platform_settings.cmake index ac3d8dcc1..ae619394c 100644 --- a/cmake/platform_settings.cmake +++ b/cmake/platform_settings.cmake @@ -20,8 +20,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android") set(_CONAN_INSTALL_ARGS "-c=tools.android:cmake_legacy_toolchain=false" "-c=tools.build:sharedlinkflags=['-Wl,-z,max-page-size=16384']" - "-c=tools.build:exelinkflags=['-Wl,-z,max-page-size=16384']" - "-o=openssl/*:shared=True") + "-c=tools.build:exelinkflags=['-Wl,-z,max-page-size=16384']") set(CMAKE_ANDROID_STL_TYPE "c++_shared" CACHE STRING "") endif() @@ -29,6 +28,12 @@ if (WIN32 OR APPLE) set(CMAKE_INSTALL_BINDIR ".") endif() +# Apple NE-based apps do not support any dylibs or variations +# So Qt would use the openssl bundled with system, not application +if (NOT(CMAKE_SYSTEM_NAME STREQUAL "iOS" OR (APPLE AND MACOS_NE))) + list(APPEND _CONAN_INSTALL_ARGS "-o=openssl/*:shared=True") +endif() + list(PREPEND _CONAN_INSTALL_ARGS "--build=missing") list(JOIN _CONAN_INSTALL_ARGS ";" _CONAN_INSTALL_ARGS_JOINED) set(CONAN_INSTALL_ARGS ${_CONAN_INSTALL_ARGS_JOINED} CACHE STRING "" FORCE) diff --git a/service/server/CMakeLists.txt b/service/server/CMakeLists.txt index b7d11f53b..0c802de22 100644 --- a/service/server/CMakeLists.txt +++ b/service/server/CMakeLists.txt @@ -316,12 +316,9 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") endif() if(APPLE) - if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - set_target_properties(${PROJECT} PROPERTIES - INSTALL_RPATH "@executable_path/../Frameworks" - BUILD_WITH_INSTALL_RPATH TRUE - ) - endif() + set_target_properties(${PROJECT} PROPERTIES + INSTALL_RPATH "@executable_path/../Frameworks" + ) find_library(FW_COREFOUNDATION CoreFoundation) find_library(FW_SYSTEMCONFIG SystemConfiguration) @@ -428,11 +425,32 @@ endif() # install target install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_BINDIR} + RUNTIME_DEPENDENCY_SET service_deps COMPONENT AmneziaVPN ) -install(FILES $ - DESTINATION ${CMAKE_INSTALL_BINDIR} + +if(APPLE) + set(RUNTIME_DEPS_DIR ${CMAKE_INSTALL_BINDIR}/../Frameworks) +else() + set(RUNTIME_DEPS_DIR ${CMAKE_INSTALL_BINDIR}) +endif() + +install(RUNTIME_DEPENDENCY_SET service_deps + PRE_EXCLUDE_REGEXES + [[api-ms-win-.*]] + [[ext-ms-.*]] + [[kernel32\.dll]] + [[hvsifiletrust\.dll]] + [[libc\.so\..*]] [[libgcc_s\.so\..*]] [[libm\.so\..*]] [[libstdc\+\+\.so\..*]] + [[.*\.framework]] + [[^[Qq]t.*]] + POST_EXCLUDE_REGEXES + [[^.*[\\/]system32[\\/].*\.dll$]] + [[^/lib.*]] + [[^/usr/lib.*]] + DIRECTORIES ${CONAN_RUNTIME_LIB_DIRS} COMPONENT AmneziaVPN + DESTINATION "${RUNTIME_DEPS_DIR}" ) qt_generate_deploy_app_script(