All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.