[Buildroot] [RFC v3 2/3] mariadb: new package
Frank Hunleth
fhunleth at troodon-software.com
Thu Oct 27 04:06:36 UTC 2016
Hi Ryan,
On Mon, Sep 26, 2016 at 9:53 PM, Ryan Coe <bluemrp9 at 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/
More information about the buildroot
mailing list