Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC v3 0/3] mariadb: new package
@ 2016-09-27  1:53 Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 1/3] mysql: rename package to oracle-mysql Ryan Coe
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Ryan Coe @ 2016-09-27  1:53 UTC (permalink / raw)
  To: buildroot

This patch series represents my attempt to add MariaDB 10.1 to Buildroot.
Based on feedback, this series does three things.  First, the old mysql package
is renamed to oracle-mysql.  Second, mariadb is added as a new package.  Third,
mysql is converted to a virtual package.  I have tested this on arm and x86_64
with uclibc and glibc.

Based on the work by:
Sylvain Raybaud <sylvain.raybaud@green-communications.fr>
https://patchwork.ozlabs.org/patch/538045/

Changes v3 -> v2
  - rebased
  - add mariadb as new package instead of replacing mysql (suggested by Thomas Petazzoni)
  - added patch to fix uclibc build on arm (suggested by Floris Bos)
  - changed sysv startup script to use mysqladmin ping (suggested by Floris Bos)
  - added depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS (suggested by Thomas Petazzoni)
  - removed dependency on libtool (suggested by Thomas Petazzoni)
  - fixed license (suggested by Thomas Petazzoni and Arnout Vandecappelle)
  - formatting cleanups
Changes v1 -> v2
  - rebased
  - added openssl as dependency (suggested by Floris Bos)
  - bumped to mariadb version 10.1 (suggested by Floris Bos)
  - replaced custom my.cnf with my-small.cnf provided in the target (suggested by Floris Bos)

Ryan Coe (3):
  mysql: rename package to oracle-mysql
  mariadb: new package
  mysql: convert to virtual package

 DEVELOPERS                                         |   3 +
 .../mariadb/0001-add-extra-check-for-librt.patch   |  26 ++++
 ...ld-failure-when-HAVE_STACKTRACE-is-not-de.patch |  33 +++++
 package/mariadb/S97mysqld                          |  77 ++++++++++++
 package/mariadb/mariadb.hash                       |   2 +
 package/mariadb/mariadb.mk                         | 114 +++++++++++++++++
 package/mariadb/mysqld.service                     |  13 ++
 package/mysql/Config.in                            |  73 +++++++++--
 package/mysql/mysql.mk                             | 130 +-------------------
 .../0000-ac_cache_check.patch                      |   0
 .../0001-configure-ps-cache-check.patch            |   0
 .../0002-use-new-readline-iface.patch              |   0
 .../0003-ac_stack_direction-is-unset.patch         |   0
 .../0004-Fix-gen_lex_hash-execution.patch          |   0
 .../0005-bison_3_breaks_mysql_server_build.patch   |   0
 .../0006-no-force-static-build.patch               |   0
 .../0007-dont-install-in-mysql-directory.patch     |   0
 package/{mysql => oracle-mysql}/S97mysqld          |   0
 package/{mysql => oracle-mysql}/mysqld.service     |   0
 .../mysql.hash => oracle-mysql/oracle-mysql.hash}  |   0
 package/oracle-mysql/oracle-mysql.mk               | 136 +++++++++++++++++++++
 21 files changed, 471 insertions(+), 136 deletions(-)
 create mode 100644 package/mariadb/0001-add-extra-check-for-librt.patch
 create mode 100644 package/mariadb/0002-prevent-build-failure-when-HAVE_STACKTRACE-is-not-de.patch
 create mode 100644 package/mariadb/S97mysqld
 create mode 100644 package/mariadb/mariadb.hash
 create mode 100644 package/mariadb/mariadb.mk
 create mode 100644 package/mariadb/mysqld.service
 rename package/{mysql => oracle-mysql}/0000-ac_cache_check.patch (100%)
 rename package/{mysql => oracle-mysql}/0001-configure-ps-cache-check.patch (100%)
 rename package/{mysql => oracle-mysql}/0002-use-new-readline-iface.patch (100%)
 rename package/{mysql => oracle-mysql}/0003-ac_stack_direction-is-unset.patch (100%)
 rename package/{mysql => oracle-mysql}/0004-Fix-gen_lex_hash-execution.patch (100%)
 rename package/{mysql => oracle-mysql}/0005-bison_3_breaks_mysql_server_build.patch (100%)
 rename package/{mysql => oracle-mysql}/0006-no-force-static-build.patch (100%)
 rename package/{mysql => oracle-mysql}/0007-dont-install-in-mysql-directory.patch (100%)
 rename package/{mysql => oracle-mysql}/S97mysqld (100%)
 rename package/{mysql => oracle-mysql}/mysqld.service (100%)
 rename package/{mysql/mysql.hash => oracle-mysql/oracle-mysql.hash} (100%)
 create mode 100644 package/oracle-mysql/oracle-mysql.mk

-- 
2.9.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [RFC v3 1/3] mysql: rename package to oracle-mysql
  2016-09-27  1:53 [Buildroot] [RFC v3 0/3] mariadb: new package Ryan Coe
