Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/mysql/
Date: Wed, 14 Aug 2019 22:57:47
Message-Id: 1565823367.02fc0893c88cb59d6d9eddb2300a3c00ce791d08.whissi@gentoo
1 commit: 02fc0893c88cb59d6d9eddb2300a3c00ce791d08
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Wed Aug 14 22:08:35 2019 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 14 22:56:07 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=02fc0893
7
8 dev-db/mysql: fix prefix support
9
10 Package-Manager: Portage-2.3.71, Repoman-2.3.17
11 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
12
13 ...8.0.17_pre3.ebuild => mysql-8.0.17_pre4.ebuild} | 304 +++++++++++++--------
14 1 file changed, 197 insertions(+), 107 deletions(-)
15
16 diff --git a/dev-db/mysql/mysql-8.0.17_pre3.ebuild b/dev-db/mysql/mysql-8.0.17_pre4.ebuild
17 similarity index 79%
18 rename from dev-db/mysql/mysql-8.0.17_pre3.ebuild
19 rename to dev-db/mysql/mysql-8.0.17_pre4.ebuild
20 index 5b23f974d76..e83b57d1ba0 100644
21 --- a/dev-db/mysql/mysql-8.0.17_pre3.ebuild
22 +++ b/dev-db/mysql/mysql-8.0.17_pre4.ebuild
23 @@ -6,7 +6,7 @@ MY_EXTRAS_VER="20190802-1549Z"
24
25 CMAKE_MAKEFILE_GENERATOR=emake
26
27 -inherit cmake-utils eutils flag-o-matic linux-info \
28 +inherit cmake-utils flag-o-matic linux-info \
29 multiprocessing prefix toolchain-funcs
30
31 MY_PV="${PV//_pre*}"
32 @@ -107,49 +107,11 @@ RDEPEND="${COMMON_DEPEND}
33 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
34
35 mysql_init_vars() {
36 - MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
37 - MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
38 - MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
39 - MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
40 -
41 - if [[ -z "${MY_DATADIR}" ]] ; then
42 - MY_DATADIR=""
43 - if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
44 - MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
45 - | sed -ne '/datadir/s|^--datadir=||p' \
46 - | tail -n1)
47 -
48 - if [[ -z "${MY_DATADIR}" ]] ; then
49 - MY_DATADIR=$(grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
50 - | sed -e 's/.*=\s*//' \
51 - | tail -n1)
52 - fi
53 - fi
54 -
55 - if [[ -z "${MY_DATADIR}" ]] ; then
56 - MY_DATADIR="${MY_LOCALSTATEDIR}"
57 - einfo "Using default MY_DATADIR"
58 - fi
59 - elog "MySQL MY_DATADIR is ${MY_DATADIR}"
60 -
61 - if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
62 - if [[ -e "${MY_DATADIR}" ]] ; then
63 - # If you get this and you're wondering about it, see bug #207636
64 - elog "MySQL datadir found in ${MY_DATADIR}"
65 - elog "A new one will not be created."
66 - PREVIOUS_DATADIR="yes"
67 - else
68 - PREVIOUS_DATADIR="no"
69 - fi
70 - export PREVIOUS_DATADIR
71 - fi
72 - else
73 - if [[ ${EBUILD_PHASE} == "config" ]] ; then
74 - MY_DATADIR=$(my_print_defaults mysqld 2>/dev/null \
75 - | sed -ne '/datadir/s|^--datadir=||p' \
76 - | tail -n1)
77 - fi
78 - fi
79 + : ${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
80 + : ${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
81 + : ${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
82 + : ${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
83 + MY_DATADIR="${MY_LOCALSTATEDIR}"
84
85 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
86 export MY_LOCALSTATEDIR MY_LOGDIR
87 @@ -500,7 +462,7 @@ src_install() {
88 # testsuite. It DOES have a use to be installed, esp. when you want to do a
89 # validation of your database configuration after tuning it.
90 if ! use test ; then
91 - rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test"
92 + rm -rf "${ED}/${MY_SHAREDSTATEDIR#${EPREFIX}}/mysql-test"
93 fi
94
95 # Configuration stuff
96 @@ -556,7 +518,8 @@ pkg_postinst() {
97 mysql_init_vars
98
99 # Create log directory securely if it does not exist
100 - [[ -d "${EROOT}/${MY_LOGDIR#/}" ]] || install -d -m0750 -o mysql -g mysql "${EROOT}/${MY_LOGDIR#/}"
101 + # NOTE: $MY_LOGDIR contains $EPREFIX by default
102 + [[ -d "${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${MY_LOGDIR}"
103
104 # Note about configuration change
105 einfo
106 @@ -598,11 +561,38 @@ pkg_config() {
107 die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!"
108 fi
109
110 + if [[ -z "${MYSQL_USER}" ]] ; then
111 + MYSQL_USER=mysql
112 + if use prefix ; then
113 + MYSQL_USER=$(id -u -n 2>/dev/null)
114 + if [[ -z "${MYSQL_USER}" ]] ; then
115 + die "Failed to determine current username!"
116 + fi
117 + fi
118 + fi
119 +
120 + if [[ -z "${MYSQL_GROUP}" ]] ; then
121 + MYSQL_GROUP=mysql
122 + if use prefix ; then
123 + MYSQL_GROUP=$(id -g -n 2>/dev/null)
124 + if [[ -z "${MYSQL_GROUP}" ]] ; then
125 + die "Failed to determine current user groupname!"
126 + fi
127 + fi
128 + fi
129 +
130 + einfo "Will use username '${MYSQL_USER}' and group '${MYSQL_GROUP}' ..."
131 +
132 _getoptval() {
133 local section="$1"
134 local flag="--${2}="
135 local extra_options="${3}"
136 - local results=( $("${my_print_defaults_binary}" ${extra_options} ${section} | sed -n "/^${flag}/s,${flag},,gp") )
137 + local cmd=(
138 + "${my_print_defaults_binary}"
139 + "${extra_options}"
140 + "${section}"
141 + )
142 + local results=( $(eval "${cmd[@]}" 2>/dev/null | sed -n "/^${flag}/s,${flag},,gp") )
143
144 if [[ ${#results[@]} -gt 0 ]] ; then
145 # When option is set multiple times only return last value
146 @@ -610,33 +600,81 @@ pkg_config() {
147 fi
148 }
149
150 - local old_MY_DATADIR="${MY_DATADIR}"
151 - local old_HOME="${HOME}"
152 + _mktemp_dry() {
153 + # emktemp has no --dry-run option
154 + local template="${1}"
155 +
156 + if [[ -z "${template}" ]] ; then
157 + if [[ -z "${T}" ]] ; then
158 + template="/tmp/XXXXXXX"
159 + else
160 + template="${T}/XXXXXXX"
161 + fi
162 + fi
163 +
164 + local template_wo_X=${template//X/}
165 + local n_X
166 + let n_X=${#template}-${#template_wo_X}
167 + if [[ ${n_X} -lt 3 ]] ; then
168 + echo "${FUNCNAME[0]}: too few X's in template ‘${template}’" >&2
169 + return
170 + fi
171 +
172 + local attempts=0
173 + local character tmpfile
174 + while [[ true ]] ; do
175 + let attempts=attempts+1
176 +
177 + new_file=
178 + while read -n1 character ; do
179 + if [[ "${character}" == "X" ]] ; then
180 + tmpfile+="${RANDOM:0:1}"
181 + else
182 + tmpfile+="${character}"
183 + fi
184 + done < <(echo -n "${template}")
185 +
186 + if [[ ! -f "${tmpfile}" ]]
187 + then
188 + echo "${tmpfile}"
189 + return
190 + fi
191 +
192 + if [[ ${attempts} -ge 100 ]] ; then
193 + echo "${FUNCNAME[0]}: Cannot create temporary file after 100 attempts." >&2
194 + return
195 + fi
196 + done
197 + }
198 +
199 # my_print_defaults needs to read stuff in $HOME/.my.cnf
200 local -x HOME="${EROOT}/root"
201
202 # Make sure the vars are correctly initialized
203 mysql_init_vars
204
205 + # Read currently set data directory
206 + MY_DATADIR="$(_getoptval mysqld datadir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
207 +
208 # Bug #213475 - MySQL _will_ object strenously if your machine is named
209 # localhost. Also causes weird failures.
210 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
211
212 if [[ -z "${MY_DATADIR}" ]] ; then
213 die "Sorry, unable to find MY_DATADIR!"
214 - elif [[ -d "${EROOT}/${MY_DATADIR#/}/mysql" ]] ; then
215 - ewarn "Looks like your data directory '${EROOT}/${MY_DATADIR#/}' is already initialized!"
216 + elif [[ -d "${MY_DATADIR}/mysql" ]] ; then
217 + ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!"
218 ewarn "Please rename or delete its content if you wish to initialize a new data directory."
219 - die "${PN} data directory at '${EROOT}/${MY_DATADIR#/}' looks already initialized!"
220 + die "${PN} data directory at '${MY_DATADIR}' looks already initialized!"
221 else
222 - einfo "${PN} data directory detected as '${EROOT}/${MY_DATADIR#/}' ..."
223 + einfo "${PN} data directory detected as '${MY_DATADIR}' ..."
224 fi
225
226 - MYSQL_TMPDIR="$(_getoptval mysqld tmpdir)"
227 + MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
228 # These are dir+prefix
229 - MYSQL_LOG_BIN="$(_getoptval mysqld log-bin)"
230 + MYSQL_LOG_BIN="$(_getoptval mysqld log-bin "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
231 MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
232 - MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log)"
233 + MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")"
234 MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
235
236 # Create missing directories.
237 @@ -646,79 +684,129 @@ pkg_config() {
238 PID_DIR="${EROOT}/run/mysqld"
239 if [[ ! -d "${PID_DIR}" ]] ; then
240 einfo "Creating ${PN} PID directory '${PID_DIR}' ..."
241 - install -d -m 755 -o mysql -g mysql "${PID_DIR}" \
242 + install -d -m 755 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${PID_DIR}" \
243 || die "Failed to create PID directory '${PID_DIR}'!"
244 fi
245
246 - local _pid_dir_testfile="$(mktemp --dry-run "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
247 - su -s /bin/sh -c "touch ${_pid_dir_testfile}" mysql &>/dev/null
248 + local _pid_dir_testfile="$(_mktemp_dry "${PID_DIR}/.pkg_config-access-test.XXXXXXXXX")"
249 + [[ -z "${_pid_dir_testfile}" ]] \
250 + && die "_mktemp_dry() for '${PID_DIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
251 +
252 + if use prefix ; then
253 + touch "${_pid_dir_testfile}" &>/dev/null
254 + else
255 + su -s /bin/sh -c "touch ${_pid_dir_testfile}" ${MYSQL_USER} &>/dev/null
256 + fi
257 +
258 if [[ $? -ne 0 ]] ; then
259 - die "mysql user cannot write into PID dir '${PID_DIR}'!"
260 + die "${MYSQL_USER} user cannot write into PID dir '${PID_DIR}'!"
261 else
262 rm "${_pid_dir_testfile}" || die
263 unset _pid_dir_testfile
264 fi
265
266 - if [[ ! -d "${EROOT}/${MY_DATADIR#/}" ]] ; then
267 - einfo "Creating ${PN} data directory '${EROOT}/${MY_DATADIR#/}' ..."
268 - install -d -m 770 -o mysql -g mysql "${EROOT}/${MY_DATADIR#/}" \
269 - || die "Failed to create ${PN} data directory '${EROOT}/${MY_DATADIR#/}'!"
270 + if [[ ! -d "${MY_DATADIR}" ]] ; then
271 + einfo "Creating ${PN} data directory '${MY_DATADIR}' ..."
272 + install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MY_DATADIR}" \
273 + || die "Failed to create ${PN} data directory '${MY_DATADIR}'!"
274 + fi
275 +
276 + local _my_datadir_testfile="$(_mktemp_dry "${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX")"
277 + [[ -z "${_my_datadir_testfile}" ]] \
278 + && die "_mktemp_dry() for '${MY_DATADIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
279 +
280 + if use prefix ; then
281 + touch "${_my_datadir_testfile}" &>/dev/null
282 + else
283 + su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null
284 fi
285
286 - local _my_datadir_testfile="$(mktemp --dry-run "${EROOT}/${MY_DATADIR#/}/.pkg_config-access-test.XXXXXXXXX")"
287 - su -s /bin/sh -c "touch '${_my_datadir_testfile}'" mysql &>/dev/null
288 if [[ $? -ne 0 ]]; then
289 - die "mysql user cannot write into data directory '${EROOT}/${MY_DATADIR#/}'!"
290 + die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!"
291 else
292 rm "${_my_datadir_testfile}" || die
293 unset _my_datadir_testfile
294 fi
295
296 - if [[ -n "${MYSQL_TMPDIR}" && ! -d "${EROOT}/${MYSQL_TMPDIR#/}" ]] ; then
297 - einfo "Creating ${PN} tmpdir '${EROOT}/${MYSQL_TMPDIR#/}' ..."
298 - install -d -m 770 -o mysql -g mysql "${EROOT}/${MYSQL_TMPDIR#/}" \
299 - || die "Failed to create ${PN} tmpdir '${EROOT}/${MYSQL_TMPDIR#/}'!"
300 + if [[ -n "${MYSQL_TMPDIR}" && ! -d "${MYSQL_TMPDIR}" ]] ; then
301 + einfo "Creating ${PN} tmpdir '${MYSQL_TMPDIR}' ..."
302 + install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_TMPDIR}" \
303 + || die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!"
304 fi
305
306 if [[ -n "${MYSQL_TMPDIR}" ]] ; then
307 - local _my_tmpdir_testfile="$(mktemp --dry-run "${EROOT}/${MYSQL_TMPDIR#/}/.pkg_config-access-test.XXXXXXXXX")"
308 - su -s /bin/sh -c "touch '${_my_tmpdir_testfile}'" mysql &>/dev/null
309 + local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")"
310 + [[ -z "${_my_tmpdir_testfile}" ]] \
311 + && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!"
312 +
313 + if use prefix ; then
314 + touch "${_my_tmpdir_testfile}" &>/dev/null
315 + else
316 + su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null
317 + fi
318 +
319 if [[ $? -ne 0 ]]; then
320 - die "mysql user cannot write into data directory '${EROOT}/${MYSQL_TMPDIR#/}'!"
321 + die "${MYSQL_USER} user cannot write into data directory '${MYSQL_TMPDIR}'!"
322 else
323 rm "${_my_tmpdir_testfile}" || die
324 unset _my_tmpdir_testfile
325 fi
326 + else
327 + # If no tmpdir is set, mysqld will use default system tmpdir.
328 + # However, we are using tmpdir from package manager at the
329 + # moment which maybe isn't writeable for $MYSQL_USER...
330 + MYSQL_TMPDIR="$(_mktemp_dry "${T}/mysqld-tmp.XXXXXXXXX")"
331 + [[ -z "${MYSQL_TMPDIR}" ]] \
332 + && die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!"
333 +
334 + mkdir "${MYSQL_TMPDIR}" || die
335 + chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die
336 fi
337
338 - if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${EROOT}/${MYSQL_LOG_BIN#/}" ]] ; then
339 - einfo "Creating ${PN} log-bin directory '${EROOT}/${MYSQL_LOG_BIN}' ..."
340 - install -d -m 770 -o mysql -g mysql "${EROOT}/${MYSQL_LOG_BIN}" \
341 - || die "Failed to create ${PN} log-bin directory '${EROOT}/${MYSQL_LOG_BIN}'"
342 + if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then
343 + einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..."
344 + install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \
345 + || die "Failed to create ${PN} log-bin directory '${MYSQL_LOG_BIN}'"
346 fi
347
348 if [[ -n "${MYSQL_LOG_BIN}" ]] ; then
349 - local _my_logbin_testfile="$(mktemp --dry-run "${EROOT}/${MYSQL_LOG_BIN#/}/.pkg_config-access-test.XXXXXXXXX")"
350 - su -s /bin/sh -c "touch '${_my_logbin_testfile}'" mysql &>/dev/null
351 + local _my_logbin_testfile="$(_mktemp_dry "${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX")"
352 + [[ -z "${_my_logbin_testfile}" ]] \
353 + && die "_mktemp_dry() for '${MYSQL_LOG_BIN}/.pkg_config-access-test.XXXXXXXXX' failed!"
354 +
355 + if use prefix ; then
356 + touch "${_my_logbin_testfile}" &>/dev/null
357 + else
358 + su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null
359 + fi
360 +
361 if [[ $? -ne 0 ]]; then
362 - die "mysql user cannot write into data directory '${EROOT}/${MYSQL_LOG_BIN#/}'!"
363 + die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!"
364 else
365 rm "${_my_logbin_testfile}" || die
366 unset _my_logbin_testfile
367 fi
368 fi
369
370 - if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${EROOT}/${MYSQL_RELAY_LOG#/}" ]] ; then
371 - einfo "Creating ${PN} relay-log directory '${EROOT}/${MYSQL_RELAY_LOG#/}' ..."
372 - install -d -m 770 -o mysql -g mysql "${EROOT}/${MYSQL_RELAY_LOG#/}" \
373 - || die "Failed to create ${PN} relay-log directory '${EROOT}/${MYSQL_RELAY_LOG#/}'!"
374 + if [[ -n "${MYSQL_RELAY_LOG}" && ! -d "${MYSQL_RELAY_LOG}" ]] ; then
375 + einfo "Creating ${PN} relay-log directory '${MYSQL_RELAY_LOG}' ..."
376 + install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_RELAY_LOG}" \
377 + || die "Failed to create ${PN} relay-log directory '${MYSQL_RELAY_LOG}'!"
378 fi
379
380 if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then
381 - local _my_relaylog_testfile="$(mktemp --dry-run "${EROOT}/${MYSQL_RELAY_LOG#/}/.pkg_config-access-test.XXXXXXXXX")"
382 - su -s /bin/sh -c "touch '${_my_relaylog_testfile}'" mysql &>/dev/null
383 + local _my_relaylog_testfile="$(_mktemp_dry "${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX")"
384 + [[ -z "${_my_relaylog_testfile}" ]] \
385 + && die "_mktemp_dry() for '${MYSQL_RELAY_LOG}/.pkg_config-access-test.XXXXXXXXX' failed!"
386 +
387 + if use prefix ; then
388 + touch "${_my_relaylog_testfile}" &>/dev/null
389 + else
390 + su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null
391 + fi
392 +
393 if [[ $? -ne 0 ]]; then
394 - die "mysql user cannot write into data directory '${EROOT}/${MYSQL_RELAY_LOG#/}'!"
395 + die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!"
396 else
397 rm "${_my_relaylog_testfile}" || die
398 unset _my_relaylog_testfile
399 @@ -743,7 +831,7 @@ pkg_config() {
400
401 if [[ ${#config_files[@]} -gt 0 ]] ; then
402 if [[ -z "${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" ]] ; then
403 - local tmp_mysql_default_authentication_plugin
404 + local user_answer
405
406 echo
407 einfo "Please select default authentication plugin (enter number or plugin name):"
408 @@ -752,10 +840,10 @@ pkg_config() {
409 einfo
410 einfo "For details see:"
411 einfo "https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password"
412 - read -p " >" tmp_mysql_default_authentication_plugin
413 + read -p " >" user_answer
414 echo
415
416 - case "${tmp_mysql_default_authentication_plugin}" in
417 + case "${user_answer}" in
418 1|caching_sha2_password)
419 MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=caching_sha2_password
420 ;;
421 @@ -766,9 +854,11 @@ pkg_config() {
422 die "No authentication plugin selected!"
423 ;;
424 *)
425 - die "Authentication plugin '${tmp_mysql_default_authentication_plugin}' is unknown/unsupported!"
426 + die "Authentication plugin '${user_answer}' is unknown/unsupported!"
427 ;;
428 esac
429 +
430 + unset user_answer
431 fi
432
433 local cfg_option cfg_option_tabs cfg_section
434 @@ -880,11 +970,11 @@ pkg_config() {
435 die "mysql_tzinfo_to_sql failed!"
436 fi
437
438 - chown mysql "${tz_sql}" || die
439 + chown ${MYSQL_USER} "${tz_sql}" || die
440
441 local mysql_install_log="${TMPDIR}/mysql_install_db.log"
442 touch "${mysql_install_log}" || die
443 - chown mysql "${mysql_install_log}" || die
444 + chown ${MYSQL_USER} "${mysql_install_log}" || die
445
446 # --initialize-insecure will not set root password
447 # --initialize would set a random one in the log which we don't need as we set it ourselves
448 @@ -894,17 +984,17 @@ pkg_config() {
449 "--initialize-insecure"
450 "--init-file='${tz_sql}'"
451 "--basedir='${EROOT}/usr'"
452 - "--datadir='${EROOT}/${MY_DATADIR#/}'"
453 - "--tmpdir='${EROOT}/${MYSQL_TMPDIR#/}'"
454 + "--datadir='${MY_DATADIR}'"
455 + "--tmpdir='${MYSQL_TMPDIR}'"
456 "--log-error='${mysql_install_log}'"
457 + "--user=${MYSQL_USER}"
458 )
459
460 einfo "Initializing ${PN} data directory: ${cmd[@]}"
461 - su -s /bin/sh -c "${cmd[*]}" mysql \
462 - >>"${mysql_install_log}" 2>&1
463 + eval "${cmd[@]}" >>"${mysql_install_log}" 2>&1
464
465 - if [[ $? -ne 0 || ! -f "${EROOT}/${MY_DATADIR#/}/mysql.ibd" ]] ; then
466 - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}"
467 + if [[ $? -ne 0 || ! -f "${MY_DATADIR}/mysql.ibd" ]] ; then
468 + grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysql_install_log}" 1>&2
469 die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!"
470 fi
471
472 @@ -915,24 +1005,24 @@ pkg_config() {
473
474 local mysqld_logfile="${TMPDIR}/mysqld.log"
475 touch "${mysqld_logfile}" || die
476 - chown mysql "${mysqld_logfile}" || die
477 + chown ${MYSQL_USER} "${mysqld_logfile}" || die
478
479 cmd=(
480 "${mysqld_binary}"
481 "${mysqld_options[@]}"
482 "--basedir='${EROOT}/usr'"
483 - "--datadir='${EROOT}/${MY_DATADIR#/}'"
484 + "--datadir='${MY_DATADIR}'"
485 + "--tmpdir='${MYSQL_TMPDIR}'"
486 --max_allowed_packet=8M
487 --net_buffer_length=16K
488 "--socket='${socket}'"
489 "--pid-file='${pidfile}'"
490 - "--tmpdir='${EROOT}/${MYSQL_TMPDIR#/}'"
491 "--log-error='${mysqld_logfile}'"
492 + "--user=${MYSQL_USER}"
493 )
494
495 einfo "Starting mysqld to finalize initialization: ${cmd[@]}"
496 - su -s /bin/sh -c "${cmd[*]} &" mysql \
497 - >>"${mysqld_logfile}" 2>&1
498 + eval "${cmd[@]}" >>"${mysqld_logfile}" 2>&1 &
499
500 echo -n "Waiting for mysqld to accept connections "
501 local maxtry=15
502 @@ -956,7 +1046,7 @@ pkg_config() {
503 echo
504
505 if [[ ! -S "${socket}" ]] ; then
506 - grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}"
507 + grep -B5 -A999 -iE "(Aborting|ERROR|errno)" "${mysqld_logfile}" 1>&2
508 die "mysqld was unable to start from initialized data directory. Please review '${mysqld_logfile}'!"
509 fi
510
511 @@ -1008,5 +1098,5 @@ pkg_config() {
512 fi
513 fi
514
515 - einfo "${PN} data directory at '${EROOT}/${MY_DATADIR#/}' successfully initialized!"
516 + einfo "${PN} data directory at '${MY_DATADIR}' successfully initialized!"
517 }