mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-09-16 22:23:14 +00:00
While SYSTEMD_AUTO_ENABLE_mariadb-server = "enable", the mysqld service
hungs.
...
[ **] A start job is running for Run pending postinsts (25s / no limit)
[ OK ] Stopped MariaDB database server.
...
In mariadb-server's pkg_postinst, it install db at first runtime. And the
following 'systemctl mysqld restart' casued the hunging. So the fix idea
is to reomove pkg_postinst and still install db at first runtime.
Introduce mysql-systemd-start from ${S}/packaging/rpm-oel/. For review
convenience, we add them as file.
The mysql-systemd-start provides two functions: the install_db is to install
db at fist runtime (the first runtime means if a db existed, the install_db
will directly exit); the pinger is to wait for mysqld service startup
completed.
The mysqld.service add ExecStartPost than previous which invoke
'mysql-systemd-start post' to wait for mysqld service startup completed.
We add a package to provide install_db, so the user could choose it
to install database for mariadb at first boot before mysqld started.
It also fix another issue:
When you manually restart mysqld and do mysql test to connect the server,
the return of the restart could make sure mysqld is ready, and the following db
connect will not fail with:
...
Can't connect to local MySQL server through socket
...
Tweak my.cnf to remove obsolete/incorrect parameter.
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
281 lines
11 KiB
PHP
281 lines
11 KiB
PHP
SUMMARY = "A robust, scalable, and reliable SQL server"
|
|
HOMEPAGE = "http://mariadb.org"
|
|
SECTION = "libs"
|
|
LICENSE = "GPLv2"
|
|
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
|
|
|
|
SRC_URI = "http://archive.mariadb.org/mariadb-${PV}/source/mariadb-${PV}.tar.gz \
|
|
file://fix-cmake-module-path.patch \
|
|
file://remove-bad-path.patch \
|
|
file://fix-mysqlclient-r-version.patch \
|
|
file://my.cnf \
|
|
file://mysqld.service \
|
|
file://install_db.service \
|
|
file://install_db \
|
|
file://mysql-systemd-start \
|
|
file://configure.cmake-fix-valgrind.patch \
|
|
file://fix-a-building-failure.patch \
|
|
"
|
|
|
|
SRC_URI[md5sum] = "92f682b00eb137af01e59ea93f7e31f7"
|
|
SRC_URI[sha256sum] = "45b66b7adc87cad32e553df1d5211e5b6426b78a3bc318a5ccde088bf93e6e10"
|
|
|
|
S = "${WORKDIR}/mariadb-${PV}"
|
|
|
|
BINCONFIG_GLOB = "mysql_config"
|
|
|
|
inherit cmake gettext binconfig update-rc.d useradd systemd
|
|
|
|
INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
|
|
INITSCRIPT_NAME_${PN}-server = "mysqld"
|
|
INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ."
|
|
|
|
USERADD_PACKAGES = "${PN}-server"
|
|
USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
|
|
GROUPADD_PARAM_${PN}-server = "--system mysql"
|
|
|
|
INITSCRIPT_NAME_${PN}-setupdb = "install_db"
|
|
INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44"
|
|
|
|
SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb"
|
|
SYSTEMD_SERVICE_${PN}-server = "mysqld.service"
|
|
SYSTEMD_AUTO_ENABLE_${PN}-server ?= "disable"
|
|
|
|
SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service"
|
|
SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
|
|
ALLOW_EMPTY_${PN}-setupdb ?= "1"
|
|
FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
|
|
|
|
EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
|
|
|
|
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} setupdb"
|
|
PACKAGECONFIG_class-native = ""
|
|
PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
|
|
PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
|
|
PACKAGECONFIG[libedit] = "-DLIBEDIT_INTERFACE=TRUE,-DLIBEDIT_INTERFACE=FALSE,libedit"
|
|
PACKAGECONFIG[krb5] = ", ,krb5"
|
|
PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
|
|
|
|
# MariaDB doesn't link properly with gold
|
|
# https://mariadb.atlassian.net/browse/MDEV-5982
|
|
TARGET_CFLAGS += "-fuse-ld=bfd"
|
|
|
|
EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
|
|
-DWITH_JEMALLOC=no \
|
|
-DWITHOUT_TOKUDB=TRUE \
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
|
|
-DGROFF=FALSE \
|
|
-DNROFF=FALSE \
|
|
-DENABLE_DTRACE=FALSE \
|
|
-DWITH_PIC=ON \
|
|
-DINSTALL_LAYOUT=RPM \
|
|
-DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \
|
|
-DINSTALL_LIBDIR:PATH=${baselib} \
|
|
-DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \
|
|
-DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
|
|
-DMYSQL_DATADIR:PATH=/var/mysql \
|
|
-DCAT_EXECUTABLE=`which cat` \
|
|
-DCMAKE_AR:FILEPATH=${AR}"
|
|
|
|
do_configure_append() {
|
|
# handle distros with different values of ${libexecdir}
|
|
libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'`
|
|
sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh
|
|
sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh
|
|
sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh
|
|
}
|
|
|
|
do_generate_toolchain_file_append_class-native () {
|
|
# If these are set cmake will assume we're cross-compiling, which will
|
|
# result in certain things we want being disabled
|
|
sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake
|
|
sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
|
|
}
|
|
|
|
do_compile_prepend_class-target () {
|
|
# These need to be in-tree or make will think they need to be built,
|
|
# and since we're cross-compiling that is disabled
|
|
cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
|
|
cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
|
|
|
|
if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
|
|
if ! [ -e ${B}/include/openssl/kssl.h ] ; then
|
|
mkdir -p ${B}/include/openssl
|
|
echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h
|
|
echo "#define KSSL_H" >>${B}/include/openssl/kssl.h
|
|
echo "#include <openssl/opensslconf.h>">>${B}/include/openssl/kssl.h
|
|
echo "#endif" >>${B}/include/openssl/kssl.h
|
|
fi
|
|
fi
|
|
}
|
|
|
|
SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
|
|
|
|
# We need to append this so it runs *after* binconfig's preprocess function
|
|
#
|
|
# We really don't care exactly what the directories were set to originally.
|
|
# plugindir is not fixed, but we don't create any plugins.
|
|
#
|
|
mariadb_sysroot_preprocess () {
|
|
sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
|
|
sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
|
|
}
|
|
|
|
do_install() {
|
|
oe_runmake 'DESTDIR=${D}' install
|
|
|
|
install -d ${D}/${sysconfdir}/init.d
|
|
install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/
|
|
install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/
|
|
mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld
|
|
|
|
install -d ${D}${systemd_unitdir}/system
|
|
install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system
|
|
install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system
|
|
sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \
|
|
${D}${systemd_unitdir}/system/install_db.service
|
|
|
|
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
|
|
install -d ${D}${sysconfdir}/tmpfiles.d
|
|
echo "f /var/log/mysqld.err 0640 mysql mysql -" \
|
|
> ${D}${sysconfdir}/tmpfiles.d/99-mysqld.conf
|
|
fi
|
|
install -d ${D}${bindir}
|
|
install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir}
|
|
|
|
}
|
|
|
|
PACKAGES = "${PN}-dbg ${PN} \
|
|
libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev libmysqlclient-r-dbg \
|
|
libmysqlclient libmysqlclient-dev libmysqlclient-staticdev libmysqlclient-dbg \
|
|
libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers"
|
|
CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf"
|
|
CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf"
|
|
CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf"
|
|
|
|
FILES_${PN} = " "
|
|
RDEPENDS_${PN} = "${PN}-client ${PN}-server"
|
|
ALLOW_EMPTY_${PN} = "1"
|
|
|
|
RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \
|
|
perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \
|
|
perl-module-exporter"
|
|
RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
|
|
perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
|
|
perl-module-file-copy perl-module-file-temp perl-module-posix \
|
|
${PN}-client"
|
|
RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
|
|
perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
|
|
perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
|
|
perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \
|
|
perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \
|
|
perl-module-io-socket-inet perl-module-io-select"
|
|
|
|
# Allow old code to link to the backward compatible library
|
|
RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev"
|
|
|
|
FILES_libmysqlclient = "\
|
|
${libdir}/libmysqlclient.so.* \
|
|
${sysconfdir}/my.cnf.d/client.cnf"
|
|
FILES_libmysqlclient-dev = " \
|
|
${includedir}/mysql/ \
|
|
${libdir}/libmysqlclient.so \
|
|
${sysconfdir}/aclocal \
|
|
${bindir}/mysql_config"
|
|
FILES_libmysqlclient-staticdev = "\
|
|
${libdir}/*.a"
|
|
FILES_libmysqlclient-dbg = "${libdir}/plugin/.debug/ \
|
|
${datadir}/mysql-test/lib/My/SafeProcess/.debug/my_safe_process"
|
|
|
|
# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0
|
|
# which are intentionally non-PIC on 32-bit x86 (see e.g.
|
|
# storage/xtradb/plug.in in the source)
|
|
INSANE_SKIP_libmysqlclient_append_x86 = " textrel"
|
|
|
|
FILES_libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*"
|
|
FILES_libmysqlclient-r-dev = "\
|
|
${libdir}/libmysqlclient_r.so"
|
|
FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a"
|
|
FILES_libmysqlclient-r-dbg = "${libdir}/plugin/.debuglibmysqlclient_r.so.*"
|
|
|
|
FILES_libmysqld = "\
|
|
${libdir}/libmysqld.so.*"
|
|
FILES_libmysqld-dev = "\
|
|
${libdir}/libmysqld.so"
|
|
|
|
FILES_${PN}-client = "\
|
|
${bindir}/myisam_ftdump \
|
|
${bindir}/mysql \
|
|
${bindir}/mysql_client_test \
|
|
${bindir}/mysql_client_test_embedded \
|
|
${bindir}/mysql_find_rows \
|
|
${bindir}/mysql_fix_extensions \
|
|
${bindir}/mysql_waitpid \
|
|
${bindir}/mysqlaccess \
|
|
${bindir}/mysqladmin \
|
|
${bindir}/mysqlbug \
|
|
${bindir}/mysqlcheck \
|
|
${bindir}/mysqldump \
|
|
${bindir}/mysqldumpslow \
|
|
${bindir}/mysqlimport \
|
|
${bindir}/mysqlshow \
|
|
${bindir}/mysqlslap \
|
|
${bindir}/mysqltest_embedded \
|
|
${libexecdir}/mysqlmanager \
|
|
${sysconfdir}/my.cnf.d/mysql-clients.cnf"
|
|
|
|
FILES_${PN}-server = "\
|
|
${bindir}/comp_err \
|
|
${bindir}/isamchk \
|
|
${bindir}/isamlog \
|
|
${bindir}/msql2mysql \
|
|
${bindir}/my_print_defaults \
|
|
${bindir}/myisamchk \
|
|
${bindir}/myisamlog \
|
|
${bindir}/myisampack \
|
|
${bindir}/mysql_convert_table_format \
|
|
${bindir}/mysql_fix_privilege_tables \
|
|
${bindir}/mysql_install_db \
|
|
${bindir}/mysql_secure_installation \
|
|
${bindir}/mysql_setpermission \
|
|
${bindir}/mysql-systemd-start \
|
|
${bindir}/mysql_tzinfo_to_sql \
|
|
${bindir}/mysql_upgrade \
|
|
${bindir}/mysql_plugin \
|
|
${bindir}/mysql_zap \
|
|
${bindir}/mysqlbinlog \
|
|
${bindir}/mysqld_multi \
|
|
${bindir}/mysqld_safe \
|
|
${bindir}/mysqlhotcopy \
|
|
${bindir}/mysqltest \
|
|
${bindir}/ndb_delete_all \
|
|
${bindir}/ndb_desc \
|
|
${bindir}/ndb_drop_index \
|
|
${bindir}/ndb_drop_table \
|
|
${bindir}/ndb_mgm \
|
|
${bindir}/ndb_restore \
|
|
${bindir}/ndb_select_all \
|
|
${bindir}/ndb_select_count \
|
|
${bindir}/ndb_show_tables \
|
|
${bindir}/ndb_waiter \
|
|
${bindir}/pack_isam \
|
|
${bindir}/perror \
|
|
${bindir}/replace \
|
|
${bindir}/resolve_stack_dump \
|
|
${bindir}/resolveip \
|
|
${libexecdir}/mysqld \
|
|
${sbindir}/mysqld \
|
|
${sbindir}/ndb_cpcd \
|
|
${sbindir}/ndbd \
|
|
${sbindir}/ndb_mgmd \
|
|
${libdir}/plugin/*.so \
|
|
${datadir}/mysql/ \
|
|
${localstatedir}/mysql/ \
|
|
${sysconfdir}/init.d/mysqld \
|
|
${sysconfdir}/my.cnf \
|
|
${sysconfdir}/my.cnf.d/server.cnf \
|
|
${sysconfdir}/tmpfiles.d"
|
|
|
|
DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
|
|
FILES_${PN}-leftovers = "/"
|