From 7005494e9039d0472cd5d7f63fb5ab54e15382f1 Mon Sep 17 00:00:00 2001 From: Daniel Handzus Date: Wed, 26 Aug 2026 12:01:19 +0200 Subject: [PATCH] MDEV-40936 Install test binaries to libexecdir instead of bindir Test-component binaries (mariadb-test, mariadb-client-test, mariadb-test-embedded, mariadb-client-test-embedded, test-connect-t) are not intended for direct invocation by users and are not meant to appear in $PATH, therefore install them to libexecdir instead of bindir. Changes: - Add INSTALL_LIBEXECDIR to all cmake install layouts (STANDALONE, RPM, DEB, SVR4) - Set DESTINATION ${INSTALL_LIBEXECDIR} for mariadb-test, mariadb-client-test, mariadb-test-embedded, mariadb-client-test-embedded, and test-connect-t - Update mariadb-test-run.pl to find test binaries under libexec/ for installed-layout runs - Update debian/mariadb-test.install paths accordingly --- client/CMakeLists.txt | 2 +- cmake/install_layout.cmake | 5 +++++ debian/mariadb-test.install | 18 +++++++++--------- libmysqld/examples/CMakeLists.txt | 4 ++-- mysql-test/mariadb-test-run.pl | 14 ++++++++++---- tests/CMakeLists.txt | 2 +- unittest/embedded/CMakeLists.txt | 2 +- 7 files changed, 29 insertions(+), 18 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 1a56e55d5ac3c..cf4b7ae9de92a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -44,7 +44,7 @@ IF(UNIX) SET_TARGET_PROPERTIES(mariadb PROPERTIES ENABLE_EXPORTS TRUE) ENDIF(UNIX) -MYSQL_ADD_EXECUTABLE(mariadb-test mysqltest.cc ${CMAKE_SOURCE_DIR}/sql/sql_string.cc COMPONENT Test) +MYSQL_ADD_EXECUTABLE(mariadb-test mysqltest.cc ${CMAKE_SOURCE_DIR}/sql/sql_string.cc COMPONENT Test DESTINATION ${INSTALL_LIBEXECDIR}) SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS ${PCRE2_DEBIAN_HACK}") TARGET_LINK_LIBRARIES(mariadb-test ${CLIENT_LIB} pcre2-posix pcre2-8) SET_TARGET_PROPERTIES(mariadb-test PROPERTIES ENABLE_EXPORTS TRUE) diff --git a/cmake/install_layout.cmake b/cmake/install_layout.cmake index 0911fc94ea99b..161384c153d49 100644 --- a/cmake/install_layout.cmake +++ b/cmake/install_layout.cmake @@ -45,6 +45,7 @@ # - INSTALL_SYSCONF2DIR (additional config files, e.g. /etc/mysql/conf.d) # # - INSTALL_LIBDIR (directory with client end embedded libraries) +# - INSTALL_LIBEXECDIR (directory with binaries that are not executed directly) # - INSTALL_PLUGINDIR (directory for plugins) # # - INSTALL_INCLUDEDIR (directory for MySQL headers) @@ -108,6 +109,7 @@ SET(INSTALL_SBINDIR_STANDALONE "bin") SET(INSTALL_SCRIPTDIR_STANDALONE "scripts") # SET(INSTALL_LIBDIR_STANDALONE "lib") +SET(INSTALL_LIBEXECDIR_STANDALONE "libexec") SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin") # SET(INSTALL_INCLUDEDIR_STANDALONE "include/mysql") @@ -142,6 +144,7 @@ IF(CMAKE_SIZEOF_VOID_P EQUAL 8) ELSE() SET(INSTALL_LIBDIR_RPM "lib") ENDIF() +SET(INSTALL_LIBEXECDIR_RPM "libexec") SET(INSTALL_PLUGINDIR_RPM "${INSTALL_LIBDIR_RPM}/mysql/plugin") # SET(INSTALL_INCLUDEDIR_RPM "include/mysql") @@ -182,6 +185,7 @@ SET(INSTALL_SYSCONFDIR_DEB "/etc") SET(INSTALL_SYSCONF2DIR_DEB "/etc/mysql/mariadb.conf.d") # SET(INSTALL_LIBDIR_DEB "lib/${CMAKE_CXX_LIBRARY_ARCHITECTURE}") +SET(INSTALL_LIBEXECDIR_DEB "libexec") SET(INSTALL_PLUGINDIR_DEB "lib/mysql/plugin") # SET(INSTALL_INCLUDEDIR_DEB "include/mariadb") @@ -215,6 +219,7 @@ SET(INSTALL_SBINDIR_SVR4 "bin") SET(INSTALL_SCRIPTDIR_SVR4 "scripts") # SET(INSTALL_LIBDIR_SVR4 "lib") +SET(INSTALL_LIBEXECDIR_SVR4 "libexec") SET(INSTALL_PLUGINDIR_SVR4 "lib/plugin") # SET(INSTALL_INCLUDEDIR_SVR4 "include/mysql") diff --git a/debian/mariadb-test.install b/debian/mariadb-test.install index bc49ac7f63ec3..40c5a087ee7fe 100644 --- a/debian/mariadb-test.install +++ b/debian/mariadb-test.install @@ -1,12 +1,12 @@ -usr/bin/mariadb-client-test -usr/bin/mariadb-client-test-embedded -usr/bin/mariadb-test -usr/bin/mariadb-test-embedded -usr/bin/mysql_client_test -usr/bin/mysql_client_test_embedded -usr/bin/mysqltest -usr/bin/mysqltest_embedded -usr/bin/test-connect-t +usr/libexec/mariadb-client-test +usr/libexec/mariadb-client-test-embedded +usr/libexec/mariadb-test +usr/libexec/mariadb-test-embedded +usr/libexec/mysql_client_test +usr/libexec/mysql_client_test_embedded +usr/libexec/mysqltest +usr/libexec/mysqltest_embedded +usr/libexec/test-connect-t usr/lib/*/libmariadb3/plugin/auth_test_plugin.so usr/lib/*/libmariadb3/plugin/qa_auth_client.so usr/lib/*/libmariadb3/plugin/qa_auth_interface.so diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index d6646a128ca76..714d70dba6fae 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -33,7 +33,7 @@ IF(UNIX) ENDIF(UNIX) MYSQL_ADD_EXECUTABLE(mariadb-test-embedded ../../client/mysqltest.cc - COMPONENT Test) + COMPONENT Test DESTINATION ${INSTALL_LIBEXECDIR}) TARGET_LINK_LIBRARIES(mariadb-test-embedded mysqlserver pcre2-posix pcre2-8) SET_SOURCE_FILES_PROPERTIES(../../client/mysqltest.cc PROPERTIES COMPILE_FLAGS "${PCRE2_DEBIAN_HACK}") @@ -51,7 +51,7 @@ IF(CMAKE_GENERATOR MATCHES "Xcode") ../../tests/mysql_client_test.c) ELSE() MYSQL_ADD_EXECUTABLE(mariadb-client-test-embedded ../../tests/mysql_client_test.c - COMPONENT Test) + COMPONENT Test DESTINATION ${INSTALL_LIBEXECDIR}) SET_TARGET_PROPERTIES(mariadb-client-test-embedded PROPERTIES HAS_CXX TRUE) ENDIF() TARGET_LINK_LIBRARIES(mariadb-client-test-embedded mysqlserver) diff --git a/mysql-test/mariadb-test-run.pl b/mysql-test/mariadb-test-run.pl index b1ebc30f84438..35913292ebe8e 100755 --- a/mysql-test/mariadb-test-run.pl +++ b/mysql-test/mariadb-test-run.pl @@ -1952,7 +1952,8 @@ () { $exe_mysqltest= mtr_exe_exists("$bindir/libmysqld/examples$multiconfig/mariadb-test-embedded", - "$path_client_bindir/mariadb-test-embedded"); + "$path_client_bindir/mariadb-test-embedded", + "$bindir/libexec/mariadb-test-embedded"); } else { @@ -1965,7 +1966,8 @@ () } else { - $exe_mysqltest= mtr_exe_exists("$path_client_bindir/mariadb-test"); + $exe_mysqltest= mtr_exe_exists("$path_client_bindir/mariadb-test", + "$bindir/libexec/mariadb-test"); } } @@ -2057,13 +2059,17 @@ () $exe= mtr_exe_maybe_exists( "$bindir/libmysqld/examples$multiconfig/mariadb-client-test-embedded", "$bindir/bin/mariadb-client-test-embedded", + "$bindir/libexec/mariadb-client-test-embedded", "$bindir/libmysqld/examples$multiconfig/mysql_client_test_embedded", - "$bindir/bin/mysql_client_test_embedded"); + "$bindir/bin/mysql_client_test_embedded", + "$bindir/libexec/mysql_client_test_embedded"); } else { $exe= mtr_exe_maybe_exists("$bindir/tests$multiconfig/mariadb-client-test", "$bindir/bin/mariadb-client-test", + "$bindir/libexec/mariadb-client-test", "$bindir/tests$multiconfig/mysql_client_test", - "$bindir/bin/mysql_client_test"); + "$bindir/bin/mysql_client_test", + "$bindir/libexec/mysql_client_test"); } my $args; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8d4d77590a111..f2acb244754a8 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,7 +22,7 @@ INCLUDE_DIRECTORIES(BEFORE ${CMAKE_BINARY_DIR}/libmariadb/include ${CMAKE_SOURCE_DIR}/libmariadb/include) -MYSQL_ADD_EXECUTABLE(mariadb-client-test mysql_client_test.c COMPONENT Test) +MYSQL_ADD_EXECUTABLE(mariadb-client-test mysql_client_test.c COMPONENT Test DESTINATION ${INSTALL_LIBEXECDIR}) SET(CLIENT_LIB mariadbclient mysys) TARGET_LINK_LIBRARIES(mariadb-client-test ${CLIENT_LIB}) diff --git a/unittest/embedded/CMakeLists.txt b/unittest/embedded/CMakeLists.txt index 428bb811de6fc..0c44412ff0d3f 100644 --- a/unittest/embedded/CMakeLists.txt +++ b/unittest/embedded/CMakeLists.txt @@ -11,7 +11,7 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT) MYSQL_ADD_EXECUTABLE(test-connect-t test-connect.cc - COMPONENT Test) + COMPONENT Test DESTINATION ${INSTALL_LIBEXECDIR}) TARGET_LINK_LIBRARIES(test-connect-t mysqlserver ) MY_ADD_TEST(test-connect)