@ 2016-09-27  1:53 ` Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 2/3] mariadb: new package Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 3/3] mysql: convert to virtual package Ryan Coe
  2 siblings, 0 replies; 6+ messages in thread
From: Ryan Coe @ 2016-09-27  1:53 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
---
 package/Config.in                                  |  2 +-
 .../0000-ac_cache_check.patch                      |  0
 .../0001-configure-ps-cache-check.patch            |  0
 .../0002-use-new-readline-iface.patch              |  0
 .../0003-ac_stack_direction-is-unset.patch         |  0
 .../0004-Fix-gen_lex_hash-execution.patch          |  0
 .../0005-bison_3_breaks_mysql_server_build.patch   |  0
 .../0006-no-force-static-build.patch               |  0
 .../0007-dont-install-in-mysql-directory.patch     |  0
 package/{mysql => oracle-mysql}/Config.in          | 12 ++--
 package/{mysql => oracle-mysql}/S97mysqld          |  0
 package/{mysql => oracle-mysql}/mysqld.service     |  0
 .../mysql.hash => oracle-mysql/oracle-mysql.hash}  |  0
 .../mysql.mk => oracle-mysql/oracle-mysql.mk}      | 66 +++++++++++-----------
 14 files changed, 40 insertions(+), 40 deletions(-)
 rename package/{mysql => oracle-mysql}/0000-ac_cache_check.patch (100%)
 rename package/{mysql => oracle-mysql}/0001-configure-ps-cache-check.patch (100%)
 rename package/{mysql => oracle-mysql}/0002-use-new-readline-iface.patch (100%)
 rename package/{mysql => oracle-mysql}/0003-ac_stack_direction-is-unset.patch (100%)
 rename package/{mysql => oracle-mysql}/0004-Fix-gen_lex_hash-execution.patch (100%)
 rename package/{mysql => oracle-mysql}/0005-bison_3_breaks_mysql_server_build.patch (100%)
 rename package/{mysql => oracle-mysql}/0006-no-force-static-build.patch (100%)
 rename package/{mysql => oracle-mysql}/0007-dont-install-in-mysql-directory.patch (100%)
 rename package/{mysql => oracle-mysql}/Config.in (65%)
 rename package/{mysql => oracle-mysql}/S97mysqld (100%)
 rename package/{mysql => oracle-mysql}/mysqld.service (100%)
 rename package/{mysql/mysql.hash => oracle-mysql/oracle-mysql.hash} (100%)
 rename package/{mysql/mysql.mk => oracle-mysql/oracle-mysql.mk} (65%)

diff --git a/package/Config.in b/package/Config.in
index fe3ac2c..5c5cb25 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -910,7 +910,7 @@ menu "Database"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
 	source "package/mongodb/Config.in"
-	source "package/mysql/Config.in"
+	source "package/oracle-mysql/Config.in"
 	source "package/postgresql/Config.in"
 	source "package/redis/Config.in"
 	source "package/sqlcipher/Config.in"
diff --git a/package/mysql/0000-ac_cache_check.patch b/package/oracle-mysql/0000-ac_cache_check.patch
similarity index 100%
rename from package/mysql/0000-ac_cache_check.patch
rename to package/oracle-mysql/0000-ac_cache_check.patch
diff --git a/package/mysql/0001-configure-ps-cache-check.patch b/package/oracle-mysql/0001-configure-ps-cache-check.patch
similarity index 100%
rename from package/mysql/0001-configure-ps-cache-check.patch
rename to package/oracle-mysql/0001-configure-ps-cache-check.patch
diff --git a/package/mysql/0002-use-new-readline-iface.patch b/package/oracle-mysql/0002-use-new-readline-iface.patch
similarity index 100%
rename from package/mysql/0002-use-new-readline-iface.patch
rename to package/oracle-mysql/0002-use-new-readline-iface.patch
diff --git a/package/mysql/0003-ac_stack_direction-is-unset.patch b/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch
similarity index 100%
rename from package/mysql/0003-ac_stack_direction-is-unset.patch
rename to package/oracle-mysql/0003-ac_stack_direction-is-unset.patch
diff --git a/package/mysql/0004-Fix-gen_lex_hash-execution.patch b/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch
similarity index 100%
rename from package/mysql/0004-Fix-gen_lex_hash-execution.patch
rename to package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch
diff --git a/package/mysql/0005-bison_3_breaks_mysql_server_build.patch b/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch
similarity index 100%
rename from package/mysql/0005-bison_3_breaks_mysql_server_build.patch
rename to package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch
diff --git a/package/mysql/0006-no-force-static-build.patch b/package/oracle-mysql/0006-no-force-static-build.patch
similarity index 100%
rename from package/mysql/0006-no-force-static-build.patch
rename to package/oracle-mysql/0006-no-force-static-build.patch
diff --git a/package/mysql/0007-dont-install-in-mysql-directory.patch b/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch
similarity index 100%
rename from package/mysql/0007-dont-install-in-mysql-directory.patch
rename to package/oracle-mysql/0007-dont-install-in-mysql-directory.patch
diff --git a/package/mysql/Config.in b/package/oracle-mysql/Config.in
similarity index 65%
rename from package/mysql/Config.in
rename to package/oracle-mysql/Config.in
index 7133892..0622a13 100644
--- a/package/mysql/Config.in
+++ b/package/oracle-mysql/Config.in
@@ -1,5 +1,5 @@
-config BR2_PACKAGE_MYSQL
-	bool "MySQL"
+config BR2_PACKAGE_ORACLE_MYSQL
+	bool "oracle mysql"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
@@ -10,15 +10,15 @@ config BR2_PACKAGE_MYSQL
 
 	  http://www.mysql.com/
 
-if BR2_PACKAGE_MYSQL
+if BR2_PACKAGE_ORACLE_MYSQL
 
-config BR2_PACKAGE_MYSQL_SERVER
-	bool "MySQL server"
+config BR2_PACKAGE_ORACLE_MYSQL_SERVER
+	bool "oracle mysql server"
 	help
 	  Install the MySQL server on the target.
 
 endif
 
-comment "MySQL needs a toolchain w/ C++, threads"
+comment "oracle mysql needs a toolchain w/ C++, threads"
 	depends on BR2_USE_MMU
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mysql/S97mysqld b/package/oracle-mysql/S97mysqld
similarity index 100%
rename from package/mysql/S97mysqld
rename to package/oracle-mysql/S97mysqld
diff --git a/package/mysql/mysqld.service b/package/oracle-mysql/mysqld.service
similarity index 100%
rename from package/mysql/mysqld.service
rename to package/oracle-mysql/mysqld.service
diff --git a/package/mysql/mysql.hash b/package/oracle-mysql/oracle-mysql.hash
similarity index 100%
rename from package/mysql/mysql.hash
rename to package/oracle-mysql/oracle-mysql.hash
diff --git a/package/mysql/mysql.mk b/package/oracle-mysql/oracle-mysql.mk
similarity index 65%
rename from package/mysql/mysql.mk
rename to package/oracle-mysql/oracle-mysql.mk
index 7af4711..532cced 100644
--- a/package/mysql/mysql.mk
+++ b/package/oracle-mysql/oracle-mysql.mk
@@ -1,23 +1,23 @@
 ################################################################################
 #
-# mysql
+# oracle-mysql
 #
 ################################################################################
 
-MYSQL_VERSION_MAJOR = 5.1
-MYSQL_VERSION = $(MYSQL_VERSION_MAJOR).73
-MYSQL_SOURCE = mysql-$(MYSQL_VERSION).tar.gz
-MYSQL_SITE = http://downloads.skysql.com/archives/mysql-$(MYSQL_VERSION_MAJOR)
-MYSQL_INSTALL_STAGING = YES
-MYSQL_DEPENDENCIES = readline ncurses
-MYSQL_AUTORECONF = YES
-MYSQL_LICENSE = GPLv2
-MYSQL_LICENSE_FILES = README COPYING
+ORACLE_MYSQL_VERSION_MAJOR = 5.1
+ORACLE_MYSQL_VERSION = $(ORACLE_MYSQL_VERSION_MAJOR).73
+ORACLE_MYSQL_SOURCE = mysql-$(ORACLE_MYSQL_VERSION).tar.gz
+ORACLE_MYSQL_SITE = http://downloads.skysql.com/archives/mysql-$(ORACLE_MYSQL_VERSION_MAJOR)
+ORACLE_MYSQL_INSTALL_STAGING = YES
+ORACLE_MYSQL_DEPENDENCIES = readline ncurses
+ORACLE_MYSQL_AUTORECONF = YES
+ORACLE_MYSQL_LICENSE = GPLv2
+ORACLE_MYSQL_LICENSE_FILES = README COPYING
 
 # Unix socket. This variable can also be consulted by other buildroot packages
 MYSQL_SOCKET = /run/mysql/mysql.sock
 
-MYSQL_CONF_ENV = \
+ORACLE_MYSQL_CONF_ENV = \
 	ac_cv_sys_restartable_syscalls=yes \
 	ac_cv_path_PS=/bin/ps \
 	ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \
@@ -26,7 +26,7 @@ MYSQL_CONF_ENV = \
 	ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \
 	mysql_cv_new_rl_interface=yes
 
-MYSQL_CONF_OPTS = \
+ORACLE_MYSQL_CONF_OPTS = \
 	--without-ndb-binlog \
 	--without-docs \
 	--without-man \
@@ -40,13 +40,13 @@ MYSQL_CONF_OPTS = \
 # host-mysql only installs what is needed to build mysql, i.e. the
 # gen_lex_hash tool, and it only builds the parts that are needed to
 # create this tool
-HOST_MYSQL_DEPENDENCIES = host-zlib host-ncurses
+HOST_ORACLE_MYSQL_DEPENDENCIES = host-zlib host-ncurses
 
-HOST_MYSQL_CONF_OPTS = \
+HOST_ORACLE_MYSQL_CONF_OPTS = \
 	--with-embedded-server \
 	--disable-mysql-maintainer-mode
 
-define HOST_MYSQL_BUILD_CMDS
+define HOST_ORACLE_MYSQL_BUILD_CMDS
 	$(MAKE) -C $(@D)/include my_config.h
 	$(MAKE) -C $(@D)/mysys libmysys.a
 	$(MAKE) -C $(@D)/strings libmystrings.a
@@ -56,22 +56,22 @@ define HOST_MYSQL_BUILD_CMDS
 	$(MAKE) -C $(@D)/sql gen_lex_hash
 endef
 
-define HOST_MYSQL_INSTALL_CMDS
+define HOST_ORACLE_MYSQL_INSTALL_CMDS
 	$(INSTALL) -m 0755  $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/
 endef
 
 ifeq ($(BR2_PACKAGE_OPENSSL),y)
-MYSQL_DEPENDENCIES += openssl
+ORACLE_MYSQL_DEPENDENCIES += openssl
 endif
 
 ifeq ($(BR2_PACKAGE_ZLIB),y)
-MYSQL_DEPENDENCIES += zlib
+ORACLE_MYSQL_DEPENDENCIES += zlib
 endif
 
-ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y)
-MYSQL_DEPENDENCIES += host-mysql host-bison
+ifeq ($(BR2_PACKAGE_ORACLE_MYSQL_SERVER),y)
+ORACLE_MYSQL_DEPENDENCIES += host-oracle-mysql host-bison
 
-MYSQL_CONF_OPTS += \
+ORACLE_MYSQL_CONF_OPTS += \
 	--localstatedir=/var/mysql \
 	--with-atomic-ops=up \
 	--with-embedded-server \
@@ -91,28 +91,28 @@ MYSQL_CONF_OPTS += \
 # Debugging is only available for the server, so no need for
 # this if-block outside of the server if-block
 ifeq ($(BR2_ENABLE_DEBUG),y)
-MYSQL_CONF_OPTS += --with-debug=full
+ORACLE_MYSQL_CONF_OPTS += --with-debug=full
 else
-MYSQL_CONF_OPTS += --without-debug
+ORACLE_MYSQL_CONF_OPTS += --without-debug
 endif
 
-define MYSQL_USERS
+define ORACLE_MYSQL_USERS
 	mysql -1 nogroup -1 * /var/mysql - - MySQL daemon
 endef
 
-define MYSQL_ADD_FOLDER
+define ORACLE_MYSQL_ADD_FOLDER
 	$(INSTALL) -d $(TARGET_DIR)/var/mysql
 endef
 
-MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_FOLDER
+ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_ADD_FOLDER
 
-define MYSQL_INSTALL_INIT_SYSV
-	$(INSTALL) -D -m 0755 package/mysql/S97mysqld \
+define ORACLE_MYSQL_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/oracle-mysql/S97mysqld \
 		$(TARGET_DIR)/etc/init.d/S97mysqld
 endef
 
-define MYSQL_INSTALL_INIT_SYSTEMD
-	$(INSTALL) -D -m 644 package/mysql/mysqld.service \
+define ORACLE_MYSQL_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 644 package/oracle-mysql/mysqld.service \
 		$(TARGET_DIR)/usr/lib/systemd/system/mysqld.service
 	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
 	ln -sf ../../../../usr/lib/systemd/system/mysqld.service \
@@ -120,16 +120,16 @@ define MYSQL_INSTALL_INIT_SYSTEMD
 endef
 
 else
-MYSQL_CONF_OPTS += \
+ORACLE_MYSQL_CONF_OPTS += \
 	--without-server
 endif
 
 
-define MYSQL_REMOVE_TEST_PROGS
+define ORACLE_MYSQL_REMOVE_TEST_PROGS
 	rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench
 endef
 
-MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS
+ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_REMOVE_TEST_PROGS
 
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [RFC v3 2/3] mariadb: new package
  2016-09-27  1:53 [Buildroot] [RFC v3 0/3] mariadb: new package Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 1/3] mysql: rename package to oracle-mysql Ryan Coe
@ 2016-09-27  1:53 ` Ryan Coe
  2016-10-27  4:06   ` Frank Hunleth
  2016-09-27  1:53 ` [Buildroot] [RFC v3 3/3] mysql: convert to virtual package Ryan Coe
  2 siblings, 1 reply; 6+ messages in thread
