This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 7840376593 Prioritize the library path for SSL library (#11511)
7840376593 is described below
commit 784037659359950fbc19073dc394a4b81f25b242
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
---
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 464ecce74a..f8a0a019a4 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,8 +45,6 @@ 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)
set_tests_properties(
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 b9c9e9dffc..4f083c88f3 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 857f253e06..2b32b89d5c 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(