From bba6df8c9dd8cc68a83fbc190618f8f7ed9ab2b4 Mon Sep 17 00:00:00 2001 From: toge Date: Thu, 6 Aug 2026 04:48:15 +0900 Subject: [PATCH] [aeron] update to 1.52.2 (#52870) --- .../patches/add-libuuid-vcpkg-support.patch | 47 ++++++++++----- ports/aeron/patches/fix-library-linkage.patch | 58 +++++++++++++++++++ ports/aeron/portfile.cmake | 25 ++------ ports/aeron/vcpkg.json | 2 +- versions/a-/aeron.json | 5 ++ versions/baseline.json | 2 +- 6 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 ports/aeron/patches/fix-library-linkage.patch diff --git a/ports/aeron/patches/add-libuuid-vcpkg-support.patch b/ports/aeron/patches/add-libuuid-vcpkg-support.patch index b1440038a7..d3bcb7de25 100644 --- a/ports/aeron/patches/add-libuuid-vcpkg-support.patch +++ b/ports/aeron/patches/add-libuuid-vcpkg-support.patch @@ -1,10 +1,26 @@ +diff --git a/aeron-config.cmake.in b/aeron-config.cmake.in +index 770c80c..31be745 100644 +--- a/aeron-config.cmake.in ++++ b/aeron-config.cmake.in +@@ -4,6 +4,10 @@ include(CMakeFindDependencyMacro) + find_package(Threads) + find_package(Java) + ++if (@AERON_VCPKG_LIBUUID@) ++ find_dependency(unofficial-libuuid CONFIG) ++endif () ++ + include("${CMAKE_CURRENT_LIST_DIR}/aeron-targets.cmake") + + check_required_components(aeron) +\ No newline at end of file diff --git a/aeron-driver/src/main/c/CMakeLists.txt b/aeron-driver/src/main/c/CMakeLists.txt -index 1234567..abcdefg 100644 +index bcd9a48..06f9f3e 100644 --- a/aeron-driver/src/main/c/CMakeLists.txt +++ b/aeron-driver/src/main/c/CMakeLists.txt -@@ -36,15 +36,39 @@ if (NOT MSVC) +@@ -36,15 +36,42 @@ if (NOT MSVC) endif () - + check_include_file("bsd/stdlib.h" BSDSTDLIB_H_EXISTS) -check_include_file("uuid/uuid.h" UUID_H_EXISTS) find_library(LIBBSD_EXISTS NAMES bsd libbsd) @@ -22,6 +38,9 @@ index 1234567..abcdefg 100644 + list(APPEND CMAKE_REQUIRED_LIBRARIES "unofficial::UUID::uuid") + set(LIBUUID_EXISTS TRUE) + set(AERON_LIB_UUID_LIBS "unofficial::UUID::uuid") ++ # The imported target leaks into the exported aeron targets, so the package config ++ # has to pull it back in via find_dependency(). ++ set(AERON_VCPKG_LIBUUID ON CACHE INTERNAL "") + set(UUID_H_EXISTS TRUE) + set(UUID_GENERATE_PROTOTYPE_EXISTS TRUE) + endif() @@ -35,39 +54,39 @@ index 1234567..abcdefg 100644 +if(NOT DEFINED UUID_H_EXISTS OR NOT UUID_H_EXISTS) + check_include_file("uuid/uuid.h" UUID_H_EXISTS) +endif() - + if (LIBBSD_EXISTS) set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} -lbsd") endif () - + -if (LIBUUID_EXISTS) +if (LIBUUID_EXISTS AND NOT AERON_LIB_UUID_LIBS) set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} -luuid") endif () - -@@ -64,7 +88,9 @@ if (MSVC AND "${CMAKE_SYSTEM_NAME}" MATCHES "Windows") + +@@ -64,7 +91,9 @@ if (MSVC AND "${CMAKE_SYSTEM_NAME}" MATCHES "Windows") set(WSAPOLL_PROTOTYPE_EXISTS True) endif () - + -check_symbol_exists(uuid_generate "uuid/uuid.h" UUID_GENERATE_PROTOTYPE_EXISTS) +if(NOT DEFINED UUID_GENERATE_PROTOTYPE_EXISTS OR NOT UUID_GENERATE_PROTOTYPE_EXISTS) + check_symbol_exists(uuid_generate "uuid/uuid.h" UUID_GENERATE_PROTOTYPE_EXISTS) +endif() - + check_symbol_exists(poll "poll.h" POLL_PROTOTYPE_EXISTS) check_symbol_exists(epoll_create "sys/epoll.h" EPOLL_PROTOTYPE_EXISTS) -@@ -387,7 +413,7 @@ if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") +@@ -410,7 +439,7 @@ if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") set(AERON_LIB_BSD_LIBS bsd) endif () - + - if (LIBUUID_EXISTS) + if (LIBUUID_EXISTS AND NOT AERON_LIB_UUID_LIBS) set(AERON_LIB_UUID_LIBS uuid) endif () - -@@ -400,7 +426,7 @@ if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") + +@@ -422,7 +451,7 @@ if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") endif () - + if (CYGWIN) - if (LIBUUID_EXISTS) + if (LIBUUID_EXISTS AND NOT AERON_LIB_UUID_LIBS) diff --git a/ports/aeron/patches/fix-library-linkage.patch b/ports/aeron/patches/fix-library-linkage.patch new file mode 100644 index 0000000000..448aa6c8db --- /dev/null +++ b/ports/aeron/patches/fix-library-linkage.patch @@ -0,0 +1,58 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index febb611..042fd02 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -58,6 +58,14 @@ option(AERON_INSTALL_TARGETS "Enable installation step" ${STANDALONE_BUILD}) + + unset(STANDALONE_BUILD) + ++# Linkage of the primary (non "_static") library targets. Honour BUILD_SHARED_LIBS when it is set ++# explicitly, so that a static-only install does not export targets referring to missing shared libraries. ++if (DEFINED BUILD_SHARED_LIBS AND NOT BUILD_SHARED_LIBS) ++ set(AERON_LIB_LINKAGE STATIC) ++else () ++ set(AERON_LIB_LINKAGE SHARED) ++endif () ++ + # CMAKE_OSX_ARCHITECTURES can be set to arm64 or x86_64 (or both) to make a specific architecture version. Requires + # CMake 3.21. Must be set before project(), etc. + #set(CMAKE_OSX_ARCHITECTURES x86_64) +diff --git a/aeron-archive/src/main/c/CMakeLists.txt b/aeron-archive/src/main/c/CMakeLists.txt +index 5e6af48..8245ba4 100644 +--- a/aeron-archive/src/main/c/CMakeLists.txt ++++ b/aeron-archive/src/main/c/CMakeLists.txt +@@ -189,7 +189,7 @@ SET(HEADERS + ) + + # shared library +-add_library(aeron_archive_c_client SHARED ${SOURCE} ${HEADERS}) ++add_library(aeron_archive_c_client ${AERON_LIB_LINKAGE} ${SOURCE} ${HEADERS}) + add_library(aeron::aeron_archive_c_client ALIAS aeron_archive_c_client) + + add_dependencies(aeron_archive_c_client c_codecs) +diff --git a/aeron-client/src/main/c/CMakeLists.txt b/aeron-client/src/main/c/CMakeLists.txt +index 761a0b4..b97344b 100644 +--- a/aeron-client/src/main/c/CMakeLists.txt ++++ b/aeron-client/src/main/c/CMakeLists.txt +@@ -237,7 +237,7 @@ set(HEADERS + aeron_windows.h + aeronc.h) + +-add_library(aeron SHARED ${SOURCE} ${HEADERS}) ++add_library(aeron ${AERON_LIB_LINKAGE} ${SOURCE} ${HEADERS}) + add_library(aeron::aeron ALIAS aeron) + target_include_directories(aeron + PUBLIC "$" "$") +diff --git a/aeron-driver/src/main/c/CMakeLists.txt b/aeron-driver/src/main/c/CMakeLists.txt +index 06f9f3e..80bc99e 100644 +--- a/aeron-driver/src/main/c/CMakeLists.txt ++++ b/aeron-driver/src/main/c/CMakeLists.txt +@@ -412,7 +412,7 @@ SET(HEADERS + aeron_driver_version.h + aeronmd.h) + +-add_library(aeron_driver SHARED ${DRIVER_ONLY_SOURCE} ${HEADERS}) ++add_library(aeron_driver ${AERON_LIB_LINKAGE} ${DRIVER_ONLY_SOURCE} ${HEADERS}) + add_library(aeron::aeron_driver ALIAS aeron_driver) + target_include_directories(aeron_driver PUBLIC + "$" diff --git a/ports/aeron/portfile.cmake b/ports/aeron/portfile.cmake index ea8309fccd..4ebd6265a6 100644 --- a/ports/aeron/portfile.cmake +++ b/ports/aeron/portfile.cmake @@ -6,11 +6,12 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO aeron-io/aeron REF "${VERSION}" - SHA512 5d51aabeb9305d912534190bf88ddfaf09d842324d908f9a829e91e5acde1327103c4b4e07f0a2e48a3061d193f7b618d9b3fd154abaf8ecb39b9d35efb7b106 + SHA512 592be81475d19ff5da24dd5c100ddf14da0cee62504c394b5633ac60cbd781279c72c9059e4421862adb3c7162220be7aaa50c783ff05b1f4826870dff346f1c HEAD_REF master PATCHES patches/add-libuuid-vcpkg-support.patch patches/fix-static-crt-linkage.patch + patches/fix-library-linkage.patch ) # Set archive option based on feature @@ -33,26 +34,8 @@ vcpkg_cmake_install() vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/aeron) -# Aeron always builds both static and shared libraries regardless of VCPKG_LIBRARY_LINKAGE. -# Handle the shared library artifacts based on linkage type. -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - # For static builds, remove shared library artifacts (DLLs, SOs, DYLIBs and their import libs) - file(REMOVE - "${CURRENT_PACKAGES_DIR}/lib/aeron.dll" - "${CURRENT_PACKAGES_DIR}/lib/aeron_client_shared.dll" - "${CURRENT_PACKAGES_DIR}/lib/aeron_driver.dll" - "${CURRENT_PACKAGES_DIR}/lib/aeron.lib" - "${CURRENT_PACKAGES_DIR}/lib/aeron_client_shared.lib" - "${CURRENT_PACKAGES_DIR}/lib/aeron_driver.lib" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron.dll" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron_client_shared.dll" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron_driver.dll" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron.lib" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron_client_shared.lib" - "${CURRENT_PACKAGES_DIR}/debug/lib/aeron_driver.lib" - ) -else() - # For dynamic builds, move DLLs from lib to bin +# Aeron installs DLLs into lib; move them to bin +if(NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static") file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") file(GLOB RELEASE_DLLS "${CURRENT_PACKAGES_DIR}/lib/*.dll") file(GLOB DEBUG_DLLS "${CURRENT_PACKAGES_DIR}/debug/lib/*.dll") diff --git a/ports/aeron/vcpkg.json b/ports/aeron/vcpkg.json index b9dc72b9f5..46e9731ba9 100644 --- a/ports/aeron/vcpkg.json +++ b/ports/aeron/vcpkg.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name": "aeron", - "version": "1.52.0", + "version": "1.52.2", "description": "Efficient reliable UDP unicast, UDP multicast, and IPC message transport", "homepage": "https://github.com/aeron-io/aeron", "license": "Apache-2.0", diff --git a/versions/a-/aeron.json b/versions/a-/aeron.json index d1d2f3b70d..753f18666a 100644 --- a/versions/a-/aeron.json +++ b/versions/a-/aeron.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "cd1e8cf9fa9e3ad5e5a518b41de5ce64dd443b66", + "version": "1.52.2", + "port-version": 0 + }, { "git-tree": "b66d99b2de16204bea70e6f388570c8610515c1c", "version": "1.52.0", diff --git a/versions/baseline.json b/versions/baseline.json index 63e32f1ec9..cd3af2e94e 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -61,7 +61,7 @@ "port-version": 0 }, "aeron": { - "baseline": "1.52.0", + "baseline": "1.52.2", "port-version": 0 }, "air-ctl": {