From cce574a4083490a4cc3e6afbde0a158ec58aabb1 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 4 Aug 2026 16:04:35 +0200 Subject: [PATCH 01/10] MDEV-40608 MariaDB-devel is incomplete for plugins * create and install mariadb-plugin-config.cmake * deb: move all headers that plugins need to libmariadb-dev, together with libmysqlservices.a. At least until we'll create mariadb-plugin-dev.Nobody should need huge libmariadbd-dev to develop a plugin * rpm: all in MariaDB-devel already, no changes here * adjust plugin.cmake to work for external plugins * move server-internal part to top-level CMakeLists.txt * remove WITH_WSREP from my_config.h (it upsets external plugins) * remove double-defined macros from unireg.h (the guard doesn't help if unireg.h is included first) ColumnStore, until fixed, needs a backward-compatibility workaround --- .gitignore | 1 + CMakeLists.txt | 15 ++- cmake/install_macros.cmake | 33 ------ cmake/plugin.cmake | 116 +++++++++++++------ cmake/wsrep.cmake | 1 + config.h.cmake | 1 - debian/libmariadb-dev.install | 9 +- debian/libmariadbd-dev.install | 1 - include/my_global.h | 1 + sql/unireg.h | 9 -- storage/columnstore/CMakeLists.txt | 1 + support-files/CMakeLists.txt | 8 +- support-files/mariadb-plugin-config.cmake.in | 109 +++++++++++++++++ 13 files changed, 218 insertions(+), 87 deletions(-) create mode 100644 support-files/mariadb-plugin-config.cmake.in diff --git a/.gitignore b/.gitignore index 11a6c4600d711..551a2e8fa7d79 100644 --- a/.gitignore +++ b/.gitignore @@ -264,6 +264,7 @@ support-files/mariadb-extra.socket support-files/mariadb@.service support-files/mariadb@.socket support-files/mariadb-extra@.socket +support-files/mariadb-plugin-config.cmake support-files/mini-benchmark support-files/my-huge.cnf support-files/my-innodb-heavy-4G.cnf diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f68ec93a13ae..49b2cfaa57f4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) 2006, 2017, Oracle and/or its affiliates. -# Copyright (c) 2008, 2022, MariaDB Corporation. +# Copyright (c) 2008, 2026, MariaDB Corporation. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -493,7 +493,18 @@ SET(PYTHON_SHEBANG "/usr/bin/env python3" CACHE STRING "python shebang") MARK_AS_ADVANCED(PYTHON_SHEBANG) # Add storage engines and plugins. -CONFIGURE_PLUGINS() +IF(NOT WITHOUT_SERVER) + FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*) +ENDIF() + +FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*) +FOREACH(dir ${dirs_storage} ${dirs_plugin}) + IF (EXISTS ${dir}/CMakeLists.txt) + ADD_SUBDIRECTORY(${dir}) + ENDIF() +ENDFOREACH() + +VERIFY_PLUGINS() ADD_SUBDIRECTORY(include) ADD_SUBDIRECTORY(dbug) diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 282800a3285e8..557f0d693d758 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -300,36 +300,3 @@ ENDFUNCTION() # For Makefile generators we default Debug build directory to ${buildroot}/../debug. GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${CMAKE_BINARY_DIR} PATH) SET(DEBUGBUILDDIR "${BINARY_PARENTDIR}/debug" CACHE INTERNAL "Directory of debug build") - -FUNCTION(INSTALL_MYSQL_TEST from to) - IF(INSTALL_MYSQLTESTDIR) - IF(NOT WITH_WSREP) - SET(EXCL_GALERA "(suite/(galera|wsrep|sys_vars/[rt]/(sysvars_)?wsrep).*|std_data/(galera|wsrep).*)") - ELSE() - SET(EXCL_GALERA "^DOES_NOT_EXIST$") - ENDIF() - INSTALL( - DIRECTORY ${from} - DESTINATION "${INSTALL_MYSQLTESTDIR}/${to}" - USE_SOURCE_PERMISSIONS - COMPONENT Test - PATTERN "var" EXCLUDE - PATTERN "lib/My/SafeProcess" EXCLUDE - PATTERN "lib/t*" EXCLUDE - PATTERN "CPack" EXCLUDE - PATTERN "CMake*" EXCLUDE - PATTERN "cmake_install.cmake" EXCLUDE - PATTERN "mtr.out*" EXCLUDE - PATTERN ".cvsignore" EXCLUDE - PATTERN "*.am" EXCLUDE - PATTERN "*.in" EXCLUDE - PATTERN "Makefile" EXCLUDE - PATTERN "*.vcxproj" EXCLUDE - PATTERN "*.vcxproj.filters" EXCLUDE - PATTERN "*.vcxproj.user" EXCLUDE - PATTERN "CTest*" EXCLUDE - PATTERN "*~" EXCLUDE - REGEX "${EXCL_GALERA}" EXCLUDE - ) - ENDIF() -ENDFUNCTION() diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index a0deacbcb578b..f5964ca26c17b 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -14,10 +14,46 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA +IF(NOT EXTERNAL_PLUGIN) + STRING(CONCAT PARENT_SCOPE PARENT_SCOPE) # cannot use SET here +ENDIF() + +FUNCTION(INSTALL_MYSQL_TEST from to) + IF(INSTALL_MYSQLTESTDIR) + IF(NOT WITH_WSREP) + SET(EXCL_GALERA "(suite/(galera|wsrep|sys_vars/[rt]/(sysvars_)?wsrep).*|std_data/(galera|wsrep).*)") + ELSE() + SET(EXCL_GALERA "^DOES_NOT_EXIST$") + ENDIF() + INSTALL( + DIRECTORY ${from} + DESTINATION "${INSTALL_MYSQLTESTDIR}/${to}" + USE_SOURCE_PERMISSIONS + COMPONENT Test + PATTERN "var" EXCLUDE + PATTERN "lib/My/SafeProcess" EXCLUDE + PATTERN "lib/t*" EXCLUDE + PATTERN "CPack" EXCLUDE + PATTERN "CMake*" EXCLUDE + PATTERN "cmake_install.cmake" EXCLUDE + PATTERN "mtr.out*" EXCLUDE + PATTERN ".cvsignore" EXCLUDE + PATTERN "*.am" EXCLUDE + PATTERN "*.in" EXCLUDE + PATTERN "Makefile" EXCLUDE + PATTERN "*.vcxproj" EXCLUDE + PATTERN "*.vcxproj.filters" EXCLUDE + PATTERN "*.vcxproj.user" EXCLUDE + PATTERN "CTest*" EXCLUDE + PATTERN "*~" EXCLUDE + REGEX "${EXCL_GALERA}" EXCLUDE + ) + ENDIF() +ENDFUNCTION() INCLUDE(CMakeParseArguments) -# MYSQL_ADD_PLUGIN(plugin_name source1...sourceN +# MARIADB_ADD_PLUGIN(plugin_name source1...sourceN # [STORAGE_ENGINE] # [STATIC_ONLY|MODULE_ONLY] # [MANDATORY|DEFAULT] @@ -32,10 +68,10 @@ INCLUDE(CMakeParseArguments) # [LINK_LIBRARIES lib1...libN] # [DEPENDS target1...targetN] -MACRO(MYSQL_ADD_PLUGIN) +MACRO(MARIADB_ADD_PLUGIN) CMAKE_PARSE_ARGUMENTS(ARG "STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;NOT_EMBEDDED;RECOMPILE_FOR_EMBEDDED;CLIENT" - "MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;VERSION" + "MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT;CONFIG;VERSION;AUTHOR;DESCRIPTION" "LINK_LIBRARIES;DEPENDS" ${ARGN} ) @@ -108,6 +144,10 @@ MACRO(MYSQL_ADD_PLUGIN) MESSAGE(FATAL_ERROR "Invalid value for PLUGIN_${plugin}") ENDIF() + IF(EXTERNAL_PLUGIN) + EXTERNAL_PLUGIN_PRE() + ENDIF() + # Validate that the requested build mode is compatible with what the # plugin actually supports. STATIC_ONLY plugins cannot be built as # dynamic modules, and MODULE_ONLY plugins cannot be linked statically. @@ -130,10 +170,17 @@ MACRO(MYSQL_ADD_PLUGIN) SET(ARG_DEPENDS) ENDIF() + SET(definitions ";PLUGIN_NAME=\"${target}\";PLUGIN_LICENSE=PLUGIN_LICENSE_GPL") IF(ARG_VERSION) - SET(version_string ";PLUGIN_${plugin}_VERSION=\"${ARG_VERSION}\"") + SET(definitions "${definitions};PLUGIN_VERSION=\"${ARG_VERSION}\";PLUGIN_HEX_VERSION=${V_MAJOR}*256+${V_MINOR}") + ENDIF() + IF(ARG_AUTHOR) + SET(definitions "${definitions};PLUGIN_AUTHOR=\"${ARG_AUTHOR}\"") ENDIF() - + IF(ARG_DESCRIPTION) + SET(definitions "${definitions};PLUGIN_DESCRIPTION=\"${ARG_DESCRIPTION}\"") + ENDIF() + IF(NOT ARG_MODULE_OUTPUT_NAME) IF(ARG_STORAGE_ENGINE) SET(ARG_MODULE_OUTPUT_NAME "ha_${target}") @@ -169,7 +216,7 @@ MACRO(MYSQL_ADD_PLUGIN) DTRACE_INSTRUMENT(${target}_embedded) IF(ARG_RECOMPILE_FOR_EMBEDDED) SET_TARGET_PROPERTIES(${target}_embedded - PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY${version_string}") + PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY${definitions}") ENDIF() ADD_DEPENDENCIES(${target}_embedded GenError ${ARG_DEPENDS}) IF(ARG_LINK_LIBRARIES) @@ -207,11 +254,11 @@ MACRO(MYSQL_ADD_PLUGIN) IF(ARG_MANDATORY) SET (mysql_mandatory_plugins "${mysql_mandatory_plugins}${builtin_entry}\n") - SET (mysql_mandatory_plugins ${mysql_mandatory_plugins} PARENT_SCOPE) + SET (mysql_mandatory_plugins ${mysql_mandatory_plugins} ${PARENT_SCOPE}) ELSE() SET (mysql_optional_plugins "${mysql_optional_plugins}${builtin_entry}\n") - SET (mysql_optional_plugins ${mysql_optional_plugins} PARENT_SCOPE) + SET (mysql_optional_plugins ${mysql_optional_plugins} ${PARENT_SCOPE}) ENDIF() ELSEIF(PLUGIN_${plugin} MATCHES "(DYNAMIC|AUTO|YES)" AND NOT ARG_STATIC_ONLY AND NOT WITHOUT_DYNAMIC_PLUGINS) @@ -223,7 +270,7 @@ MACRO(MYSQL_ADD_PLUGIN) SET_TARGET_PROPERTIES (${target} PROPERTIES PREFIX "") IF (NOT ARG_CLIENT) SET_TARGET_PROPERTIES (${target} PROPERTIES - COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN${version_string}") + COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN${definitions}") ENDIF() TARGET_LINK_LIBRARIES (${target} mysqlservices ${ARG_LINK_LIBRARIES}) @@ -263,24 +310,29 @@ MACRO(MYSQL_ADD_PLUGIN) IF(CPACK_COMPONENTS_ALL AND NOT CPACK_COMPONENTS_ALL MATCHES ${ARG_COMPONENT} AND INSTALL_SYSCONF2DIR) - IF (ARG_STORAGE_ENGINE) - STRING(REPLACE "-" "_" ver ${SERVER_VERSION}) - SET(ver " = ${ver}-%{release}") + IF (ARG_STORAGE_ENGINE OR ARG_RECOMPILE_FOR_EMBEDDED) + IF(RPM) + STRING(REPLACE "-" "_" ver ${SERVER_VERSION}) + SET(ver " = ${ver}-%{release}") + ELSE() # DEB + SET(ver " (= ${SERVER_VERSION})") + ENDIF() ELSE() SET(ver "") ENDIF() STRING(TOUPPER ${ARG_COMPONENT} ARG_COMPONENT_UPPER) - SET(CPACK_COMPONENT_${ARG_COMPONENT_UPPER}SYMLINKS_GROUP ${ARG_COMPONENT} PARENT_SCOPE) - SET(CPACK_COMPONENT_${ARG_COMPONENT_UPPER}_GROUP ${ARG_COMPONENT} PARENT_SCOPE) + SET(CPACK_COMPONENT_${ARG_COMPONENT_UPPER}SYMLINKS_GROUP ${ARG_COMPONENT} ${PARENT_SCOPE}) + SET(CPACK_COMPONENT_${ARG_COMPONENT_UPPER}_GROUP ${ARG_COMPONENT} ${PARENT_SCOPE}) SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${ARG_COMPONENT} ${ARG_COMPONENT}Symlinks) - SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} PARENT_SCOPE) + SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ${PARENT_SCOPE}) IF (NOT ARG_CLIENT) - SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES "MariaDB-server${ver}" PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES "MariaDB-server${ver}" ${PARENT_SCOPE}) + SET(CPACK_DEBIAN_PACKAGE_DEPENDS "mariadb-server${ver}") ENDIF() - SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} ${PARENT_SCOPE}) IF (ARG_VERSION) - SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION ${SERVER_VERSION}_${ARG_VERSION} PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION ${SERVER_VERSION}_${ARG_VERSION} ${PARENT_SCOPE}) SET_PLUGIN_DEB_VERSION(${target} ${SERVER_VERSION}-${ARG_VERSION}) ENDIF() IF(NOT ARG_CLIENT AND UNIX) @@ -288,9 +340,9 @@ MACRO(MYSQL_ADD_PLUGIN) SET(ARG_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.cnf") FILE(WRITE ${ARG_CONFIG} "[mariadb]\nplugin-load-add=${ARG_MODULE_OUTPUT_NAME}.so\n") ENDIF() - SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*" PARENT_SCOPE) - SET(CPACK_RPM_${ARG_COMPONENT}_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/plugin-postin.sh PARENT_SCOPE) - SET(CPACK_RPM_${ARG_COMPONENT}_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*" ${PARENT_SCOPE}) + SET(CPACK_RPM_${ARG_COMPONENT}_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/plugin-postin.sh ${PARENT_SCOPE}) + SET(CPACK_RPM_${ARG_COMPONENT}_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh ${PARENT_SCOPE}) ENDIF() ENDIF() ELSE() @@ -323,23 +375,17 @@ MACRO(MYSQL_ADD_PLUGIN) ADD_FEATURE_INFO(${plugin} ${have_target} "Server plugin ${plugin_type}") ENDIF() ENDIF(NOT WITHOUT_SERVER OR ARG_CLIENT) -ENDMACRO() - - -# Add all CMake projects under storage and plugin -# subdirectories, configure sql_builtins.cc -MACRO(CONFIGURE_PLUGINS) - IF(NOT WITHOUT_SERVER) - FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*) + IF (EXTERNAL_PLUGIN) + EXTERNAL_PLUGIN_POST() ENDIF() +ENDMACRO() - FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*) - FOREACH(dir ${dirs_storage} ${dirs_plugin}) - IF (EXISTS ${dir}/CMakeLists.txt) - ADD_SUBDIRECTORY(${dir}) - ENDIF() - ENDFOREACH() +MACRO(MYSQL_ADD_PLUGIN) + MARIADB_ADD_PLUGIN(${ARGV}) +ENDMACRO() +# verify that all -DPLUGIN_xxx=YES plugins are being built +MACRO(VERIFY_PLUGINS) GET_CMAKE_PROPERTY(ALL_VARS VARIABLES) FOREACH (V ${ALL_VARS}) IF (V MATCHES "^PLUGIN_") diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake index 91f040bcdb6ef..748ed705e3751 100644 --- a/cmake/wsrep.cmake +++ b/cmake/wsrep.cmake @@ -35,6 +35,7 @@ IF(WITH_WSREP) # Set the patch version SET(WSREP_PATCH_VERSION "22") + ADD_DEFINITIONS(-DWITH_WSREP) ADD_SUBMODULE(wsrep-lib) # Obtain wsrep API version diff --git a/config.h.cmake b/config.h.cmake index 193fcf83fb97c..89bc700efdfe6 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -545,7 +545,6 @@ #ifndef EMBEDDED_LIBRARY #cmakedefine WSREP_INTERFACE_VERSION "@WSREP_INTERFACE_VERSION@" -#cmakedefine WITH_WSREP 1 #endif #if !defined(__STDC_FORMAT_MACROS) diff --git a/debian/libmariadb-dev.install b/debian/libmariadb-dev.install index 48120822f8136..72147bb60ee46 100644 --- a/debian/libmariadb-dev.install +++ b/debian/libmariadb-dev.install @@ -4,8 +4,7 @@ usr/include/mariadb/errmsg.h usr/include/mariadb/ma_list.h usr/include/mariadb/ma_pvio.h usr/include/mariadb/ma_tls.h -usr/include/mariadb/mariadb/ -usr/include/mariadb/mariadb/ma_io.h +usr/include/mariadb/mariadb usr/include/mariadb/mariadb_com.h usr/include/mariadb/mariadb_ctype.h usr/include/mariadb/mariadb_dyncol.h @@ -16,13 +15,12 @@ usr/include/mariadb/my_alloca.h usr/include/mariadb/my_config.h usr/include/mariadb/my_global.h usr/include/mariadb/my_sys.h +usr/include/mariadb/mysql usr/include/mariadb/mysql.h -usr/include/mariadb/mysql/ -usr/include/mariadb/mysql/client_plugin.h -usr/include/mariadb/mysql/plugin_auth.h usr/include/mariadb/mysql_com.h usr/include/mariadb/mysql_version.h usr/include/mariadb/mysqld_error.h +usr/include/mariadb/server usr/lib/*/libmariadb.a usr/lib/*/libmariadb.so usr/lib/*/libmariadbclient.a @@ -30,6 +28,7 @@ usr/lib/*/libmariadbclient.so usr/lib/*/libmysqlservices.a usr/lib/*/pkgconfig/libmariadb.pc usr/share/aclocal/mysql.m4 +usr/share/cmake/mariadb-plugin usr/share/man/man1/mariadb_config.1 usr/share/man/man1/mysql_config.1 usr/share/man/man3/*.3 diff --git a/debian/libmariadbd-dev.install b/debian/libmariadbd-dev.install index 3eebe631b9eab..13d961409ccf4 100644 --- a/debian/libmariadbd-dev.install +++ b/debian/libmariadbd-dev.install @@ -1,4 +1,3 @@ -usr/include/mariadb/server usr/lib/*/libmariadbd.a usr/lib/*/libmariadbd.so usr/lib/*/libmysqld.a diff --git a/include/my_global.h b/include/my_global.h index 9a2d80519bb52..86872231da2a9 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1173,6 +1173,7 @@ typedef struct { const char *dli_fname, dli_fbase; } Dl_info; /* Things we don't need in the embedded version of MySQL */ /* TODO HF add #undef HAVE_VIO if we don't want client in embedded library */ +#undef WITH_WSREP #else #define HAVE_REPLICATION #define HAVE_EXTERNAL_CLIENT diff --git a/sql/unireg.h b/sql/unireg.h index 7a7e97c082c20..694aba5a7dd1e 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -33,15 +33,6 @@ #define TEMP_PREFIX "MY" #define LOG_PREFIX "ML" #define PROGDIR "bin/" -#ifndef MYSQL_DATADIR -#define MYSQL_DATADIR "data/" -#endif -#ifndef SHAREDIR -#define SHAREDIR "share/" -#endif -#ifndef PLUGINDIR -#define PLUGINDIR "lib/plugin" -#endif #define MAX_ERROR_RANGES 4 /* 1000-2000, 2000-3000, 3000-4000, 4000-5000 */ #define ERRORS_PER_RANGE 1000 diff --git a/storage/columnstore/CMakeLists.txt b/storage/columnstore/CMakeLists.txt index 52f30b67161c2..d29f91f6615e4 100644 --- a/storage/columnstore/CMakeLists.txt +++ b/storage/columnstore/CMakeLists.txt @@ -9,6 +9,7 @@ add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) IF(NOT PLUGIN_PERFSCHEMA STREQUAL NO) add_definitions(-DHAVE_PSI_INTERFACE=) ENDIF() +add_definitions(-DPLUGIN_COLUMNSTORE_VERSION=PLUGIN_VERSION) # let's temporarily disable the warning, until ColumnStore is fixed MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-error=suggest-override") diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 8dc3d235dcddc..d69e8606d31ac 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) 2006, 2016, Oracle and/or its affiliates. -# Copyright (c) 2012, 2022, MariaDB +# Copyright (c) 2012, 2026, MariaDB plc # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -253,4 +253,10 @@ IF(UNIX AND NOT WITHOUT_SERVER) WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})" COMPONENT SupportFiles) ENDIF(INSTALL_SYSCONFDIR) + + FILE(READ ${CMAKE_SOURCE_DIR}/cmake/install_layout.cmake install_layout.cmake) + FILE(READ ${CMAKE_SOURCE_DIR}/cmake/plugin.cmake plugin.cmake) + CONFIGURE_FILE(mariadb-plugin-config.cmake.in mariadb-plugin-config.cmake @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb-plugin-config.cmake DESTINATION ${INSTALL_SHAREDIR}/cmake/mariadb-plugin/ + COMPONENT Development) ENDIF() diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in new file mode 100644 index 0000000000000..44e3736631ce2 --- /dev/null +++ b/support-files/mariadb-plugin-config.cmake.in @@ -0,0 +1,109 @@ +# Copyright (c) 2026, MariaDB plc +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA + +SET(EXTERNAL_PLUGIN TRUE) +SET(SERVER_VERSION @SERVER_VERSION@) +GET_FILENAME_COMPONENT(basedir "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) + +MACRO(DTRACE_INSTRUMENT) +ENDMACRO() +MACRO(ADD_VERSION_INFO) +ENDMACRO() +MACRO(MYSQL_INSTALL_TARGETS) + INSTALL(TARGETS ${ARGV}) +ENDMACRO() +MACRO(SET_PLUGIN_DEB_VERSION plugin ver) + SET(CPACK_DEBIAN_PACKAGE_VERSION ${ver}) +ENDMACRO() + +ADD_CUSTOM_TARGET(GenError) + +INCLUDE(FeatureSummary) + +# Run at the beginning of MARIADB_ADD_PLUGIN +MACRO(EXTERNAL_PLUGIN_PRE) + IF (NOT ARG_COMPONENT) + SET(ARG_COMPONENT ${target}) + ENDIF() + IF (ARG_STATIC_ONLY OR PLUGIN_${plugin} MATCHES "STATIC") + MESSAGE(FATAL_ERROR "Static plugin ${plugin} must be built from server source tree") + ENDIF() + IF(NOT ARG_AUTHOR) + MESSAGE(FATAL_ERROR "Plugin ${plugin} has no AUTHOR") + ENDIF() + IF(NOT ARG_DESCRIPTION) + MESSAGE(FATAL_ERROR "Plugin ${plugin} has no DESCRIPTION") + ENDIF() + IF(NOT ARG_VERSION MATCHES "^([0-9]+)\\.([0-9]+)" OR CMAKE_MATCH_2 GREATER 255) + MESSAGE(FATAL_ERROR "Plugin ${plugin} has no or invalid VERSION") + ENDIF() + SET(V_MAJOR ${CMAKE_MATCH_1}) + SET(V_MINOR ${CMAKE_MATCH_2}) + CMAKE_POLICY(SET CMP0048 NEW) + PROJECT(${target} VERSION ${ARG_VERSION} DESCRIPTION "${ARG_DESCRIPTION}") + SET(CPACK_PACKAGE_NAME "mariadb-plugin-${ARG_COMPONENT}") + SET(CPACK_RPM_PACKAGE_NAME "MariaDB-plugin-${ARG_COMPONENT}") + SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${ARG_DESCRIPTION}") + SET(CPACK_RPM_PACKAGE_DESCRIPTION "${ARG_DESCRIPTION}") + SET(CPACK_RPM_FILE_NAME RPM-DEFAULT) + SET(CPACK_RPM_PACKAGE_LICENSE "GPLv2") + SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases") + SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}") + SET(CPACK_RPM_PACKAGE_VENDOR "${ARG_AUTHOR}") + SET(CPACK_PACKAGE_RELOCATABLE FALSE) + + FOREACH(p ${INSTALL_PLUGINDIRABS} ${INSTALL_MYSQLTESTDIRABS}/plugin ${INSTALL_SYSCONF2DIR}) + WHILE(NOT prev STREQUAL ${p}) + LIST(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${p}") + SET(prev ${p}) + GET_FILENAME_COMPONENT(p "${p}" DIRECTORY) + ENDWHILE() + ENDFOREACH() + + IF(ARG_RECOMPILE_FOR_EMBEDDED OR ARG_STORAGE_ENGINE) + INCLUDE_DIRECTORIES(${basedir}/@INSTALL_INCLUDEDIR@/server ${basedir}/@INSTALL_INCLUDEDIR@/server/private) + ENDIF() + + SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "${ARG_AUTHOR}") + SET(CPACK_COMPONENTS_ALL TRUE) # for version-fiddling IF in plugin.cmake +ENDMACRO() + +# Run at the end of MARIADB_ADD_PLUGIN +MACRO(EXTERNAL_PLUGIN_POST) + SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION}) + SET(CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES}) + IF (DEB) + # match autobake-deb.sh naming + EXECUTE_PROCESS(COMMAND sh -c "echo $(lsb_release -si) $(lsb_release -sr)_$(dpkg --print-architecture)|sed 's/^\\(...\\)[^ ]* /\\L\\1/;s/\\.//g'" + RESULT_VARIABLE res OUTPUT_VARIABLE O OUTPUT_STRIP_TRAILING_WHITESPACE) + IF (res) + message(FATAL_ERROR "Cannot get debian version or architecture") + endif() + SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-1:${CPACK_DEBIAN_PACKAGE_VERSION}+maria~${O}.deb") + ENDIF() + INCLUDE(CPack) +ENDMACRO() + +@install_layout.cmake@ + +@plugin.cmake@ + +IF (RPM) + set(CPACK_GENERATOR "RPM") +ELSEIF(DEB) + set(CPACK_GENERATOR "DEB") +ELSE() + set(CPACK_GENERATOR "TGZ") +ENDIF() From 05fea1a4c51fd18d00102c1650f18746366e9017 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 18 Aug 2026 11:19:45 +0200 Subject: [PATCH 02/10] disable DBUG in plugins, better deb version detection dbug can be enabled with -UDBUG_OFF, if *really* needed --- support-files/mariadb-plugin-config.cmake.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 44e3736631ce2..483a00b320da6 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -16,6 +16,8 @@ SET(EXTERNAL_PLUGIN TRUE) SET(SERVER_VERSION @SERVER_VERSION@) GET_FILENAME_COMPONENT(basedir "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) +SET(CMAKE_C_FLAGS "-DDBUG_OFF ${CMAKE_C_FLAGS}") +SET(CMAKE_CXX_FLAGS "-DDBUG_OFF ${CMAKE_CXX_FLAGS}") MACRO(DTRACE_INSTRUMENT) ENDMACRO() @@ -88,7 +90,7 @@ MACRO(EXTERNAL_PLUGIN_POST) # match autobake-deb.sh naming EXECUTE_PROCESS(COMMAND sh -c "echo $(lsb_release -si) $(lsb_release -sr)_$(dpkg --print-architecture)|sed 's/^\\(...\\)[^ ]* /\\L\\1/;s/\\.//g'" RESULT_VARIABLE res OUTPUT_VARIABLE O OUTPUT_STRIP_TRAILING_WHITESPACE) - IF (res) + IF (res OR NOT (O MATCHES "^(deb|ubu)[0-9]+_[a-z0-9_]+$")) message(FATAL_ERROR "Cannot get debian version or architecture") endif() SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-1:${CPACK_DEBIAN_PACKAGE_VERSION}+maria~${O}.deb") From 5194c92e81166718632bfdb7921341232d97dc87 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 19 Aug 2026 18:04:33 +0200 Subject: [PATCH 03/10] fix debian versioning --- cmake/plugin.cmake | 2 +- support-files/mariadb-plugin-config.cmake.in | 26 +++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index f5964ca26c17b..0e06dd8d7ef31 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -315,7 +315,7 @@ MACRO(MARIADB_ADD_PLUGIN) STRING(REPLACE "-" "_" ver ${SERVER_VERSION}) SET(ver " = ${ver}-%{release}") ELSE() # DEB - SET(ver " (= ${SERVER_VERSION})") + SET(ver " (= 1:${SERVER_VERSION}+maria~${DEBIAN_ABBR})") ENDIF() ELSE() SET(ver "") diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 483a00b320da6..300ad07ba0e10 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -27,7 +27,7 @@ MACRO(MYSQL_INSTALL_TARGETS) INSTALL(TARGETS ${ARGV}) ENDMACRO() MACRO(SET_PLUGIN_DEB_VERSION plugin ver) - SET(CPACK_DEBIAN_PACKAGE_VERSION ${ver}) + SET(CPACK_DEBIAN_PACKAGE_VERSION "1:${ver}+maria~${DEBIAN_ABBR}") ENDMACRO() ADD_CUSTOM_TARGET(GenError) @@ -80,23 +80,25 @@ MACRO(EXTERNAL_PLUGIN_PRE) SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "${ARG_AUTHOR}") SET(CPACK_COMPONENTS_ALL TRUE) # for version-fiddling IF in plugin.cmake -ENDMACRO() + IF (DEB) + # match autobake-deb.sh naming + EXECUTE_PROCESS(COMMAND sh -c "echo $(lsb_release -si) $(lsb_release -sr)|sed 's/^\\(...\\)[^ ]* /\\L\\1/;s/\\.//g'" + RESULT_VARIABLE res OUTPUT_VARIABLE DEBIAN_ABBR OUTPUT_STRIP_TRAILING_WHITESPACE) + EXECUTE_PROCESS(COMMAND sh -c "dpkg --print-architecture" + RESULT_VARIABLE res OUTPUT_VARIABLE DEBIAN_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + IF (NOT ("${DEBIAN_ABBR}_${DEBIAN_ARCH}" MATCHES "^(deb|ubu)[0-9]+_[a-z0-9_]+$")) + message(FATAL_ERROR "Cannot get debian version (${DEBIAN_ABBR}) or architecture (${DEBIAN_ARCH})") + endif() + SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-1:${CPACK_DEBIAN_PACKAGE_VERSION}+maria~${DEBIAN_ABBR}_${DEBIAN_ARCH}.deb") + ENDIF() +ENDMACRO(EXTERNAL_PLUGIN_PRE) # Run at the end of MARIADB_ADD_PLUGIN MACRO(EXTERNAL_PLUGIN_POST) SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION}) SET(CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES}) - IF (DEB) - # match autobake-deb.sh naming - EXECUTE_PROCESS(COMMAND sh -c "echo $(lsb_release -si) $(lsb_release -sr)_$(dpkg --print-architecture)|sed 's/^\\(...\\)[^ ]* /\\L\\1/;s/\\.//g'" - RESULT_VARIABLE res OUTPUT_VARIABLE O OUTPUT_STRIP_TRAILING_WHITESPACE) - IF (res OR NOT (O MATCHES "^(deb|ubu)[0-9]+_[a-z0-9_]+$")) - message(FATAL_ERROR "Cannot get debian version or architecture") - endif() - SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-1:${CPACK_DEBIAN_PACKAGE_VERSION}+maria~${O}.deb") - ENDIF() INCLUDE(CPack) -ENDMACRO() +ENDMACRO(EXTERNAL_PLUGIN_POST) @install_layout.cmake@ From b8059c8390f8cdc22325710557f02ab3abe01601 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 26 Aug 2026 17:10:02 +0200 Subject: [PATCH 04/10] MDEV-40608 install mariadb-plugin-config.cmake on Windows too This only makes the file appear in the package; it does not yet make its content Windows-correct (relocatable prefix, exported "server" import lib for storage engines, etc.) - those are separate follow-ups. Assisted-by: Claude:claude-5-sonnet --- support-files/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index d69e8606d31ac..66c58a683421b 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -253,7 +253,11 @@ IF(UNIX AND NOT WITHOUT_SERVER) WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})" COMPONENT SupportFiles) ENDIF(INSTALL_SYSCONFDIR) +ENDIF() +# mariadb-plugin-config.cmake lets out-of-tree plugins build against an +# installed MariaDB-devel / MariaDB SDK; needed on Windows same as on UNIX. +IF(NOT WITHOUT_SERVER) FILE(READ ${CMAKE_SOURCE_DIR}/cmake/install_layout.cmake install_layout.cmake) FILE(READ ${CMAKE_SOURCE_DIR}/cmake/plugin.cmake plugin.cmake) CONFIGURE_FILE(mariadb-plugin-config.cmake.in mariadb-plugin-config.cmake @ONLY) From 379ff77ffbd022cf2c4f29398cbdcba7356d16f9 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 1 Sep 2026 19:20:11 +0200 Subject: [PATCH 05/10] for tar.gz installations: specify where to find libmariadbservices.a --- support-files/mariadb-plugin-config.cmake.in | 1 + 1 file changed, 1 insertion(+) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 300ad07ba0e10..4e1af082e0994 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -18,6 +18,7 @@ SET(SERVER_VERSION @SERVER_VERSION@) GET_FILENAME_COMPONENT(basedir "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) SET(CMAKE_C_FLAGS "-DDBUG_OFF ${CMAKE_C_FLAGS}") SET(CMAKE_CXX_FLAGS "-DDBUG_OFF ${CMAKE_CXX_FLAGS}") +LINK_DIRECTORIES(${basedir}/lib) MACRO(DTRACE_INSTRUMENT) ENDMACRO() From 6279961ba743b0fa9e4ea6422cd131e9ebbeb239 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 1 Sep 2026 19:33:13 +0200 Subject: [PATCH 06/10] fix `cmake --install .` to install where mariadb-plugin-config.cmake is same basedir, that is --- support-files/mariadb-plugin-config.cmake.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 4e1af082e0994..574000062d59b 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -103,6 +103,11 @@ ENDMACRO(EXTERNAL_PLUGIN_POST) @install_layout.cmake@ +IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + SET(CMAKE_INSTALL_PREFIX ${basedir} + CACHE PATH "install prefix" FORCE) +ENDIF() + @plugin.cmake@ IF (RPM) From 5a04bc845ad26f13d4f9ee5181c867e53da1209d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 2 Sep 2026 09:29:15 +0200 Subject: [PATCH 07/10] fix deb package name --- support-files/mariadb-plugin-config.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 574000062d59b..6a2ead3ed598e 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -90,7 +90,6 @@ MACRO(EXTERNAL_PLUGIN_PRE) IF (NOT ("${DEBIAN_ABBR}_${DEBIAN_ARCH}" MATCHES "^(deb|ubu)[0-9]+_[a-z0-9_]+$")) message(FATAL_ERROR "Cannot get debian version (${DEBIAN_ABBR}) or architecture (${DEBIAN_ARCH})") endif() - SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-1:${CPACK_DEBIAN_PACKAGE_VERSION}+maria~${DEBIAN_ABBR}_${DEBIAN_ARCH}.deb") ENDIF() ENDMACRO(EXTERNAL_PLUGIN_PRE) @@ -98,6 +97,7 @@ ENDMACRO(EXTERNAL_PLUGIN_PRE) MACRO(EXTERNAL_PLUGIN_POST) SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION}) SET(CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES}) + SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}_${DEBIAN_ARCH}.deb") INCLUDE(CPack) ENDMACRO(EXTERNAL_PLUGIN_POST) From fcf31ea916f55451b4fb073d90ee04ae301b4d76 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 2 Sep 2026 11:30:35 +0200 Subject: [PATCH 08/10] use export target --- libservices/CMakeLists.txt | 4 +++- support-files/CMakeLists.txt | 6 ++++-- support-files/mariadb-plugin-config.cmake.in | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libservices/CMakeLists.txt b/libservices/CMakeLists.txt index 37c24646791f7..dc6c477baea82 100644 --- a/libservices/CMakeLists.txt +++ b/libservices/CMakeLists.txt @@ -48,4 +48,6 @@ SET(MYSQLSERVICES_SOURCES ) ADD_CONVENIENCE_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES}) -INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR} COMPONENT Development) + +INSTALL(TARGETS mysqlservices EXPORT mariadb-plugin-targets + DESTINATION ${INSTALL_LIBDIR} COMPONENT Development) diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 66c58a683421b..c9aad16bf75e8 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -261,6 +261,8 @@ IF(NOT WITHOUT_SERVER) FILE(READ ${CMAKE_SOURCE_DIR}/cmake/install_layout.cmake install_layout.cmake) FILE(READ ${CMAKE_SOURCE_DIR}/cmake/plugin.cmake plugin.cmake) CONFIGURE_FILE(mariadb-plugin-config.cmake.in mariadb-plugin-config.cmake @ONLY) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb-plugin-config.cmake DESTINATION ${INSTALL_SHAREDIR}/cmake/mariadb-plugin/ - COMPONENT Development) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb-plugin-config.cmake + DESTINATION ${INSTALL_SHAREDIR}/cmake/mariadb-plugin/ COMPONENT Development) + INSTALL(EXPORT mariadb-plugin-targets FILE mariadb-plugin-targets.cmake + DESTINATION ${INSTALL_SHAREDIR}/cmake/mariadb-plugin/ COMPONENT Development) ENDIF() diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 6a2ead3ed598e..7b8913259d48d 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -18,7 +18,6 @@ SET(SERVER_VERSION @SERVER_VERSION@) GET_FILENAME_COMPONENT(basedir "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) SET(CMAKE_C_FLAGS "-DDBUG_OFF ${CMAKE_C_FLAGS}") SET(CMAKE_CXX_FLAGS "-DDBUG_OFF ${CMAKE_CXX_FLAGS}") -LINK_DIRECTORIES(${basedir}/lib) MACRO(DTRACE_INSTRUMENT) ENDMACRO() @@ -34,6 +33,7 @@ ENDMACRO() ADD_CUSTOM_TARGET(GenError) INCLUDE(FeatureSummary) +INCLUDE("${CMAKE_CURRENT_LIST_DIR}/mariadb-plugin-targets.cmake") # Run at the beginning of MARIADB_ADD_PLUGIN MACRO(EXTERNAL_PLUGIN_PRE) From c3ddbaf16491bc0814a484f42e1df4b9e7b38723 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 2 Sep 2026 12:47:37 +0200 Subject: [PATCH 09/10] fix include paths again --- support-files/mariadb-plugin-config.cmake.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 7b8913259d48d..0de55ba6214c0 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -34,6 +34,7 @@ ADD_CUSTOM_TARGET(GenError) INCLUDE(FeatureSummary) INCLUDE("${CMAKE_CURRENT_LIST_DIR}/mariadb-plugin-targets.cmake") +INCLUDE_DIRECTORIES(${basedir}/@INSTALL_INCLUDEDIR@/server) # Run at the beginning of MARIADB_ADD_PLUGIN MACRO(EXTERNAL_PLUGIN_PRE) @@ -76,7 +77,7 @@ MACRO(EXTERNAL_PLUGIN_PRE) ENDFOREACH() IF(ARG_RECOMPILE_FOR_EMBEDDED OR ARG_STORAGE_ENGINE) - INCLUDE_DIRECTORIES(${basedir}/@INSTALL_INCLUDEDIR@/server ${basedir}/@INSTALL_INCLUDEDIR@/server/private) + INCLUDE_DIRECTORIES(${basedir}/@INSTALL_INCLUDEDIR@/server/private) ENDIF() SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "${ARG_AUTHOR}") From bc5d6a45ebd9d71588baa54a2f50306b31376edc Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 2 Sep 2026 13:43:50 +0200 Subject: [PATCH 10/10] bintar plugin names --- support-files/mariadb-plugin-config.cmake.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/support-files/mariadb-plugin-config.cmake.in b/support-files/mariadb-plugin-config.cmake.in index 0de55ba6214c0..ea1b5618a257a 100644 --- a/support-files/mariadb-plugin-config.cmake.in +++ b/support-files/mariadb-plugin-config.cmake.in @@ -15,6 +15,8 @@ SET(EXTERNAL_PLUGIN TRUE) SET(SERVER_VERSION @SERVER_VERSION@) +STRING(TOLOWER @SYSTEM_NAME_AND_PROCESSOR@ SYSTEM_NAME_AND_PROCESSOR) + GET_FILENAME_COMPONENT(basedir "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE) SET(CMAKE_C_FLAGS "-DDBUG_OFF ${CMAKE_C_FLAGS}") SET(CMAKE_CXX_FLAGS "-DDBUG_OFF ${CMAKE_CXX_FLAGS}") @@ -99,6 +101,7 @@ MACRO(EXTERNAL_PLUGIN_POST) SET(CPACK_RPM_PACKAGE_VERSION ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_VERSION}) SET(CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_${ARG_COMPONENT}_PACKAGE_REQUIRES}) SET(CPACK_DEBIAN_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}_${DEBIAN_ARCH}.deb") + SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${SERVER_VERSION}-${ARG_VERSION}-${SYSTEM_NAME_AND_PROCESSOR}") INCLUDE(CPack) ENDMACRO(EXTERNAL_PLUGIN_POST)