Merge pull request #7673 from micmac1/mariadb-maj2

mariadb: packaging, config and misc improvements
This commit is contained in:
Hannu Nyman 2018-12-16 00:53:07 +02:00 committed by GitHub
commit a93540b2a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 601 additions and 254 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=mariadb
PKG_VERSION:=10.2.19
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL := \
@ -33,39 +33,50 @@ PKG_BUILD_DEPENDS:=libevent2 mariadb/host
CMAKE_INSTALL:=1
PLUGIN_DIR:=/usr/lib/mysql/plugin
CONF_DIR:=/etc/mysql
PLUGIN_DIR:=/usr/lib/mariadb/plugin
SHARE_DIR:=/usr/share/mariadb
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 \
example_key_management \
fulltext
MARIADB_LIB_PLUGINS := \
auth_gssapi_client
MARIADB_SERVER_PLUGINS := \
adt_null \
auth_0x0100 \
auth_ed25519 \
auth_socket \
auth_test_plugin \
auth_gssapi \
auth_pam \
client_ed25519 \
debug_key_management \
dialog_examples \
disks \
example_key_management \
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 +87,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
@ -156,13 +157,12 @@ MARIADB_SERVER_EXTRA := \
mysql_tzinfo_to_sql \
mysqlbinlog \
mysqld_multi \
mysqld_safe \
mysqld_safe_helper \
mysqldumpslow \
mysqlhotcopy \
perror \
replace \
resolve_stack_dump
resolve_stack_dump \
wsrep_sst_*
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
@ -180,10 +180,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 +203,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
@ -216,10 +233,9 @@ endef
define Package/mariadb-client
$(call Package/mariadb/Default)
TITLE:=MariaDB database core client binaries
DEPENDS:= \
$(MARIADB_COMMON_DEPENDS) \
+libncursesw
TITLE:=MariaDB database client
MENU:=1
DEPENDS:=mariadb-client-base
endef
define Package/mariadb-client/description
@ -231,9 +247,30 @@ $(subst $(space),$(newline),$(MARIADB_CLIENT))
endef
define Package/mariadb-client-base
$(call Package/mariadb/Default)
TITLE:=MariaDB database client base
DEPENDS:=mariadb-common \
$(MARIADB_COMMON_DEPENDS) \
+libedit
endef
define Package/mariadb-client-base/conffiles
$(CONF_DIR)/conf.d/50-client.cnf
$(CONF_DIR)/conf.d/50-mysql-clients.cnf
endef
define Package/mariadb-client-base/description
$(call Package/mariadb/description/Default)
This package provides the foundation for mariadb-client. It installs the
configuration and the dependencies.
endef
define Package/mariadb-client-extra
$(call Package/mariadb/Default)
TITLE:=MariaDB database extra client binaries
TITLE:=MariaDB database client extra
DEPENDS:=mariadb-client
endef
@ -246,32 +283,29 @@ $(subst $(space),$(newline),$(MARIADB_CLIENT_EXTRA))
endef
define Package/mariadb-extra-charsets
define Package/mariadb-common
$(call Package/mariadb/Default)
TITLE:=MariaDB database extra character sets
DEPENDS:=mariadb-server
TITLE:=MariaDB database common files
DEPENDS:=
endef
define Package/mariadb-extra-charsets/description
define Package/mariadb-common/conffiles
$(CONF_DIR)/my.cnf
endef
define Package/mariadb-common/description
$(call Package/mariadb/description/Default)
This package contains single Byte character sets and collations that can
be added at run time.
This package includes shared files, for example $(CONF_DIR)/my.cnf.
endef
define Package/mariadb-server
$(call Package/mariadb/Default)
DEPENDS:= \
$(MARIADB_COMMON_DEPENDS) \
+!arc:libaio \
+liblzma \
+libpcre \
+resolveip
TITLE:=MariaDB database core server binaries
DEPENDS:=mariadb-server-base
TITLE:=MariaDB database server
MENU:=1
PROVIDES:=mysql-server
USERID:=mariadb=376:mariadb=376
endef
define Package/mariadb-server/description
@ -283,9 +317,36 @@ $(subst $(space),$(newline),$(MARIADB_SERVER))
endef
define Package/mariadb-server-base
$(call Package/mariadb/Default)
DEPENDS:=mariadb-common \
$(MARIADB_COMMON_DEPENDS) \
+!arc:libaio \
+liblzma \
+libpcre \
+resolveip
TITLE:=MariaDB database server base
USERID:=mariadb=376:mariadb=376
endef
define Package/mariadb-server-base/conffiles
$(CONF_DIR)/conf.d/50-server.cnf
$(CONF_DIR)/conf.d/60-galera.cnf
/etc/config/mysqld
endef
define Package/mariadb-server-base/description
$(call Package/mariadb/description/Default)
This package provides the foundation for mariadb-server. It installs the
init script, support files (configuration etc.), the user "mariadb" and
the dependencies.
endef
define Package/mariadb-server-extra
$(call Package/mariadb/Default)
TITLE:=MariaDB database extra server binaries
TITLE:=MariaDB database server extra
DEPENDS:=mariadb-server
endef
@ -310,82 +371,64 @@ 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
# Explicitly disable dtrace to avoid detection of a host version
CMAKE_OPTIONS += -DENABLE_DTRACE=0
# Prevent mariadb from messing with OpenWrt's C(XX)FLAGS
# Prevent MariaDB from messing with OpenWrt's C(XX)FLAGS
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 += \
-DCONNECT_WITH_JDBC=NO \
-DCONNECT_WITH_LIBXML2=system \
-DCONNECT_WITH_MONGO=NO \
-DCONNECT_WITH_ODBC=NO \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDISABLE_SHARED=NO \
-DENABLED_PROFILING=OFF \
-DENABLE_STATIC_LIBS=OFF \
-DINSTALL_DOCDIR=share/doc/mariadb \
-DINSTALL_DOCREADMEDIR=share/doc/mariadb \
-DINSTALL_INFODIR=share/info \
-DINSTALL_MANDIR=share/man \
-DINSTALL_MYSQLSHAREDIR=share/mysql \
-DINSTALL_MYSQLSHAREDIR=share/mariadb \
-DINSTALL_MYSQLTESTDIR="" \
-DINSTALL_PLUGINDIR=lib/mysql/plugin \
-DINSTALL_PLUGINDIR=lib/mariadb/plugin \
-DINSTALL_SBINDIR=bin \
-DINSTALL_SCRIPTDIR=bin \
-DINSTALL_SQLBENCHDIR="" \
-DINSTALL_SUPPORTFILESDIR=share/mysql \
-DINSTALL_SUPPORTFILESDIR=share/mariadb \
-DINSTALL_UNIX_ADDRDIR=/var/run/mysqld/mysqld.sock \
-DMYSQLD_USER=mariadb \
-DMYSQL_DATADIR=/var/lib/mysql \
-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
-DSKIP_TESTS=ON \
-DWITH_ASAN=OFF \
-DWITH_DEBUG=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_EXTRA_CHARSETS=complex \
-DWITH_INNODB_BZIP2=OFF \
-DWITH_INNODB_LZ4=OFF \
-DWITH_INNODB_LZMA=ON \
-DWITH_INNODB_LZO=OFF \
-DWITH_INNODB_SNAPPY=OFF \
-DWITH_LIBEDIT=OFF \
-DWITH_LIBNUMA=NO \
-DWITH_JEMALLOC=OFF \
-DWITH_LIBARCHIVE=OFF \
-DWITH_LIBWRAP=OFF \
-DWITH_LIBWSEP=OFF \
-DWITH_MARIABACKUP=ON \
-DWITH_PCRE=system \
-DWITH_READLINE=OFF \
-DWITH_SAFEMALLOC=OFF \
-DWITH_SSL=system \
-DWITH_SYSTEMD=no \
-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
@ -395,6 +438,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
@ -409,10 +453,9 @@ 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
# 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
# generated during the build of the host helpers. It is not necessary to build
# the whole host package, only the "import_executables" target.
@ -422,6 +465,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
@ -438,7 +488,7 @@ endef
# LIBICONV_PLUG is used in GNU's libiconv for redefinition of exports [e.g.
# from libiconv_open() to iconv_open()]. But in OpenWrt this variable is not set
# when building libiconv-full. So when mariadb sets LIBICONV_PLUG it expects
# when building libiconv-full. So when MariaDB sets LIBICONV_PLUG it expects
# iconv_open() to be available for example, which is not the case - only
# libiconv_open() is. To address this prevent the variable from being set.
# libiconv-stub does not use this variable, so there is no harm in always doing
@ -447,6 +497,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
@ -477,111 +529,106 @@ define Package/mariadb-client/install
cd $(1)/usr/bin; $(LN) mysqlcheck mysqloptimize
endef
define Package/mariadb-client-base/install
$(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d
$(INSTALL_CONF) conf/50-client.cnf $(1)$(CONF_DIR)/conf.d
$(INSTALL_CONF) conf/50-mysql-clients.cnf $(1)$(CONF_DIR)/conf.d
endef
define Package/mariadb-client-extra/install
$(INSTALL_DIR) $(1)/usr/bin
$(foreach b,$(MARIADB_CLIENT_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));)
endef
define Package/mariadb-extra-charsets/install
$(INSTALL_DIR) $(1)/usr/share/mysql/charsets
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/charsets/* $(1)/usr/share/mysql/charsets
define Package/mariadb-common/install
$(INSTALL_DIR) $(1)$(CONF_DIR)
$(INSTALL_CONF) conf/my.cnf $(1)$(CONF_DIR)
endef
define Package/mariadb-server/install
$(INSTALL_DIR) $(1)/usr/bin
$(foreach b,$(MARIADB_SERVER),$(call Package/mariadb/install/bin,$(1),$(b));)
$(INSTALL_DIR) $(1)/etc/default
endef
define Package/mariadb-server-base/install
$(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d
$(INSTALL_DIR) $(1)$(SHARE_DIR)/charsets
$(INSTALL_DIR) $(1)$(SHARE_DIR)/english
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/mysql/conf.d
$(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
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/maria_add_gis_sp_bootstrap.sql $(1)/usr/share/mysql
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_performance_tables.sql $(1)/usr/share/mysql
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables.sql $(1)/usr/share/mysql
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mysql/mysql_system_tables_data.sql $(1)/usr/share/mysql
$(SED) '/^[a-z]/s/^/#/' $(PKG_INSTALL_DIR)$(SHARE_DIR)/wsrep.cnf
$(INSTALL_CONF) $(PKG_INSTALL_DIR)$(SHARE_DIR)/wsrep.cnf $(1)$(CONF_DIR)/conf.d/60-galera.cnf
$(INSTALL_CONF) conf/50-server.cnf $(1)$(CONF_DIR)/conf.d
$(INSTALL_CONF) files/mysqld.config $(1)/etc/config/mysqld
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/charsets/* $(1)$(SHARE_DIR)/charsets
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/english/errmsg.sys $(1)$(SHARE_DIR)/english
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/fill_help_tables.sql $(1)$(SHARE_DIR)
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/maria_add_gis_sp_bootstrap.sql $(1)$(SHARE_DIR)
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/mysql_performance_tables.sql $(1)$(SHARE_DIR)
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/mysql_system_tables.sql $(1)$(SHARE_DIR)
$(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/mysql_system_tables_data.sql $(1)$(SHARE_DIR)
endef
define Package/mariadb-server-extra/install
$(INSTALL_DIR) $(1)/usr/bin
$(SED) 's,/bin/bash,/bin/sh,g' $(PKG_INSTALL_DIR)/usr/bin/wsrep_sst_*
$(foreach b,$(MARIADB_SERVER_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));)
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))
$(eval $(call BuildPackage,libmariadb))
$(eval $(call BuildPackage,mariadb-client))
$(eval $(call BuildPackage,mariadb-client-base))
$(eval $(call BuildPackage,mariadb-client-extra))
$(eval $(call BuildPackage,mariadb-extra-charsets))
$(eval $(call BuildPackage,mariadb-common))
$(eval $(call BuildPackage,mariadb-server))
$(eval $(call BuildPackage,mariadb-server-base))
$(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,))

View File

@ -0,0 +1,21 @@
#
# This group is read by the client library
# Use it for options that affect all clients, but not the server
#
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
# Example of client certificate usage
# ssl-cert=/etc/mysql/client-cert.pem
# ssl-key=/etc/mysql/client-key.pem
#
# Allow only TLS encrypted connections
# ssl-verify-server-cert=on
# This group is *never* read by mysql client library
# If you use the same .cnf file for MySQL and MariaDB, use it for
# MariaDB-only client options
[client-mariadb]

View File

@ -0,0 +1,25 @@
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#
[mysql]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
[mysql_upgrade]
[mysqladmin]
[mysqlbinlog]
[mysqlcheck]
[mysqldump]
[mysqlimport]
[mysqlshow]
[mysqlslap]

View File

@ -0,0 +1,136 @@
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Basic Settings
#
user = mariadb
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
# Don't put this on flash memory
# Figure out where you are going to put the databases and run
# mysql_install_db --force
datadir = /mnt/data/mysql
# tmpdir should also not go on flash memory
tmpdir = /tmp
lc-messages-dir = /usr/share/mariadb
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam_recover_options = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error log - should be very few entries.
# Note that if unset the errors will go to stdout and can be seen in syslog
# (check "logread")
#
#log_error = /var/log/mysql/error.log
#
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file = /var/log/mysql/mariadb-slow.log
#long_query_time = 10
#log_slow_rate_limit = 1000
#log_slow_verbosity = query_plan
#
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = exclude_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
# ssl-cipher=TLSv1.2
#
# * Character sets
#
# MySQL/MariaDB default is Latin1, but in OpenWrt we rather default to the full
# utf8 4-byte character set. See also client.cnf
#
# Note: In OpenWrt until mariadb 10.2.19-2 the baked-in defaults were
# "DEFAULT_CHARSET=utf8" and "DEFAULT_COLLATION=utf8_general_ci". As MariaDB's
# utf8 (supports three bytes per character) is not really UTF-8 (which needs up
# to four bytes per character) this was changed. Now the baked in-defaults are
# the upstream defaults (Latin1), but in the default configuration (like in the
# file you are currently reading) utf8mb4 is set, which is real UTF-8.
#
# Of course you are free to change this, either here or in a configuration file
# of your own which is read after this .cnf file, see my.cnf in parent folder
# (files are read in alphabetical order).
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#
# * Unix socket authentication plugin is built-in
#
# Needed so the root database user can authenticate without a password but
# only when running as the unix root user.
#
# Also available for other users if required.
# See https://mariadb.com/kb/en/unix_socket-authentication-plugin/

View File

@ -1,54 +1,22 @@
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/my.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
[mysqld]
user = mariadb
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
############ Don't put this on the NAND #############
# Figure out where you are going to put the databases
# And run mysql_install_db --force
datadir = /mnt/data/mysql/
######### This should also not go on the NAND #######
tmpdir = /mnt/data/tmp/
skip-external-locking
bind-address = 127.0.0.1
# Fine Tuning
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
# The following can be used as easy to replay backup logs or for replication.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
#max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/

View File

@ -1,10 +0,0 @@
# The user and group that will run the MySQL server. The user mariadb is
# automatically created by the mariadb-server package, hence that is the
# default choice.
#MY_USER=mariadb
#MY_GROUP=mariadb
# Additional arguments you want to pass to the MySQL server.
#MY_ARGS=""

View File

@ -0,0 +1,7 @@
config mysqld 'general'
option enabled '0'
option log_stderr '1'
option log_stdout '1'
option options ''

View File

@ -8,46 +8,94 @@ USE_PROCD=1
#PROCD_DEBUG=1
MYSQLD=mysqld
NAME=mysqld
DEFAULT=/etc/default/$MYSQLD
LOGGER="/usr/bin/logger -p user.err -s -t $MYSQLD"
PROG=/usr/bin/$MYSQLD
LOGGER="/usr/bin/logger -p user.err -s -t $NAME"
COMMAND=/usr/bin/$NAME
unset MY_ARGS MY_GROUP MY_USER
[ -f $DEFAULT ] && . $DEFAULT
my_user="${MY_USER:-mariadb}"
my_group="${MY_GROUP:-mariadb}"
mysqld_get_param() {
$COMMAND --print-defaults \
| tr " " "\n" \
| grep -- "--$1" \
| tail -n 1 \
| cut -d= -f2
}
start_service() {
local conf='/etc/mysql/my.cnf'
local datadir="$( sed -nE "s/^\s*datadir\s*=\s*('([^']*)'|\x22([^\x22]*)\x22|(.*\S))\s*$/\2\3\4/p" "$conf" )"
local conf=/etc/mysql/my.cnf
local dir
local user=mariadb
[ -d "$datadir" ] || {
$LOGGER "datadir '$datadir' in '$conf' does not exist"
return 1
}
local datadir
local logdir=/var/log/mysql
local rundir=/var/run/mysqld
local tmpdir
[ -f "$datadir/mysql/tables_priv.MYD" ] || {
local enabled
local log_stderr
local log_stdout
local options
if [ ! -x $COMMAND ]; then
$LOGGER $COMMAND is missing
exit 1
fi
if [ ! -r $conf ]; then
$LOGGER $conf cannot be read
exit 1
fi
config_load $NAME
config_get_bool enabled general enabled 0
if [ $enabled -eq 0 ]; then
$LOGGER service not enabled in /etc/config/$NAME
exit 1
fi
config_get_bool log_stderr general log_stderr 1
config_get_bool log_stdout general log_stdout 1
config_get options general options
datadir=$(mysqld_get_param datadir)
tmpdir=$(mysqld_get_param tmpdir)
if [ -z "$datadir" ]; then
$LOGGER datadir is not set
exit 1
fi
if [ -z "$tmpdir" ]; then
$LOGGER tmpdir is not set.
exit 1
fi
[ -e "$datadir" ] || mkdir -p "$datadir"
for dir in "$logdir" "$rundir" "$tmpdir"; do
if [ ! -e "$dir" ]; then
mkdir -p "$dir"
chown $user "$dir"
fi
done
if [ ! -f "$datadir/mysql/tables_priv.MYD" ]; then
$LOGGER "cannot detect privileges table, you might need to"
$LOGGER "run 'mysql_install_db --force' to initialize the system tables"
return 1
}
mkdir -p /var/lib/mysql
chown "$my_user":"$my_group" /var/lib/mysql
mkdir -p /var/run/mysqld
chown "$my_user":"$my_group" /var/run/mysqld
exit 1
fi
procd_open_instance
procd_set_param command $PROG $MY_ARGS
procd_set_param pidfile /var/run/mysqld.pid
procd_set_param command $COMMAND $options
# forward stderr to logd
procd_set_param stderr 1
procd_set_param stderr $log_stderr
# same for stdout
procd_set_param stdout $log_stdout
procd_close_instance
}

View File

@ -0,0 +1,105 @@
commit 2220f7458ef90829eacc457167a28aeba75ca1bc
Author: Sebastian Kemper <sebastian_ml@gmx.net>
Date: Sun Dec 9 21:19:24 2018 +0100
cmake: support new libedit interface
libedit changed it's interface a while ago. MariaDB's cmake file doesn't
recognize the new interface, the compile test fails:
/mariadb-10.2.19/CMakeFiles/CMakeTmp/src.cxx: In function 'int main(int, char**)':
/mariadb-10.2.19/CMakeFiles/CMakeTmp/src.cxx:6:47: error: invalid conversion from 'char*' to 'int' [-fpermissive]
int res= (*rl_completion_entry_function)(0,0);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
Fix this by adding a detection for the new interface as well.
In client/mysql.cc the ifdefs for the new readline interface are
extended to also check for the new libedit interface. They work the same
way.
Run-tested on a MIPS machine.
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -2577,7 +2577,7 @@ C_MODE_END
if not.
*/
-#if defined(USE_NEW_READLINE_INTERFACE)
+#if defined(USE_NEW_READLINE_INTERFACE) || defined(USE_NEW_LIBEDIT_INTERFACE)
static int fake_magic_space(int, int);
extern "C" char *no_completion(const char*,int)
#elif defined(USE_LIBEDIT_INTERFACE)
@@ -2659,7 +2659,7 @@ static int not_in_history(const char *li
}
-#if defined(USE_NEW_READLINE_INTERFACE)
+#if defined(USE_NEW_READLINE_INTERFACE) || defined(USE_NEW_LIBEDIT_INTERFACE)
static int fake_magic_space(int, int)
#else
static int fake_magic_space(const char *, int)
@@ -2676,7 +2676,7 @@ static void initialize_readline (char *n
rl_readline_name = name;
/* Tell the completer that we want a crack first. */
-#if defined(USE_NEW_READLINE_INTERFACE)
+#if defined(USE_NEW_READLINE_INTERFACE) || defined(USE_NEW_LIBEDIT_INTERFACE)
rl_attempted_completion_function= (rl_completion_func_t*)&new_mysql_completion;
rl_completion_entry_function= (rl_compentry_func_t*)&no_completion;
@@ -2706,7 +2706,7 @@ static char **new_mysql_completion(const
int end __attribute__((unused)))
{
if (!status.batch && !quick)
-#if defined(USE_NEW_READLINE_INTERFACE)
+#if defined(USE_NEW_READLINE_INTERFACE) || defined(USE_NEW_LIBEDIT_INTERFACE)
return rl_completion_matches(text, new_command_generator);
#else
return completion_matches((char *)text, (CPFunction *)new_command_generator);
--- a/cmake/readline.cmake
+++ b/cmake/readline.cmake
@@ -160,8 +160,20 @@ MACRO (MYSQL_FIND_SYSTEM_LIBEDIT)
int res= (*rl_completion_entry_function)(0,0);
completion_matches(0,0);
}"
- LIBEDIT_INTERFACE)
- SET(USE_LIBEDIT_INTERFACE ${LIBEDIT_INTERFACE})
+ LIBEDIT_HAVE_COMPLETION_INT)
+
+ CHECK_CXX_SOURCE_COMPILES("
+ #include <stdio.h>
+ #include <readline.h>
+ int main(int argc, char **argv)
+ {
+ char res= *(*rl_completion_entry_function)(0,0);
+ completion_matches(0,0);
+ }"
+ LIBEDIT_HAVE_COMPLETION_CHAR)
+ IF(LIBEDIT_HAVE_COMPLETION_INT OR LIBEDIT_HAVE_COMPLETION_CHAR)
+ SET(USE_LIBEDIT_INTERFACE 1)
+ ENDIF()
ENDIF()
ENDMACRO()
@@ -187,6 +199,7 @@ MACRO (MYSQL_CHECK_READLINE)
IF(USE_LIBEDIT_INTERFACE)
SET(MY_READLINE_INCLUDE_DIR ${LIBEDIT_INCLUDE_DIR})
SET(MY_READLINE_LIBRARY ${LIBEDIT_LIBRARY} ${CURSES_LIBRARY})
+ SET(USE_NEW_LIBEDIT_INTERFACE ${LIBEDIT_HAVE_COMPLETION_CHAR})
ELSE()
MYSQL_USE_BUNDLED_READLINE()
ENDIF()
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -113,6 +113,7 @@
/* Readline */
#cmakedefine HAVE_HIST_ENTRY 1
#cmakedefine USE_LIBEDIT_INTERFACE 1
+#cmakedefine USE_NEW_LIBEDIT_INTERFACE 1
#cmakedefine USE_NEW_READLINE_INTERFACE 1
#cmakedefine FIONREAD_IN_SYS_IOCTL 1