From: Ryan Coe @ 2016-09-27  1:53 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
---
 DEVELOPERS                                         |   3 +
 package/Config.in                                  |   1 +
 .../mariadb/0001-add-extra-check-for-librt.patch   |  26 +++++
 ...ld-failure-when-HAVE_STACKTRACE-is-not-de.patch |  33 ++++++
 package/mariadb/Config.in                          |  32 ++++++
 package/mariadb/S97mysqld                          |  77 ++++++++++++++
 package/mariadb/mariadb.hash                       |   2 +
 package/mariadb/mariadb.mk                         | 113 +++++++++++++++++++++
 package/mariadb/mysqld.service                     |  13 +++
 package/oracle-mysql/Config.in                     |   1 +
 10 files changed, 301 insertions(+)
 create mode 100644 package/mariadb/0001-add-extra-check-for-librt.patch
 create mode 100644 package/mariadb/0002-prevent-build-failure-when-HAVE_STACKTRACE-is-not-de.patch
 create mode 100644 package/mariadb/Config.in
 create mode 100644 package/mariadb/S97mysqld
 create mode 100644 package/mariadb/mariadb.hash
 create mode 100644 package/mariadb/mariadb.mk
 create mode 100644 package/mariadb/mysqld.service

diff --git a/DEVELOPERS b/DEVELOPERS
index 7a6ab9f..19e7f75 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1241,6 +1241,9 @@ F:	package/python-pysnmp-apps/
 F:	package/python-pysnmp-mibs/
 F:	package/python-tornado/
 
