This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 3ca68bf0b36fa02a677dc31373c11302428b0b44 Author: Masakazu Kitajo <[email protected]> AuthorDate: Wed Jul 3 14:56:57 2024 -0600 Prioritize the library path for SSL library (#11511) * Prioritize the library path for SSL library * Tweak potentially problematic ones as well * Add documentation * Tweak more places for OpenSSL::Crypto * Add a comment in CMakeLists.txt (cherry picked from commit 784037659359950fbc19073dc394a4b81f25b242) --- doc/developer-guide/plugins/building-plugins.en.rst | 3 ++- plugins/experimental/access_control/CMakeLists.txt | 2 +- plugins/experimental/magick/CMakeLists.txt | 2 +- plugins/experimental/sslheaders/CMakeLists.txt | 2 +- plugins/experimental/stek_share/CMakeLists.txt | 2 +- plugins/experimental/txn_box/plugin/CMakeLists.txt | 2 +- plugins/experimental/txn_box/unit_tests/CMakeLists.txt | 2 +- plugins/experimental/uri_signing/unit_tests/CMakeLists.txt | 6 +++--- plugins/s3_auth/unit_tests/CMakeLists.txt | 2 +- src/api/CMakeLists.txt | 3 ++- src/cripts/CMakeLists.txt | 2 +- 11 files changed, 15 insertions(+), 13 deletions(-) diff --git a/doc/developer-guide/plugins/building-plugins.en.rst b/doc/developer-guide/plugins/building-plugins.en.rst index f65effec1b..13b8978555 100644 --- a/doc/developer-guide/plugins/building-plugins.en.rst +++ b/doc/developer-guide/plugins/building-plugins.en.rst @@ -52,7 +52,8 @@ This example ``CMakeLists.txt`` finds the tsapi package which provides the plugins module .so. The function takes the plugin target name and a list of source files that make up the project. If the plugin requires additional libraries, those can be linked with the ``target_link_libraries`` cmake -function. +function. If your plugin links OpenSSL (or the alternatives), put it in the +beginning part of the list to avoid link issues. After the plugin target is created, a verify test target can be created. This will add a cmake test declaration and at test time, will run traffic_server in diff --git a/plugins/experimental/access_control/CMakeLists.txt b/plugins/experimental/access_control/CMakeLists.txt index b29c2fc6fe..f6ef84f039 100644 --- a/plugins/experimental/access_control/CMakeLists.txt +++ b/plugins/experimental/access_control/CMakeLists.txt @@ -28,7 +28,7 @@ add_atsplugin( utils.cc ) -target_link_libraries(access_control PRIVATE PCRE::PCRE OpenSSL::SSL OpenSSL::Crypto) +target_link_libraries(access_control PRIVATE OpenSSL::SSL OpenSSL::Crypto PCRE::PCRE) verify_remap_plugin(access_control) diff --git a/plugins/experimental/magick/CMakeLists.txt b/plugins/experimental/magick/CMakeLists.txt index 209aef561e..e7bcf8b42e 100644 --- a/plugins/experimental/magick/CMakeLists.txt +++ b/plugins/experimental/magick/CMakeLists.txt @@ -20,7 +20,7 @@ add_atsplugin(magick magick.cc) # This creates the magic import target if necessary (older cmake) include(magick_target) -target_link_libraries(magick PRIVATE ImageMagick::MagickWand ImageMagick::MagickCore ts::tscppapi OpenSSL::Crypto) +target_link_libraries(magick PRIVATE OpenSSL::Crypto ImageMagick::MagickWand ImageMagick::MagickCore ts::tscppapi) # There is a periodic issue with asan errors and imagemagick so disable this test for asan builds to reduce noise if(NOT ENABLE_ASAN) diff --git a/plugins/experimental/sslheaders/CMakeLists.txt b/plugins/experimental/sslheaders/CMakeLists.txt index c5785706de..86b8189295 100644 --- a/plugins/experimental/sslheaders/CMakeLists.txt +++ b/plugins/experimental/sslheaders/CMakeLists.txt @@ -22,7 +22,7 @@ set_target_properties(sslhdr PROPERTIES POSITION_INDEPENDENT_CODE TRUE) if(BUILD_TESTING) add_executable(test_sslhdr unit_tests/unit_test_main.cc unit_tests/test_sslheaders.cc) - target_link_libraries(test_sslhdr PRIVATE sslhdr catch2::catch2 OpenSSL::SSL libswoc::libswoc) + target_link_libraries(test_sslhdr PRIVATE sslhdr OpenSSL::SSL catch2::catch2 libswoc::libswoc) endif() add_atsplugin(sslheaders sslheaders.cc) diff --git a/plugins/experimental/stek_share/CMakeLists.txt b/plugins/experimental/stek_share/CMakeLists.txt index 32438fdd20..c2cf2db601 100644 --- a/plugins/experimental/stek_share/CMakeLists.txt +++ b/plugins/experimental/stek_share/CMakeLists.txt @@ -18,7 +18,7 @@ if(nuraft_FOUND) add_atsplugin(stek_share common.cc log_store.cc stek_share.cc stek_utils.cc) - target_link_libraries(stek_share PRIVATE nuraft::nuraft OpenSSL::SSL yaml-cpp::yaml-cpp) + target_link_libraries(stek_share PRIVATE OpenSSL::SSL nuraft::nuraft yaml-cpp::yaml-cpp) else() message(STATUS "skipping stek_share plugin (missing nuraft)") diff --git a/plugins/experimental/txn_box/plugin/CMakeLists.txt b/plugins/experimental/txn_box/plugin/CMakeLists.txt index ef03cbc586..b9b636aab4 100644 --- a/plugins/experimental/txn_box/plugin/CMakeLists.txt +++ b/plugins/experimental/txn_box/plugin/CMakeLists.txt @@ -44,7 +44,7 @@ add_atsplugin( src/text_block.cc ) -target_link_libraries(txn_box PRIVATE libswoc::libswoc PkgConfig::PCRE2 OpenSSL::SSL yaml-cpp::yaml-cpp) +target_link_libraries(txn_box PRIVATE libswoc::libswoc OpenSSL::SSL PkgConfig::PCRE2 yaml-cpp::yaml-cpp) target_include_directories(txn_box PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) diff --git a/plugins/experimental/txn_box/unit_tests/CMakeLists.txt b/plugins/experimental/txn_box/unit_tests/CMakeLists.txt index 02665ca8e7..ee469fc73b 100644 --- a/plugins/experimental/txn_box/unit_tests/CMakeLists.txt +++ b/plugins/experimental/txn_box/unit_tests/CMakeLists.txt @@ -24,7 +24,7 @@ add_executable(test_txn_box unit_test_main.cc test_txn_box.cc test_accl_utils.cc set_target_properties(test_txn_box PROPERTIES CLANG_FORMAT_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${YAMLCPP_INCLUDE_DIR}) target_link_libraries( - test_txn_box PUBLIC libswoc::libswoc PkgConfig::PCRE2 OpenSSL::SSL catch2::catch2 yaml-cpp::yaml-cpp + test_txn_box PUBLIC libswoc::libswoc OpenSSL::SSL PkgConfig::PCRE2 catch2::catch2 yaml-cpp::yaml-cpp ) # After fighting with CMake over the include paths, it's just not worth it to be correct. # target_link_libraries should make this work but it doesn't. I can't figure out why. diff --git a/plugins/experimental/uri_signing/unit_tests/CMakeLists.txt b/plugins/experimental/uri_signing/unit_tests/CMakeLists.txt index e53460ff8b..30cd49ad67 100644 --- a/plugins/experimental/uri_signing/unit_tests/CMakeLists.txt +++ b/plugins/experimental/uri_signing/unit_tests/CMakeLists.txt @@ -32,7 +32,9 @@ target_compile_definitions(uri_signing_test PRIVATE UNITTEST) target_include_directories(uri_signing_test PRIVATE ${PROJECT_SOURCE_DIR}) target_link_libraries( uri_signing_test - PRIVATE catch2::catch2 + PRIVATE OpenSSL::SSL + OpenSSL::Crypto + catch2::catch2 jansson::jansson cjose::cjose ts::tsapi @@ -43,7 +45,5 @@ target_link_libraries( ts::logging ts::inknet ts::overridable_txn_vars - OpenSSL::SSL - OpenSSL::Crypto ) add_test(NAME uri_signing_test COMMAND uri_signing_test) diff --git a/plugins/s3_auth/unit_tests/CMakeLists.txt b/plugins/s3_auth/unit_tests/CMakeLists.txt index 9616898bff..35ea12340b 100644 --- a/plugins/s3_auth/unit_tests/CMakeLists.txt +++ b/plugins/s3_auth/unit_tests/CMakeLists.txt @@ -17,7 +17,7 @@ add_executable(test_s3_auth test_aws_auth_v4.cc "${PROJECT_SOURCE_DIR}/aws_auth_v4.cc") -target_link_libraries(test_s3_auth PRIVATE catch2::catch2 OpenSSL::Crypto ts::tsutil) +target_link_libraries(test_s3_auth PRIVATE OpenSSL::Crypto catch2::catch2 ts::tsutil) target_compile_definitions(test_s3_auth PRIVATE AWS_AUTH_V4_UNIT_TEST) diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index 7db56a345d..4a014757d8 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -23,7 +23,8 @@ set(TSAPI_PUBLIC_HEADERS ${PROJECT_SOURCE_DIR}/include/ts/ts.h ${PROJECT_SOURCE_ ${PROJECT_SOURCE_DIR}/include/ts/TsException.h ${PROJECT_BINARY_DIR}/include/ts/apidefs.h ) -target_link_libraries(tsapi PRIVATE libswoc::libswoc yaml-cpp::yaml-cpp PCRE::PCRE PkgConfig::PCRE2 OpenSSL::SSL) +# OpenSSL needs to be listed in before PCRE and other libraries that can be found in the system default lib directory (See # #11511) +target_link_libraries(tsapi PRIVATE libswoc::libswoc yaml-cpp::yaml-cpp OpenSSL::SSL PCRE::PCRE PkgConfig::PCRE2) set_target_properties(tsapi PROPERTIES PUBLIC_HEADER "${TSAPI_PUBLIC_HEADERS}") # Items common between api and other ts libraries diff --git a/src/cripts/CMakeLists.txt b/src/cripts/CMakeLists.txt index 02efdf87ea..960929aae8 100644 --- a/src/cripts/CMakeLists.txt +++ b/src/cripts/CMakeLists.txt @@ -59,7 +59,7 @@ set(CRIPTS_BUNDLE_HEADERS add_library(cripts SHARED ${CPP_FILES}) add_library(ts::cripts ALIAS cripts) -target_link_libraries(cripts PUBLIC libswoc::libswoc fmt::fmt PkgConfig::PCRE2 OpenSSL::Crypto) +target_link_libraries(cripts PUBLIC libswoc::libswoc OpenSSL::Crypto fmt::fmt PkgConfig::PCRE2) set_target_properties(cripts PROPERTIES PUBLIC_HEADER "${CRIPTS_PUBLIC_HEADERS}") set_target_properties(
