commit:     230727ca970a327e9338829cdff30c98973e8928
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 18 17:32:46 2015 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Fri Sep 18 17:32:46 2015 +0000
URL:        https://gitweb.gentoo.org/proj/mysql.git/commit/?id=230727ca

Update initialization for MySQL 5.7 now that mysql_install_db is gone

Signed-off-by: Brian Evans <grknight <AT> gentoo.org>

 eclass/mysql-multilib.eclass | 54 ++++++++++++++++++++++++++------------------
 1 file changed, 32 insertions(+), 22 deletions(-)

diff --git a/eclass/mysql-multilib.eclass b/eclass/mysql-multilib.eclass
index ff701df..16c320f 100644
--- a/eclass/mysql-multilib.eclass
+++ b/eclass/mysql-multilib.eclass
@@ -1056,16 +1056,32 @@ mysql-multilib_pkg_config() {
        fi
 
        pushd "${TMPDIR}" &>/dev/null
-       #cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' 
'--basedir=${EPREFIX}/usr' ${options}"
-       cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db
-       [[ -f ${cmd} ]] || cmd=${EROOT}usr/bin/mysql_install_db
+
+       # Filling timezones, see
+       # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
+       "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > 
"${sqltmp}" 2>/dev/null
+
+       local cmd
+        if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && 
mysql_version_is_at_least "5.7.6" ; then
+               # --initialize-insecure will not set root password
+               # --initialize would set a random one in the log which we don't 
need as we set it ourselves
+               cmd="${EROOT}usr/sbin/mysqld"
+               options="${options}  --initialize-insecure  
'--init-file=${sqltmp}'"
+               sqltmp="" # the initialize will take care of it
+       else
+               cmd="${EROOT}usr/share/mysql/scripts/mysql_install_db"
+               [[ -f "${cmd}" ]] || cmd="${EROOT}usr/bin/mysql_install_db"
+               if [[ -r "${help_tables}" ]] ; then
+                       cat "${help_tables}" >> "${sqltmp}"
+               fi
+       fi
        cmd="'$cmd' '--basedir=${EPREFIX}/usr' ${options} 
'--datadir=${ROOT}/${MY_DATADIR}' '--tmpdir=${ROOT}/${MYSQL_TMPDIR}'"
        einfo "Command: $cmd"
        eval $cmd \
                >"${TMPDIR}"/mysql_install_db.log 2>&1
        if [ $? -ne 0 ]; then
                grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
-               die "Failed to run mysql_install_db. Please review 
${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
+               die "Failed to initialize mysqld. Please review 
${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
        fi
        popd &>/dev/null
        [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
@@ -1073,14 +1089,6 @@ mysql-multilib_pkg_config() {
        chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
        chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
 
-       # Filling timezones, see
-       # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
-       "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > 
"${sqltmp}" 2>/dev/null
-
-       if [[ -r "${help_tables}" ]] ; then
-               cat "${help_tables}" >> "${sqltmp}"
-       fi
-
        local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
        local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
        local mysqld="${EROOT}/usr/sbin/mysqld \
@@ -1120,16 +1128,18 @@ mysql-multilib_pkg_config() {
                -e "${sql}"
        eend $?
 
-       ebegin "Loading \"zoneinfo\", this step may require a few seconds"
-       "${EROOT}/usr/bin/mysql" \
-               --socket=${socket} \
-               -hlocalhost \
-               -uroot \
-               --password="${MYSQL_ROOT_PASSWORD}" \
-               mysql < "${sqltmp}"
-       rc=$?
-       eend $?
-       [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!"
+       if [[ -n "${sqltmp}" ]] ; then
+               ebegin "Loading \"zoneinfo\", this step may require a few 
seconds"
+               "${EROOT}/usr/bin/mysql" \
+                       --socket=${socket} \
+                       -hlocalhost \
+                       -uroot \
+                       --password="${MYSQL_ROOT_PASSWORD}" \
+                       mysql < "${sqltmp}"
+               rc=$?
+               eend $?
+               [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!"
+       fi
 
        # Stop the server and cleanup
        einfo "Stopping the server ..."

Reply via email to