+N:	Ryan Coe <bluemrp9@gmail.com>
+F:	package/mariadb/
+
 N:	Ryan Wilkins <ryan@deadfrog.net>
 F:	package/biosdevname/
 
diff --git a/package/Config.in b/package/Config.in
index 5c5cb25..4e71ddb 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -909,6 +909,7 @@ menu "Database"
 	source "package/kompexsqlite/Config.in"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
+	source "package/mariadb/Config.in"
 	source "package/mongodb/Config.in"
 	source "package/oracle-mysql/Config.in"
 	source "package/postgresql/Config.in"
diff --git a/package/mariadb/0001-add-extra-check-for-librt.patch b/package/mariadb/0001-add-extra-check-for-librt.patch
new file mode 100644
index 0000000..aea7064
--- /dev/null
+++ b/package/mariadb/0001-add-extra-check-for-librt.patch
@@ -0,0 +1,26 @@
+From 31094bd1fcccba2fb8b234735bb9bf60ba4afa28 Mon Sep 17 00:00:00 2001
+From: Ryan Coe <bluemrp9@gmail.com>
+Date: Sun, 18 Sep 2016 16:35:59 -0700
+Subject: [PATCH 1/1] add extra check for librt
+
+Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
+---
+ configure.cmake | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.cmake b/configure.cmake
+index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -126,6 +126,9 @@ IF(UNIX)
+   IF(NOT LIBRT)
+     MY_SEARCH_LIBS(clock_gettime rt LIBRT)
+   ENDIF()
++  IF(NOT LIBRT)
++    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)
++  ENDIF()
+   FIND_PACKAGE(Threads)
+
+   SET(CMAKE_REQUIRED_LIBRARIES
+--
+2.9.3
diff --git a/package/mariadb/0002-prevent-build-failure-when-HAVE_STACKTRACE-is-not-de.patch b/package/mariadb/0002-prevent-build-failure-when-HAVE_STACKTRACE-is-not-de.patch
new file mode 100644
index 0000000..ea07f88
--- /dev/null
+++ b/package/mariadb/0002-prevent-build-failure-when-HAVE_STACKTRACE-is-not-de.patch
@@ -0,0 +1,33 @@
+From 3a0d3c159c581a5202de75064836fc3b22e5a71c Mon Sep 17 00:00:00 2001
+From: Ryan Coe <bluemrp9@gmail.com>
+Date: Sat, 24 Sep 2016 18:19:44 -0700
+Subject: [PATCH 2/2] prevent build failure when HAVE_STACKTRACE is not defined
+
+Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
+---
+ sql/signal_handler.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sql/signal_handler.cc b/sql/signal_handler.cc
+index 9dd3e532d1e73bbb0bd0531c5ac8c7204df98f19..6379e6473de8356cce4764f075d817e24667839c 100644
+--- a/sql/signal_handler.cc
++++ b/sql/signal_handler.cc
+@@ -276,6 +276,7 @@ extern "C" sig_handler handle_fatal_signal(int sig)
+       "\"mlockall\" bugs.\n");
+   }
+ 
++#ifdef HAVE_STACKTRACE
+   if (print_invalid_query_pointer)
+   {
+     my_safe_printf_stderr(
+@@ -285,6 +286,7 @@ extern "C" sig_handler handle_fatal_signal(int sig)
+     my_write_stderr(thd->query(), MY_MIN(65536U, thd->query_length()));
+     my_safe_printf_stderr("\n\n");
+   }
++#endif
+ 
+ #ifdef HAVE_WRITE_CORE
+   if (test_flags & TEST_CORE_ON_SIGNAL)
+-- 
+2.9.3
+
diff --git a/package/mariadb/Config.in b/package/mariadb/Config.in
new file mode 100644
index 0000000..9d70b3e
--- /dev/null
+++ b/package/mariadb/Config.in
@@ -0,0 +1,32 @@
+config BR2_PACKAGE_MARIADB
+	bool "mariadb"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	depends on !BR2_PACKAGE_ORACLE_MYSQL
+	select BR2_PACKAGE_LIBAIO
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_READLINE
+	help
+	  MariaDB is one of the most popular database servers in the world.
+	  It's made by the original developers of MySQL and guaranteed to
+	  stay open source.
+
+	  http://www.mariadb.org/
+
+if BR2_PACKAGE_MARIADB
+
+config BR2_PACKAGE_MARIADB_SERVER
+	bool "mariadb server"
+	help
+	  Install the mariadb server on the target.
+
+endif
+
+comment "mariadb needs a toolchain w/ C++, threads"
+	depends on BR2_USE_MMU
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mariadb/S97mysqld b/package/mariadb/S97mysqld
new file mode 100644
index 0000000..62357fa
--- /dev/null
+++ b/package/mariadb/S97mysqld
@@ -0,0 +1,77 @@
+#!/bin/sh
+#
+# mysql
+#
+
+MYSQL_LIB="/var/lib/mysql"
+MYSQL_RUN="/run/mysql"
+MYSQL_PID="$MYSQL_RUN/mysqld.pid"
+MYSQL_BIN="/usr/bin"
+
+wait_for_ready() {
+	WAIT_DELAY=5
+	while [ $WAIT_DELAY -gt 0 ]; do
+		if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then
+			return 0
+		fi
+		sleep 1
+		: $((WAIT_DELAY -= 1))
+	done
+	return 1
+}
+
+start() {
+	if [ `ls -1 $MYSQL_LIB | wc -l` = 0 ] ; then
+		printf "Creating mysql system tables ... "
+		$MYSQL_BIN/mysql_install_db --basedir=/usr --user=mysql \
+			--datadir=$MYSQL_LIB > /dev/null 2>&1
+		if [ $? != 0 ]; then
+			echo "FAIL"
+			exit 1
+		fi
+		echo "OK"
+	fi
+
+	# mysqld runs as user mysql, but /run is only writable by root
+	# so create a subdirectory for mysql.
+	install -d -o mysql -g root -m 0755 $MYSQL_RUN
+
+	# We don't use start-stop-daemon because mysqld has its own
+	# wrapper script.
+	printf "Starting mysql ... "
+	$MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PID --user=mysql \
+		> /dev/null 2>&1 &
+	wait_for_ready
+	[ $? = 0 ] && echo "OK" || echo "FAIL"
+}
+
+stop() {
+	printf "Stopping mysql ... "
+	if [ -f $MYSQL_PID ]; then
+		kill `cat $MYSQL_PID` > /dev/null 2>&1
+		[ $? = 0 ] && echo "OK" || echo "FAIL"
+	else
+		echo "FAIL"
+	fi
+}
+
+restart() {
+	stop
+	sleep 1
+	start
+}
+
+case "$1" in
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  restart)
+	restart
+	;;
+  *)
+	echo "Usage: $0 {start|stop|restart}"
+	;;
+esac
diff --git a/package/mariadb/mariadb.hash b/package/mariadb/mariadb.hash
new file mode 100644
index 0000000..f55ff6f
--- /dev/null
+++ b/package/mariadb/mariadb.hash
@@ -0,0 +1,2 @@
+# Locally computed
+sha256	 4ca45ac5e34418761868115ebc8c068d511fed08e283b2cac52559d63ba4aab5  mariadb-10.1.17.tar.gz
diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk
new file mode 100644
index 0000000..bac38c2
--- /dev/null
+++ b/package/mariadb/mariadb.mk
@@ -0,0 +1,113 @@
+################################################################################
+#
+# mariadb
+#
+################################################################################
+
+MARIADB_VERSION = 10.1.17
+MARIADB_SOURCE = mariadb-$(MARIADB_VERSION).tar.gz
+MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source
+MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)
+MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
+MARIADB_INSTALL_STAGING = YES
+
+MARIADB_DEPENDENCIES = \
+	host-mariadb \
+	ncurses \
+	openssl \
+	zlib \
+	libaio \
+	libxml2 \
+	readline
+
+# We won't need unit tests
+MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0
+
+# Mroonga needs libstemmer. Some work still needs to be done before it can be
+# included in buildroot. Disable it for now.
+MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1
+
+# This value is determined automatically during straight compile by compiling
+# and running a test code. You cannot do that during cross-compile. However the
+# stack grows downward in most if not all modern systems. The only exception I
+# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes
+# sense to hardcode the value. If an arch is added the stack of which grows up
+# one should expect unpredictable behavior at run time.
+MARIADB_CONF_OPTS += -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.
+MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1
+
+# Make it explicit that we are cross-compiling
+MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1
+
+ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
+MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON
+else
+MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON
+endif
+
+MARIADB_CONF_OPTS += \
+	-DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \
+	-DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \
+	-DINSTALL_MANDIR=share/man \
+	-DINSTALL_MYSQLSHAREDIR=share/mysql \
+	-DINSTALL_MYSQLTESTDIR=share/mysql/test \
+	-DINSTALL_PLUGINDIR=lib/mysql/plugin \
+	-DINSTALL_SBINDIR=sbin \
+	-DINSTALL_SCRIPTDIR=bin \
+	-DINSTALL_SQLBENCHDIR=share/mysql/bench \
+	-DINSTALL_SUPPORTFILESDIR=share/mysql \
+	-DMYSQL_DATADIR=/var/lib/mysql \
+	-DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET)
+
+# 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.
+# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
+# must then be passed to cmake during target build.
+# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
+HOST_MARIADB_MAKE_OPTS = import_executables
+
+MARIADB_CONF_OPTS += \
+	-DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
+
+# Don't install host-mariadb. We just need to build import_executable
+# Therefore only run 'true' and do nothing, not even the default action.
+HOST_MARIADB_INSTALL_CMDS = true
+
+ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
+define MARIADB_USERS
+	mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
+endef
+
+define MARIADB_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/mariadb/S97mysqld \
+		$(TARGET_DIR)/etc/init.d/S97mysqld
+endef
+
+define MARIADB_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 644 package/mariadb/mysqld.service \
+		$(TARGET_DIR)/usr/lib/systemd/system/mysqld.service
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+	ln -sf ../../../../usr/lib/systemd/system/mysqld.service \
+		$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service
+endef
+endif
+
+define MARIADB_POST_INSTALL
+	mkdir -p $(TARGET_DIR)/var/lib/mysql
+	$(INSTALL) -D -m 644 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \
+		$(TARGET_DIR)/etc/mysql/my.cnf
+	# We don't need this on the target as it's only useful in staging
+	$(RM) $(TARGET_DIR)/usr/bin/mysql_config
+	# Remove test suite
+	$(RM) -r $(TARGET_DIR)/usr/share/mysql/test
+endef
+
+MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL
+
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))
diff --git a/package/mariadb/mysqld.service b/package/mariadb/mysqld.service
new file mode 100644
index 0000000..cd30831
--- /dev/null
+++ b/package/mariadb/mysqld.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=MySQL database server
+
+[Service]
+ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
+ExecStart=/usr/bin/mysqld_safe
+Restart=always
+User=mysql
+RuntimeDirectory=mysql
+RuntimeDirectoryMode=0755
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/oracle-mysql/Config.in b/package/oracle-mysql/Config.in
index 0622a13..1c2d33b 100644
--- a/package/oracle-mysql/Config.in
+++ b/package/oracle-mysql/Config.in
@@ -3,6 +3,7 @@ config BR2_PACKAGE_ORACLE_MYSQL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_PACKAGE_MARIADB
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_READLINE
 	help
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [RFC v3 3/3] mysql: convert to virtual package
  2016-09-27  1:53 [Buildroot] [RFC v3 0/3] mariadb: new package Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 1/3] mysql: rename package to oracle-mysql Ryan Coe
  2016-09-27  1:53 ` [Buildroot] [RFC v3 2/3] mariadb: new package Ryan Coe
@ 2016-09-27  1:53 ` Ryan Coe
  2 siblings, 0 replies; 6+ messages in thread
