From f9577de50f9ce8e9dd91d08d74809a66ab7d7b51 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 12:01:32 +0300 Subject: [PATCH 01/71] First try --- cmake/SetupPostgresqlDeps.cmake | 13 ++++++----- cmake/SetupRdKafka.cmake | 2 +- cmake/modules/FindCrypto.cmake | 12 ---------- cmake/modules/FindCryptoPP.cmake | 2 +- cmake/modules/FindHiredis.cmake | 2 +- cmake/modules/FindJemalloc.cmake | 2 +- cmake/modules/FindLibEv.cmake | 2 +- cmake/modules/FindNghttp2.cmake | 2 +- cmake/modules/FindPugixml.cmake | 2 +- cmake/modules/FindRdKafka.cmake | 2 +- cmake/modules/FindRocksDB.cmake | 2 +- cmake/modules/FindSSL.cmake | 12 ---------- cmake/modules/Findc-ares.cmake | 2 +- cmake/modules/Findcctz.cmake | 6 +++-- cmake/modules/Findfmt.cmake | 2 +- cmake/modules/Findlibgflags.cmake | 2 +- cmake/modules/Findlibintl.cmake | 14 ------------ cmake/modules/Findlibmariadb.cmake | 2 +- cmake/modules/Findlibsnappy.cmake | 2 +- cmake/modules/Findlibyamlcpp.cmake | 2 +- cmake/modules/Findlibzip.cmake | 2 +- cmake/modules/Findlibzstd.cmake | 2 +- cmake/modules/Findlz4.cmake | 6 +++-- scripts/docs/en/deps/macos.md | 27 +++++++++++------------ testsuite/requirements-grpc-3.txt | 1 + testsuite/requirements-grpc-4.txt | 1 + testsuite/requirements-grpc-5.txt | 1 + testsuite/requirements-internal-tests.txt | 1 - universal/CMakeLists.txt | 4 ++++ 29 files changed, 53 insertions(+), 79 deletions(-) delete mode 100644 cmake/modules/FindCrypto.cmake delete mode 100644 cmake/modules/FindSSL.cmake delete mode 100644 cmake/modules/Findlibintl.cmake diff --git a/cmake/SetupPostgresqlDeps.cmake b/cmake/SetupPostgresqlDeps.cmake index 9cb13af39b26..79950080c5aa 100644 --- a/cmake/SetupPostgresqlDeps.cmake +++ b/cmake/SetupPostgresqlDeps.cmake @@ -42,13 +42,16 @@ target_link_libraries(PostgreSQLInternal ${USERVER_LIB_MATH} ) -if(${CMAKE_SYSTEM_NAME} MATCHES "BSD") - find_package(libintl REQUIRED) - target_link_libraries(PostgreSQLInternal INTERFACE libintl) +if(${CMAKE_SYSTEM_NAME} MATCHES "BSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + find_package(Intl REQUIRED) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20) + target_link_libraries(PostgreSQLInternal INTERFACE Intl::Intl) + else() + target_link_libraries(PostgreSQLInternal INTERFACE ${Intl_LIBRARIES}) + endif() endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - find_package(libintl REQUIRED) find_package(Iconv REQUIRED) - target_link_libraries(PostgreSQLInternal INTERFACE libintl Iconv::Iconv "-framework Foundation") + target_link_libraries(PostgreSQLInternal INTERFACE Iconv::Iconv) endif() diff --git a/cmake/SetupRdKafka.cmake b/cmake/SetupRdKafka.cmake index 535ace7c30a4..cc99f6df2f7c 100644 --- a/cmake/SetupRdKafka.cmake +++ b/cmake/SetupRdKafka.cmake @@ -4,7 +4,7 @@ option(USERVER_DOWNLOAD_PACKAGE_KAFKA "Download and setup librdkafka if no librd set(USERVER_KAFKA_VERSION "2.3.0") -find_package(OpenSSL COMPONENTS SSL Crypto REQUIRED) +find_package(OpenSSL REQUIRED) find_package(CURL REQUIRED) find_package(ZLIB REQUIRED) find_package(libzstd REQUIRED) diff --git a/cmake/modules/FindCrypto.cmake b/cmake/modules/FindCrypto.cmake deleted file mode 100644 index 3ea31c4cc6af..000000000000 --- a/cmake/modules/FindCrypto.cmake +++ /dev/null @@ -1,12 +0,0 @@ -_userver_module_begin( - NAME Crypto - COMMON_NAME OpenSSL - PACKAGE_NAME OpenSSL - DEBIAN_NAMES libssl-dev - FORMULA_NAMES openssl - RPM_NAMES openssl-devel - PACMAN_NAMES openssl - PKG_CONFIG_NAMES openssl -) - -_userver_module_end() diff --git a/cmake/modules/FindCryptoPP.cmake b/cmake/modules/FindCryptoPP.cmake index ce8148fb41c0..9da1826082d2 100644 --- a/cmake/modules/FindCryptoPP.cmake +++ b/cmake/modules/FindCryptoPP.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES cryptlib cryptopp + NAMES libcryptopp.a cryptlib cryptopp PATH_SUFFIXES lib ) diff --git a/cmake/modules/FindHiredis.cmake b/cmake/modules/FindHiredis.cmake index 238dfc1a4fa6..ea0a3af7f5c4 100644 --- a/cmake/modules/FindHiredis.cmake +++ b/cmake/modules/FindHiredis.cmake @@ -14,7 +14,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES hiredis + NAMES libhiredis.a hiredis ) _userver_module_end() diff --git a/cmake/modules/FindJemalloc.cmake b/cmake/modules/FindJemalloc.cmake index eb1ab5c49c22..21bd478938bc 100644 --- a/cmake/modules/FindJemalloc.cmake +++ b/cmake/modules/FindJemalloc.cmake @@ -19,7 +19,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES jemalloc + NAMES libjemalloc.a jemalloc ) _userver_module_end() diff --git a/cmake/modules/FindLibEv.cmake b/cmake/modules/FindLibEv.cmake index e25cbf40b3e0..87c7df662b5c 100644 --- a/cmake/modules/FindLibEv.cmake +++ b/cmake/modules/FindLibEv.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES ev + NAMES libev.a ev ) _userver_module_end() diff --git a/cmake/modules/FindNghttp2.cmake b/cmake/modules/FindNghttp2.cmake index 268463e7b993..c6f3703c03d7 100644 --- a/cmake/modules/FindNghttp2.cmake +++ b/cmake/modules/FindNghttp2.cmake @@ -10,7 +10,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES nghttp2 + NAMES libnghttp2.a nghttp2 ) _userver_module_end() diff --git a/cmake/modules/FindPugixml.cmake b/cmake/modules/FindPugixml.cmake index 7bdd0660443d..5027a5995670 100644 --- a/cmake/modules/FindPugixml.cmake +++ b/cmake/modules/FindPugixml.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES pugixml libpugixml + NAMES libpugixml.a pugixml libpugixml ) _userver_module_end() diff --git a/cmake/modules/FindRdKafka.cmake b/cmake/modules/FindRdKafka.cmake index e39ceaf353ca..efe5c58b649a 100644 --- a/cmake/modules/FindRdKafka.cmake +++ b/cmake/modules/FindRdKafka.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES librdkafka.a + NAMES librdkafka.a rdkafka ) _userver_module_end() diff --git a/cmake/modules/FindRocksDB.cmake b/cmake/modules/FindRocksDB.cmake index 0c3d575d3d7f..4007f27febfc 100644 --- a/cmake/modules/FindRocksDB.cmake +++ b/cmake/modules/FindRocksDB.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES librocksdb.a + NAMES librocksdb.a rocksdb ) _userver_module_end() diff --git a/cmake/modules/FindSSL.cmake b/cmake/modules/FindSSL.cmake deleted file mode 100644 index c590d78e36e2..000000000000 --- a/cmake/modules/FindSSL.cmake +++ /dev/null @@ -1,12 +0,0 @@ -_userver_module_begin( - NAME SSL - COMMON_NAME OpenSSL - PACKAGE_NAME OpenSSL - DEBIAN_NAMES libssl-dev - FORMULA_NAMES openssl - RPM_NAMES openssl-devel - PACMAN_NAMES openssl - PKG_CONFIG_NAMES libssl -) - -_userver_module_end() diff --git a/cmake/modules/Findc-ares.cmake b/cmake/modules/Findc-ares.cmake index e98fe19228c1..af9ee4019ce2 100644 --- a/cmake/modules/Findc-ares.cmake +++ b/cmake/modules/Findc-ares.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libcares.a libcares_static.a libcares.so + NAMES libcares.a libcares_static.a cares ) _userver_module_end() diff --git a/cmake/modules/Findcctz.cmake b/cmake/modules/Findcctz.cmake index 001b31377217..d30d6fa996ad 100644 --- a/cmake/modules/Findcctz.cmake +++ b/cmake/modules/Findcctz.cmake @@ -12,8 +12,10 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES cctz - PATHS /usr/lib/x86_64-linux-gnu + NAMES libcctz.a cctz + PATHS + /usr/lib/x86_64-linux-gnu + /opt/homebrew/opt/cctz/lib ) _userver_module_end() diff --git a/cmake/modules/Findfmt.cmake b/cmake/modules/Findfmt.cmake index ebba6fc9dd3d..175aeb297fbf 100644 --- a/cmake/modules/Findfmt.cmake +++ b/cmake/modules/Findfmt.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES fmt + NAMES libfmt.a fmt ) _userver_module_end() diff --git a/cmake/modules/Findlibgflags.cmake b/cmake/modules/Findlibgflags.cmake index 64ede3830a0e..aea62f4a4267 100644 --- a/cmake/modules/Findlibgflags.cmake +++ b/cmake/modules/Findlibgflags.cmake @@ -16,7 +16,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES gflags + NAMES libgflags.a gflags PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibintl.cmake b/cmake/modules/Findlibintl.cmake deleted file mode 100644 index 6f02d1f1601c..000000000000 --- a/cmake/modules/Findlibintl.cmake +++ /dev/null @@ -1,14 +0,0 @@ -_userver_module_begin( - NAME libintl -) - -_userver_module_find_include( - NAMES stdio.h -) - -_userver_module_find_library( - NAMES libintl.a # FreeBSD - PATHS /usr/local/lib -) - -_userver_module_end() diff --git a/cmake/modules/Findlibmariadb.cmake b/cmake/modules/Findlibmariadb.cmake index 8dfe8f715d92..b87732508555 100644 --- a/cmake/modules/Findlibmariadb.cmake +++ b/cmake/modules/Findlibmariadb.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES mariadb + NAMES libmariadb.a mariadb PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibsnappy.cmake b/cmake/modules/Findlibsnappy.cmake index 225685291c2b..b6a67daf96d6 100644 --- a/cmake/modules/Findlibsnappy.cmake +++ b/cmake/modules/Findlibsnappy.cmake @@ -16,7 +16,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES snappy + NAMES libsnappy.a snappy PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibyamlcpp.cmake b/cmake/modules/Findlibyamlcpp.cmake index 3c12d660ed3c..06d398480635 100644 --- a/cmake/modules/Findlibyamlcpp.cmake +++ b/cmake/modules/Findlibyamlcpp.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES yaml-cpp + NAMES libyaml-cpp.a yaml-cpp PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibzip.cmake b/cmake/modules/Findlibzip.cmake index f0c04b5fa42d..19844c747a14 100644 --- a/cmake/modules/Findlibzip.cmake +++ b/cmake/modules/Findlibzip.cmake @@ -1,7 +1,7 @@ _userver_module_begin( NAME libzip DEBIAN_NAMES libbz2-dev - FORMULA_NAMES libbz2 + FORMULA_NAMES bzip2 RPM_NAMES libbz2-dev PACMAN_NAMES bzip2 ) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index 54b5f0cbe53b..57cdbf4e8bdc 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -15,7 +15,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES zstd + NAMES libzstd.a zstd PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlz4.cmake b/cmake/modules/Findlz4.cmake index d4abb3a4a5d6..28129ca50ecd 100644 --- a/cmake/modules/Findlz4.cmake +++ b/cmake/modules/Findlz4.cmake @@ -11,9 +11,11 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES liblz4.a + NAMES liblz4.a lz4 ) _userver_module_end() -add_library(lz4::lz4 ALIAS lz4) +if(NOT TARGET lz4::lz4) + add_library(lz4::lz4 ALIAS lz4) +endif() diff --git a/scripts/docs/en/deps/macos.md b/scripts/docs/en/deps/macos.md index 5a2a6b2b01da..a7432f63c5a3 100644 --- a/scripts/docs/en/deps/macos.md +++ b/scripts/docs/en/deps/macos.md @@ -1,28 +1,27 @@ +ares +boost +c-ares ccache +cctz cmake +coreutils cyrus-sasl +fmt git google-benchmark -boost -ares -cctz -libev -fmt googletest hiredis jemalloc krb5 +libev +librdkafka +mariadb +mongo-c-driver nghttp2 ninja -pugixml openssl -yaml-cpp -librdkafka -rocksdb postgresql@16 -redis +pugixml +rocksdb +yaml-cpp zlib -c-ares -coreutils -mongo-c-driver -mariadb diff --git a/testsuite/requirements-grpc-3.txt b/testsuite/requirements-grpc-3.txt index 1649bd5d6882..50ec3359a7bd 100644 --- a/testsuite/requirements-grpc-3.txt +++ b/testsuite/requirements-grpc-3.txt @@ -11,4 +11,5 @@ new_python_is_incompatible_with_old_grpc >= 9999; python_version >= '3.11' grpcio >= 1.32.0, <= 1.49.0 grpcio-tools >= 1.32.0, <= 1.49.0 +grpcio-reflection >= 1.32.0, <= 1.49.0 protobuf >= 3.12.0, < 4.0dev diff --git a/testsuite/requirements-grpc-4.txt b/testsuite/requirements-grpc-4.txt index a962fcfb4381..25ec503dd28a 100644 --- a/testsuite/requirements-grpc-4.txt +++ b/testsuite/requirements-grpc-4.txt @@ -1,3 +1,4 @@ grpcio >= 1.50.0 grpcio-tools >= 1.50.0 +grpcio-reflection >= 1.50.0 protobuf >= 4.21.12, < 5.0dev diff --git a/testsuite/requirements-grpc-5.txt b/testsuite/requirements-grpc-5.txt index 11e706c941eb..22440ee3f549 100644 --- a/testsuite/requirements-grpc-5.txt +++ b/testsuite/requirements-grpc-5.txt @@ -1,3 +1,4 @@ grpcio >= 1.63.0 grpcio-tools >= 1.63.0 +grpcio-reflection >= 1.63.0 protobuf >= 5.26.0, < 6.0dev diff --git a/testsuite/requirements-internal-tests.txt b/testsuite/requirements-internal-tests.txt index 09d4bd599408..1417a31d199a 100644 --- a/testsuite/requirements-internal-tests.txt +++ b/testsuite/requirements-internal-tests.txt @@ -1,3 +1,2 @@ httpx >= 0.27.0 h2 >= 4.1.0 -grpcio-reflection diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 2eb72d7e10fc..d256fef40597 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -274,6 +274,10 @@ else() ) endif() +if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Foundation") +endif() + target_include_directories(${PROJECT_NAME} PUBLIC $ From 974d97e875ffdba88ec82f4df1f2aa6ed2728ce9 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 12:46:11 +0300 Subject: [PATCH 02/71] Statis mongo and mysql --- CMakeLists.txt | 5 +++++ cmake/SetupMongoDeps.cmake | 13 +++++++++++++ cmake/SetupProtobuf.cmake | 3 +-- cmake/modules/Findbson.cmake | 2 +- cmake/modules/Findmongoc.cmake | 2 +- mongo/CMakeLists.txt | 3 +-- mysql/CMakeLists.txt | 3 ++- 7 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 cmake/SetupMongoDeps.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d8b5db0ee81..df64ffdcfe15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,11 @@ option(USERVER_FEATURE_OTLP "Provide asynchronous OTLP exporters" "${USERVER_LIB set(CMAKE_DEBUG_POSTFIX d) +set(OPENSSL_USE_STATIC_LIBS ON) +set(ZLIB_USE_STATIC_LIBS ON) +set(Protobuf_USE_STATIC_LIBS ON) +set(Boost_USE_STATIC_LIBS ON) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(UserverSetupEnvironment) userver_setup_environment() diff --git a/cmake/SetupMongoDeps.cmake b/cmake/SetupMongoDeps.cmake new file mode 100644 index 000000000000..c65243570a54 --- /dev/null +++ b/cmake/SetupMongoDeps.cmake @@ -0,0 +1,13 @@ +include_guard(GLOBAL) + +find_package(bson-1.0 QUIET CONFIG) +find_package(mongoc-1.0 QUIET CONFIG) +if(bson-1.0_FOUND AND mongoc-1.0_FOUND) + message(STATUS "Using config version for bson + mongoc") + add_library(bson ALIAS mongo::bson_static) + add_library(mongoc ALIAS mongo::mongoc_static) +else() + find_package(bson REQUIRED) + find_package(mongoc REQUIRED) +endif() + diff --git a/cmake/SetupProtobuf.cmake b/cmake/SetupProtobuf.cmake index 7f47c593db3b..f2f09ecc2a17 100644 --- a/cmake/SetupProtobuf.cmake +++ b/cmake/SetupProtobuf.cmake @@ -25,7 +25,7 @@ function(_userver_set_protobuf_version_category) endfunction() if(USERVER_CONAN) - find_package(Protobuf REQUIRED) + find_package(Protobuf REQUIRED CONFIG) _userver_set_protobuf_version_category() set(PROTOBUF_PROTOC "${Protobuf_PROTOC_EXECUTABLE}") return() @@ -33,7 +33,6 @@ endif() if(NOT USERVER_FORCE_DOWNLOAD_PROTOBUF) # Use the builtin CMake FindProtobuf - set(Protobuf_USE_STATIC_LIBS ON) if(USERVER_DOWNLOAD_PACKAGE_PROTOBUF) find_package(Protobuf QUIET) else() diff --git a/cmake/modules/Findbson.cmake b/cmake/modules/Findbson.cmake index 82f525df10a9..26efd80537ec 100644 --- a/cmake/modules/Findbson.cmake +++ b/cmake/modules/Findbson.cmake @@ -17,7 +17,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES bson bson-1.0 + NAMES libbson-static-1.0.a bson bson-1.0 ) _userver_module_end() diff --git a/cmake/modules/Findmongoc.cmake b/cmake/modules/Findmongoc.cmake index 9a4445bc42db..060c6e2df301 100644 --- a/cmake/modules/Findmongoc.cmake +++ b/cmake/modules/Findmongoc.cmake @@ -17,7 +17,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES mongoc mongoc-1.0 + NAMES libmongoc-static-1.0.a mongoc mongoc-1.0 ) _userver_module_end() diff --git a/mongo/CMakeLists.txt b/mongo/CMakeLists.txt index 9e5b99837f87..daa833f99417 100644 --- a/mongo/CMakeLists.txt +++ b/mongo/CMakeLists.txt @@ -8,8 +8,7 @@ if (USERVER_CONAN) add_library(mongoc ALIAS mongo::mongoc_static) find_package(cyrus-sasl REQUIRED CONFIG) else() - find_package(bson REQUIRED) - find_package(mongoc REQUIRED) + include(SetupMongoDeps) endif() userver_module(mongo diff --git a/mysql/CMakeLists.txt b/mysql/CMakeLists.txt index 5cfba0ff793c..3bc5f9231f1b 100644 --- a/mysql/CMakeLists.txt +++ b/mysql/CMakeLists.txt @@ -1,10 +1,11 @@ project(userver-mysql CXX) +find_package(ZLIB REQUIRED) find_package(libmariadb REQUIRED) userver_module(mysql SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE libmariadb + LINK_LIBRARIES_PRIVATE libmariadb ZLIB::ZLIB DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" UTEST_LINK_LIBRARIES libmariadb From 476a6398aa19968bd032c04f4f4ff78c2d957ec0 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 12:52:26 +0300 Subject: [PATCH 03/71] Try fix openssl alpine --- scripts/docs/en/deps/alpine.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 187cade1aaa5..ff527e6dda1c 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -19,6 +19,8 @@ mariadb-static mongo-c-driver-dev nghttp2-dev openldap-dev +openssl-dev +openssl-libs-static postgresql16-dev protobuf-c-compiler protobuf-c-dev From 5c3130856be25fb7088ad959a602a7c0979b3849 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 12:58:24 +0300 Subject: [PATCH 04/71] Fix alpine zlib --- cmake/UserverSetupEnvironment.cmake | 4 ---- scripts/docs/en/deps/alpine.md | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmake/UserverSetupEnvironment.cmake b/cmake/UserverSetupEnvironment.cmake index 31a933aea220..44088101bbb6 100644 --- a/cmake/UserverSetupEnvironment.cmake +++ b/cmake/UserverSetupEnvironment.cmake @@ -78,10 +78,6 @@ function(_userver_setup_environment_impl) message(STATUS "ccache: disabled") endif() - if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT USERVER_CONAN) - set(Boost_NO_BOOST_CMAKE ON PARENT_SCOPE) - endif() - # Build type specific if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "Test") add_compile_definitions(_GLIBCXX_ASSERTIONS) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index ff527e6dda1c..99060083cd15 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -34,3 +34,5 @@ python3-dev snappy-dev snappy-static yaml-cpp-dev +zlib-dev +zlib-static From ffebb90898709329a5acaa44686e76b410dd3c1b Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 13:14:20 +0300 Subject: [PATCH 05/71] Fix static boost --- scripts/docs/en/deps/alpine.md | 1 + scripts/docs/en/deps/ubuntu-18.04.md | 1 + scripts/docs/en/deps/ubuntu-20.04.md | 1 + scripts/docs/en/deps/ubuntu-21.10.md | 1 + scripts/docs/en/deps/ubuntu-22.04.md | 1 + scripts/docs/en/deps/ubuntu-24.04.md | 1 + 6 files changed, 6 insertions(+) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 99060083cd15..1917efd2ce77 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -17,6 +17,7 @@ make mariadb-dev mariadb-static mongo-c-driver-dev +mongo-c-driver-static nghttp2-dev openldap-dev openssl-dev diff --git a/scripts/docs/en/deps/ubuntu-18.04.md b/scripts/docs/en/deps/ubuntu-18.04.md index 59d5cb74a67a..f75ffdd26741 100644 --- a/scripts/docs/en/deps/ubuntu-18.04.md +++ b/scripts/docs/en/deps/ubuntu-18.04.md @@ -25,6 +25,7 @@ libjemalloc-dev libkrb5-dev libldap2-dev librdkafka-dev +liblzma-dev libmongoc-dev libnghttp2-dev libpq-dev=10.* diff --git a/scripts/docs/en/deps/ubuntu-20.04.md b/scripts/docs/en/deps/ubuntu-20.04.md index 9ad81f135c9f..ca2c06be2a9e 100644 --- a/scripts/docs/en/deps/ubuntu-20.04.md +++ b/scripts/docs/en/deps/ubuntu-20.04.md @@ -28,6 +28,7 @@ libjemalloc-dev libkrb5-dev libldap2-dev librdkafka-dev +liblzma-dev libmariadb-dev libmongoc-dev libnghttp2-dev diff --git a/scripts/docs/en/deps/ubuntu-21.10.md b/scripts/docs/en/deps/ubuntu-21.10.md index 8890b21c5cd1..79f5745038a6 100644 --- a/scripts/docs/en/deps/ubuntu-21.10.md +++ b/scripts/docs/en/deps/ubuntu-21.10.md @@ -29,6 +29,7 @@ libjemalloc-dev libkrb5-dev libldap2-dev librdkafka-dev +liblzma-dev libmongoc-dev libnghttp2-dev libpq-dev diff --git a/scripts/docs/en/deps/ubuntu-22.04.md b/scripts/docs/en/deps/ubuntu-22.04.md index b58a1236b03e..473b9b98d8e7 100644 --- a/scripts/docs/en/deps/ubuntu-22.04.md +++ b/scripts/docs/en/deps/ubuntu-22.04.md @@ -35,6 +35,7 @@ libkrb5-dev libldap2-dev librdkafka-dev liblz4-dev +liblzma-dev libmariadb-dev libmongoc-dev libnghttp2-dev diff --git a/scripts/docs/en/deps/ubuntu-24.04.md b/scripts/docs/en/deps/ubuntu-24.04.md index 56acaff818c9..03f3ccb3d895 100644 --- a/scripts/docs/en/deps/ubuntu-24.04.md +++ b/scripts/docs/en/deps/ubuntu-24.04.md @@ -36,6 +36,7 @@ libldap2-dev librdkafka-dev librocksdb-dev liblz4-dev +liblzma-dev libmariadb-dev libmongoc-dev libnghttp2-dev From 3a3272c10a1c8cc7504e086e22c808c5941f6b77 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 13:29:46 +0300 Subject: [PATCH 06/71] Remove common name from module helpers --- cmake/ModuleHelpers.cmake | 17 ++--------------- scripts/docs/en/deps/alpine.md | 4 ++++ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/cmake/ModuleHelpers.cmake b/cmake/ModuleHelpers.cmake index 800bc1d7cc25..5d04a855d73a 100644 --- a/cmake/ModuleHelpers.cmake +++ b/cmake/ModuleHelpers.cmake @@ -10,7 +10,6 @@ macro(_userver_module_begin) # Custom package name; NAME is used by default PACKAGE_NAME # For multi-target packages - COMMON_NAME VERSION ) set(multiValueArgs @@ -295,18 +294,11 @@ macro(_userver_module_end) mark_as_advanced(${required_vars}) else() # Forward to another CMake module, add nice error messages if missing. - if(ARG_COMMON_NAME) - set(wrapped_package_name "${ARG_COMMON_NAME}") - else() - set(wrapped_package_name "${current_package_name}") - endif() + set(wrapped_package_name "${current_package_name}") set(find_command_args "${wrapped_package_name}") if(ARG_VERSION) list(APPEND find_command_args "${ARG_VERSION}") endif() - if(ARG_COMMON_NAME) - list(APPEND find_command_args COMPONENTS "${name}") - endif() find_package(${find_command_args}) set("${name}_FOUND" "${${wrapped_package_name}_FOUND}") endif() @@ -332,16 +324,11 @@ macro(_userver_module_end) endif() endif() - if(ARG_COMMON_NAME - OR (NOT "${${libraries_variable}}" STREQUAL "") + if((NOT "${${libraries_variable}}" STREQUAL "") OR (NOT "${${includes_variable}}" STREQUAL "")) if(NOT TARGET "${name}") add_library("${name}" INTERFACE IMPORTED GLOBAL) - if(ARG_COMMON_NAME AND TARGET "${ARG_COMMON_NAME}::${name}") - target_link_libraries("${name}" INTERFACE "${ARG_COMMON_NAME}::${name}") - endif() - if(NOT "${${includes_variable}}" STREQUAL "") target_include_directories("${name}" INTERFACE ${${includes_variable}}) message(STATUS "${name} include directories: ${${includes_variable}}") diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 1917efd2ce77..2d6c636416f9 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -1,4 +1,5 @@ boost1.84-dev +boost1.84-static clang17-extra-tools clang18 cmake @@ -11,6 +12,9 @@ hiredis-dev jemalloc-dev krb5-dev libev-dev +libev-static +libbson-static +libbson-static lz4-dev lz4-static make From ce2ef8a01e076846e31b82127e776de0dbb52e36 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 13:36:08 +0300 Subject: [PATCH 07/71] Fix alpine --- scripts/docs/en/deps/alpine.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 2d6c636416f9..2cb8dd4b3d96 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -12,7 +12,6 @@ hiredis-dev jemalloc-dev krb5-dev libev-dev -libev-static libbson-static libbson-static lz4-dev @@ -41,3 +40,5 @@ snappy-static yaml-cpp-dev zlib-dev zlib-static +zstd-dev +zstd-static From c921d2ea5837cdfafa0c939da646e41308265feb Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 13:48:54 +0300 Subject: [PATCH 08/71] Try fix MacOS --- .github/workflows/macos.yml | 1 + CMakeLists.txt | 1 + cmake/modules/FindUserverGBench.cmake | 4 ++-- scripts/docs/en/deps/alpine.md | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 9229d5e5d767..2d3795588930 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -44,6 +44,7 @@ jobs: brew install lld brew link postgresql@16 + brew link --force zlib brew upgrade diff --git a/CMakeLists.txt b/CMakeLists.txt index df64ffdcfe15..cf2dce56fd84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,6 +147,7 @@ set(OPENSSL_USE_STATIC_LIBS ON) set(ZLIB_USE_STATIC_LIBS ON) set(Protobuf_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON) +set(CURL_USE_STATIC_LIBS ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(UserverSetupEnvironment) diff --git a/cmake/modules/FindUserverGBench.cmake b/cmake/modules/FindUserverGBench.cmake index a656e7e67198..e8b53a8132e8 100644 --- a/cmake/modules/FindUserverGBench.cmake +++ b/cmake/modules/FindUserverGBench.cmake @@ -13,11 +13,11 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES benchmark_main + NAMES libbenchmark_main.a benchmark_main ) _userver_module_find_library( - NAMES benchmark + NAMES libbenchmark.a benchmark ) _userver_module_end() diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 2cb8dd4b3d96..e4767d4cf9a3 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -22,6 +22,7 @@ mariadb-static mongo-c-driver-dev mongo-c-driver-static nghttp2-dev +nghttp2-static openldap-dev openssl-dev openssl-libs-static From 008adcf86055837d2a8c1a81403156013371eed1 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 22:00:47 +0300 Subject: [PATCH 09/71] Try fix macos static boost linkage --- .github/workflows/macos.yml | 3 ++- CMakeLists.txt | 4 ++++ scripts/docs/en/deps/alpine.md | 1 + scripts/docs/en/deps/macos.md | 3 ++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4c78a6ac9f15..1b9d929f3e29 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -62,8 +62,9 @@ jobs: brew install python@3.11 brew install lld - brew link postgresql@16 # postgresql is key-only + brew link postgresql@16 # postgresql is keg-only brew link --force zlib # keg-only + need for static linkage + brew link --force icu4c@76 # keg-only + need for static boost linkage - name: Setup ccache run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index cf2dce56fd84..fc4b77801c95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,6 +184,10 @@ if (USERVER_BUILD_TESTS) add_subdirectory(testsuite) endif() +find_package(ICU COMPONENTS uc i18n data REQUIRED) +add_library(icuuc ALIAS ICU::uc) +add_library(icui18n ALIAS ICU::i18n) +add_library(icudata ALIAS ICU::data) add_subdirectory(universal) if (USERVER_FEATURE_CORE) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index e4767d4cf9a3..46becde05958 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -4,6 +4,7 @@ clang17-extra-tools clang18 cmake curl-dev +curl-static gflags-dev git grpc-cpp diff --git a/scripts/docs/en/deps/macos.md b/scripts/docs/en/deps/macos.md index 5fffd214a053..ad5e00261328 100644 --- a/scripts/docs/en/deps/macos.md +++ b/scripts/docs/en/deps/macos.md @@ -1,5 +1,5 @@ ares -boost +boost@1.87 c-ares ccache cctz @@ -12,6 +12,7 @@ git google-benchmark googletest hiredis +icu4c@76 jemalloc krb5 libev From 33bf3f61e628e96c2b041c36109d6b636931590c Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 22:45:09 +0300 Subject: [PATCH 10/71] Fix MacOS cannot find -lzstd --- cmake/modules/Findlibzstd.cmake | 4 ++++ scripts/docs/en/deps/macos.md | 1 - scripts/docs/en/deps/ubuntu-22.04.md | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index 57cdbf4e8bdc..8115d9acf071 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -20,3 +20,7 @@ _userver_module_find_library( ) _userver_module_end() + +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + add_library(zstd ALIAS libzstd) +endif() diff --git a/scripts/docs/en/deps/macos.md b/scripts/docs/en/deps/macos.md index ad5e00261328..e0058840ea46 100644 --- a/scripts/docs/en/deps/macos.md +++ b/scripts/docs/en/deps/macos.md @@ -1,4 +1,3 @@ -ares boost@1.87 c-ares ccache diff --git a/scripts/docs/en/deps/ubuntu-22.04.md b/scripts/docs/en/deps/ubuntu-22.04.md index 473b9b98d8e7..59df4e13739b 100644 --- a/scripts/docs/en/deps/ubuntu-22.04.md +++ b/scripts/docs/en/deps/ubuntu-22.04.md @@ -29,6 +29,7 @@ libgrpc++1 libgrpc-dev libgtest-dev libhiredis-dev +libicu-dev libidn11-dev libjemalloc-dev libkrb5-dev From a89d8c07378f8dda6d23f7597c0a38d0ec2bc3a9 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Mon, 6 Jan 2025 23:34:52 +0300 Subject: [PATCH 11/71] Fix boost static linkage --- CMakeLists.txt | 4 ---- universal/CMakeLists.txt | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fc4b77801c95..cf2dce56fd84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,10 +184,6 @@ if (USERVER_BUILD_TESTS) add_subdirectory(testsuite) endif() -find_package(ICU COMPONENTS uc i18n data REQUIRED) -add_library(icuuc ALIAS ICU::uc) -add_library(icui18n ALIAS ICU::i18n) -add_library(icudata ALIAS ICU::data) add_subdirectory(universal) if (USERVER_FEATURE_CORE) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index d256fef40597..47a10c5bd364 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -226,6 +226,11 @@ if (USERVER_SANITIZE AND NOT CMAKE_BUILD_TYPE MATCHES "^Rel") target_link_libraries(${PROJECT_NAME} PUBLIC userver-compiler-rt-parts) endif() +find_package(ICU COMPONENTS uc i18n data REQUIRED) +add_library(icuuc ALIAS ICU::uc) +add_library(icui18n ALIAS ICU::i18n) +add_library(icudata ALIAS ICU::data) + target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads @@ -237,6 +242,9 @@ target_link_libraries(${PROJECT_NAME} Boost::regex OpenSSL::Crypto OpenSSL::SSL + ICU::uc + ICU::i18n + ICU::data ) if (USERVER_CONAN) From 749b7ba1cdaf817528ef61501a4499e0f7338daf Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 00:03:25 +0300 Subject: [PATCH 12/71] Try fix docker mysql --- mysql/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql/CMakeLists.txt b/mysql/CMakeLists.txt index 3bc5f9231f1b..8dc6ee5ed6e6 100644 --- a/mysql/CMakeLists.txt +++ b/mysql/CMakeLists.txt @@ -1,11 +1,12 @@ project(userver-mysql CXX) +find_package(OpenSSL REQUIRED) find_package(ZLIB REQUIRED) find_package(libmariadb REQUIRED) userver_module(mysql SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE libmariadb ZLIB::ZLIB + LINK_LIBRARIES_PRIVATE libmariadb ZLIB::ZLIB OpenSSL::SSL OpenSSL::Crypto DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" UTEST_LINK_LIBRARIES libmariadb From 305e1f9dbd47678e1428a280c822c22d06b17186 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 00:40:18 +0300 Subject: [PATCH 13/71] Fix MacOS again --- cmake/modules/Findlibzip.cmake | 2 +- cmake/modules/Findlibzstd.cmake | 2 +- universal/CMakeLists.txt | 20 ++++++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/cmake/modules/Findlibzip.cmake b/cmake/modules/Findlibzip.cmake index 19844c747a14..0713f3257eb0 100644 --- a/cmake/modules/Findlibzip.cmake +++ b/cmake/modules/Findlibzip.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES bz2 libbz2 + NAMES libbz2.a bz2 libbz2 PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index 8115d9acf071..f436bff68ce3 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -21,6 +21,6 @@ _userver_module_find_library( _userver_module_end() -if(CMAKE_SYSTEM_NAME MATCHES "Darwin") +if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT TARGET zstd) add_library(zstd ALIAS libzstd) endif() diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 47a10c5bd364..ed3ab8c924d2 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -226,11 +226,6 @@ if (USERVER_SANITIZE AND NOT CMAKE_BUILD_TYPE MATCHES "^Rel") target_link_libraries(${PROJECT_NAME} PUBLIC userver-compiler-rt-parts) endif() -find_package(ICU COMPONENTS uc i18n data REQUIRED) -add_library(icuuc ALIAS ICU::uc) -add_library(icui18n ALIAS ICU::i18n) -add_library(icudata ALIAS ICU::data) - target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads @@ -242,9 +237,6 @@ target_link_libraries(${PROJECT_NAME} Boost::regex OpenSSL::Crypto OpenSSL::SSL - ICU::uc - ICU::i18n - ICU::data ) if (USERVER_CONAN) @@ -280,6 +272,18 @@ else() libzstd CryptoPP ) + + find_package(ICU COMPONENTS uc i18n data REQUIRED) + if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + set_target_properties(ICU::uc PROPERTIES IMPORTED_GLOBAL TRUE) + set_target_properties(ICU::i18n PROPERTIES IMPORTED_GLOBAL TRUE) + set_target_properties(ICU::data PROPERTIES IMPORTED_GLOBAL TRUE) + endif() + add_library(icuuc ALIAS ICU::uc) + add_library(icui18n ALIAS ICU::i18n) + add_library(icudata ALIAS ICU::data) + + target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::data) endif() if (CMAKE_SYSTEM_NAME MATCHES "Darwin") From 26b30d078750d6d1b4cf0348dd5ad4ca97233a74 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 00:50:41 +0300 Subject: [PATCH 14/71] Do not link statically with mongoc on old Ubuntus --- .github/workflows/ci.yml | 2 ++ cmake/SetupMongoDeps.cmake | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db898ebf6dde..409b99c51ebc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,6 +71,7 @@ jobs: -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 -DUSERVER_FORCE_DOWNLOAD_ABSEIL=0 -DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0 + -DUSERVER_MONGODB_USE_STATIC_LIBS=0 os: ubuntu-20.04 info: g++-9 + release id: ubuntu20_gcc9_release @@ -91,6 +92,7 @@ jobs: -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 -DUSERVER_FORCE_DOWNLOAD_ABSEIL=0 -DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0 + -DUSERVER_MONGODB_USE_STATIC_LIBS=0 os: ubuntu-20.04 info: g++-8 + debug id: ubuntu20_gcc8_debug diff --git a/cmake/SetupMongoDeps.cmake b/cmake/SetupMongoDeps.cmake index c65243570a54..821facbe98bc 100644 --- a/cmake/SetupMongoDeps.cmake +++ b/cmake/SetupMongoDeps.cmake @@ -1,11 +1,18 @@ include_guard(GLOBAL) +option(USERVER_MONGODB_USE_STATIC_LIBS "Link statically with mongoc" ON) + find_package(bson-1.0 QUIET CONFIG) find_package(mongoc-1.0 QUIET CONFIG) if(bson-1.0_FOUND AND mongoc-1.0_FOUND) - message(STATUS "Using config version for bson + mongoc") - add_library(bson ALIAS mongo::bson_static) - add_library(mongoc ALIAS mongo::mongoc_static) + message(STATUS "Mongoc: using config version") + if(USERVER_MONGODB_USE_STATIC_LIBS) + add_library(bson ALIAS mongo::bson_static) + add_library(mongoc ALIAS mongo::mongoc_static) + else() + add_library(bson ALIAS mongo::bson_shared) + add_library(mongoc ALIAS mongo::mongoc_shared) + endif() else() find_package(bson REQUIRED) find_package(mongoc REQUIRED) From 454c627a4b754dcc2ff5d7535a32a315a6f91747 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 01:06:02 +0300 Subject: [PATCH 15/71] Again --- .github/workflows/ci.yml | 4 ++-- cmake/SetupMongoDeps.cmake | 26 ++++++++++++-------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 409b99c51ebc..cf87167cba25 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 -DUSERVER_FORCE_DOWNLOAD_ABSEIL=0 -DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0 - -DUSERVER_MONGODB_USE_STATIC_LIBS=0 + -DUSERVER_MONGODB_USE_CMAKE_CONFIG=0 os: ubuntu-20.04 info: g++-9 + release id: ubuntu20_gcc9_release @@ -92,7 +92,7 @@ jobs: -DUSERVER_FEATURE_REDIS_HI_MALLOC=1 -DUSERVER_FORCE_DOWNLOAD_ABSEIL=0 -DUSERVER_DOWNLOAD_PACKAGE_ABSEIL=0 - -DUSERVER_MONGODB_USE_STATIC_LIBS=0 + -DUSERVER_MONGODB_USE_CMAKE_CONFIG=0 os: ubuntu-20.04 info: g++-8 + debug id: ubuntu20_gcc8_debug diff --git a/cmake/SetupMongoDeps.cmake b/cmake/SetupMongoDeps.cmake index 821facbe98bc..f6d1b91c3b2b 100644 --- a/cmake/SetupMongoDeps.cmake +++ b/cmake/SetupMongoDeps.cmake @@ -1,20 +1,18 @@ include_guard(GLOBAL) -option(USERVER_MONGODB_USE_STATIC_LIBS "Link statically with mongoc" ON) +option(USERVER_MONGODB_USE_CMAKE_CONFIG "Use mongoc cmake configuration" ON) -find_package(bson-1.0 QUIET CONFIG) -find_package(mongoc-1.0 QUIET CONFIG) -if(bson-1.0_FOUND AND mongoc-1.0_FOUND) - message(STATUS "Mongoc: using config version") - if(USERVER_MONGODB_USE_STATIC_LIBS) - add_library(bson ALIAS mongo::bson_static) - add_library(mongoc ALIAS mongo::mongoc_static) - else() - add_library(bson ALIAS mongo::bson_shared) - add_library(mongoc ALIAS mongo::mongoc_shared) +if (USERVER_MONGODB_USE_CMAKE_CONFIG) + find_package(bson-1.0 QUIET CONFIG) + find_package(mongoc-1.0 QUIET CONFIG) + if(bson-1.0_FOUND AND mongoc-1.0_FOUND) + message(STATUS "Mongoc: using config version") + add_library(bson ALIAS mongo::bson_static) + add_library(mongoc ALIAS mongo::mongoc_static) + return() endif() -else() - find_package(bson REQUIRED) - find_package(mongoc REQUIRED) endif() +find_package(bson REQUIRED) +find_package(mongoc REQUIRED) + From b5dde1d96602d4671fe8caaa0ca190ebc024fd6e Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 01:32:30 +0300 Subject: [PATCH 16/71] Do not use bandled libs for gRPC --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf87167cba25..deb5d66fef8e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -219,7 +219,11 @@ jobs: git clone --recursive --depth 1 -b v1.45.0 https://github.com/grpc/grpc new_grpc GRPC_BUILD_ENABLE_CCACHE=true \ cmake -GNinja -S./new_grpc -B./new_grpc/build \ - -DABSL_PROPAGATE_CXX_STD=ON -DABSL_ENABLE_INSTALL=ON + -DABSL_PROPAGATE_CXX_STD=ON -DABSL_ENABLE_INSTALL=ON \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_CARES_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_INSTALL=ON cmake --build new_grpc/build -j$(nproc) sudo cmake --install new_grpc/build rm -rf new_grpc From 1659a73301df770e4ac4fbc8aa14a3a656488a5c Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 01:49:51 +0300 Subject: [PATCH 17/71] Fix libcares --- cmake/modules/Findc-ares.cmake | 2 +- kafka/functional_tests/CMakeLists.txt | 2 -- kafka/utest/src/kafka/utest/kafka_fixture.cpp | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake/modules/Findc-ares.cmake b/cmake/modules/Findc-ares.cmake index af9ee4019ce2..e98fe19228c1 100644 --- a/cmake/modules/Findc-ares.cmake +++ b/cmake/modules/Findc-ares.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libcares.a libcares_static.a cares + NAMES libcares.a libcares_static.a libcares.so ) _userver_module_end() diff --git a/kafka/functional_tests/CMakeLists.txt b/kafka/functional_tests/CMakeLists.txt index 3cb1804c3d7c..7acf990ca0b8 100644 --- a/kafka/functional_tests/CMakeLists.txt +++ b/kafka/functional_tests/CMakeLists.txt @@ -1,7 +1,5 @@ project(userver-kafka-tests CXX) -message(STATUS "Configuring Kafka functional_tests") - add_custom_target(${PROJECT_NAME}) add_subdirectory(balanced_consumer_groups) diff --git a/kafka/utest/src/kafka/utest/kafka_fixture.cpp b/kafka/utest/src/kafka/utest/kafka_fixture.cpp index f9cb0667f0f5..49af0b6b71b9 100644 --- a/kafka/utest/src/kafka/utest/kafka_fixture.cpp +++ b/kafka/utest/src/kafka/utest/kafka_fixture.cpp @@ -49,7 +49,7 @@ impl::Secret MakeSecrets(std::string_view bootstrap_servers) { return secrets; } -impl::ProducerConfiguration PatchDeliveryTimeout(impl::ProducerConfiguration&& configuration) { +impl::ProducerConfiguration PatchDeliveryTimeout(impl::ProducerConfiguration configuration) { static const impl::ProducerConfiguration kDefaultProducerConfiguration{}; if (configuration.delivery_timeout == kDefaultProducerConfiguration.delivery_timeout) { @@ -102,7 +102,7 @@ Producer KafkaCluster::MakeProducer(const std::string& name, impl::ProducerConfi engine::current_task::GetTaskProcessor(), PatchDeliveryTimeout(std::move(configuration)), MakeSecrets(bootstrap_servers_)}; -}; +} std::deque KafkaCluster::MakeProducers( std::size_t count, From e5bfae9b84566af5e2edbaa0d54a7d127a11cad6 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 02:04:57 +0300 Subject: [PATCH 18/71] Install c-ares --- cmake/modules/Findc-ares.cmake | 2 +- scripts/docs/en/deps/ubuntu-20.04.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/modules/Findc-ares.cmake b/cmake/modules/Findc-ares.cmake index e98fe19228c1..af9ee4019ce2 100644 --- a/cmake/modules/Findc-ares.cmake +++ b/cmake/modules/Findc-ares.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libcares.a libcares_static.a libcares.so + NAMES libcares.a libcares_static.a cares ) _userver_module_end() diff --git a/scripts/docs/en/deps/ubuntu-20.04.md b/scripts/docs/en/deps/ubuntu-20.04.md index ca2c06be2a9e..babf5acf543e 100644 --- a/scripts/docs/en/deps/ubuntu-20.04.md +++ b/scripts/docs/en/deps/ubuntu-20.04.md @@ -14,6 +14,7 @@ libboost-regex1.71-dev libboost-stacktrace1.71-dev libboost1.71-dev libbson-dev +libc-ares-dev libcctz-dev libcrypto++-dev libcurl4-openssl-dev From 18d2ea5e2a4743050ca09a85d1843cbb3bbb49bb Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 02:51:29 +0300 Subject: [PATCH 19/71] Link static clickhouse --- clickhouse/CMakeLists.txt | 2 +- cmake/SetupClickhouseCPP.cmake | 2 ++ cmake/modules/Findclickhouse-cpp.cmake | 8 +++++++- scripts/docs/en/deps/macos.md | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index 35c78b9727b7..847085e0686f 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -10,7 +10,7 @@ endif() userver_module(clickhouse SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" + LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" lz4::lz4 UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index b04d623ab098..fa6651e99e3d 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -1,5 +1,7 @@ option(USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP "Download and setup clickhouse-cpp" ${USERVER_DOWNLOAD_PACKAGES}) +find_package(lz4 REQUIRED) + if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) if (USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP) find_package(clickhouse-cpp QUIET) diff --git a/cmake/modules/Findclickhouse-cpp.cmake b/cmake/modules/Findclickhouse-cpp.cmake index 617c0dc2b802..efc31229e8c3 100644 --- a/cmake/modules/Findclickhouse-cpp.cmake +++ b/cmake/modules/Findclickhouse-cpp.cmake @@ -1,5 +1,6 @@ _userver_module_begin( NAME clickhouse-cpp + FORMULA_NAMES clickhouse-cpp ) _userver_module_find_include( @@ -10,7 +11,12 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libclickhouse-cpp-lib.so + NAMES libclickhouse-cpp-lib.a libclickhouse-cpp-lib.so +) + +_userver_module_find_library( + NAMES libcityhash.a + PATHS /opt/homebrew/opt/clickhouse-cpp/libexec/lib ) _userver_module_end() diff --git a/scripts/docs/en/deps/macos.md b/scripts/docs/en/deps/macos.md index e0058840ea46..629ea70a9aee 100644 --- a/scripts/docs/en/deps/macos.md +++ b/scripts/docs/en/deps/macos.md @@ -4,6 +4,7 @@ ccache cctz cmake coreutils +clickhouse-cpp cryptopp cyrus-sasl fmt From d5f77d432670f2d25dfa888514a15847a3115d6e Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 03:00:41 +0300 Subject: [PATCH 20/71] Use brew curl --- .github/workflows/macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 1b9d929f3e29..ca713ed41bb7 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -65,6 +65,7 @@ jobs: brew link postgresql@16 # postgresql is keg-only brew link --force zlib # keg-only + need for static linkage brew link --force icu4c@76 # keg-only + need for static boost linkage + brew link --force curl # keg-only - name: Setup ccache run: | From fecf18db262888af11446d8418bf03c09a35ea6b Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 09:03:09 +0300 Subject: [PATCH 21/71] Try fix clickhouse --- cmake/SetupClickhouseCPP.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index fa6651e99e3d..8d6e08bcc820 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -10,6 +10,7 @@ if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) endif() if (clickhouse-cpp_FOUND) + target_compile_options(clickhouse-cpp INTERFACE -Wno-pedantic) return() endif() endif() From 1a8f8020f540881891e92f4501748693580ac975 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 09:30:16 +0300 Subject: [PATCH 22/71] Try fix clickhouse again --- CMakeLists.txt | 1 + cmake/SetupClickhouseCPP.cmake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cf2dce56fd84..fd91af875c1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,7 @@ set(ZLIB_USE_STATIC_LIBS ON) set(Protobuf_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON) set(CURL_USE_STATIC_LIBS ON) +set(Protobuf_VERBOSE ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(UserverSetupEnvironment) diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index 8d6e08bcc820..a09732e8ec4a 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -10,7 +10,7 @@ if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) endif() if (clickhouse-cpp_FOUND) - target_compile_options(clickhouse-cpp INTERFACE -Wno-pedantic) + target_link_options(clickhouse-cpp INTERFACE -Wno-pedantic) return() endif() endif() From 8c10e4833fc01b9dae8ac67f123b42027161b3be Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 09:51:21 +0300 Subject: [PATCH 23/71] Try fix clickhouse --- clickhouse/CMakeLists.txt | 4 +++- cmake/SetupClickhouseCPP.cmake | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index 847085e0686f..dd8ed2643067 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -10,7 +10,7 @@ endif() userver_module(clickhouse SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" lz4::lz4 + LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" lz4::lz4 absl::int128 UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES @@ -20,6 +20,8 @@ userver_module(clickhouse DBTEST_DATABASES clickhouse ) +target_compile_options(${PROJECT_NAME} PRIVATE -Wno-pedantic) + _userver_directory_install(COMPONENT clickhouse FILES "${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index a09732e8ec4a..2d9a12dcf80e 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -1,6 +1,7 @@ option(USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP "Download and setup clickhouse-cpp" ${USERVER_DOWNLOAD_PACKAGES}) find_package(lz4 REQUIRED) +include(SetupAbseil) if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) if (USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP) @@ -10,13 +11,11 @@ if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) endif() if (clickhouse-cpp_FOUND) - target_link_options(clickhouse-cpp INTERFACE -Wno-pedantic) return() endif() endif() include(DownloadUsingCPM) -include(SetupAbseil) CPMAddPackage( NAME clickhouse-cpp From 3c53c19bfaec2cced08177c7676e996335d8940f Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 10:02:22 +0300 Subject: [PATCH 24/71] try fix abseil --- cmake/SetupAbseil.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/SetupAbseil.cmake b/cmake/SetupAbseil.cmake index 61a80443c927..819d77998c1c 100644 --- a/cmake/SetupAbseil.cmake +++ b/cmake/SetupAbseil.cmake @@ -32,3 +32,4 @@ CPMAddPackage( mark_targets_as_system("${abseil-cpp_SOURCE_DIR}") write_package_stub(absl) +target_compile_options(absl PUBLIC -Wno-pedantic) From 5a234ecd5ac36cc4b2633ce226f9b44f6b2c8ab6 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 10:04:16 +0300 Subject: [PATCH 25/71] fix abseil --- cmake/SetupAbseil.cmake | 4 +++- cmake/SetupGrpc.cmake | 2 +- cmake/SetupProtobuf.cmake | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/SetupAbseil.cmake b/cmake/SetupAbseil.cmake index 819d77998c1c..ac420031c8db 100644 --- a/cmake/SetupAbseil.cmake +++ b/cmake/SetupAbseil.cmake @@ -32,4 +32,6 @@ CPMAddPackage( mark_targets_as_system("${abseil-cpp_SOURCE_DIR}") write_package_stub(absl) -target_compile_options(absl PUBLIC -Wno-pedantic) +if(TARGET absl_int128) + target_compile_options(absl_int128 PUBLIC -Wno-pedantic) +endif() diff --git a/cmake/SetupGrpc.cmake b/cmake/SetupGrpc.cmake index da6ea6639471..a16be3104be9 100644 --- a/cmake/SetupGrpc.cmake +++ b/cmake/SetupGrpc.cmake @@ -85,7 +85,7 @@ CPMAddPackage( "gRPC_SSL_PROVIDER package" "gRPC_PROTOBUF_PROVIDER package" "gRPC_BENCHMARK_PROVIDER none" - "gRPC_ABSL_PROVIDER none" + "gRPC_ABSL_PROVIDER package" "gRPC_CARES_LIBRARIES c-ares::cares" "gRPC_INSTALL OFF" ) diff --git a/cmake/SetupProtobuf.cmake b/cmake/SetupProtobuf.cmake index f2f09ecc2a17..75b09ad1f9ab 100644 --- a/cmake/SetupProtobuf.cmake +++ b/cmake/SetupProtobuf.cmake @@ -68,7 +68,7 @@ CPMAddPackage( "protobuf_BUILD_TESTS OFF" "protobuf_INSTALL OFF" "protobuf_MSVC_STATIC_RUNTIME OFF" - "protobuf_ABSL_PROVIDER none" + "protobuf_ABSL_PROVIDER package" ) set(Protobuf_VERSION "${CPM_PACKAGE_Protobuf_VERSION}") From 74ffb0f7cf3d09f47f33e8c6d204fd0816234ec0 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 10:36:08 +0300 Subject: [PATCH 26/71] Fix clickhouse --- clickhouse/CMakeLists.txt | 2 +- cmake/ModuleHelpers.cmake | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index dd8ed2643067..fe40c701b24c 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -20,7 +20,7 @@ userver_module(clickhouse DBTEST_DATABASES clickhouse ) -target_compile_options(${PROJECT_NAME} PRIVATE -Wno-pedantic) +target_compile_options(${PROJECT_NAME} PUBLIC -Wno-pedantic) _userver_directory_install(COMPONENT clickhouse FILES "${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake" diff --git a/cmake/ModuleHelpers.cmake b/cmake/ModuleHelpers.cmake index 5d04a855d73a..82a24d67f8f6 100644 --- a/cmake/ModuleHelpers.cmake +++ b/cmake/ModuleHelpers.cmake @@ -7,8 +7,6 @@ macro(_userver_module_begin) set(oneValueArgs # Target name, also used for package name by default NAME - # Custom package name; NAME is used by default - PACKAGE_NAME # For multi-target packages VERSION ) @@ -225,11 +223,7 @@ macro(_userver_module_end) include("${USERVER_CMAKE_DIR}/DetectVersion.cmake") set(name "${ARG_NAME}") - if(ARG_PACKAGE_NAME) - set(current_package_name "${ARG_PACKAGE_NAME}") - else() - set(current_package_name "${ARG_NAME}") - endif() + set(current_package_name "${ARG_NAME}") set(libraries_variable "${ARG_NAME}_LIBRARIES") set(includes_variable "${ARG_NAME}_INCLUDE_DIRS") set(programs_variable "${ARG_NAME}_EXECUTABLE") From 7104b987977c908b7d303f92e151c7d2440ee598 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 15:11:03 +0300 Subject: [PATCH 27/71] Try temporary fix mac --- .github/workflows/macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index ca713ed41bb7..a098217e504a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -66,6 +66,7 @@ jobs: brew link --force zlib # keg-only + need for static linkage brew link --force icu4c@76 # keg-only + need for static boost linkage brew link --force curl # keg-only + brew remove --ignore-dependencies abseil - name: Setup ccache run: | From 1956aeaeefe469e2b6bd0d1f600b635e8dd4f6d6 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 16:11:02 +0300 Subject: [PATCH 28/71] Consistent Kafka build --- cmake/SetupMongoDeps.cmake | 3 +-- cmake/SetupRdKafka.cmake | 1 + cmake/install/userver-kafka-config.cmake | 1 + cmake/modules/FindSASL2.cmake | 26 ++++++++++++++++++++++++ conanfile.py | 5 +++++ kafka/CMakeLists.txt | 26 ++++++++---------------- rabbitmq/CMakeLists.txt | 2 +- universal/CMakeLists.txt | 14 ++++++------- universal/utest/CMakeLists.txt | 2 +- 9 files changed, 52 insertions(+), 28 deletions(-) create mode 100644 cmake/modules/FindSASL2.cmake diff --git a/cmake/SetupMongoDeps.cmake b/cmake/SetupMongoDeps.cmake index f6d1b91c3b2b..df2368ad124d 100644 --- a/cmake/SetupMongoDeps.cmake +++ b/cmake/SetupMongoDeps.cmake @@ -3,9 +3,8 @@ include_guard(GLOBAL) option(USERVER_MONGODB_USE_CMAKE_CONFIG "Use mongoc cmake configuration" ON) if (USERVER_MONGODB_USE_CMAKE_CONFIG) - find_package(bson-1.0 QUIET CONFIG) find_package(mongoc-1.0 QUIET CONFIG) - if(bson-1.0_FOUND AND mongoc-1.0_FOUND) + if(mongoc-1.0_FOUND) message(STATUS "Mongoc: using config version") add_library(bson ALIAS mongo::bson_static) add_library(mongoc ALIAS mongo::mongoc_static) diff --git a/cmake/SetupRdKafka.cmake b/cmake/SetupRdKafka.cmake index cc99f6df2f7c..d7d8d7e41e6c 100644 --- a/cmake/SetupRdKafka.cmake +++ b/cmake/SetupRdKafka.cmake @@ -9,6 +9,7 @@ find_package(CURL REQUIRED) find_package(ZLIB REQUIRED) find_package(libzstd REQUIRED) find_package(lz4 REQUIRED) +find_package(SASL2 REQUIRED) if(NOT USERVER_FORCE_DOWNLOAD_PACKAGES) if(USERVER_DOWNLOAD_PACKAGE_KAFKA) diff --git a/cmake/install/userver-kafka-config.cmake b/cmake/install/userver-kafka-config.cmake index 666d1537bc7b..cfa91edde388 100644 --- a/cmake/install/userver-kafka-config.cmake +++ b/cmake/install/userver-kafka-config.cmake @@ -12,6 +12,7 @@ if(USERVER_CONAN) find_package(RdKafka REQUIRED CONFIG) else() include("${USERVER_CMAKE_DIR}/modules/Findlz4.cmake") + include("${USERVER_CMAKE_DIR}/modules/FindSASL2.cmake") include("${USERVER_CMAKE_DIR}/modules/FindRdKafka.cmake") endif() diff --git a/cmake/modules/FindSASL2.cmake b/cmake/modules/FindSASL2.cmake new file mode 100644 index 000000000000..a360ad71e12f --- /dev/null +++ b/cmake/modules/FindSASL2.cmake @@ -0,0 +1,26 @@ +if(TARGET SASL2::SASL2) +# Maybe already found by mongoc-1.0 config + return() +endif() + +_userver_module_begin( + NAME SASL2 + DEBIAN_NAMES libsasl2-dev + FORMULA_NAMES cyrus-sasl + PKG_CONFIG_NAMES libsasl2 +) + +_userver_module_find_include( + NAMES sasl/sasl.h +) + +_userver_module_find_library( + NAMES sasl2 + PATHS + /usr/lib/x86_64-linux-gnu + /opt/homebrew/lib +) + +_userver_module_end() + +add_library(SASL2::SASL2 ALIAS SASL2) diff --git a/conanfile.py b/conanfile.py index 37e098be765b..4b98bffda1ea 100644 --- a/conanfile.py +++ b/conanfile.py @@ -76,6 +76,11 @@ class UserverConan(ConanFile): 'grpc/*:ruby_plugin': False, 'grpc/*:csharp_plugin': False, 'grpc/*:objective_c_plugin': False, + 'librdkafka/*:ssl': True, + 'librdkafka/*:curl': True, + 'librdkafka/*:sasl': True, + 'librdkafka/*:zlib': True, + 'librdkafka/*:zstd': True, } def set_version(self): diff --git a/kafka/CMakeLists.txt b/kafka/CMakeLists.txt index 06bb49305dfa..5c9933a453cb 100644 --- a/kafka/CMakeLists.txt +++ b/kafka/CMakeLists.txt @@ -1,32 +1,23 @@ project(userver-kafka CXX) if(USERVER_CONAN) - find_package(OpenSSL COMPONENTS SSL Crypto REQUIRED CONFIG) - find_package(CURL REQUIRED CONFIG) - find_package(ZLIB REQUIRED CONFIG) - - find_package(zstd REQUIRED CONFIG) - # According to https://conan.io/center/recipes/zstd should be - # zstd::libzstd_static, but it does not work that way - if (TARGET zstd::libzstd_static) - add_library(libzstd ALIAS zstd::libzstd_static) - else() - add_library(libzstd ALIAS zstd::libzstd_shared) - endif() - find_package(RdKafka REQUIRED CONFIG) set_target_properties(RdKafka::rdkafka PROPERTIES IMPORTED_GLOBAL TRUE) add_library(RdKafka ALIAS RdKafka::rdkafka) - - find_package(cyrus-sasl REQUIRED CONFIG) - add_library(sasl2 ALIAS cyrus-sasl::cyrus-sasl) else() include(SetupRdKafka) + target_link_libraries(RdKafka + INTERFACE + ZLIB::ZLIB libzstd + lz4::lz4 CURL::libcurl + OpenSSL::SSL OpenSSL::Crypto + SASL2::SASL2 + ) endif() userver_module(kafka SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE RdKafka sasl2 ZLIB::ZLIB libzstd lz4::lz4 CURL::libcurl OpenSSL::SSL OpenSSL::Crypto + LINK_LIBRARIES_PRIVATE RdKafka DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" DBTEST_LINK_LIBRARIES userver::kafka-utest DBTEST_DATABASES kafka @@ -51,6 +42,7 @@ _userver_directory_install(COMPONENT kafka FILES "${USERVER_ROOT_DIR}/cmake/modules/FindRdKafka.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findlz4.cmake" + "${USERVER_ROOT_DIR}/cmake/modules/FindSASL2.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules" ) diff --git a/rabbitmq/CMakeLists.txt b/rabbitmq/CMakeLists.txt index 5afcaac82daf..206ebd053ec8 100644 --- a/rabbitmq/CMakeLists.txt +++ b/rabbitmq/CMakeLists.txt @@ -1,7 +1,7 @@ project(userver-rabbitmq CXX) if (USERVER_CONAN) - find_package(amqpcpp) + find_package(amqpcpp REQUIRED CONFIG) else() include(SetupAmqpCPP) endif() diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index ed3ab8c924d2..0a42a6249071 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -56,13 +56,13 @@ endif() find_package_required(OpenSSL "libssl-dev") if (USERVER_CONAN) - find_package(cryptopp REQUIRED) - find_package(yaml-cpp REQUIRED) - find_package(fmt REQUIRED) - find_package(cctz REQUIRED) - find_package(zstd REQUIRED) + find_package(cryptopp REQUIRED CONFIG) + find_package(yaml-cpp REQUIRED CONFIG) + find_package(fmt REQUIRED CONFIG) + find_package(cctz REQUIRED CONFIG) + find_package(zstd REQUIRED CONFIG) - find_package(RapidJSON REQUIRED) + find_package(RapidJSON REQUIRED CONFIG) target_compile_definitions(rapidjson INTERFACE RAPIDJSON_HAS_STDSTRING) else() include(SetupCryptoPP) @@ -328,7 +328,7 @@ if (USERVER_FEATURE_UTEST) add_library(${PROJECT_NAME}-internal-ubench INTERFACE) if (USERVER_CONAN) - find_package(benchmark REQUIRED) + find_package(benchmark REQUIRED CONFIG) else() include(SetupGBench) endif() diff --git a/universal/utest/CMakeLists.txt b/universal/utest/CMakeLists.txt index e1b6614c3179..5b69530da94f 100644 --- a/universal/utest/CMakeLists.txt +++ b/universal/utest/CMakeLists.txt @@ -1,7 +1,7 @@ project(userver-universal-utest CXX) if(USERVER_CONAN) - find_package(GTest REQUIRED) + find_package(GTest REQUIRED CONFIG) else() include(SetupGTest) endif() From 31866ca04c060fba79e137aa39e51f4d685d6846 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 16:15:12 +0300 Subject: [PATCH 29/71] Try use sasl2 from brew --- .github/workflows/macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a098217e504a..e6b5dfef34b1 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -66,6 +66,7 @@ jobs: brew link --force zlib # keg-only + need for static linkage brew link --force icu4c@76 # keg-only + need for static boost linkage brew link --force curl # keg-only + brew link --force cyrus-sasl # keg-only brew remove --ignore-dependencies abseil - name: Setup ccache From a3b68154f49321d44288dccdf56405975ddfb0b1 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 16:43:51 +0300 Subject: [PATCH 30/71] Add kafka service to conan samples --- .github/workflows/ci-conan.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-conan.yml b/.github/workflows/ci-conan.yml index 305a871ed0eb..bcdb96ee02e5 100644 --- a/.github/workflows/ci-conan.yml +++ b/.github/workflows/ci-conan.yml @@ -67,6 +67,7 @@ jobs: grpc_service \ hello_service \ postgres_service \ + kafka_service \ redis_service \ s3api \ ; do From 7f2f087536c7f76e26479a2b3781974e65f28835 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 20:22:45 +0300 Subject: [PATCH 31/71] Try fiz link with zstd --- .github/workflows/ci-conan.yml | 1 - clickhouse/CMakeLists.txt | 3 ++- cmake/SetupAbseil.cmake | 3 --- cmake/SetupClickhouseCPP.cmake | 1 - cmake/modules/Findlibzstd.cmake | 1 + conanfile.py | 2 +- kafka/CMakeLists.txt | 4 ++-- universal/CMakeLists.txt | 8 +------- 8 files changed, 7 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci-conan.yml b/.github/workflows/ci-conan.yml index bcdb96ee02e5..305a871ed0eb 100644 --- a/.github/workflows/ci-conan.yml +++ b/.github/workflows/ci-conan.yml @@ -67,7 +67,6 @@ jobs: grpc_service \ hello_service \ postgres_service \ - kafka_service \ redis_service \ s3api \ ; do diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index fe40c701b24c..a1025da9f790 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -20,7 +20,8 @@ userver_module(clickhouse DBTEST_DATABASES clickhouse ) -target_compile_options(${PROJECT_NAME} PUBLIC -Wno-pedantic) +target_compile_options(${PROJECT_NAME} PUBLIC "-Wno-error=pedantic") + _userver_directory_install(COMPONENT clickhouse FILES "${USERVER_ROOT_DIR}/cmake/modules/Findclickhouse-cpp.cmake" diff --git a/cmake/SetupAbseil.cmake b/cmake/SetupAbseil.cmake index ac420031c8db..61a80443c927 100644 --- a/cmake/SetupAbseil.cmake +++ b/cmake/SetupAbseil.cmake @@ -32,6 +32,3 @@ CPMAddPackage( mark_targets_as_system("${abseil-cpp_SOURCE_DIR}") write_package_stub(absl) -if(TARGET absl_int128) - target_compile_options(absl_int128 PUBLIC -Wno-pedantic) -endif() diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index 2d9a12dcf80e..6534dabba823 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -29,4 +29,3 @@ CPMAddPackage( ) add_library(clickhouse-cpp ALIAS clickhouse-cpp-lib) -target_compile_options(clickhouse-cpp-lib PUBLIC -Wno-pedantic) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index f436bff68ce3..b97f007a03a1 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -24,3 +24,4 @@ _userver_module_end() if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT TARGET zstd) add_library(zstd ALIAS libzstd) endif() +add_library(zstd::zstd ALIAS libzstd) diff --git a/conanfile.py b/conanfile.py index 4b98bffda1ea..0854e13299df 100644 --- a/conanfile.py +++ b/conanfile.py @@ -163,7 +163,7 @@ def requirements(self): transitive_libs=True, ) if self.options.with_kafka: - self.requires('librdkafka/2.6.0') + self.requires('librdkafka/2.6.1') if self.options.with_s3api: self.requires('pugixml/1.14') diff --git a/kafka/CMakeLists.txt b/kafka/CMakeLists.txt index 5c9933a453cb..5a460beb5106 100644 --- a/kafka/CMakeLists.txt +++ b/kafka/CMakeLists.txt @@ -8,10 +8,10 @@ else() include(SetupRdKafka) target_link_libraries(RdKafka INTERFACE - ZLIB::ZLIB libzstd + ZLIB::ZLIB lz4::lz4 CURL::libcurl OpenSSL::SSL OpenSSL::Crypto - SASL2::SASL2 + SASL2::SASL2 zstd::zstd ) endif() diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 0a42a6249071..9d4ab127c996 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -249,14 +249,8 @@ if (USERVER_CONAN) yaml-cpp cryptopp::cryptopp rapidjson + zstd::libzstd_static ) - # According to https://conan.io/center/recipes/zstd should be - # zstd::libzstd_static, but it does not work that way - if (TARGET zstd::libzstd_static) - target_link_libraries(${PROJECT_NAME} PRIVATE zstd::libzstd_static) - else() - target_link_libraries(${PROJECT_NAME} PRIVATE zstd::libzstd_shared) - endif() else() include(Stacktrace) _make_stacktrace_target(userver-stacktrace "${Boost_VERSION_STRING}") From ed16f85de91c4aa5856e172cc415a8334ddde42e Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 20:27:20 +0300 Subject: [PATCH 32/71] Fix kafka version --- conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conanfile.py b/conanfile.py index 0854e13299df..4b98bffda1ea 100644 --- a/conanfile.py +++ b/conanfile.py @@ -163,7 +163,7 @@ def requirements(self): transitive_libs=True, ) if self.options.with_kafka: - self.requires('librdkafka/2.6.1') + self.requires('librdkafka/2.6.0') if self.options.with_s3api: self.requires('pugixml/1.14') From 134acbad88117be6eeaacf320c42fd0574b74e55 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Tue, 7 Jan 2025 20:45:23 +0300 Subject: [PATCH 33/71] Maybe linker problem --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index deb5d66fef8e..d940a62bafe0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,6 @@ jobs: -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_BUILD_TYPE=Debug - -DUSERVER_USE_LD=gold -DUSERVER_BUILD_ALL_COMPONENTS=1 -DUSERVER_BUILD_SAMPLES=1 -DUSERVER_BUILD_TESTS=1 From 32df506ad058ba3b10b4b486bbcd2974f3f03f25 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 11:49:11 +0300 Subject: [PATCH 34/71] Add options to to use static libs --- .github/workflows/ci.yml | 3 +++ .github/workflows/docker.yaml | 3 +++ CMakeLists.txt | 15 +++++++++------ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d940a62bafe0..263ea7a4eb55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: -DCMAKE_CXX_COMPILER=clang++-18 -DCMAKE_C_COMPILER=clang-18 -DCMAKE_BUILD_TYPE=Debug + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_SANITIZE="ub addr" -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_ALL_COMPONENTS=1 @@ -45,6 +46,7 @@ jobs: -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=Debug + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_SANITIZE="ub addr" -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_ALL_COMPONENTS=1 @@ -83,6 +85,7 @@ jobs: -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_BUILD_TYPE=Debug + -DUSERVER_USE_LD=gold -DUSERVER_BUILD_ALL_COMPONENTS=1 -DUSERVER_BUILD_SAMPLES=1 -DUSERVER_BUILD_TESTS=1 diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 9ddbb8ef53b9..9c64a92ea53a 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -17,6 +17,7 @@ jobs: - cmake-flags: >- -DCMAKE_CXX_STANDARD=17 -DCPM_SOURCE_CACHE=~/.cache/CPM + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_USE_LD=gold -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_SAMPLES=1 @@ -32,6 +33,7 @@ jobs: -DCMAKE_CXX_COMPILER=clang++-16 -DCMAKE_CXX_STANDARD=17 -DCPM_SOURCE_CACHE=~/.cache/CPM + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_ALL_COMPONENTS=1 -DUSERVER_BUILD_SAMPLES=1 @@ -59,6 +61,7 @@ jobs: -DCMAKE_CXX_COMPILER=clang++-16 -DCMAKE_CXX_STANDARD=20 -DCPM_SOURCE_CACHE=~/.cache/CPM + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_BUILD_ALL_COMPONENTS=1 -DUSERVER_BUILD_SAMPLES=1 -DUSERVER_BUILD_TESTS=1 diff --git a/CMakeLists.txt b/CMakeLists.txt index fd91af875c1f..1c2ebd850aed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,12 +143,15 @@ option(USERVER_FEATURE_OTLP "Provide asynchronous OTLP exporters" "${USERVER_LIB set(CMAKE_DEBUG_POSTFIX d) -set(OPENSSL_USE_STATIC_LIBS ON) -set(ZLIB_USE_STATIC_LIBS ON) -set(Protobuf_USE_STATIC_LIBS ON) -set(Boost_USE_STATIC_LIBS ON) -set(CURL_USE_STATIC_LIBS ON) -set(Protobuf_VERBOSE ON) +option(USERVER_USE_STATIC_LIBS "Turns on dependencies _USE_STATIC_LIBS options" OFF) + +if(USERVER_USE_STATIC_LIBS) + set(OPENSSL_USE_STATIC_LIBS ON) + set(ZLIB_USE_STATIC_LIBS ON) + set(Protobuf_USE_STATIC_LIBS ON) + set(Boost_USE_STATIC_LIBS ON) + set(CURL_USE_STATIC_LIBS ON) +endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(UserverSetupEnvironment) From 58cdb80ad2de49e9aa575302f5376ee6ca38cd36 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 12:01:43 +0300 Subject: [PATCH 35/71] Use static libs in alpine and in MacOS --- .github/workflows/alpine.yml | 1 + .github/workflows/macos.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/alpine.yml b/.github/workflows/alpine.yml index 7594ee2e9661..3f3ea1ec5086 100644 --- a/.github/workflows/alpine.yml +++ b/.github/workflows/alpine.yml @@ -91,6 +91,7 @@ jobs: CMAKE_PROGRAM_PATH=/usr/lib/llvm17/bin/ \ cmake -S . -B build_debug \ -DCMAKE_BUILD_TYPE=Debug \ + -DUSERVER_USE_STATIC_LIBS=1 \ -DUSERVER_USE_LD=lld \ -DUSERVER_NO_WERROR=OFF \ -DUSERVER_BUILD_ALL_COMPONENTS=1 \ diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e6b5dfef34b1..92e01b4ea52f 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -25,6 +25,7 @@ jobs: CMAKE_FLAGS: >- -GNinja -DCMAKE_BUILD_TYPE=Debug + -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_NO_WERROR=1 -DUSERVER_BUILD_ALL_COMPONENTS=1 -DUSERVER_BUILD_SAMPLES=1 From 46c3121e13c7455c84e05669c7e9f8938cd3a998 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 12:36:04 +0300 Subject: [PATCH 36/71] correct cache keys --- .github/workflows/alpine.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/docker.yaml | 2 +- .github/workflows/macos.yml | 2 +- cmake/ModuleHelpers.cmake | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/alpine.yml b/.github/workflows/alpine.yml index 3f3ea1ec5086..b5b002062b43 100644 --- a/.github/workflows/alpine.yml +++ b/.github/workflows/alpine.yml @@ -37,7 +37,7 @@ jobs: path: | ${{env.CCACHE_DIR}} ${{env.CPM_SOURCE_CACHE}} - key: 'alpine-cache-dir ${{github.ref}}' + key: 'alpine-cache-dir ${{github.ref}} run-${{github.run_number}}' restore-keys: | alpine-cache-dir ${{github.ref}} alpine-cache-dir diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 263ea7a4eb55..bafb6929be9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,7 +113,7 @@ jobs: path: | ${{env.CCACHE_DIR}} ${{env.CPM_SOURCE_CACHE}} - key: 'ubuntu-cache-dir ${{matrix.id}} ${{github.ref}}' + key: 'ubuntu-cache-dir ${{matrix.id}} ${{github.ref}} run-${{github.run_number}}' restore-keys: | ubuntu-cache-dir ${{matrix.id}} ${{github.ref}} ubuntu-cache-dir ${{matrix.id}} diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 9c64a92ea53a..c190f565d89e 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -100,7 +100,7 @@ jobs: path: | .ccache .cache/CPM - key: 'docker-cache-dir ${{matrix.id}} ${{github.ref}}' + key: 'docker-cache-dir ${{matrix.id}} ${{github.ref}} run-${{github.run_number}}' restore-keys: | docker-cache-dir ${{matrix.id}} ${{github.ref}} docker-cache-dir ${{matrix.id}} diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 92e01b4ea52f..e5dba6c5fde4 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -49,7 +49,7 @@ jobs: path: | ${{env.CCACHE_DIR}} ${{env.CPM_SOURCE_CACHE}} - key: 'macos-cache-dir ${{github.ref}}' + key: 'macos-cache-dir ${{github.ref}} run-${{github.run_number}}' restore-keys: | macos-cache-dir ${{github.ref}} macos-cache-dir diff --git a/cmake/ModuleHelpers.cmake b/cmake/ModuleHelpers.cmake index 82a24d67f8f6..15266836e0a9 100644 --- a/cmake/ModuleHelpers.cmake +++ b/cmake/ModuleHelpers.cmake @@ -7,7 +7,6 @@ macro(_userver_module_begin) set(oneValueArgs # Target name, also used for package name by default NAME - # For multi-target packages VERSION ) set(multiValueArgs From 3fd84eed8b34ddd4f0d3a8f0f06dd4b803f3c522 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 13:09:07 +0300 Subject: [PATCH 37/71] Some fixes --- cmake/modules/Findclickhouse-cpp.cmake | 2 +- mongo/CMakeLists.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/modules/Findclickhouse-cpp.cmake b/cmake/modules/Findclickhouse-cpp.cmake index efc31229e8c3..16aa349b0cb8 100644 --- a/cmake/modules/Findclickhouse-cpp.cmake +++ b/cmake/modules/Findclickhouse-cpp.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libclickhouse-cpp-lib.a libclickhouse-cpp-lib.so + NAMES libclickhouse-cpp-lib.a clickhouse-cpp-lib ) _userver_module_find_library( diff --git a/mongo/CMakeLists.txt b/mongo/CMakeLists.txt index daa833f99417..22723c34424c 100644 --- a/mongo/CMakeLists.txt +++ b/mongo/CMakeLists.txt @@ -6,7 +6,6 @@ if (USERVER_CONAN) set_target_properties(mongo::mongoc_static PROPERTIES IMPORTED_GLOBAL TRUE) add_library(bson ALIAS mongo::bson_static) add_library(mongoc ALIAS mongo::mongoc_static) - find_package(cyrus-sasl REQUIRED CONFIG) else() include(SetupMongoDeps) endif() From c7d44bceb005512c2c2ae53d833ac0a537478546 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 22:36:16 +0300 Subject: [PATCH 38/71] Try try try --- .github/workflows/ci-conan.yml | 1 - CMakeLists.txt | 14 +++++++------- cmake/SetupCURL.cmake | 15 ++++++++++++++- cmake/SetupHomebrew.cmake | 26 ++++++++++++++++++++++++++ cmake/SetupMongoDeps.cmake | 2 +- cmake/SetupRdKafka.cmake | 3 ++- cmake/UserverPreferStaticLibs.cmake | 21 +++++++++++++++++++++ cmake/UserverSetupEnvironment.cmake | 4 ++++ cmake/modules/FindCryptoPP.cmake | 2 +- cmake/modules/FindGssApi.cmake | 1 + cmake/modules/FindHiredis.cmake | 2 +- cmake/modules/FindJemalloc.cmake | 2 +- cmake/modules/FindLibEv.cmake | 2 +- cmake/modules/FindNghttp2.cmake | 2 +- cmake/modules/FindPugixml.cmake | 2 +- cmake/modules/FindRdKafka.cmake | 2 +- cmake/modules/FindRocksDB.cmake | 2 +- cmake/modules/FindSASL2.cmake | 6 +++++- cmake/modules/FindUserverGBench.cmake | 4 ++-- cmake/modules/Findbson.cmake | 4 ++++ cmake/modules/Findc-ares.cmake | 2 +- cmake/modules/Findcctz.cmake | 5 ++++- cmake/modules/Findclickhouse-cpp.cmake | 7 +++++-- cmake/modules/Findfmt.cmake | 2 +- cmake/modules/Findlibgflags.cmake | 2 +- cmake/modules/Findlibmariadb.cmake | 3 ++- cmake/modules/Findlibsnappy.cmake | 2 +- cmake/modules/Findlibyamlcpp.cmake | 2 +- cmake/modules/Findlibzip.cmake | 2 +- cmake/modules/Findlibzstd.cmake | 2 +- cmake/modules/Findlz4.cmake | 2 +- cmake/modules/Findmongoc.cmake | 6 +++++- universal/CMakeLists.txt | 14 ++------------ 33 files changed, 121 insertions(+), 47 deletions(-) create mode 100644 cmake/SetupHomebrew.cmake create mode 100644 cmake/UserverPreferStaticLibs.cmake diff --git a/.github/workflows/ci-conan.yml b/.github/workflows/ci-conan.yml index 305a871ed0eb..1c8fea82540a 100644 --- a/.github/workflows/ci-conan.yml +++ b/.github/workflows/ci-conan.yml @@ -38,7 +38,6 @@ jobs: run: | brew update brew install postgresql redis clang-format - brew install libiconv # https://stackoverflow.com/questions/57734434/libiconv-or-iconv-undefined-symbol-on-mac-osx brew install python@3.11 - name: Install common packages diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c2ebd850aed..0422b684a5bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,17 +143,17 @@ option(USERVER_FEATURE_OTLP "Provide asynchronous OTLP exporters" "${USERVER_LIB set(CMAKE_DEBUG_POSTFIX d) -option(USERVER_USE_STATIC_LIBS "Turns on dependencies _USE_STATIC_LIBS options" OFF) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +option(USERVER_USE_STATIC_LIBS "Tryies to find all dependencies as static libraries" OFF) if(USERVER_USE_STATIC_LIBS) - set(OPENSSL_USE_STATIC_LIBS ON) - set(ZLIB_USE_STATIC_LIBS ON) - set(Protobuf_USE_STATIC_LIBS ON) - set(Boost_USE_STATIC_LIBS ON) - set(CURL_USE_STATIC_LIBS ON) + message( + WARNING + "USERVER_USE_STATIC_LIBS turned ON, prioritized to find static libraries. Not all dependencies may be taken into account and linkage may be broken") + include(UserverPreferStaticLibs) endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(UserverSetupEnvironment) userver_setup_environment() diff --git a/cmake/SetupCURL.cmake b/cmake/SetupCURL.cmake index 3a83295da067..e032988f499a 100644 --- a/cmake/SetupCURL.cmake +++ b/cmake/SetupCURL.cmake @@ -1,12 +1,22 @@ option(USERVER_DOWNLOAD_PACKAGE_CURL "Download and setup libcurl if no libcurl of matching version was found" ${USERVER_DOWNLOAD_PACKAGES}) if(NOT USERVER_FORCE_DOWNLOAD_PACKAGES) + # Curl has too many dependencies to reliably + # link with all of them statically without CMake Config + if (USERVER_USE_STATIC_LIBS) + list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES) + endif() + if(USERVER_DOWNLOAD_PACKAGE_CURL) - find_package(CURL "7.68" QUIET) + find_package(CURL "7.68") else() find_package_required_version(CURL "libcurl4-openssl-dev" "7.68") endif() + if (USERVER_USE_STATIC_LIBS) + list(REVERSE CMAKE_FIND_LIBRARY_SUFFIXES) + endif() + if(CURL_FOUND) if("${CURL_VERSION_STRING}" VERSION_GREATER_EQUAL "7.88.0" AND "${CURL_VERSION_STRING}" VERSION_LESS_EQUAL "8.1.2") @@ -45,3 +55,6 @@ CPMAddPackage( "CURL_DISABLE_TESTS ON" ${CURL_LTO_OPTION} ) + +mark_targets_as_system("${CURL_SOURCE_DIR}") +write_package_stub(CURL) diff --git a/cmake/SetupHomebrew.cmake b/cmake/SetupHomebrew.cmake new file mode 100644 index 000000000000..4015a9f92fe0 --- /dev/null +++ b/cmake/SetupHomebrew.cmake @@ -0,0 +1,26 @@ +option(USERVER_USE_BREW_LIBRARIES "(MacOS) Find package preferes libraries installed with homebrew and make linker search libraries in brew folders" ON) + +if(NOT DEFINED $CACHE{USERVER_BREW_PREFIX}) + find_program(BREW_BIN brew) + if(BREW_BIN) + execute_process( + COMMAND ${BREW_BIN} --prefix + OUTPUT_VARIABLE brew_prefix + RESULT_VARIABLE brew_prefix_result + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if(brew_prefix_result EQUAL 0) + set(USERVER_BREW_PREFIX "${brew_prefix}" CACHE INTERNAL "Brew prefix") + message(STATUS "brew prefix is: ${USERVER_BREW_PREFIX}") + endif() + endif() +endif() + +if (USERVER_BREW_PREFIX) + add_link_options("-L${USERVER_BREW_PREFIX}/lib") + + if(NOT USERVER_BREW_PREFIX IN_LIST CMAKE_PREFIX_PATH AND NOT USERVER_CONAN) + set(CMAKE_PREFIX_PATH "${USERVER_BREW_PREFIX}" ${CMAKE_PREFIX_PATH} PARENT_SCOPE) + endif() +endif() diff --git a/cmake/SetupMongoDeps.cmake b/cmake/SetupMongoDeps.cmake index df2368ad124d..55ab17abddf1 100644 --- a/cmake/SetupMongoDeps.cmake +++ b/cmake/SetupMongoDeps.cmake @@ -5,7 +5,7 @@ option(USERVER_MONGODB_USE_CMAKE_CONFIG "Use mongoc cmake configuration" ON) if (USERVER_MONGODB_USE_CMAKE_CONFIG) find_package(mongoc-1.0 QUIET CONFIG) if(mongoc-1.0_FOUND) - message(STATUS "Mongoc: using config version") + message(STATUS "Mongoc: using config version: (bson: ${bson-1.0_VERSION}, mongoc: ${mongoc-1.0_VERSION})") add_library(bson ALIAS mongo::bson_static) add_library(mongoc ALIAS mongo::mongoc_static) return() diff --git a/cmake/SetupRdKafka.cmake b/cmake/SetupRdKafka.cmake index d7d8d7e41e6c..5ec80bc6e81e 100644 --- a/cmake/SetupRdKafka.cmake +++ b/cmake/SetupRdKafka.cmake @@ -4,8 +4,9 @@ option(USERVER_DOWNLOAD_PACKAGE_KAFKA "Download and setup librdkafka if no librd set(USERVER_KAFKA_VERSION "2.3.0") +include(SetupCURL) + find_package(OpenSSL REQUIRED) -find_package(CURL REQUIRED) find_package(ZLIB REQUIRED) find_package(libzstd REQUIRED) find_package(lz4 REQUIRED) diff --git a/cmake/UserverPreferStaticLibs.cmake b/cmake/UserverPreferStaticLibs.cmake new file mode 100644 index 000000000000..b601f37934c5 --- /dev/null +++ b/cmake/UserverPreferStaticLibs.cmake @@ -0,0 +1,21 @@ +include_guard(GLOBAL) + +if(USERVER_USE_STATIC_LIBS) + set(OPENSSL_USE_STATIC_LIBS ON) + set(ZLIB_USE_STATIC_LIBS ON) + set(Protobuf_USE_STATIC_LIBS ON) + set(Boost_USE_STATIC_LIBS ON) + set(CURL_USE_STATIC_LIBS ON) + + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so") + if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dylib") + list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".tbd") + endif() + + set(_FIND_LIB_PRIORITY_MESSAGE "Static libraries are prefered") +else() + set(_FIND_LIB_PRIORITY_MESSAGE "Default ordered") +endif() + +message(STATUS "Modules type search priority order: ${CMAKE_FIND_LIBRARY_SUFFIXES} (${_FIND_LIB_PRIORITY_MESSAGE})") diff --git a/cmake/UserverSetupEnvironment.cmake b/cmake/UserverSetupEnvironment.cmake index 0c3f8d276171..6c4eeb9658e5 100644 --- a/cmake/UserverSetupEnvironment.cmake +++ b/cmake/UserverSetupEnvironment.cmake @@ -29,6 +29,9 @@ function(_userver_setup_environment_impl) message(STATUS "C++ compiler: ${CMAKE_CXX_COMPILER}") cmake_policy(SET CMP0057 NEW) + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + include("${USERVER_CMAKE_DIR}/SetupHomebrew.cmake") + endif() if(NOT "${USERVER_CMAKE_DIR}/modules" IN_LIST CMAKE_MODULE_PATH AND NOT USERVER_CONAN) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${USERVER_CMAKE_DIR}/modules" PARENT_SCOPE) endif() @@ -63,6 +66,7 @@ function(_userver_setup_environment_impl) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" PARENT_SCOPE) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" PARENT_SCOPE) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION "${CMAKE_INTERPROCEDURAL_OPTIMIZATION}" PARENT_SCOPE) + message(STATUS "Linker global flags: ${CMAKE_EXE_LINKER_FLAGS}") option(USERVER_USE_CCACHE "Use ccache for build" ON) if(USERVER_USE_CCACHE) diff --git a/cmake/modules/FindCryptoPP.cmake b/cmake/modules/FindCryptoPP.cmake index 9da1826082d2..ce8148fb41c0 100644 --- a/cmake/modules/FindCryptoPP.cmake +++ b/cmake/modules/FindCryptoPP.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libcryptopp.a cryptlib cryptopp + NAMES cryptlib cryptopp PATH_SUFFIXES lib ) diff --git a/cmake/modules/FindGssApi.cmake b/cmake/modules/FindGssApi.cmake index 600984cb644a..eed04fd30b68 100644 --- a/cmake/modules/FindGssApi.cmake +++ b/cmake/modules/FindGssApi.cmake @@ -12,6 +12,7 @@ _userver_module_find_include( _userver_module_find_library( NAMES gssapi_krb5 gssapi + PATH_SUFFIXES gssapi ) _userver_module_end() diff --git a/cmake/modules/FindHiredis.cmake b/cmake/modules/FindHiredis.cmake index ea0a3af7f5c4..238dfc1a4fa6 100644 --- a/cmake/modules/FindHiredis.cmake +++ b/cmake/modules/FindHiredis.cmake @@ -14,7 +14,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libhiredis.a hiredis + NAMES hiredis ) _userver_module_end() diff --git a/cmake/modules/FindJemalloc.cmake b/cmake/modules/FindJemalloc.cmake index 21bd478938bc..eb1ab5c49c22 100644 --- a/cmake/modules/FindJemalloc.cmake +++ b/cmake/modules/FindJemalloc.cmake @@ -19,7 +19,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libjemalloc.a jemalloc + NAMES jemalloc ) _userver_module_end() diff --git a/cmake/modules/FindLibEv.cmake b/cmake/modules/FindLibEv.cmake index 87c7df662b5c..e25cbf40b3e0 100644 --- a/cmake/modules/FindLibEv.cmake +++ b/cmake/modules/FindLibEv.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libev.a ev + NAMES ev ) _userver_module_end() diff --git a/cmake/modules/FindNghttp2.cmake b/cmake/modules/FindNghttp2.cmake index c6f3703c03d7..268463e7b993 100644 --- a/cmake/modules/FindNghttp2.cmake +++ b/cmake/modules/FindNghttp2.cmake @@ -10,7 +10,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libnghttp2.a nghttp2 + NAMES nghttp2 ) _userver_module_end() diff --git a/cmake/modules/FindPugixml.cmake b/cmake/modules/FindPugixml.cmake index 5027a5995670..7bdd0660443d 100644 --- a/cmake/modules/FindPugixml.cmake +++ b/cmake/modules/FindPugixml.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libpugixml.a pugixml libpugixml + NAMES pugixml libpugixml ) _userver_module_end() diff --git a/cmake/modules/FindRdKafka.cmake b/cmake/modules/FindRdKafka.cmake index efe5c58b649a..dbb626482935 100644 --- a/cmake/modules/FindRdKafka.cmake +++ b/cmake/modules/FindRdKafka.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES librdkafka.a rdkafka + NAMES rdkafka ) _userver_module_end() diff --git a/cmake/modules/FindRocksDB.cmake b/cmake/modules/FindRocksDB.cmake index 4007f27febfc..30ed4593dd07 100644 --- a/cmake/modules/FindRocksDB.cmake +++ b/cmake/modules/FindRocksDB.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES librocksdb.a rocksdb + NAMES rocksdb ) _userver_module_end() diff --git a/cmake/modules/FindSASL2.cmake b/cmake/modules/FindSASL2.cmake index a360ad71e12f..9569f1ea8ad8 100644 --- a/cmake/modules/FindSASL2.cmake +++ b/cmake/modules/FindSASL2.cmake @@ -12,10 +12,14 @@ _userver_module_begin( _userver_module_find_include( NAMES sasl/sasl.h + PATHS + /usr/lib/x86_64-linux-gnu + /opt/homebrew/include ) +# sasl2 has to many dependencies to reliably be linked statically _userver_module_find_library( - NAMES sasl2 + NAMES libsasl2.dylib libsasl2.tbd libsasl2.so PATHS /usr/lib/x86_64-linux-gnu /opt/homebrew/lib diff --git a/cmake/modules/FindUserverGBench.cmake b/cmake/modules/FindUserverGBench.cmake index e8b53a8132e8..a656e7e67198 100644 --- a/cmake/modules/FindUserverGBench.cmake +++ b/cmake/modules/FindUserverGBench.cmake @@ -13,11 +13,11 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libbenchmark_main.a benchmark_main + NAMES benchmark_main ) _userver_module_find_library( - NAMES libbenchmark.a benchmark + NAMES benchmark ) _userver_module_end() diff --git a/cmake/modules/Findbson.cmake b/cmake/modules/Findbson.cmake index 26efd80537ec..8ccff7a1486d 100644 --- a/cmake/modules/Findbson.cmake +++ b/cmake/modules/Findbson.cmake @@ -18,6 +18,10 @@ _userver_module_find_include( _userver_module_find_library( NAMES libbson-static-1.0.a bson bson-1.0 + PATHS + /usr/include/libbson-1.0 + /usr/local/opt/mongo-c-driver/include/libbson-1.0 + /opt/homebrew/opt/mongo-c-driver/include/libbson-1.0 ) _userver_module_end() diff --git a/cmake/modules/Findc-ares.cmake b/cmake/modules/Findc-ares.cmake index af9ee4019ce2..cbb7f856cc26 100644 --- a/cmake/modules/Findc-ares.cmake +++ b/cmake/modules/Findc-ares.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libcares.a libcares_static.a cares + NAMES cares_static cares ) _userver_module_end() diff --git a/cmake/modules/Findcctz.cmake b/cmake/modules/Findcctz.cmake index d30d6fa996ad..8839f3bf6cba 100644 --- a/cmake/modules/Findcctz.cmake +++ b/cmake/modules/Findcctz.cmake @@ -9,10 +9,13 @@ _userver_module_begin( _userver_module_find_include( NAMES cctz/civil_time.h + PATHS + /usr/lib/x86_64-linux-gnu + /opt/homebrew/opt/cctz/lib ) _userver_module_find_library( - NAMES libcctz.a cctz + NAMES cctz PATHS /usr/lib/x86_64-linux-gnu /opt/homebrew/opt/cctz/lib diff --git a/cmake/modules/Findclickhouse-cpp.cmake b/cmake/modules/Findclickhouse-cpp.cmake index 16aa349b0cb8..5556b289f921 100644 --- a/cmake/modules/Findclickhouse-cpp.cmake +++ b/cmake/modules/Findclickhouse-cpp.cmake @@ -6,12 +6,15 @@ _userver_module_begin( _userver_module_find_include( NAMES clickhouse/block.h PATH_SUFFIXES - clickhouse-cpp - yandex/clickhouse-cpp + clickhouse-cpp + yandex/clickhouse-cpp ) _userver_module_find_library( NAMES libclickhouse-cpp-lib.a clickhouse-cpp-lib + PATH_SUFFIXES + clickhouse-cpp + yandex/clickhouse-cpp ) _userver_module_find_library( diff --git a/cmake/modules/Findfmt.cmake b/cmake/modules/Findfmt.cmake index 175aeb297fbf..ebba6fc9dd3d 100644 --- a/cmake/modules/Findfmt.cmake +++ b/cmake/modules/Findfmt.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libfmt.a fmt + NAMES fmt ) _userver_module_end() diff --git a/cmake/modules/Findlibgflags.cmake b/cmake/modules/Findlibgflags.cmake index aea62f4a4267..64ede3830a0e 100644 --- a/cmake/modules/Findlibgflags.cmake +++ b/cmake/modules/Findlibgflags.cmake @@ -16,7 +16,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libgflags.a gflags + NAMES gflags PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibmariadb.cmake b/cmake/modules/Findlibmariadb.cmake index b87732508555..36380f3900a5 100644 --- a/cmake/modules/Findlibmariadb.cmake +++ b/cmake/modules/Findlibmariadb.cmake @@ -8,10 +8,11 @@ _userver_module_begin( _userver_module_find_include( NAMES mysql/mysql.h mariadb/mysql.h + PATH_SUFFIXES lib ) _userver_module_find_library( - NAMES libmariadb.a mariadb + NAMES mariadb PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibsnappy.cmake b/cmake/modules/Findlibsnappy.cmake index b6a67daf96d6..225685291c2b 100644 --- a/cmake/modules/Findlibsnappy.cmake +++ b/cmake/modules/Findlibsnappy.cmake @@ -16,7 +16,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libsnappy.a snappy + NAMES snappy PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibyamlcpp.cmake b/cmake/modules/Findlibyamlcpp.cmake index 06d398480635..3c12d660ed3c 100644 --- a/cmake/modules/Findlibyamlcpp.cmake +++ b/cmake/modules/Findlibyamlcpp.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libyaml-cpp.a yaml-cpp + NAMES yaml-cpp PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibzip.cmake b/cmake/modules/Findlibzip.cmake index 0713f3257eb0..19844c747a14 100644 --- a/cmake/modules/Findlibzip.cmake +++ b/cmake/modules/Findlibzip.cmake @@ -12,7 +12,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libbz2.a bz2 libbz2 + NAMES bz2 libbz2 PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index b97f007a03a1..fd58c0e3acf3 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -15,7 +15,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libzstd.a zstd + NAMES zstd PATH_SUFFIXES lib ) diff --git a/cmake/modules/Findlz4.cmake b/cmake/modules/Findlz4.cmake index 28129ca50ecd..7f557b2ef4d8 100644 --- a/cmake/modules/Findlz4.cmake +++ b/cmake/modules/Findlz4.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES liblz4.a lz4 + NAMES lz4 ) _userver_module_end() diff --git a/cmake/modules/Findmongoc.cmake b/cmake/modules/Findmongoc.cmake index 060c6e2df301..05d8a0ea133f 100644 --- a/cmake/modules/Findmongoc.cmake +++ b/cmake/modules/Findmongoc.cmake @@ -17,7 +17,11 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libmongoc-static-1.0.a mongoc mongoc-1.0 + NAMES mongoc mongoc-1.0 + PATHS + /usr/include/libmongoc-1.0 + /usr/local/opt/mongo-c/include/libmongoc-1.0 + /opt/homebrew/opt/mongo-c-driver/include/libmongoc-1.0 ) _userver_module_end() diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 9d4ab127c996..1da37b9fe3a0 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -266,18 +266,6 @@ else() libzstd CryptoPP ) - - find_package(ICU COMPONENTS uc i18n data REQUIRED) - if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - set_target_properties(ICU::uc PROPERTIES IMPORTED_GLOBAL TRUE) - set_target_properties(ICU::i18n PROPERTIES IMPORTED_GLOBAL TRUE) - set_target_properties(ICU::data PROPERTIES IMPORTED_GLOBAL TRUE) - endif() - add_library(icuuc ALIAS ICU::uc) - add_library(icui18n ALIAS ICU::i18n) - add_library(icudata ALIAS ICU::data) - - target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::data) endif() if (CMAKE_SYSTEM_NAME MATCHES "Darwin") @@ -394,12 +382,14 @@ _userver_directory_install(COMPONENT universal FILES "${USERVER_ROOT_DIR}/cmake/SetupLTO.cmake" "${USERVER_ROOT_DIR}/cmake/SetupPGO.cmake" "${USERVER_ROOT_DIR}/cmake/SetupLinker.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupHomebrew.cmake" "${USERVER_ROOT_DIR}/cmake/Sanitizers.cmake" "${USERVER_ROOT_DIR}/cmake/AddGoogleTests.cmake" "${USERVER_ROOT_DIR}/cmake/DetectVersion.cmake" "${USERVER_ROOT_DIR}/cmake/UserverSetupEnvironment.cmake" "${USERVER_ROOT_DIR}/cmake/UserverVenv.cmake" "${USERVER_ROOT_DIR}/cmake/UserverEmbedFile.cmake" + "${USERVER_ROOT_DIR}/cmake/UserverPreferStaticLibs.cmake" "${USERVER_ROOT_DIR}/cmake/embedded_config.cmake" "${USERVER_ROOT_DIR}/cmake/install/userver-universal-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver From cdfbeb4f8f3f2fb74faf150214885be3ff63fdc0 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 22:36:25 +0300 Subject: [PATCH 39/71] Debug --- cmake/ModuleHelpers.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/ModuleHelpers.cmake b/cmake/ModuleHelpers.cmake index 15266836e0a9..261e291a87ea 100644 --- a/cmake/ModuleHelpers.cmake +++ b/cmake/ModuleHelpers.cmake @@ -126,6 +126,7 @@ macro(_userver_module_find_part) PATH_SUFFIXES ${ARG_PATH_SUFFIXES} PATHS ${ARG_PATHS} ) + message(DEBUG "STATUS FIND(${ARG_NAMES}) ARGS: ${find_command_args}") if("${ARG_PART_TYPE}" STREQUAL "library") find_library(${find_command_args}) elseif("${ARG_PART_TYPE}" STREQUAL "path") From 61aba8cd2f6897fe0193e15a3fa462deb40aa0ed Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 22:50:48 +0300 Subject: [PATCH 40/71] More linker flags --- cmake/SetupHomebrew.cmake | 2 ++ cmake/modules/Findbson.cmake | 2 +- cmake/modules/Findmongoc.cmake | 2 +- scripts/docs/en/deps/alpine.md | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/SetupHomebrew.cmake b/cmake/SetupHomebrew.cmake index 4015a9f92fe0..76b73de8e14a 100644 --- a/cmake/SetupHomebrew.cmake +++ b/cmake/SetupHomebrew.cmake @@ -19,6 +19,8 @@ endif() if (USERVER_BREW_PREFIX) add_link_options("-L${USERVER_BREW_PREFIX}/lib") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") if(NOT USERVER_BREW_PREFIX IN_LIST CMAKE_PREFIX_PATH AND NOT USERVER_CONAN) set(CMAKE_PREFIX_PATH "${USERVER_BREW_PREFIX}" ${CMAKE_PREFIX_PATH} PARENT_SCOPE) diff --git a/cmake/modules/Findbson.cmake b/cmake/modules/Findbson.cmake index 8ccff7a1486d..0f98ba186cca 100644 --- a/cmake/modules/Findbson.cmake +++ b/cmake/modules/Findbson.cmake @@ -17,7 +17,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libbson-static-1.0.a bson bson-1.0 + NAMES bson-1.0 bson PATHS /usr/include/libbson-1.0 /usr/local/opt/mongo-c-driver/include/libbson-1.0 diff --git a/cmake/modules/Findmongoc.cmake b/cmake/modules/Findmongoc.cmake index 05d8a0ea133f..b14e1a83ada8 100644 --- a/cmake/modules/Findmongoc.cmake +++ b/cmake/modules/Findmongoc.cmake @@ -17,7 +17,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES mongoc mongoc-1.0 + NAMES mongoc-1.0 mongoc PATHS /usr/include/libmongoc-1.0 /usr/local/opt/mongo-c/include/libmongoc-1.0 diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 46becde05958..b3f1935bc5a9 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -13,7 +13,7 @@ hiredis-dev jemalloc-dev krb5-dev libev-dev -libbson-static +libbson-dev libbson-static lz4-dev lz4-static From 01d0eec2848e1612401e333c13e64124dc7500f8 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 22:55:18 +0300 Subject: [PATCH 41/71] Maybe order makes sense? --- cmake/SetupHomebrew.cmake | 3 +-- cmake/modules/FindCryptoPP.cmake | 2 +- universal/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmake/SetupHomebrew.cmake b/cmake/SetupHomebrew.cmake index 76b73de8e14a..c053d8e6d823 100644 --- a/cmake/SetupHomebrew.cmake +++ b/cmake/SetupHomebrew.cmake @@ -19,8 +19,7 @@ endif() if (USERVER_BREW_PREFIX) add_link_options("-L${USERVER_BREW_PREFIX}/lib") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") + add_link_options("-framework Foundation") if(NOT USERVER_BREW_PREFIX IN_LIST CMAKE_PREFIX_PATH AND NOT USERVER_CONAN) set(CMAKE_PREFIX_PATH "${USERVER_BREW_PREFIX}" ${CMAKE_PREFIX_PATH} PARENT_SCOPE) diff --git a/cmake/modules/FindCryptoPP.cmake b/cmake/modules/FindCryptoPP.cmake index ce8148fb41c0..cad086daf05c 100644 --- a/cmake/modules/FindCryptoPP.cmake +++ b/cmake/modules/FindCryptoPP.cmake @@ -13,7 +13,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES cryptlib cryptopp + NAMES cryptopp cryptlib PATH_SUFFIXES lib ) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 1da37b9fe3a0..cc650bcb58ad 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -269,7 +269,7 @@ else() endif() if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - target_link_libraries(${PROJECT_NAME} PRIVATE "-framework Foundation") + target_link_libraries(${PROJECT_NAME} PUBLIC "-framework Foundation") endif() target_include_directories(${PROJECT_NAME} From 47353024d422b9ded14bcc53d2462233d1e4afff Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 22:59:24 +0300 Subject: [PATCH 42/71] Use framework for all libs --- cmake/SetupHomebrew.cmake | 6 ++++-- universal/CMakeLists.txt | 4 ---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cmake/SetupHomebrew.cmake b/cmake/SetupHomebrew.cmake index c053d8e6d823..e43a21e27420 100644 --- a/cmake/SetupHomebrew.cmake +++ b/cmake/SetupHomebrew.cmake @@ -18,8 +18,10 @@ if(NOT DEFINED $CACHE{USERVER_BREW_PREFIX}) endif() if (USERVER_BREW_PREFIX) - add_link_options("-L${USERVER_BREW_PREFIX}/lib") - add_link_options("-framework Foundation") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${USERVER_BREW_PREFIX}/lib") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation") if(NOT USERVER_BREW_PREFIX IN_LIST CMAKE_PREFIX_PATH AND NOT USERVER_CONAN) set(CMAKE_PREFIX_PATH "${USERVER_BREW_PREFIX}" ${CMAKE_PREFIX_PATH} PARENT_SCOPE) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index cc650bcb58ad..7379acf15e73 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -268,10 +268,6 @@ else() ) endif() -if (CMAKE_SYSTEM_NAME MATCHES "Darwin") - target_link_libraries(${PROJECT_NAME} PUBLIC "-framework Foundation") -endif() - target_include_directories(${PROJECT_NAME} PUBLIC $ From 42faf9b70e50b1c6462d3021fe96437cba5b6864 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 23:26:17 +0300 Subject: [PATCH 43/71] Use dynamic ldap --- cmake/SetupPostgresqlDeps.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/SetupPostgresqlDeps.cmake b/cmake/SetupPostgresqlDeps.cmake index 79950080c5aa..daa29a45f117 100644 --- a/cmake/SetupPostgresqlDeps.cmake +++ b/cmake/SetupPostgresqlDeps.cmake @@ -9,7 +9,7 @@ _userver_macos_set_default_dir(OPENSSL_ROOT_DIR "brew;--prefix;openssl") # We need libldap to statically link with libpq # There is no FindLdap.cmake and no package config files # for ldap library, so need to search for it by hand. -find_library(LDAP_LIBRARY NAMES ldap) +find_library(LDAP_LIBRARY NAMES libldap.so libldap.dylib) if(NOT LDAP_LIBRARY) message(FATAL_ERROR "Failed to find libldap.so.\n" "The linux system ldap installs shared objects with very ugly names, " From b907c8a28726dd5bdd22ccee952df535ba34cefe Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 23:44:29 +0300 Subject: [PATCH 44/71] Install openldap --- cmake/SetupPostgresqlDeps.cmake | 3 ++- scripts/docs/en/deps/macos.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/SetupPostgresqlDeps.cmake b/cmake/SetupPostgresqlDeps.cmake index daa29a45f117..3a392f9f895f 100644 --- a/cmake/SetupPostgresqlDeps.cmake +++ b/cmake/SetupPostgresqlDeps.cmake @@ -9,13 +9,14 @@ _userver_macos_set_default_dir(OPENSSL_ROOT_DIR "brew;--prefix;openssl") # We need libldap to statically link with libpq # There is no FindLdap.cmake and no package config files # for ldap library, so need to search for it by hand. -find_library(LDAP_LIBRARY NAMES libldap.so libldap.dylib) +find_library(LDAP_LIBRARY NAMES libldap.so libldap.dylib libldap.framework) if(NOT LDAP_LIBRARY) message(FATAL_ERROR "Failed to find libldap.so.\n" "The linux system ldap installs shared objects with very ugly names, " "so please install `libldap2-dev` package. " "For Mac OS X please install `openldap`.") endif() +message(STATUS "Found ldap: ${LDAP_LIBRARY}") find_package(PostgreSQLInternal REQUIRED) find_package(GssApi REQUIRED) diff --git a/scripts/docs/en/deps/macos.md b/scripts/docs/en/deps/macos.md index 629ea70a9aee..9d87781ae344 100644 --- a/scripts/docs/en/deps/macos.md +++ b/scripts/docs/en/deps/macos.md @@ -21,6 +21,7 @@ mariadb mongo-c-driver nghttp2 ninja +openldap openssl postgresql@16 pugixml From 04c07eadeedef93e7eac38d6af6ef706d00beb51 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Wed, 8 Jan 2025 23:52:02 +0300 Subject: [PATCH 45/71] Fix for old boost --- universal/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 7379acf15e73..a4e2e3a6b09d 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -266,6 +266,12 @@ else() libzstd CryptoPP ) + + if(Boost_USE_STATIC_LIBS AND Boost_FOUND AND Boost_VERSION VERSION_LESS 1.75) + # https://github.com/boostorg/locale/issues/156 + find_package(ICU COMPONENTS uc i18n uc REQUIRED) + target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::18n ICU::uc) + endif() endif() target_include_directories(${PROJECT_NAME} From fd292889480854472a269055c3b4bd0eb8471c3e Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 00:06:00 +0300 Subject: [PATCH 46/71] Fix libname --- universal/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index a4e2e3a6b09d..8ebaeddf4d8e 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -270,7 +270,7 @@ else() if(Boost_USE_STATIC_LIBS AND Boost_FOUND AND Boost_VERSION VERSION_LESS 1.75) # https://github.com/boostorg/locale/issues/156 find_package(ICU COMPONENTS uc i18n uc REQUIRED) - target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::18n ICU::uc) + target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::uc) endif() endif() From dd787f941be5da81547aa2fd4993fa87f813ac2a Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 00:10:13 +0300 Subject: [PATCH 47/71] Link openldap --- .github/workflows/macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e5dba6c5fde4..cfdb9bea93ac 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -68,6 +68,7 @@ jobs: brew link --force icu4c@76 # keg-only + need for static boost linkage brew link --force curl # keg-only brew link --force cyrus-sasl # keg-only + brew link --force openldap # keg-only brew remove --ignore-dependencies abseil - name: Setup ccache From 698125357a81a66a968e3f91c23ffd54802f4658 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 00:16:23 +0300 Subject: [PATCH 48/71] Use ICU data --- universal/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 8ebaeddf4d8e..47aef543b298 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -269,8 +269,8 @@ else() if(Boost_USE_STATIC_LIBS AND Boost_FOUND AND Boost_VERSION VERSION_LESS 1.75) # https://github.com/boostorg/locale/issues/156 - find_package(ICU COMPONENTS uc i18n uc REQUIRED) - target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::uc) + find_package(ICU COMPONENTS uc i18n data REQUIRED) + target_link_libraries(${PROJECT_NAME} PRIVATE ICU::uc ICU::i18n ICU::data) endif() endif() From 2256f758628f3af04ae5431e011cb5412c97bc76 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 00:46:56 +0300 Subject: [PATCH 49/71] Find dynamic grpc --- cmake/modules/FindUserverGrpc.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/modules/FindUserverGrpc.cmake b/cmake/modules/FindUserverGrpc.cmake index 63d2a8a24d37..86fa240c5474 100644 --- a/cmake/modules/FindUserverGrpc.cmake +++ b/cmake/modules/FindUserverGrpc.cmake @@ -11,21 +11,21 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES grpc + NAMES libgrpc.so ) _userver_module_find_library( - NAMES grpc++ + NAMES libgrpc++.so ) _userver_module_find_library( - NAMES gpr + NAMES libgpr.so ) _userver_module_find_library( NAMES absl - absl_synchronization + libabsl_synchronization.so grpc # fallback, old versions of gRPC do not link with absl ) From d1e00f7dba47bf0ad73cf2e8ee398c0693ec8f5a Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 01:14:58 +0300 Subject: [PATCH 50/71] Fix not pq patch --- postgresql/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/postgresql/CMakeLists.txt b/postgresql/CMakeLists.txt index 4050013d584f..7f8d86b5b0be 100644 --- a/postgresql/CMakeLists.txt +++ b/postgresql/CMakeLists.txt @@ -12,6 +12,7 @@ else() PROPERTIES COMPILE_FLAGS -DUSERVER_NO_LIBPQ_PATCHES=1 ) + find_library(PostgreSQL_LIBRARY NAMES libpq.so libpq.dylib REQUIRED) find_package(PostgreSQL REQUIRED) target_link_libraries(userver-libpq INTERFACE PostgreSQL::PostgreSQL) endif() From e8a9e061b7edb69e4c091e505c998f316f4ed6cd Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 02:05:51 +0300 Subject: [PATCH 51/71] Fix conan --- postgresql/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/postgresql/CMakeLists.txt b/postgresql/CMakeLists.txt index 7f8d86b5b0be..6f31ea25ce74 100644 --- a/postgresql/CMakeLists.txt +++ b/postgresql/CMakeLists.txt @@ -12,8 +12,12 @@ else() PROPERTIES COMPILE_FLAGS -DUSERVER_NO_LIBPQ_PATCHES=1 ) - find_library(PostgreSQL_LIBRARY NAMES libpq.so libpq.dylib REQUIRED) - find_package(PostgreSQL REQUIRED) + if(USERVER_CONAN) + find_package(PostgreSQL REQUIRED CONFIG) + else() + find_library(PostgreSQL_LIBRARY NAMES libpq.so libpq.dylib REQUIRED) + find_package(PostgreSQL REQUIRED) + endif() target_link_libraries(userver-libpq INTERFACE PostgreSQL::PostgreSQL) endif() From 7e79c0fa97ac18c6abb234ccdbb0d128d98121f5 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 02:10:30 +0300 Subject: [PATCH 52/71] Try without gold --- .github/workflows/docker.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index c190f565d89e..4e86149a56a5 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -18,7 +18,6 @@ jobs: -DCMAKE_CXX_STANDARD=17 -DCPM_SOURCE_CACHE=~/.cache/CPM -DUSERVER_USE_STATIC_LIBS=1 - -DUSERVER_USE_LD=gold -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_SAMPLES=1 -DUSERVER_BUILD_TESTS=1 From e62d01b87a53c99964f9c797491b9c05fc386182 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 02:26:44 +0300 Subject: [PATCH 53/71] No static for gcc --- .github/workflows/docker.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 4e86149a56a5..26154cbf9e1e 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -17,7 +17,6 @@ jobs: - cmake-flags: >- -DCMAKE_CXX_STANDARD=17 -DCPM_SOURCE_CACHE=~/.cache/CPM - -DUSERVER_USE_STATIC_LIBS=1 -DUSERVER_NO_WERROR=0 -DUSERVER_BUILD_SAMPLES=1 -DUSERVER_BUILD_TESTS=1 From 3d467ddc207e568fd4e396c442632941a736f733 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 03:11:19 +0300 Subject: [PATCH 54/71] Remove strange alias --- cmake/modules/Findlibzstd.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index fd58c0e3acf3..7b0905e41ea5 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -21,7 +21,4 @@ _userver_module_find_library( _userver_module_end() -if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND NOT TARGET zstd) - add_library(zstd ALIAS libzstd) -endif() add_library(zstd::zstd ALIAS libzstd) From c02b43e103ce1171c0a4ff001a96ffb5681cc59b Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 03:11:53 +0300 Subject: [PATCH 55/71] Add if --- cmake/modules/Findlibzstd.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index 7b0905e41ea5..b71c862e8bda 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -21,4 +21,6 @@ _userver_module_find_library( _userver_module_end() -add_library(zstd::zstd ALIAS libzstd) +if(NOT TARGET zstd::zstd) + add_library(zstd::zstd ALIAS libzstd) +endif() From 8c0dabf26ecb7c35d7640a5bdbfdb807a352853a Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 08:42:51 +0300 Subject: [PATCH 56/71] Build static rocksdb --- cmake/SetupRocksDB.cmake | 9 +++++++-- cmake/modules/Findlibsnappy.cmake | 5 +++++ cmake/modules/Findlibzip.cmake | 19 ------------------- cmake/modules/Findlibzstd.cmake | 1 + 4 files changed, 13 insertions(+), 21 deletions(-) delete mode 100644 cmake/modules/Findlibzip.cmake diff --git a/cmake/SetupRocksDB.cmake b/cmake/SetupRocksDB.cmake index 95f3315b15cc..73406ef9d5c6 100644 --- a/cmake/SetupRocksDB.cmake +++ b/cmake/SetupRocksDB.cmake @@ -17,7 +17,7 @@ endif() find_package(libgflags REQUIRED) find_package(libsnappy REQUIRED) find_package(ZLIB REQUIRED) -find_package(libzip REQUIRED) +find_package(BZip2 REQUIRED) find_package(libzstd REQUIRED) include(DownloadUsingCPM) @@ -27,11 +27,16 @@ CPMAddPackage( GITHUB_REPOSITORY facebook/rocksdb GIT_TAG v9.7.4 OPTIONS - "ROCKSDB_BUILD_SHARED OFF" + "WITH_SNAPPY ON" + "WITH_BZ2 ON" + "WITH_ZSTD ON" "WITH_TESTS OFF" "WITH_BENCHMARK_TOOLS OFF" "WITH_TOOLS OFF" + "WITH_CORE_TOOLS OFF" + "WITH_TRACE_TOOLS OFF" "USE_RTTI ON" + "GFLAGS_SHARED FALSE" ) mark_targets_as_system("${rocksdb_SOURCE_DIR}") diff --git a/cmake/modules/Findlibsnappy.cmake b/cmake/modules/Findlibsnappy.cmake index 225685291c2b..47a7148132ae 100644 --- a/cmake/modules/Findlibsnappy.cmake +++ b/cmake/modules/Findlibsnappy.cmake @@ -21,3 +21,8 @@ _userver_module_find_library( ) _userver_module_end() + +if(NOT TARGET Snappy::snappy) + add_library(Snappy::snappy ALIAS libsnappy) + add_library(Snappy::snappy-static ALIAS libsnappy) +endif() diff --git a/cmake/modules/Findlibzip.cmake b/cmake/modules/Findlibzip.cmake deleted file mode 100644 index 19844c747a14..000000000000 --- a/cmake/modules/Findlibzip.cmake +++ /dev/null @@ -1,19 +0,0 @@ -_userver_module_begin( - NAME libzip - DEBIAN_NAMES libbz2-dev - FORMULA_NAMES bzip2 - RPM_NAMES libbz2-dev - PACMAN_NAMES bzip2 -) - -_userver_module_find_include( - NAMES bzlib.h - PATH_SUFFIXES include -) - -_userver_module_find_library( - NAMES bz2 libbz2 - PATH_SUFFIXES lib -) - -_userver_module_end() diff --git a/cmake/modules/Findlibzstd.cmake b/cmake/modules/Findlibzstd.cmake index b71c862e8bda..bff352056bc4 100644 --- a/cmake/modules/Findlibzstd.cmake +++ b/cmake/modules/Findlibzstd.cmake @@ -24,3 +24,4 @@ _userver_module_end() if(NOT TARGET zstd::zstd) add_library(zstd::zstd ALIAS libzstd) endif() +add_library(zstd ALIAS libzstd) From 4c4fe3b662f9df5a345f0758624ccd81391da79f Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 08:54:23 +0300 Subject: [PATCH 57/71] do not build shared --- cmake/SetupRocksDB.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/SetupRocksDB.cmake b/cmake/SetupRocksDB.cmake index 73406ef9d5c6..7ed2ead948f0 100644 --- a/cmake/SetupRocksDB.cmake +++ b/cmake/SetupRocksDB.cmake @@ -27,6 +27,7 @@ CPMAddPackage( GITHUB_REPOSITORY facebook/rocksdb GIT_TAG v9.7.4 OPTIONS + "ROCKSDB_BUILD_SHARED OFF" "WITH_SNAPPY ON" "WITH_BZ2 ON" "WITH_ZSTD ON" From 067163fae3cc0bcadc29421e5dbe3c628ba5b5cb Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 09:03:37 +0300 Subject: [PATCH 58/71] Remove rocks package stub --- cmake/SetupRocksDB.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/SetupRocksDB.cmake b/cmake/SetupRocksDB.cmake index 7ed2ead948f0..b3082de16ee0 100644 --- a/cmake/SetupRocksDB.cmake +++ b/cmake/SetupRocksDB.cmake @@ -41,5 +41,4 @@ CPMAddPackage( ) mark_targets_as_system("${rocksdb_SOURCE_DIR}") -write_package_stub(rocksdb) add_library(RocksDB::rocksdb ALIAS rocksdb) From ea1dca18a2cd424111c8c1f83aff0faac8705d12 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 09:31:41 +0300 Subject: [PATCH 59/71] More deps for alpine + disable GDB for MacOS --- scripts/docs/en/deps/alpine.md | 3 +++ scripts/gdb/tests/CMakeLists.txt | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index b3f1935bc5a9..81ef548f6e3c 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -1,14 +1,17 @@ boost1.84-dev boost1.84-static +benchmark-dev clang17-extra-tools clang18 cmake +crypto++-dev curl-dev curl-static gflags-dev git grpc-cpp grpc-dev +gtest-dev hiredis-dev jemalloc-dev krb5-dev diff --git a/scripts/gdb/tests/CMakeLists.txt b/scripts/gdb/tests/CMakeLists.txt index 224557dd67ca..fc50617d8bdb 100644 --- a/scripts/gdb/tests/CMakeLists.txt +++ b/scripts/gdb/tests/CMakeLists.txt @@ -1,6 +1,10 @@ if (NOT (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "Test")) return() endif() +if (CMAKE_SYSTEM_NAME MATCHES "Darwin") + # There is not GDB for MacOS + return() +endif() find_program(GDB_EXECUTABLE gdb DOC "GDB executable") if ("${GDB_EXECUTABLE}" STREQUAL GDB_EXECUTABLE-NOTFOUND) From 7ece471d5e5f0131f894f654fe32f3f2cea79c32 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 09:42:33 +0300 Subject: [PATCH 60/71] Try rabbitmq for alpine --- .github/workflows/alpine.yml | 2 +- scripts/docs/en/deps/alpine.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/alpine.yml b/.github/workflows/alpine.yml index b5b002062b43..3f2cdc673aea 100644 --- a/.github/workflows/alpine.yml +++ b/.github/workflows/alpine.yml @@ -59,7 +59,7 @@ jobs: run: | pwd cat /etc/alpine-release - apk add lld ccache git + apk add lld ccache git gdb apk add $(cat scripts/docs/en/deps/alpine.md) - name: Install test dependencies diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 81ef548f6e3c..880eb74ec140 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -40,6 +40,7 @@ py3-jinja2 py3-protobuf python3 python3-dev +rabbitmq-c-dev snappy-dev snappy-static yaml-cpp-dev From 8b304a23148c971aa45e6fc640c52683ab857952 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 09:57:46 +0300 Subject: [PATCH 61/71] Install rocksdb for alpine --- scripts/docs/en/deps/alpine.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/docs/en/deps/alpine.md b/scripts/docs/en/deps/alpine.md index 880eb74ec140..0f13f206c9f6 100644 --- a/scripts/docs/en/deps/alpine.md +++ b/scripts/docs/en/deps/alpine.md @@ -41,6 +41,7 @@ py3-protobuf python3 python3-dev rabbitmq-c-dev +rocksdb-dev snappy-dev snappy-static yaml-cpp-dev From 09638db4e3e44332cc6424e69adad273637b85ed Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 10:26:36 +0300 Subject: [PATCH 62/71] More consistent names --- cmake/modules/Findcctz.cmake | 6 ------ cmake/modules/Findlibmariadb.cmake | 5 ++--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/cmake/modules/Findcctz.cmake b/cmake/modules/Findcctz.cmake index 8839f3bf6cba..c1b75af445b0 100644 --- a/cmake/modules/Findcctz.cmake +++ b/cmake/modules/Findcctz.cmake @@ -9,16 +9,10 @@ _userver_module_begin( _userver_module_find_include( NAMES cctz/civil_time.h - PATHS - /usr/lib/x86_64-linux-gnu - /opt/homebrew/opt/cctz/lib ) _userver_module_find_library( NAMES cctz - PATHS - /usr/lib/x86_64-linux-gnu - /opt/homebrew/opt/cctz/lib ) _userver_module_end() diff --git a/cmake/modules/Findlibmariadb.cmake b/cmake/modules/Findlibmariadb.cmake index 36380f3900a5..d5b066d18a90 100644 --- a/cmake/modules/Findlibmariadb.cmake +++ b/cmake/modules/Findlibmariadb.cmake @@ -7,13 +7,12 @@ _userver_module_begin( ) _userver_module_find_include( - NAMES mysql/mysql.h mariadb/mysql.h - PATH_SUFFIXES lib + NAMES mysql.h + PATH_SUFFIXES mariadb mysql ) _userver_module_find_library( NAMES mariadb - PATH_SUFFIXES lib ) _userver_module_end() From 35b42ac3736063fdafbd292e04c618d84d250614 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 10:39:06 +0300 Subject: [PATCH 63/71] Do not find libcityhash for Linux clickhouse --- cmake/modules/Findclickhouse-cpp.cmake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/modules/Findclickhouse-cpp.cmake b/cmake/modules/Findclickhouse-cpp.cmake index 5556b289f921..ddaf112f569b 100644 --- a/cmake/modules/Findclickhouse-cpp.cmake +++ b/cmake/modules/Findclickhouse-cpp.cmake @@ -11,15 +11,17 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES libclickhouse-cpp-lib.a clickhouse-cpp-lib + NAMES clickhouse-cpp-lib-static clickhouse-cpp-lib PATH_SUFFIXES clickhouse-cpp yandex/clickhouse-cpp ) -_userver_module_find_library( +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + _userver_module_find_library( NAMES libcityhash.a PATHS /opt/homebrew/opt/clickhouse-cpp/libexec/lib -) + ) +endif() _userver_module_end() From 6934d7e61c121b4d6b3421dd26531129851e06a4 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 10:59:59 +0300 Subject: [PATCH 64/71] Fix clickhouse --- clickhouse/CMakeLists.txt | 2 +- cmake/SetupClickhouseCPP.cmake | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/clickhouse/CMakeLists.txt b/clickhouse/CMakeLists.txt index a1025da9f790..5ad66e788c81 100644 --- a/clickhouse/CMakeLists.txt +++ b/clickhouse/CMakeLists.txt @@ -10,7 +10,7 @@ endif() userver_module(clickhouse SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" lz4::lz4 absl::int128 + LINK_LIBRARIES_PRIVATE "${CLICKHOUSE_CPP_TARGET}" UTEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp" DBTEST_SOURCES diff --git a/cmake/SetupClickhouseCPP.cmake b/cmake/SetupClickhouseCPP.cmake index 6534dabba823..1716d39e5aa9 100644 --- a/cmake/SetupClickhouseCPP.cmake +++ b/cmake/SetupClickhouseCPP.cmake @@ -1,7 +1,9 @@ option(USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP "Download and setup clickhouse-cpp" ${USERVER_DOWNLOAD_PACKAGES}) -find_package(lz4 REQUIRED) -include(SetupAbseil) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + find_package(lz4 REQUIRED) + include(SetupAbseil) +endif() if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) if (USERVER_DOWNLOAD_PACKAGE_CLICKHOUSECPP) @@ -11,11 +13,15 @@ if (NOT USERVER_FORCE_DOWNLOAD_PACKAGES) endif() if (clickhouse-cpp_FOUND) + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + target_link_libraries(clickhouse-cpp INTERFACE lz4::lz4 absl::int128) + endif() return() endif() endif() include(DownloadUsingCPM) +include(SetupAbseil) CPMAddPackage( NAME clickhouse-cpp From 8a3056bf8991ab67cce9969c5b1430c2b2d46f88 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 11:11:06 +0300 Subject: [PATCH 65/71] Do not try to find static clickhouse Linux --- cmake/modules/Findclickhouse-cpp.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/Findclickhouse-cpp.cmake b/cmake/modules/Findclickhouse-cpp.cmake index ddaf112f569b..8c01568d0a3c 100644 --- a/cmake/modules/Findclickhouse-cpp.cmake +++ b/cmake/modules/Findclickhouse-cpp.cmake @@ -11,7 +11,7 @@ _userver_module_find_include( ) _userver_module_find_library( - NAMES clickhouse-cpp-lib-static clickhouse-cpp-lib + NAMES clickhouse-cpp-lib PATH_SUFFIXES clickhouse-cpp yandex/clickhouse-cpp From dbd6a2105bcf3b57d80ce3319fbc4a9403d00d5d Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 13:11:36 +0300 Subject: [PATCH 66/71] Fix mongo install --- CMakeLists.txt | 3 +++ cmake/install/userver-mongo-config.cmake | 3 +-- mongo/CMakeLists.txt | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0422b684a5bd..26f7551a0198 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,9 @@ option( "Prepare build of userver to install in system" OFF ) +if(CMAKE_VERSION GREATER_EQUAL 3.31) + cmake_policy(SET CMP0177 NEW) +endif() set(USERVER_AVAILABLE_COMPONENTS universal) diff --git a/cmake/install/userver-mongo-config.cmake b/cmake/install/userver-mongo-config.cmake index 5650fe2d05bd..cd9c182a6172 100644 --- a/cmake/install/userver-mongo-config.cmake +++ b/cmake/install/userver-mongo-config.cmake @@ -11,8 +11,7 @@ find_package(userver REQUIRED COMPONENTS if (USERVER_CONAN) find_package(mongoc-1.0 REQUIRED CONFIG) else() - include("${USERVER_CMAKE_DIR}/modules/Findbson.cmake") - include("${USERVER_CMAKE_DIR}/modules/Findmongoc.cmake") + include("${USERVER_CMAKE_DIR}/SetupMongoDeps.cmake") endif() set(userver_mongo_FOUND TRUE) diff --git a/mongo/CMakeLists.txt b/mongo/CMakeLists.txt index 22723c34424c..aab59cb53d40 100644 --- a/mongo/CMakeLists.txt +++ b/mongo/CMakeLists.txt @@ -24,6 +24,7 @@ userver_module(mongo ) _userver_directory_install(COMPONENT mongo FILES + "${USERVER_ROOT_DIR}/cmake/SetupMongoDeps.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findmongoc.cmake" "${USERVER_ROOT_DIR}/cmake/modules/Findbson.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/userver/modules From 645bf3116079b7fa3d7e82b130d4279521bd5476 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 13:31:34 +0300 Subject: [PATCH 67/71] Do not link to Iconv if it is bultin --- core/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 0785ed127387..95c1d0aea69f 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -107,11 +107,13 @@ target_link_libraries(${PROJECT_NAME} Boost::program_options Boost::iostreams Boost::regex - Iconv::Iconv OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB ) +if(NOT Iconv_IS_BUILT_IN) + target_link_libraries(${PROJECT_NAME} PRIVATE Iconv::Iconv) +endif() add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/llhttp llhttp) From 8affca66e87583b4ea9fd1e68e5efab4e2a6552a Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 13:34:10 +0300 Subject: [PATCH 68/71] Rollback --- core/CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 95c1d0aea69f..0785ed127387 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -107,13 +107,11 @@ target_link_libraries(${PROJECT_NAME} Boost::program_options Boost::iostreams Boost::regex + Iconv::Iconv OpenSSL::Crypto OpenSSL::SSL ZLIB::ZLIB ) -if(NOT Iconv_IS_BUILT_IN) - target_link_libraries(${PROJECT_NAME} PRIVATE Iconv::Iconv) -endif() add_subdirectory(${USERVER_THIRD_PARTY_DIRS}/llhttp llhttp) From 555af6bafd09972329c3917a2676d006bdacad3a Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 17:27:28 +0300 Subject: [PATCH 69/71] Fix install --- cmake/SetupHomebrew.cmake | 8 ++++---- cmake/SetupRdKafka.cmake | 9 ++++++++- cmake/install/Config.cmake.in | 1 + cmake/install/userver-kafka-config.cmake | 4 +--- cmake/install/userver-universal-config.cmake | 1 + cmake/modules/FindRdKafka.cmake | 4 ++++ kafka/CMakeLists.txt | 17 +++++++---------- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/cmake/SetupHomebrew.cmake b/cmake/SetupHomebrew.cmake index e43a21e27420..670c01252021 100644 --- a/cmake/SetupHomebrew.cmake +++ b/cmake/SetupHomebrew.cmake @@ -3,17 +3,17 @@ option(USERVER_USE_BREW_LIBRARIES "(MacOS) Find package preferes libraries insta if(NOT DEFINED $CACHE{USERVER_BREW_PREFIX}) find_program(BREW_BIN brew) if(BREW_BIN) - execute_process( + execute_process( COMMAND ${BREW_BIN} --prefix OUTPUT_VARIABLE brew_prefix RESULT_VARIABLE brew_prefix_result OUTPUT_STRIP_TRAILING_WHITESPACE - ) + ) - if(brew_prefix_result EQUAL 0) + if(brew_prefix_result EQUAL 0) set(USERVER_BREW_PREFIX "${brew_prefix}" CACHE INTERNAL "Brew prefix") message(STATUS "brew prefix is: ${USERVER_BREW_PREFIX}") - endif() + endif() endif() endif() diff --git a/cmake/SetupRdKafka.cmake b/cmake/SetupRdKafka.cmake index 5ec80bc6e81e..50f262ad373e 100644 --- a/cmake/SetupRdKafka.cmake +++ b/cmake/SetupRdKafka.cmake @@ -20,6 +20,13 @@ if(NOT USERVER_FORCE_DOWNLOAD_PACKAGES) endif() if(RdKafka_FOUND) + target_link_libraries(RdKafka + INTERFACE + ZLIB::ZLIB + lz4::lz4 CURL::libcurl + OpenSSL::SSL OpenSSL::Crypto + SASL2::SASL2 zstd::zstd + ) return() endif() endif() @@ -48,4 +55,4 @@ set(KAFKA_CPM TRUE) target_compile_options(rdkafka PRIVATE "-Wno-ignored-qualifiers") mark_targets_as_system("${RdKafka_SOURCE_DIR}") -add_library(RdKafka ALIAS rdkafka) +add_library(RdKafka::rdkafka ALIAS rdkafka) diff --git a/cmake/install/Config.cmake.in b/cmake/install/Config.cmake.in index 485a7145c1cb..8e4dc04b9564 100644 --- a/cmake/install/Config.cmake.in +++ b/cmake/install/Config.cmake.in @@ -42,6 +42,7 @@ set(USERVER_TESTSUITE_DIR "${USERVER_CMAKE_DIR}/testsuite") set(USERVER_CONAN @USERVER_CONAN@) set(USERVER_IMPL_ORIGINAL_CXX_STANDARD @CMAKE_CXX_STANDARD@) set(USERVER_IMPL_FEATURE_JEMALLOC @USERVER_FEATURE_JEMALLOC@) +set(USERVER_USE_STATIC_LIBS @USERVER_USE_STATIC_LIBS@) set_property(GLOBAL PROPERTY userver_cmake_dir "${USERVER_CMAKE_DIR}") list(APPEND CMAKE_MODULE_PATH "${USERVER_CMAKE_DIR}/modules") diff --git a/cmake/install/userver-kafka-config.cmake b/cmake/install/userver-kafka-config.cmake index cfa91edde388..7aa7ea930a1c 100644 --- a/cmake/install/userver-kafka-config.cmake +++ b/cmake/install/userver-kafka-config.cmake @@ -11,9 +11,7 @@ find_package(userver REQUIRED COMPONENTS if(USERVER_CONAN) find_package(RdKafka REQUIRED CONFIG) else() - include("${USERVER_CMAKE_DIR}/modules/Findlz4.cmake") - include("${USERVER_CMAKE_DIR}/modules/FindSASL2.cmake") - include("${USERVER_CMAKE_DIR}/modules/FindRdKafka.cmake") + include("${USERVER_CMAKE_DIR}/SetupRdKafka.cmake") endif() set(userver_kafka_FOUND TRUE) diff --git a/cmake/install/userver-universal-config.cmake b/cmake/install/userver-universal-config.cmake index f69f1a1410c2..11d5f625c9e7 100644 --- a/cmake/install/userver-universal-config.cmake +++ b/cmake/install/userver-universal-config.cmake @@ -55,6 +55,7 @@ include("${USERVER_CMAKE_DIR}/Sanitizers.cmake") include("${USERVER_CMAKE_DIR}/UserverSetupEnvironment.cmake") include("${USERVER_CMAKE_DIR}/UserverVenv.cmake") include("${USERVER_CMAKE_DIR}/UserverEmbedFile.cmake") +include("${USERVER_CMAKE_DIR}/UserverPreferStaticLibs.cmake") userver_setup_environment() _userver_make_sanitize_blacklist() diff --git a/cmake/modules/FindRdKafka.cmake b/cmake/modules/FindRdKafka.cmake index dbb626482935..4cb5bf62dbb9 100644 --- a/cmake/modules/FindRdKafka.cmake +++ b/cmake/modules/FindRdKafka.cmake @@ -16,3 +16,7 @@ _userver_module_find_library( ) _userver_module_end() + +if(NOT TARGET RdKafka::rdkafka) + add_library(RdKafka::rdkafka ALIAS RdKafka) +endif() diff --git a/kafka/CMakeLists.txt b/kafka/CMakeLists.txt index 5a460beb5106..27f37b7a25b5 100644 --- a/kafka/CMakeLists.txt +++ b/kafka/CMakeLists.txt @@ -2,22 +2,13 @@ project(userver-kafka CXX) if(USERVER_CONAN) find_package(RdKafka REQUIRED CONFIG) - set_target_properties(RdKafka::rdkafka PROPERTIES IMPORTED_GLOBAL TRUE) - add_library(RdKafka ALIAS RdKafka::rdkafka) else() include(SetupRdKafka) - target_link_libraries(RdKafka - INTERFACE - ZLIB::ZLIB - lz4::lz4 CURL::libcurl - OpenSSL::SSL OpenSSL::Crypto - SASL2::SASL2 zstd::zstd - ) endif() userver_module(kafka SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - LINK_LIBRARIES_PRIVATE RdKafka + LINK_LIBRARIES_PRIVATE RdKafka::rdkafka DBTEST_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests" DBTEST_LINK_LIBRARIES userver::kafka-utest DBTEST_DATABASES kafka @@ -38,6 +29,12 @@ if(KAFKA_CPM) ) endif() +_userver_directory_install(COMPONENT kafka + FILES + "${USERVER_ROOT_DIR}/cmake/SetupRdKafka.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/userver" +) + _userver_directory_install(COMPONENT kafka FILES "${USERVER_ROOT_DIR}/cmake/modules/FindRdKafka.cmake" From 4627238ed08580525fb4d01c9e11303399640175 Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 18:27:26 +0300 Subject: [PATCH 70/71] Better for Conan --- cmake/install/Config.cmake.in | 2 ++ cmake/install/userver-core-config.cmake | 9 +++++---- cmake/install/userver-universal-config.cmake | 6 +++++- universal/CMakeLists.txt | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cmake/install/Config.cmake.in b/cmake/install/Config.cmake.in index 8e4dc04b9564..e14b18eeb56e 100644 --- a/cmake/install/Config.cmake.in +++ b/cmake/install/Config.cmake.in @@ -47,6 +47,8 @@ set(USERVER_USE_STATIC_LIBS @USERVER_USE_STATIC_LIBS@) set_property(GLOBAL PROPERTY userver_cmake_dir "${USERVER_CMAKE_DIR}") list(APPEND CMAKE_MODULE_PATH "${USERVER_CMAKE_DIR}/modules") +include("${USERVER_CMAKE_DIR}/UserverPreferStaticLibs.cmake") + foreach(ITEM_COMPONENT IN LISTS userver_FIND_COMPONENTS) include("${USERVER_CMAKE_DIR}/userver-${ITEM_COMPONENT}-config.cmake") endforeach() diff --git a/cmake/install/userver-core-config.cmake b/cmake/install/userver-core-config.cmake index b1d16ead75c1..dabd8c4d4c1e 100644 --- a/cmake/install/userver-core-config.cmake +++ b/cmake/install/userver-core-config.cmake @@ -13,7 +13,6 @@ find_package(Boost REQUIRED CONFIG COMPONENTS iostreams ) -find_package(CURL "7.68" REQUIRED) find_package(ZLIB REQUIRED) include("${USERVER_CMAKE_DIR}/UserverTestsuite.cmake") @@ -23,13 +22,15 @@ if (USERVER_CONAN) find_package(libnghttp2 REQUIRED CONFIG) find_package(libev REQUIRED CONFIG) find_package(concurrentqueue REQUIRED CONFIG) + find_package(CURL "7.68" REQUIRED) else() - include("${USERVER_CMAKE_DIR}/modules/Findc-ares.cmake") + find_package(Nghttp2 REQUIRED) + find_package(LibEv REQUIRED) + find_package(c-ares REQUIRED) if (c-ares_FOUND AND NOT TARGET c-ares::cares) add_library(c-ares::cares ALIAS c-ares) endif() - find_package(Nghttp2 REQUIRED) - find_package(LibEv REQUIRED) + include("${USERVER_CMAKE_DIR}/SetupCURL.cmake") endif() set(userver_core_FOUND TRUE) diff --git a/cmake/install/userver-universal-config.cmake b/cmake/install/userver-universal-config.cmake index 11d5f625c9e7..6580978a2f88 100644 --- a/cmake/install/userver-universal-config.cmake +++ b/cmake/install/userver-universal-config.cmake @@ -17,6 +17,11 @@ find_package(Boost REQUIRED CONFIG COMPONENTS ) find_package(Iconv REQUIRED) +if(Boost_USE_STATIC_LIBS AND Boost_VERSION VERSION_LESS 1.75) + # https://github.com/boostorg/locale/issues/156 + find_package(ICU COMPONENTS uc i18n data REQUIRED) +endif() + _userver_macos_set_default_dir(OPENSSL_ROOT_DIR "brew;--prefix;openssl") find_package(OpenSSL REQUIRED) @@ -55,7 +60,6 @@ include("${USERVER_CMAKE_DIR}/Sanitizers.cmake") include("${USERVER_CMAKE_DIR}/UserverSetupEnvironment.cmake") include("${USERVER_CMAKE_DIR}/UserverVenv.cmake") include("${USERVER_CMAKE_DIR}/UserverEmbedFile.cmake") -include("${USERVER_CMAKE_DIR}/UserverPreferStaticLibs.cmake") userver_setup_environment() _userver_make_sanitize_blacklist() diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 47aef543b298..6de3e791d44f 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -376,6 +376,7 @@ endif() _userver_directory_install(COMPONENT universal FILES "${USERVER_ROOT_DIR}/cmake/ModuleHelpers.cmake" + "${USERVER_ROOT_DIR}/cmake/SetupCURL.cmake" "${USERVER_ROOT_DIR}/cmake/SetupGTest.cmake" "${USERVER_ROOT_DIR}/cmake/SetupGBench.cmake" "${USERVER_ROOT_DIR}/cmake/sanitize.blacklist.txt" From 86b2006a6ed8e6778f5ba2537c9b5cd3529d24ca Mon Sep 17 00:00:00 2001 From: fdr400 Date: Thu, 9 Jan 2025 19:37:45 +0300 Subject: [PATCH 71/71] Update --- cmake/SetupCURL.cmake | 2 +- cmake/SetupRdKafka.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/SetupCURL.cmake b/cmake/SetupCURL.cmake index e032988f499a..d9957d517731 100644 --- a/cmake/SetupCURL.cmake +++ b/cmake/SetupCURL.cmake @@ -10,7 +10,7 @@ if(NOT USERVER_FORCE_DOWNLOAD_PACKAGES) if(USERVER_DOWNLOAD_PACKAGE_CURL) find_package(CURL "7.68") else() - find_package_required_version(CURL "libcurl4-openssl-dev" "7.68") + find_package(CURL "7.68" REQUIRED) endif() if (USERVER_USE_STATIC_LIBS) diff --git a/cmake/SetupRdKafka.cmake b/cmake/SetupRdKafka.cmake index 50f262ad373e..76d32b287355 100644 --- a/cmake/SetupRdKafka.cmake +++ b/cmake/SetupRdKafka.cmake @@ -4,7 +4,7 @@ option(USERVER_DOWNLOAD_PACKAGE_KAFKA "Download and setup librdkafka if no librd set(USERVER_KAFKA_VERSION "2.3.0") -include(SetupCURL) +include("${CMAKE_CURRENT_LIST_DIR}/SetupCURL.cmake") find_package(OpenSSL REQUIRED) find_package(ZLIB REQUIRED)