mariadb: refresh plugins

This commit deals with changes related to plugins and how they're built
or disabled.

Currently a lot of plugins are packaged which are merely for tests or
plain examples. Other distros do not bundle these, hence this commit
does away with them.

A few new plugins are added related to PAM and Kerberos (auth_gssapi,
auth_gssapi_client and auth_pam).

The BuildPlugin template is refactored to also allow building of library
plugins (needed for auth_gssapi_client). The template is also cleaned up
- some extraneous dollar signs are removed and the install function is
now defined outside the template.

Unwanted plugins/engines are now turned off efficiently (without using
cmake variables) by blanking CMakeLists.txt files in the associated
folders. The idea was lifted from Gentoo.

ha_sequence is now built into the server. This is an upstream
preference. The plugin is about 30 kbytes in size, so there is no harm
adding it into the server, which weighs in at about 15 Mbytes anyway.

Last but not least the auth_socket plugin is now also built into the
server.  This allows the local root user to login to the database
without a password being set. This makes maintenance easier without
being detrimental to security. The idea was lifted from Debian.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
This commit is contained in:
Sebastian Kemper 2018-12-15 15:49:27 +01:00
parent a117d027bc
commit c0dba8cfa6
1 changed files with 101 additions and 107 deletions

View File

@ -35,37 +35,46 @@ CMAKE_INSTALL:=1
PLUGIN_DIR:=/usr/lib/mysql/plugin
MARIADB_SERVER_PLUGINS := \
adt_null \
auth_0x0100 \
auth_ed25519 \
auth_socket \
auth_test_plugin \
client_ed25519 \
MARIADB_DISABLE_ENGINES := \
cassandra \
example \
mroonga \
oqgraph \
rocksdb \
test_sql_discovery \
tokudb
MARIADB_DISABLE_PLUGINS := \
audit_null \
auth_examples \
aws_key_management \
cracklib_password_check \
daemon_example \
debug_key_management \
dialog_examples \
disks \
example_key_management \
fulltext
MARIADB_LIB_PLUGINS := \
auth_gssapi_client
MARIADB_SERVER_PLUGINS := \
auth_ed25519 \
auth_gssapi \
auth_pam \
client_ed25519 \
disks \
feedback \
file_key_management \
ha_archive \
ha_blackhole \
ha_connect \
ha_example \
ha_federated \
ha_federatedx \
ha_sequence \
ha_sphinx \
ha_spider \
ha_test_sql_discovery \
handlersocket \
libdaemon_example \
locales \
metadata_lock_info \
mypluglib \
qa_auth_client \
qa_auth_interface \
qa_auth_server \
query_cache_info \
query_response_time \
semisync_master \
@ -76,39 +85,29 @@ MARIADB_SERVER_PLUGINS := \
wsrep_info
PKG_CONFIG_DEPENDS := \
$(patsubst %,CONFIG_PACKAGE_lib$(PKG_NAME)-plugin-%,$(subst _,-,$(MARIADB_LIB_PLUGINS))) \
$(patsubst %,CONFIG_PACKAGE_$(PKG_NAME)-server-plugin-%,$(subst _,-,$(MARIADB_SERVER_PLUGINS))) \
CONFIG_PACKAGE_mariadb-server
plugin-adt_null := PLUGIN_AUDIT_NULL
plugin-auth_0x0100 := PLUGIN_AUTH_0X0100
plugin-auth_gssapi_client := PLUGIN_AUTH_GSSAPI_CLIENT
plugin-auth_ed25519 := PLUGIN_AUTH_ED25519
plugin-auth_socket := PLUGIN_AUTH_SOCKET
plugin-auth_test_plugin := PLUGIN_AUTH_TEST_PLUGIN
plugin-auth_gssapi := PLUGIN_AUTH_GSSAPI
plugin-auth_pam := PLUGIN_AUTH_PAM
plugin-client_ed25519 := PLUGIN_CLIENT_ED25519
plugin-debug_key_management := PLUGIN_DEBUG_KEY_MANAGEMENT
plugin-dialog_examples := PLUGIN_DIALOG_EXAMPLES
plugin-disks := PLUGIN_DISKS
plugin-example_key_management := PLUGIN_EXAMPLE_KEY_MANAGEMENT
plugin-feedback := PLUGIN_FEEDBACK
plugin-file_key_management := PLUGIN_FILE_KEY_MANAGEMENT
plugin-ha_archive := PLUGIN_ARCHIVE
plugin-ha_blackhole := PLUGIN_BLACKHOLE
plugin-ha_connect := PLUGIN_CONNECT
plugin-ha_example := PLUGIN_EXAMPLE
plugin-ha_federated := PLUGIN_FEDERATED
plugin-ha_federatedx := PLUGIN_FEDERATEDX
plugin-ha_sequence := PLUGIN_SEQUENCE
plugin-ha_sphinx := PLUGIN_SPHINX
plugin-ha_spider := PLUGIN_SPIDER
plugin-ha_test_sql_discovery := PLUGIN_TEST_SQL_DISCOVERY
plugin-handlersocket := PLUGIN_HANDLERSOCKET
plugin-libdaemon_example := PLUGIN_DAEMON_EXAMPLE
plugin-locales := PLUGIN_LOCALES
plugin-metadata_lock_info := PLUGIN_METADATA_LOCK_INFO
plugin-mypluglib := PLUGIN_FTEXAMPLE
plugin-qa_auth_client := PLUGIN_QA_AUTH_CLIENT
plugin-qa_auth_interface := PLUGIN_QA_AUTH_INTERFACE
plugin-qa_auth_server := PLUGIN_QA_AUTH_SERVER
plugin-query_cache_info := PLUGIN_QUERY_CACHE_INFO
plugin-query_response_time := PLUGIN_QUERY_RESPONSE_TIME
plugin-semisync_master := PLUGIN_SEMISYNC_MASTER
@ -180,10 +179,22 @@ MARIADB_COMMON_DEPENDS := \
# ignore them.
TARGET_CFLAGS+=$(TARGET_CPPFLAGS)
define Package/mariadb/disable/engine
echo > $(1)/storage/$(2)/CMakeLists.txt
endef
define Package/mariadb/disable/plugin
echo > $(1)/plugin/$(2)/CMakeLists.txt
endef
define Package/mariadb/install/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $(1)/usr/bin
endef
define Package/mariadb/install/plugin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/$(2).so $(1)$(PLUGIN_DIR)
endef
define Package/mariadb/description/Default
MariaDB is a fast, stable and true multi-user, multi-threaded SQL
database server. SQL (Structured Query Language) is the most popular
@ -191,12 +202,17 @@ database query language in the world. The main goals of MariaDB are
speed, robustness and ease of use.
endef
define Package/libmariadb
define Package/libmariadb/Default
SECTION:=libs
CATEGORY:=Libraries
URL:=https://mariadb.org/
endef
define Package/libmariadb
$(call Package/libmariadb/Default)
DEPENDS:=$(MARIADB_COMMON_DEPENDS)
TITLE:=MariaDB database client library
URL:=https://mariadb.org/
MENU:=1
PROVIDES:=libmariadbclient libmysqlclient libmysqlclient-r
endef
@ -310,10 +326,6 @@ CMAKE_OPTIONS += -DWITH_UNIT_TESTS=0
# time.
CMAKE_OPTIONS += -DSTACK_DIRECTION=-1
# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken
# when it comes to cross-compilation we shall disable it and also disable TokuDB.
CMAKE_OPTIONS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1
# Make it explicit that we are cross-compiling
CMAKE_OPTIONS += -DCMAKE_CROSSCOMPILING=1
@ -326,7 +338,9 @@ CMAKE_OPTIONS += -DSECURITY_HARDENED=OFF
ifeq ($(CONFIG_PACKAGE_mariadb-server),)
CMAKE_OPTIONS += -DWITHOUT_SERVER=ON
else
CMAKE_OPTIONS += -DWITHOUT_SERVER=OFF
# Enable the auth_socket plugin and let unix user root access MariaDB without a
# separate password.
CMAKE_OPTIONS += -DWITHOUT_SERVER=OFF -DPLUGIN_AUTH_SOCKET=STATIC
endif
CMAKE_OPTIONS += \
@ -372,18 +386,6 @@ CMAKE_OPTIONS += \
-DWITH_VALGRIND=OFF \
-DWITH_ZLIB=system
# Default-disable some modules
CMAKE_OPTIONS += \
-DPLUGIN_CASSANDRA=NO \
-DPLUGIN_MROONGA=NO \
-DPLUGIN_OQGRAPH=NO \
-DPLUGIN_ROCKSDB=NO \
-DPLUGIN_TOKUDB=NO \
-DPLUGIN_AUTH_PAM=NO \
-DPLUGIN_AUTH_GSSAPI=NO \
-DPLUGIN_AUTH_GSSAPI_CLIENT=OFF \
-DPLUGIN_CRACKLIB_PASSWORD_CHECK=NO
# Help MariaDB find the correct libiconv.
# nls.mk sets it up so that with CONFIG_BUILD_NLS libiconv-full would be used,
# otherwise libiconv-stub (independent of the selected libc). MariaDB needs a
@ -393,6 +395,7 @@ CMAKE_OPTIONS += \
-DICONV_LIBRARIES=$(ICONV_PREFIX)/lib/libiconv.$(if $(CONFIG_BUILD_NLS),so,a)
CMAKE_OPTIONS += \
$(foreach p,$(MARIADB_LIB_PLUGINS),-D$(plugin-$(p))=$(if $(CONFIG_PACKAGE_lib$(PKG_NAME)-plugin-$(subst _,-,$(p))),DYNAMIC,OFF)) \
$(foreach p,$(MARIADB_SERVER_PLUGINS),-D$(plugin-$(p))=$(if $(CONFIG_PACKAGE_$(PKG_NAME)-server-plugin-$(subst _,-,$(p))),DYNAMIC,NO))
# Set CMAKE_FIND_ROOT_PATH_MODE_INCLUDE and CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
@ -407,8 +410,7 @@ CMAKE_HOST_OPTIONS += \
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \
-DCMAKE_INSTALL_RPATH="$(STAGING_DIR_HOSTPKG)/lib" \
-DCMAKE_SKIP_RPATH=FALSE \
-DWITHOUT_SERVER=OFF \
-DWITHOUT_TOKUDB=1
-DWITHOUT_SERVER=OFF
# Some helpers must be compiled for host in order to crosscompile mariadb for
# the target. They are then included by import_executables.cmake which is
@ -420,6 +422,13 @@ CMAKE_HOST_OPTIONS += \
CMAKE_OPTIONS += -DIMPORT_EXECUTABLES=$(STAGING_DIR_HOSTPKG)/share/mariadb/import_executables.cmake
# Disable some engines/plugins here as well - decreases the number of cmake checks.
define Host/Prepare
$(call Host/Prepare/Default)
$(foreach e,$(MARIADB_DISABLE_ENGINES),$(call Package/mariadb/disable/engine,$(HOST_BUILD_DIR),$(e));)
$(foreach p,$(MARIADB_DISABLE_PLUGINS),$(call Package/mariadb/disable/plugin,$(HOST_BUILD_DIR),$(p));)
endef
define Host/Compile
$(call Host/Compile/Default,import_executables)
endef
@ -445,6 +454,8 @@ endef
define Build/Prepare
$(call Build/Prepare/Default)
$(SED) '/ADD_DEFINITIONS(-DLIBICONV_PLUG)/d' $(PKG_BUILD_DIR)/libmariadb/libmariadb/CMakeLists.txt
$(foreach e,$(MARIADB_DISABLE_ENGINES),$(call Package/mariadb/disable/engine,$(PKG_BUILD_DIR),$(e));)
$(foreach p,$(MARIADB_DISABLE_PLUGINS),$(call Package/mariadb/disable/plugin,$(PKG_BUILD_DIR),$(p));)
endef
define Build/InstallDev
@ -494,8 +505,6 @@ define Package/mariadb-server/install
$(INSTALL_BIN) files/mysqld.init $(1)/etc/init.d/mysqld
$(INSTALL_CONF) conf/my.cnf $(1)/etc/mysql
$(INSTALL_CONF) conf/mysqld.default $(1)/etc/default/mysqld
$(INSTALL_DIR) $(1)$(PLUGIN_DIR)
$(INSTALL_CONF) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/daemon_example.ini $(1)$(PLUGIN_DIR)
$(INSTALL_DIR) $(1)/usr/share/mysql/english
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/english/errmsg.sys $(1)/usr/share/mysql/english
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/fill_help_tables.sql $(1)/usr/share/mysql
@ -513,28 +522,25 @@ endef
define Package/mariadb-server/conffiles
/etc/default/mysqld
/etc/mysql/my.cnf
$(PLUGIN_DIR)/daemon_example.ini
endef
define BuildPlugin
define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))
$$(call Package/mariadb/Default)
TITLE:=MariaDB database plugin
DEPENDS:=mariadb-server $(patsubst +%,+PACKAGE_$(PKG_NAME)-server-plugin-$(subst _,-,$(1)):%,$(2))
define Package/$(1)-plugin-$(subst _,-,$(2))
$(call Package/$(subst mariadb-server,mariadb,$(1))/Default)
TITLE:=$(1) plugin
DEPENDS:=$(1) $(patsubst +%,+PACKAGE_$(1)-plugin-$(subst _,-,$(2)):%,$(3))
endef
define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))/description
$$(call Package/mariadb/description/Default)
define Package/$(1)-plugin-$(subst _,-,$(2))/description
$(call Package/mariadb/description/Default)
This package provides the $(1) plugin.
This package provides the $(2) plugin.
endef
define Package/$(PKG_NAME)-server-plugin-$(subst _,-,$(1))/install
$(INSTALL_DIR) $$(1)$(PLUGIN_DIR)
$(INSTALL_BIN) \
$(PKG_INSTALL_DIR)$(PLUGIN_DIR)/$(1).so \
$$(1)$(PLUGIN_DIR)
define Package/$(1)-plugin-$(subst _,-,$(2))/install
$(INSTALL_DIR) $$(1)$(PLUGIN_DIR)
$(call Package/mariadb/install/plugin,$$(1),$(2))
endef
$$(eval $$(call BuildPackage,$(PKG_NAME)-server-plugin-$(subst _,-,$(1))))
$$(eval $$(call BuildPackage,$(1)-plugin-$(subst _,-,$(2))))
endef
$(eval $(call HostBuild))
@ -545,41 +551,29 @@ $(eval $(call BuildPackage,mariadb-extra-charsets))
$(eval $(call BuildPackage,mariadb-server))
$(eval $(call BuildPackage,mariadb-server-extra))
$(eval $(call BuildPlugin,adt_null,))
$(eval $(call BuildPlugin,auth_0x0100,))
$(eval $(call BuildPlugin,auth_ed25519,))
$(eval $(call BuildPlugin,auth_socket,))
$(eval $(call BuildPlugin,auth_test_plugin,))
$(eval $(call BuildPlugin,client_ed25519,))
$(eval $(call BuildPlugin,debug_key_management,))
$(eval $(call BuildPlugin,dialog_examples,))
$(eval $(call BuildPlugin,disks,))
$(eval $(call BuildPlugin,example_key_management,))
$(eval $(call BuildPlugin,feedback,))
$(eval $(call BuildPlugin,file_key_management,))
$(eval $(call BuildPlugin,ha_archive,))
$(eval $(call BuildPlugin,ha_blackhole,))
$(eval $(call BuildPlugin,ha_connect,+libxml2))
$(eval $(call BuildPlugin,ha_example,))
$(eval $(call BuildPlugin,ha_federated,))
$(eval $(call BuildPlugin,ha_federatedx,))
$(eval $(call BuildPlugin,ha_sequence,))
$(eval $(call BuildPlugin,ha_sphinx,))
$(eval $(call BuildPlugin,ha_spider,))
$(eval $(call BuildPlugin,ha_test_sql_discovery,))
$(eval $(call BuildPlugin,handlersocket,))
$(eval $(call BuildPlugin,libdaemon_example,))
$(eval $(call BuildPlugin,locales,))
$(eval $(call BuildPlugin,metadata_lock_info,))
$(eval $(call BuildPlugin,mypluglib,))
$(eval $(call BuildPlugin,qa_auth_client,))
$(eval $(call BuildPlugin,qa_auth_interface,))
$(eval $(call BuildPlugin,qa_auth_server,))
$(eval $(call BuildPlugin,query_cache_info,))
$(eval $(call BuildPlugin,query_response_time,))
$(eval $(call BuildPlugin,semisync_master,))
$(eval $(call BuildPlugin,semisync_slave,))
$(eval $(call BuildPlugin,server_audit,))
$(eval $(call BuildPlugin,simple_password_check,))
$(eval $(call BuildPlugin,sql_errlog,))
$(eval $(call BuildPlugin,wsrep_info,))
$(eval $(call BuildPlugin,libmariadb,auth_gssapi_client,+krb5-libs))
$(eval $(call BuildPlugin,mariadb-server,auth_ed25519,))
$(eval $(call BuildPlugin,mariadb-server,auth_gssapi,+krb5-libs))
$(eval $(call BuildPlugin,mariadb-server,auth_pam,+libpam))
$(eval $(call BuildPlugin,mariadb-server,client_ed25519,))
$(eval $(call BuildPlugin,mariadb-server,disks,))
$(eval $(call BuildPlugin,mariadb-server,feedback,))
$(eval $(call BuildPlugin,mariadb-server,file_key_management,))
$(eval $(call BuildPlugin,mariadb-server,ha_archive,))
$(eval $(call BuildPlugin,mariadb-server,ha_blackhole,))
$(eval $(call BuildPlugin,mariadb-server,ha_connect,+libxml2))
$(eval $(call BuildPlugin,mariadb-server,ha_federated,))
$(eval $(call BuildPlugin,mariadb-server,ha_federatedx,))
$(eval $(call BuildPlugin,mariadb-server,ha_sphinx,))
$(eval $(call BuildPlugin,mariadb-server,ha_spider,))
$(eval $(call BuildPlugin,mariadb-server,handlersocket,))
$(eval $(call BuildPlugin,mariadb-server,locales,))
$(eval $(call BuildPlugin,mariadb-server,metadata_lock_info,))
$(eval $(call BuildPlugin,mariadb-server,query_cache_info,))
$(eval $(call BuildPlugin,mariadb-server,query_response_time,))
$(eval $(call BuildPlugin,mariadb-server,semisync_master,))
$(eval $(call BuildPlugin,mariadb-server,semisync_slave,))
$(eval $(call BuildPlugin,mariadb-server,server_audit,))
$(eval $(call BuildPlugin,mariadb-server,simple_password_check,))
$(eval $(call BuildPlugin,mariadb-server,sql_errlog,))
$(eval $(call BuildPlugin,mariadb-server,wsrep_info,))