From: Ryan Coe @ 2016-09-27  1:53 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
---
 package/Config.in                    |  3 +-
 package/mariadb/Config.in            | 32 --------------
 package/mariadb/mariadb.mk           |  1 +
 package/mysql/Config.in              | 83 ++++++++++++++++++++++++++++++++++++
 package/mysql/mysql.mk               |  7 +++
 package/oracle-mysql/Config.in       | 25 -----------
 package/oracle-mysql/oracle-mysql.mk |  1 +
 7 files changed, 93 insertions(+), 59 deletions(-)
 delete mode 100644 package/mariadb/Config.in
 create mode 100644 package/mysql/Config.in
 create mode 100644 package/mysql/mysql.mk
 delete mode 100644 package/oracle-mysql/Config.in

diff --git a/package/Config.in b/package/Config.in
index 4e71ddb..fe3ac2c 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -909,9 +909,8 @@ menu "Database"
 	source "package/kompexsqlite/Config.in"
 	source "package/leveldb/Config.in"
 	source "package/libpqxx/Config.in"
-	source "package/mariadb/Config.in"
 	source "package/mongodb/Config.in"
-	source "package/oracle-mysql/Config.in"
+	source "package/mysql/Config.in"
 	source "package/postgresql/Config.in"
 	source "package/redis/Config.in"
 	source "package/sqlcipher/Config.in"
