--- /dev/null
+#
+# Copyright (C) 2019 Sebastian Kemper <sebastian_ml@gmx.net>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libmariadb
+PKG_VERSION:=3.1.5
+PKG_RELEASE:=1
+
+PKG_SOURCE:=mariadb-connector-c-$(PKG_VERSION)-src.tar.gz
+PKG_SOURCE_URL := \
+ https://mirror.netcologne.de/mariadb/connector-c-$(PKG_VERSION) \
+ https://mirror.lstn.net/mariadb/connector-c-$(PKG_VERSION) \
+ https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/connector-c-$(PKG_VERSION) \
+ https://downloads.mariadb.org/interstitial/connector-c-$(PKG_VERSION)
+
+PKG_HASH:=a9de5fedd1a7805c86e23be49b9ceb79a86b090ad560d51495d7ba5952a9d9d5
+PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILES:=COPYING.LIB
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/mariadb-connector-c-$(PKG_VERSION)-src
+
+PKG_CPE_ID:=cpe:/a:mariadb:mariadb
+
+PKG_BUILD_PARALLEL:=1
+
+CMAKE_INSTALL:=1
+
+MARIADB_CONF_DIR:=/etc/mysql
+MARIADB_PLUGIN_DIR:=/usr/lib/mariadb/plugin
+
+MARIADB_PORT=3306
+MARIADB_SOCKET=/var/run/mysqld/mysqld.sock
+
+MARIADB_CLIENT_PLUGINS := \
+ auth_gssapi_client \
+ remote_io
+
+PKG_CONFIG_DEPENDS := \
+ $(patsubst %,CONFIG_PACKAGE_$(PKG_NAME)-plugin-%,$(subst _,-,$(MARIADB_CLIENT_PLUGINS)))
+
+plugin-auth_gssapi_client := CLIENT_PLUGIN_AUTH_GSSAPI_CLIENT
+plugin-remote_io := CLIENT_PLUGIN_REMOTE_IO
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+include $(INCLUDE_DIR)/nls.mk
+
+# Pass CPPFLAGS in the CFLAGS as otherwise the build system will
+# ignore them.
+TARGET_CFLAGS+=$(TARGET_CPPFLAGS)
+
+define Package/$(PKG_NAME)/install/plugin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/$(2).so $(1)$(MARIADB_PLUGIN_DIR)
+endef
+
+define Package/$(PKG_NAME)/Default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ URL:=https://mariadb.org/
+ SUBMENU:=Database
+endef
+
+define Package/$(PKG_NAME)/description/Default
+MariaDB is a very fast and robust SQL database server.
+endef
+
+define Package/$(PKG_NAME)
+ $(call Package/$(PKG_NAME)/Default)
+ DEPENDS:=+mariadb-common \
+ $(ICONV_DEPENDS) \
+ +libopenssl \
+ +zlib
+ TITLE:=MariaDB database client library
+ MENU:=1
+ PROVIDES:=libmariadbclient libmysqlclient libmysqlclient-r
+ ABI_VERSION:=3
+endef
+
+define Package/$(PKG_NAME)/conffiles
+$(MARIADB_CONF_DIR)/conf.d/50-client.cnf
+endef
+
+define Package/$(PKG_NAME)/description
+$(call Package/$(PKG_NAME)/description/Default)
+
+This package includes the client library.
+
+endef
+
+# We won't need unit tests
+CMAKE_OPTIONS += -DWITH_UNIT_TESTS=0
+
+# Make it explicit that we are cross-compiling
+CMAKE_OPTIONS += -DCMAKE_CROSSCOMPILING=1
+
+CMAKE_OPTIONS += \
+ -DINSTALL_INCLUDEDIR=include/mysql \
+ -DINSTALL_LIBDIR=lib \
+ -DINSTALL_PLUGINDIR=lib/mariadb/plugin \
+ -DMARIADB_UNIX_ADDR=$(MARIADB_SOCKET) \
+ -DWITH_EXTERNAL_ZLIB=YES \
+ -DWITH_MYSQLCOMPAT=ON \
+ -DWITH_SSL=OPENSSL
+
+# 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
+# leg up to find/pick the right lib.
+CMAKE_OPTIONS += \
+ -DICONV_INCLUDE_DIR=$(ICONV_PREFIX)/include \
+ -DICONV_LIBRARIES=$(ICONV_PREFIX)/lib/libiconv.$(if $(CONFIG_BUILD_NLS),so,a)
+
+CMAKE_OPTIONS += \
+ $(foreach p,$(MARIADB_CLIENT_PLUGINS),-D$(plugin-$(p))=$(if $(CONFIG_PACKAGE_$(PKG_NAME)-plugin-$(subst _,-,$(p))),DYNAMIC,OFF))
+
+# 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
+# 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
+# this.
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(SED) '/ADD_DEFINITIONS(-DLIBICONV_PLUG)/d' $(PKG_BUILD_DIR)/CMakeLists.txt
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include $(1)/usr/lib/mysql $(1)/usr/lib/pkgconfig $(2)/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/mysql $(1)/usr/include
+ cd $(1)/usr/include/mysql; $(LN) mariadb_version.h mysql_version.h
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{mariadb,mysqlclient}*.so* $(1)/usr/lib
+ cd $(1)/usr/lib/mysql; $(LN) ../lib{mariadb,mysqlclient}*.so* .
+ $(INSTALL_BIN) files/mysql_config $(1)/usr/bin
+ $(LN) $(STAGING_DIR)/usr/bin/mysql_config $(2)/bin
+ $(SED) 's/PORT/$(MARIADB_PORT)/' $(1)/usr/bin/mysql_config
+ $(SED) 's|PLUGIN_DIR|$(MARIADB_PLUGIN_DIR)|' $(1)/usr/bin/mysql_config
+ $(SED) 's|SOCKET|$(MARIADB_SOCKET)|' $(1)/usr/bin/mysql_config
+ cd "$(PKG_BUILD_DIR)/mariadb_config"; \
+ CLIENT_VERSION=`sed -n 's|^#define[[:blank:]]*VERSION[[:blank:]]*"\([0-9.]*\)"|\1|p' mariadb_config.c`; \
+ $(SED) "s/VERSION/$$$${CLIENT_VERSION}/" $(1)/usr/bin/mysql_config
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libmariadb.pc $(1)/usr/lib/pkgconfig
+endef
+
+define Package/$(PKG_NAME)/install
+ $(INSTALL_DIR) $(1)$(MARIADB_CONF_DIR)/conf.d
+ $(INSTALL_DIR) $(1)$(MARIADB_PLUGIN_DIR)
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/caching_sha2_password.so \
+ $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/client_ed25519.so \
+ $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/dialog.so \
+ $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/mysql_clear_password.so \
+ $(PKG_INSTALL_DIR)$(MARIADB_PLUGIN_DIR)/sha256_password.so \
+ $(1)$(MARIADB_PLUGIN_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libmariadb.so.$(ABI_VERSION) $(1)/usr/lib
+ $(INSTALL_CONF) conf/50-client.cnf $(1)$(MARIADB_CONF_DIR)/conf.d
+endef
+
+define BuildPlugin
+ define Package/$(PKG_NAME)-plugin-$(subst _,-,$(1))
+ $(call Package/$(PKG_NAME)/Default)
+ TITLE:=$(PKG_NAME) plugin
+ DEPENDS:=$(PKG_NAME) $(patsubst +%,+PACKAGE_$(PKG_NAME)-plugin-$(subst _,-,$(1)):%,$(2))
+ endef
+ define Package/$(PKG_NAME)-plugin-$(subst _,-,$(1))/description
+ $(call Package/$(PKG_NAME)/description/Default)
+
+This package provides the $(1) plugin.
+
+ endef
+ define Package/$(PKG_NAME)-plugin-$(subst _,-,$(1))/install
+ $(INSTALL_DIR) $$(1)$(MARIADB_PLUGIN_DIR)
+ $(call Package/$(PKG_NAME)/install/plugin,$$(1),$(1))
+ endef
+ $$(eval $$(call BuildPackage,$(PKG_NAME)-plugin-$(subst _,-,$(1))))
+endef
+
+$(eval $(call BuildPackage,$(PKG_NAME)))
+
+$(eval $(call BuildPlugin,auth_gssapi_client,+krb5-libs))
+$(eval $(call BuildPlugin,remote_io,+libcurl))
PKG_HASH:=cd50fddf86c2a47405737e342f78ebd40d5716f0fb32b976245de713bed01421
PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
-PKG_LICENSE:=GPL-2.0 LGPL-2.1
-PKG_LICENSE_FILES:=COPYING THIRDPARTY libmariadb/COPYING.LIB
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING THIRDPARTY
PKG_CPE_ID:=cpe:/a:mariadb:mariadb
fulltext \
versioning
-MARIADB_LIB_PLUGINS := \
- auth_gssapi_client
-
MARIADB_SERVER_PLUGINS := \
auth_ed25519 \
auth_gssapi \
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-auth_gssapi_client := PLUGIN_AUTH_GSSAPI_CLIENT
-
plugin-auth_ed25519 := PLUGIN_AUTH_ED25519
plugin-auth_gssapi := PLUGIN_AUTH_GSSAPI
plugin-auth_pam := PLUGIN_AUTH_PAM
MariaDB is a very fast and robust SQL database server.
endef
-define Package/libmariadb/Default
- SECTION:=libs
- CATEGORY:=Libraries
- URL:=https://mariadb.org/
-endef
-
-define Package/libmariadb
- $(call Package/libmariadb/Default)
- DEPENDS:=+mariadb-common \
- $(MARIADB_COMMON_DEPENDS)
- TITLE:=MariaDB database client library
- MENU:=1
- PROVIDES:=libmariadbclient libmysqlclient libmysqlclient-r
-endef
-
-define Package/libmariadb/conffiles
-$(CONF_DIR)/conf.d/50-client.cnf
-endef
-
-define Package/libmariadb/description
-$(call Package/mariadb/description/Default)
-
-This package includes the client library.
-
-endef
-
define Package/mariadb/Default
SECTION:=utils
CATEGORY:=Utilities
-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))
+# Disable some client library plugins
+CMAKE_OPTIONS += \
+ -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF \
+ -DCLIENT_PLUGIN_REMOTE_IO=OFF
+
# Set CMAKE_FIND_ROOT_PATH_MODE_INCLUDE and CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
# to BOTH as otherwise the host build will not find some required dependencies
# installed on the host machine, like ncurses.
$(foreach p,$(MARIADB_DISABLE_PLUGINS),$(call Package/mariadb/disable/plugin,$(PKG_BUILD_DIR),$(p));)
endef
+# Define Build/InstallDev, otherwise build system starts installing files into
+# staging area, which would interfere with mariadb-connector-c.
define Build/InstallDev
- $(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib/mysql $(1)/usr/lib/pkgconfig $(1)/usr/share/aclocal
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mysql_config $(1)/usr/bin
- $(LN) $(STAGING_DIR)/usr/bin/mysql_config $(2)/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/include/mysql $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{mariadb,mysqlclient}*.so* $(1)/usr/lib
- cd $(1)/usr/lib/mysql; $(LN) ../lib{mariadb,mysqlclient}*.so* .
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libmariadb.pc $(1)/usr/lib/pkgconfig
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/mysql.m4 $(1)/usr/share/aclocal
-endef
-
-define Package/libmariadb/install
- $(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d
- $(INSTALL_DIR) $(1)$(PLUGIN_DIR)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{mariadb,mysqlclient}*.so* $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/caching_sha2_password.so $(1)$(PLUGIN_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/client_ed25519.so $(1)$(PLUGIN_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/dialog.so $(1)$(PLUGIN_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/mysql_clear_password.so $(1)$(PLUGIN_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)$(PLUGIN_DIR)/sha256_password.so $(1)$(PLUGIN_DIR)
- $(INSTALL_CONF) conf/50-client.cnf $(1)$(CONF_DIR)/conf.d
endef
define Package/mariadb-client/install
endef
define BuildPlugin
- 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))
+ define Package/mariadb-server-plugin-$(subst _,-,$(1))
+ $(call Package/mariadb/Default)
+ TITLE:=mariadb-server plugin
+ DEPENDS:=mariadb-server $(patsubst +%,+PACKAGE_mariadb-server-plugin-$(subst _,-,$(1)):%,$(2))
endef
- define Package/$(1)-plugin-$(subst _,-,$(2))/description
+ define Package/mariadb-server-plugin-$(subst _,-,$(1))/description
$(call Package/mariadb/description/Default)
-This package provides the $(2) plugin.
+This package provides the $(1) plugin.
endef
- define Package/$(1)-plugin-$(subst _,-,$(2))/install
+ define Package/mariadb-server-plugin-$(subst _,-,$(1))/install
$(INSTALL_DIR) $$(1)$(PLUGIN_DIR)
- $(call Package/mariadb/install/plugin,$$(1),$(2))
+ $(call Package/mariadb/install/plugin,$$(1),$(1))
endef
- $$(eval $$(call BuildPackage,$(1)-plugin-$(subst _,-,$(2))))
+ $$(eval $$(call BuildPackage,mariadb-server-plugin-$(subst _,-,$(1))))
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-server-base))
$(eval $(call BuildPackage,mariadb-server-extra))
-$(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,auth_pam_v1,+libpam))
-$(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,server_audit,))
-$(eval $(call BuildPlugin,mariadb-server,simple_password_check,))
-$(eval $(call BuildPlugin,mariadb-server,sql_errlog,))
-$(eval $(call BuildPlugin,mariadb-server,wsrep_info,))
+$(eval $(call BuildPlugin,auth_ed25519,))
+$(eval $(call BuildPlugin,auth_gssapi,+krb5-libs))
+$(eval $(call BuildPlugin,auth_pam,+libpam))
+$(eval $(call BuildPlugin,auth_pam_v1,+libpam))
+$(eval $(call BuildPlugin,disks,))
+$(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_federated,))
+$(eval $(call BuildPlugin,ha_federatedx,))
+$(eval $(call BuildPlugin,ha_sphinx,))
+$(eval $(call BuildPlugin,ha_spider,))
+$(eval $(call BuildPlugin,handlersocket,))
+$(eval $(call BuildPlugin,locales,))
+$(eval $(call BuildPlugin,metadata_lock_info,))
+$(eval $(call BuildPlugin,query_cache_info,))
+$(eval $(call BuildPlugin,query_response_time,))
+$(eval $(call BuildPlugin,server_audit,))
+$(eval $(call BuildPlugin,simple_password_check,))
+$(eval $(call BuildPlugin,sql_errlog,))
+$(eval $(call BuildPlugin,wsrep_info,))