diff --git a/package/mariadb/Config.in b/package/mariadb/Config.in
deleted file mode 100644
index 9d70b3e..0000000
--- a/package/mariadb/Config.in
+++ /dev/null
@@ -1,32 +0,0 @@
-config BR2_PACKAGE_MARIADB
-	bool "mariadb"
-	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_USE_MMU # fork()
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
-	depends on !BR2_PACKAGE_ORACLE_MYSQL
-	select BR2_PACKAGE_LIBAIO
-	select BR2_PACKAGE_LIBXML2
-	select BR2_PACKAGE_NCURSES
-	select BR2_PACKAGE_OPENSSL
-	select BR2_PACKAGE_READLINE
-	help
-	  MariaDB is one of the most popular database servers in the world.
-	  It's made by the original developers of MySQL and guaranteed to
-	  stay open source.
-
-	  http://www.mariadb.org/
-
-if BR2_PACKAGE_MARIADB
-
-config BR2_PACKAGE_MARIADB_SERVER
-	bool "mariadb server"
-	help
-	  Install the mariadb server on the target.
-
-endif
-
-comment "mariadb needs a toolchain w/ C++, threads"
-	depends on BR2_USE_MMU
-	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk
index bac38c2..67e6df4 100644
--- a/package/mariadb/mariadb.mk
+++ b/package/mariadb/mariadb.mk
@@ -10,6 +10,7 @@ MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERS
 MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)
 MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
 MARIADB_INSTALL_STAGING = YES
+MARIADB_PROVIDES = mysql
 
 MARIADB_DEPENDENCIES = \
 	host-mariadb \
diff --git a/package/mysql/Config.in b/package/mysql/Config.in
new file mode 100644
index 0000000..e485d6b
--- /dev/null
+++ b/package/mysql/Config.in
@@ -0,0 +1,83 @@
+config BR2_PACKAGE_MYSQL
+	bool "mysql support"
+	help
+	  Select the desired mysql provider.
+
+if BR2_PACKAGE_MYSQL
+
+choice
+	prompt "mysql variant"
+	default BR2_PACKAGE_ORACLE_MYSQL
+	help
+	  Select either the oracle mysql server or the mariadb server
+
+config BR2_PACKAGE_MARIADB
+	bool "mariadb"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	select BR2_PACKAGE_LIBAIO
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_HAS_MYSQL
+	help
+	  MariaDB is one of the most popular database servers in the world.
+	  It's made by the original developers of MySQL and guaranteed to
+	  stay open source.
+
+	  http://www.mariadb.org/
+
+config BR2_PACKAGE_ORACLE_MYSQL
+	bool "oracle mysql"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_READLINE
+	select BR2_PACKAGE_HAS_MYSQL
+	help
+	  The MySQL Open Source Database System
+
+	  http://www.mysql.com/
+
+endchoice
+
+comment "mariadb needs a toolchain w/ C++, threads"
+	depends on BR2_USE_MMU
+	depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+
+comment "oracle mysql needs a toolchain w/ C++, threads"
+	depends on BR2_USE_MMU
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+
+if BR2_PACKAGE_MARIADB
+
+config BR2_PACKAGE_MARIADB_SERVER
+	bool "mariadb server"
+	help
+	  Install the mariadb server on the target.
+
+endif
+
+if BR2_PACKAGE_ORACLE_MYSQL
+
+config BR2_PACKAGE_ORACLE_MYSQL_SERVER
+	bool "oracle mysql server"
+	help
+	  Install the MySQL server on the target.
+
+endif
+
+config BR2_PACKAGE_HAS_MYSQL
+	bool
+
+config BR2_PACKAGE_PROVIDES_MYSQL
+	string
+	default "mariadb"      if BR2_PACKAGE_MARIADB
+	default "oracle-mysql" if BR2_PACKAGE_ORACLE_MYSQL
+
+endif
diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
new file mode 100644
index 0000000..d655625
--- /dev/null
+++ b/package/mysql/mysql.mk
@@ -0,0 +1,7 @@
+################################################################################
+#
+# mysql
+#
+################################################################################
+
+$(eval $(virtual-package))
diff --git a/package/oracle-mysql/Config.in b/package/oracle-mysql/Config.in
deleted file mode 100644
index 1c2d33b..0000000
--- a/package/oracle-mysql/Config.in
+++ /dev/null
@@ -1,25 +0,0 @@
-config BR2_PACKAGE_ORACLE_MYSQL
-	bool "oracle mysql"
-	depends on BR2_INSTALL_LIBSTDCPP
-	depends on BR2_USE_MMU # fork()
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on !BR2_PACKAGE_MARIADB
-	select BR2_PACKAGE_NCURSES
-	select BR2_PACKAGE_READLINE
-	help
-	  The MySQL Open Source Database System
-
-	  http://www.mysql.com/
-
-if BR2_PACKAGE_ORACLE_MYSQL
-
-config BR2_PACKAGE_ORACLE_MYSQL_SERVER
-	bool "oracle mysql server"
-	help
-	  Install the MySQL server on the target.
-
-endif
-
-comment "oracle mysql needs a toolchain w/ C++, threads"
-	depends on BR2_USE_MMU
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/oracle-mysql/oracle-mysql.mk b/package/oracle-mysql/oracle-mysql.mk
index 532cced..e542fb3 100644
--- a/package/oracle-mysql/oracle-mysql.mk
+++ b/package/oracle-mysql/oracle-mysql.mk
@@ -13,6 +13,7 @@ ORACLE_MYSQL_DEPENDENCIES = readline ncurses
 ORACLE_MYSQL_AUTORECONF = YES
 ORACLE_MYSQL_LICENSE = GPLv2
 ORACLE_MYSQL_LICENSE_FILES = README COPYING
+ORACLE_MYSQL_PROVIDES = mysql
 
 # Unix socket. This variable can also be consulted by other buildroot packages
 MYSQL_SOCKET = /run/mysql/mysql.sock
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [RFC v3 2/3] mariadb: new package
  2016-09-27  1:53 ` [Buildroot] [RFC v3 2/3] mariadb: new package Ryan Coe
@ 2016-10-27  4:06   ` Frank Hunleth
  2016-12-14 20:54     ` Ryan Coe
  0 siblings, 1 reply; 6+ messages in thread
From: Frank Hunleth @ 2016-10-27  4:06 UTC (permalink / raw)
  To: buildroot

Hi Ryan,

On Mon, Sep 26, 2016 at 9:53 PM, Ryan Coe <bluemrp9@gmail.com> wrote:
> diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk
> new file mode 100644
> index 0000000..bac38c2
> --- /dev/null
> +++ b/package/mariadb/mariadb.mk
> @@ -0,0 +1,113 @@
> +################################################################################
> +#
> +# mariadb
> +#
> +################################################################################
> +
> +MARIADB_VERSION = 10.1.17
> +MARIADB_SOURCE = mariadb-$(MARIADB_VERSION).tar.gz
> +MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source
> +MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)
> +MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
> +MARIADB_INSTALL_STAGING = YES
> +
> +MARIADB_DEPENDENCIES = \
> +       host-mariadb \
> +       ncurses \
> +       openssl \
> +       zlib \
> +       libaio \
> +       libxml2 \
> +       readline
> +
> +# We won't need unit tests
> +MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0
> +
> +# Mroonga needs libstemmer. Some work still needs to be done before it can be
> +# included in buildroot. Disable it for now.
> +MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1
> +
> +# This value is determined automatically during straight compile by compiling
> +# and running a test code. You cannot do that during cross-compile. However the
> +# stack grows downward in most if not all modern systems. The only exception I
> +# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes
> +# sense to hardcode the value. If an arch is added the stack of which grows up
> +# one should expect unpredictable behavior at run time.
> +MARIADB_CONF_OPTS += -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.
> +MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1
> +
> +# Make it explicit that we are cross-compiling
> +MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1
> +

The next time you re-spin your patch, could you add the following lines to it?

# Explicitly disable dtrace to avoid detection of a host version
MARIADB_CONF_OPTS += -DENABLE_DTRACE=0

With this change, mariadb appears to build and run fine for me.

Also, fwiw, I didn't apply the other patches in the series since it
didn't look like BR2_PACKAGE_HAS_MYSQL was propagated to all of the
packages that depended on mysql. I just deleted the mysql package
completely and changed all references to mariadb.

Thanks,
Frank

> +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
> +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON
> +else
> +MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON
> +endif
> +
> +MARIADB_CONF_OPTS += \
> +       -DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \
> +       -DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \
> +       -DINSTALL_MANDIR=share/man \
> +       -DINSTALL_MYSQLSHAREDIR=share/mysql \
> +       -DINSTALL_MYSQLTESTDIR=share/mysql/test \
> +       -DINSTALL_PLUGINDIR=lib/mysql/plugin \
> +       -DINSTALL_SBINDIR=sbin \
> +       -DINSTALL_SCRIPTDIR=bin \
> +       -DINSTALL_SQLBENCHDIR=share/mysql/bench \
> +       -DINSTALL_SUPPORTFILESDIR=share/mysql \
> +       -DMYSQL_DATADIR=/var/lib/mysql \
> +       -DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET)
> +
> +# 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.
> +# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
> +# must then be passed to cmake during target build.
> +# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
> +HOST_MARIADB_MAKE_OPTS = import_executables
> +
> +MARIADB_CONF_OPTS += \
> +       -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
> +
> +# Don't install host-mariadb. We just need to build import_executable
> +# Therefore only run 'true' and do nothing, not even the default action.
> +HOST_MARIADB_INSTALL_CMDS = true
> +
> +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
> +define MARIADB_USERS
> +       mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
> +endef
> +
> +define MARIADB_INSTALL_INIT_SYSV
> +       $(INSTALL) -D -m 0755 package/mariadb/S97mysqld \
> +               $(TARGET_DIR)/etc/init.d/S97mysqld
> +endef
> +
> +define MARIADB_INSTALL_INIT_SYSTEMD
> +       $(INSTALL) -D -m 644 package/mariadb/mysqld.service \
> +               $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service
> +       mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +       ln -sf ../../../../usr/lib/systemd/system/mysqld.service \
> +               $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service
> +endef
> +endif
> +
> +define MARIADB_POST_INSTALL
> +       mkdir -p $(TARGET_DIR)/var/lib/mysql
> +       $(INSTALL) -D -m 644 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \
> +               $(TARGET_DIR)/etc/mysql/my.cnf
> +       # We don't need this on the target as it's only useful in staging
> +       $(RM) $(TARGET_DIR)/usr/bin/mysql_config
> +       # Remove test suite
> +       $(RM) -r $(TARGET_DIR)/usr/share/mysql/test
> +endef
> +
> +MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL
> +
> +$(eval $(cmake-package))
> +$(eval $(host-cmake-package))
> diff --git a/package/mariadb/mysqld.service b/package/mariadb/mysqld.service
> new file mode 100644
> index 0000000..cd30831
> --- /dev/null
> +++ b/package/mariadb/mysqld.service
> @@ -0,0 +1,13 @@
> +[Unit]
> +Description=MySQL database server
> +
> +[Service]
> +ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
> +ExecStart=/usr/bin/mysqld_safe
> +Restart=always
> +User=mysql
> +RuntimeDirectory=mysql
> +RuntimeDirectoryMode=0755
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/package/oracle-mysql/Config.in b/package/oracle-mysql/Config.in
> index 0622a13..1c2d33b 100644
> --- a/package/oracle-mysql/Config.in
> +++ b/package/oracle-mysql/Config.in
> @@ -3,6 +3,7 @@ config BR2_PACKAGE_ORACLE_MYSQL
>         depends on BR2_INSTALL_LIBSTDCPP
>         depends on BR2_USE_MMU # fork()
>         depends on BR2_TOOLCHAIN_HAS_THREADS
> +       depends on !BR2_PACKAGE_MARIADB
>         select BR2_PACKAGE_NCURSES
>         select BR2_PACKAGE_READLINE
>         help
> --
> 2.9.3
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot



-- 
Frank Hunleth
Troodon Software LLC
Embedded Software Development
http://troodon-software.com/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [RFC v3 2/3] mariadb: new package
  2016-10-27  4:06   ` Frank Hunleth
@ 2016-12-14 20:54     ` Ryan Coe
  0 siblings, 0 replies; 6+ messages in thread
From: Ryan Coe @ 2016-12-14 20:54 UTC (permalink / raw)
  To: buildroot

Frank, All,

I've been away for awhile and I am finally getting ready to send a new 
version.

On 10/26/2016 9:06 PM, Frank Hunleth wrote:
> Hi Ryan,
>
> On Mon, Sep 26, 2016 at 9:53 PM, Ryan Coe <bluemrp9@gmail.com> wrote:
>> diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk
>> new file mode 100644
>> index 0000000..bac38c2
>> --- /dev/null
>> +++ b/package/mariadb/mariadb.mk
>> @@ -0,0 +1,113 @@
>> +################################################################################
>> +#
>> +# mariadb
>> +#
>> +################################################################################
>> +
>> +MARIADB_VERSION = 10.1.17
>> +MARIADB_SOURCE = mariadb-$(MARIADB_VERSION).tar.gz
>> +MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source
>> +MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library)
>> +MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
>> +MARIADB_INSTALL_STAGING = YES
>> +
>> +MARIADB_DEPENDENCIES = \
>> +       host-mariadb \
>> +       ncurses \
>> +       openssl \
>> +       zlib \
>> +       libaio \
>> +       libxml2 \
>> +       readline
>> +
>> +# We won't need unit tests
>> +MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0
>> +
>> +# Mroonga needs libstemmer. Some work still needs to be done before it can be
>> +# included in buildroot. Disable it for now.
>> +MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1
>> +
>> +# This value is determined automatically during straight compile by compiling
>> +# and running a test code. You cannot do that during cross-compile. However the
>> +# stack grows downward in most if not all modern systems. The only exception I
>> +# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes
>> +# sense to hardcode the value. If an arch is added the stack of which grows up
>> +# one should expect unpredictable behavior at run time.
>> +MARIADB_CONF_OPTS += -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.
>> +MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1
>> +
>> +# Make it explicit that we are cross-compiling
>> +MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1
>> +
> The next time you re-spin your patch, could you add the following lines to it?
>
> # Explicitly disable dtrace to avoid detection of a host version
> MARIADB_CONF_OPTS += -DENABLE_DTRACE=0
>
> With this change, mariadb appears to build and run fine for me.
>
> Also, fwiw, I didn't apply the other patches in the series since it
> didn't look like BR2_PACKAGE_HAS_MYSQL was propagated to all of the
> packages that depended on mysql. I just deleted the mysql package
> completely and changed all references to mariadb.
>
> Thanks,
> Frank
I added the "-DENABLE_DTRACE" above.  I am, however, confused about your 
comment about BR2_PACKAGE_HAS_MYSQL.  I am probably missing something, 
but doesn't the dependency to still exist on all of the packages that 
depend on mysql?  Either of the oracle-mysql or mariadb virtual packages 
provides mysql.
>> +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
>> +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON
>> +else
>> +MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON
>> +endif
>> +
>> +MARIADB_CONF_OPTS += \
>> +       -DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \
>> +       -DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \
>> +       -DINSTALL_MANDIR=share/man \
>> +       -DINSTALL_MYSQLSHAREDIR=share/mysql \
>> +       -DINSTALL_MYSQLTESTDIR=share/mysql/test \
>> +       -DINSTALL_PLUGINDIR=lib/mysql/plugin \
>> +       -DINSTALL_SBINDIR=sbin \
>> +       -DINSTALL_SCRIPTDIR=bin \
>> +       -DINSTALL_SQLBENCHDIR=share/mysql/bench \
>> +       -DINSTALL_SUPPORTFILESDIR=share/mysql \
>> +       -DMYSQL_DATADIR=/var/lib/mysql \
>> +       -DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET)
>> +
>> +# 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.
>> +# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
>> +# must then be passed to cmake during target build.
>> +# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/
>> +HOST_MARIADB_MAKE_OPTS = import_executables
>> +
>> +MARIADB_CONF_OPTS += \
>> +       -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake
>> +
>> +# Don't install host-mariadb. We just need to build import_executable
>> +# Therefore only run 'true' and do nothing, not even the default action.
>> +HOST_MARIADB_INSTALL_CMDS = true
>> +
>> +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)
>> +define MARIADB_USERS
>> +       mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server
>> +endef
>> +
>> +define MARIADB_INSTALL_INIT_SYSV
>> +       $(INSTALL) -D -m 0755 package/mariadb/S97mysqld \
>> +               $(TARGET_DIR)/etc/init.d/S97mysqld
>> +endef
>> +
>> +define MARIADB_INSTALL_INIT_SYSTEMD
>> +       $(INSTALL) -D -m 644 package/mariadb/mysqld.service \
>> +               $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service
>> +       mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
>> +       ln -sf ../../../../usr/lib/systemd/system/mysqld.service \
>> +               $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service
>> +endef
>> +endif
>> +
>> +define MARIADB_POST_INSTALL
>> +       mkdir -p $(TARGET_DIR)/var/lib/mysql
>> +       $(INSTALL) -D -m 644 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \
>> +               $(TARGET_DIR)/etc/mysql/my.cnf
>> +       # We don't need this on the target as it's only useful in staging
>> +       $(RM) $(TARGET_DIR)/usr/bin/mysql_config
>> +       # Remove test suite
>> +       $(RM) -r $(TARGET_DIR)/usr/share/mysql/test
>> +endef
>> +
>> +MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL
>> +
>> +$(eval $(cmake-package))
>> +$(eval $(host-cmake-package))
>> diff --git a/package/mariadb/mysqld.service b/package/mariadb/mysqld.service
>> new file mode 100644
>> index 0000000..cd30831
>> --- /dev/null
>> +++ b/package/mariadb/mysqld.service
>> @@ -0,0 +1,13 @@
>> +[Unit]
>> +Description=MySQL database server
>> +
>> +[Service]
>> +ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql'
>> +ExecStart=/usr/bin/mysqld_safe
>> +Restart=always
>> +User=mysql
>> +RuntimeDirectory=mysql
>> +RuntimeDirectoryMode=0755
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/package/oracle-mysql/Config.in b/package/oracle-mysql/Config.in
>> index 0622a13..1c2d33b 100644
>> --- a/package/oracle-mysql/Config.in
>> +++ b/package/oracle-mysql/Config.in
>> @@ -3,6 +3,7 @@ config BR2_PACKAGE_ORACLE_MYSQL
>>          depends on BR2_INSTALL_LIBSTDCPP
>>          depends on BR2_USE_MMU # fork()
>>          depends on BR2_TOOLCHAIN_HAS_THREADS
>> +       depends on !BR2_PACKAGE_MARIADB
>>          select BR2_PACKAGE_NCURSES
>>          select BR2_PACKAGE_READLINE
>>          help
>> --
>> 2.9.3
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
>
Thanks,
Ryan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-12-14 20:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-27  1:53 [Buildroot] [RFC v3 0/3] mariadb: new package Ryan Coe
2016-09-27  1:53 ` [Buildroot] [RFC v3 1/3] mysql: rename package to oracle-mysql Ryan Coe
2016-09-27  1:53 ` [Buildroot] [RFC v3 2/3] mariadb: new package Ryan Coe
2016-10-27  4:06   ` Frank Hunleth
2016-12-14 20:54     ` Ryan Coe
2016-09-27  1:53 ` [Buildroot] [RFC v3 3/3] mysql: convert to virtual package Ryan Coe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox