1 |
commit: aea109af79202aa443e04d7861951d822fc8761f |
2 |
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon May 25 11:56:07 2020 +0000 |
4 |
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon May 25 11:56:07 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aea109af |
7 |
|
8 |
dev-db/percona-server: fix pkg_config |
9 |
|
10 |
Backport of commit ab0818d2ba2fd2ab8efa5e1ba9bcb2503975a8b1. |
11 |
|
12 |
Package-Manager: Portage-2.3.100, Repoman-2.3.22 |
13 |
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org> |
14 |
|
15 |
.../percona-server/percona-server-8.0.19.10.ebuild | 183 ++++++++++++--------- |
16 |
1 file changed, 106 insertions(+), 77 deletions(-) |
17 |
|
18 |
diff --git a/dev-db/percona-server/percona-server-8.0.19.10.ebuild b/dev-db/percona-server/percona-server-8.0.19.10.ebuild |
19 |
index 0eb015df2a8..58abf336ca0 100644 |
20 |
--- a/dev-db/percona-server/percona-server-8.0.19.10.ebuild |
21 |
+++ b/dev-db/percona-server/percona-server-8.0.19.10.ebuild |
22 |
@@ -598,43 +598,6 @@ pkg_postinst() { |
23 |
} |
24 |
|
25 |
pkg_config() { |
26 |
- local mysqld_binary="${EROOT}/usr/sbin/mysqld" |
27 |
- if [[ ! -x "${mysqld_binary}" ]] ; then |
28 |
- die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" |
29 |
- fi |
30 |
- |
31 |
- local mysql_binary="${EROOT}/usr/bin/mysql" |
32 |
- if [[ ! -x "${mysql_binary}" ]] ; then |
33 |
- die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" |
34 |
- fi |
35 |
- |
36 |
- local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" |
37 |
- if [[ ! -x "${my_print_defaults_binary}" ]] ; then |
38 |
- die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" |
39 |
- fi |
40 |
- |
41 |
- if [[ -z "${MYSQL_USER}" ]] ; then |
42 |
- MYSQL_USER=mysql |
43 |
- if use prefix ; then |
44 |
- MYSQL_USER=$(id -u -n 2>/dev/null) |
45 |
- if [[ -z "${MYSQL_USER}" ]] ; then |
46 |
- die "Failed to determine current username!" |
47 |
- fi |
48 |
- fi |
49 |
- fi |
50 |
- |
51 |
- if [[ -z "${MYSQL_GROUP}" ]] ; then |
52 |
- MYSQL_GROUP=mysql |
53 |
- if use prefix ; then |
54 |
- MYSQL_GROUP=$(id -g -n 2>/dev/null) |
55 |
- if [[ -z "${MYSQL_GROUP}" ]] ; then |
56 |
- die "Failed to determine current user groupname!" |
57 |
- fi |
58 |
- fi |
59 |
- fi |
60 |
- |
61 |
- einfo "Will use username '${MYSQL_USER}' and group '${MYSQL_GROUP}' ..." |
62 |
- |
63 |
_getoptval() { |
64 |
local section="$1" |
65 |
local flag="--${2}=" |
66 |
@@ -699,6 +662,41 @@ pkg_config() { |
67 |
done |
68 |
} |
69 |
|
70 |
+ local mysqld_binary="${EROOT}/usr/sbin/mysqld" |
71 |
+ if [[ ! -x "${mysqld_binary}" ]] ; then |
72 |
+ die "'${mysqld_binary}' not found! Please re-install ${CATEGORY}/${PN}!" |
73 |
+ fi |
74 |
+ |
75 |
+ local mysql_binary="${EROOT}/usr/bin/mysql" |
76 |
+ if [[ ! -x "${mysql_binary}" ]] ; then |
77 |
+ die "'${mysql_binary}' not found! Please re-install ${CATEGORY}/${PN}!" |
78 |
+ fi |
79 |
+ |
80 |
+ local my_print_defaults_binary="${EROOT}/usr/bin/my_print_defaults" |
81 |
+ if [[ ! -x "${my_print_defaults_binary}" ]] ; then |
82 |
+ die "'${my_print_defaults_binary}' not found! Please re-install dev-db/mysql-connector-c!" |
83 |
+ fi |
84 |
+ |
85 |
+ if [[ -z "${MYSQL_USER}" ]] ; then |
86 |
+ MYSQL_USER=mysql |
87 |
+ if use prefix ; then |
88 |
+ MYSQL_USER=$(id -u -n 2>/dev/null) |
89 |
+ if [[ -z "${MYSQL_USER}" ]] ; then |
90 |
+ die "Failed to determine current username!" |
91 |
+ fi |
92 |
+ fi |
93 |
+ fi |
94 |
+ |
95 |
+ if [[ -z "${MYSQL_GROUP}" ]] ; then |
96 |
+ MYSQL_GROUP=mysql |
97 |
+ if use prefix ; then |
98 |
+ MYSQL_GROUP=$(id -g -n 2>/dev/null) |
99 |
+ if [[ -z "${MYSQL_GROUP}" ]] ; then |
100 |
+ die "Failed to determine current user groupname!" |
101 |
+ fi |
102 |
+ fi |
103 |
+ fi |
104 |
+ |
105 |
# my_print_defaults needs to read stuff in $HOME/.my.cnf |
106 |
local -x HOME="${EROOT}/root" |
107 |
|
108 |
@@ -718,8 +716,6 @@ pkg_config() { |
109 |
ewarn "Looks like your data directory '${MY_DATADIR}' is already initialized!" |
110 |
ewarn "Please rename or delete its content if you wish to initialize a new data directory." |
111 |
die "${PN} data directory at '${MY_DATADIR}' looks already initialized!" |
112 |
- else |
113 |
- einfo "${PN} data directory detected as '${MY_DATADIR}' ..." |
114 |
fi |
115 |
|
116 |
MYSQL_TMPDIR="$(_getoptval mysqld tmpdir "--defaults-file='${MY_SYSCONFDIR}/my.cnf'")" |
117 |
@@ -773,7 +769,7 @@ pkg_config() { |
118 |
su -s /bin/sh -c "touch ${_my_datadir_testfile}" ${MYSQL_USER} &>/dev/null |
119 |
fi |
120 |
|
121 |
- if [[ $? -ne 0 ]]; then |
122 |
+ if [[ $? -ne 0 ]] ; then |
123 |
die "${MYSQL_USER} user cannot write into data directory '${MY_DATADIR}'!" |
124 |
else |
125 |
rm "${_my_datadir_testfile}" || die |
126 |
@@ -786,28 +782,8 @@ pkg_config() { |
127 |
|| die "Failed to create ${PN} tmpdir '${MYSQL_TMPDIR}'!" |
128 |
fi |
129 |
|
130 |
- if [[ -n "${MYSQL_TMPDIR}" ]] ; then |
131 |
- local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" |
132 |
- [[ -z "${_my_tmpdir_testfile}" ]] \ |
133 |
- && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" |
134 |
- |
135 |
- if use prefix ; then |
136 |
- touch "${_my_tmpdir_testfile}" &>/dev/null |
137 |
- else |
138 |
- su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null |
139 |
- fi |
140 |
- |
141 |
- if [[ $? -ne 0 ]]; then |
142 |
- die "${MYSQL_USER} user cannot write into data directory '${MYSQL_TMPDIR}'!" |
143 |
- else |
144 |
- rm "${_my_tmpdir_testfile}" || die |
145 |
- unset _my_tmpdir_testfile |
146 |
- fi |
147 |
- else |
148 |
- # If no tmpdir is set, mysqld will use default system tmpdir. |
149 |
- # However, we are using tmpdir from package manager at the |
150 |
- # moment which maybe isn't writeable for $MYSQL_USER... |
151 |
- MYSQL_TMPDIR="$(_mktemp_dry "${T}/mysqld-tmp.XXXXXXXXX")" |
152 |
+ if [[ -z "${MYSQL_TMPDIR}" ]] ; then |
153 |
+ MYSQL_TMPDIR="$(_mktemp_dry "${EROOT}/tmp/mysqld-tmp.XXXXXXXXX")" |
154 |
[[ -z "${MYSQL_TMPDIR}" ]] \ |
155 |
&& die "_mktemp_dry() for '${MYSQL_TMPDIR}' failed!" |
156 |
|
157 |
@@ -815,6 +791,24 @@ pkg_config() { |
158 |
chown ${MYSQL_USER} "${MYSQL_TMPDIR}" || die |
159 |
fi |
160 |
|
161 |
+ # Now we need to test MYSQL_TMPDIR... |
162 |
+ local _my_tmpdir_testfile="$(_mktemp_dry "${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX")" |
163 |
+ [[ -z "${_my_tmpdir_testfile}" ]] \ |
164 |
+ && die "_mktemp_dry() for '${MYSQL_TMPDIR}/.pkg_config-access-test.XXXXXXXXX' failed!" |
165 |
+ |
166 |
+ if use prefix ; then |
167 |
+ touch "${_my_tmpdir_testfile}" &>/dev/null |
168 |
+ else |
169 |
+ su -s /bin/sh -c "touch ${_my_tmpdir_testfile}" ${MYSQL_USER} &>/dev/null |
170 |
+ fi |
171 |
+ |
172 |
+ if [[ $? -ne 0 ]] ; then |
173 |
+ die "${MYSQL_USER} user cannot write into tmpdir '${MYSQL_TMPDIR}'!" |
174 |
+ else |
175 |
+ rm "${_my_tmpdir_testfile}" || die |
176 |
+ unset _my_tmpdir_testfile |
177 |
+ fi |
178 |
+ |
179 |
if [[ -n "${MYSQL_LOG_BIN}" && ! -d "${MYSQL_LOG_BIN}" ]] ; then |
180 |
einfo "Creating ${PN} log-bin directory '${MYSQL_LOG_BIN}' ..." |
181 |
install -d -m 770 -o ${MYSQL_USER} -g ${MYSQL_GROUP} "${MYSQL_LOG_BIN}" \ |
182 |
@@ -832,7 +826,7 @@ pkg_config() { |
183 |
su -s /bin/sh -c "touch ${_my_logbin_testfile}" ${MYSQL_USER} &>/dev/null |
184 |
fi |
185 |
|
186 |
- if [[ $? -ne 0 ]]; then |
187 |
+ if [[ $? -ne 0 ]] ; then |
188 |
die "${MYSQL_USER} user cannot write into log-bin directory '${MYSQL_LOG_BIN}'!" |
189 |
else |
190 |
rm "${_my_logbin_testfile}" || die |
191 |
@@ -857,7 +851,7 @@ pkg_config() { |
192 |
su -s /bin/sh -c "touch ${_my_relaylog_testfile}" ${MYSQL_USER} &>/dev/null |
193 |
fi |
194 |
|
195 |
- if [[ $? -ne 0 ]]; then |
196 |
+ if [[ $? -ne 0 ]] ; then |
197 |
die "${MYSQL_USER} user cannot write into relay-log directory '${MYSQL_RELAY_LOG}'!" |
198 |
else |
199 |
rm "${_my_relaylog_testfile}" || die |
200 |
@@ -865,6 +859,44 @@ pkg_config() { |
201 |
fi |
202 |
fi |
203 |
|
204 |
+ local mysql_install_log="$(_mktemp_dry "${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log")" |
205 |
+ if [[ -z "${mysql_install_log}" ]] ; then |
206 |
+ die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_db.XXXXXXXXX.log' failed!" |
207 |
+ else |
208 |
+ # make sure file is writable for MYSQL_USER... |
209 |
+ touch "${mysql_install_log}" || die |
210 |
+ chown ${MYSQL_USER} "${mysql_install_log}" || die |
211 |
+ fi |
212 |
+ |
213 |
+ local mysqld_logfile="$(_mktemp_dry "${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log")" |
214 |
+ if [[ -z "${mysqld_logfile}" ]] ; then |
215 |
+ die "_mktemp_dry() for '${MYSQL_TMPDIR}/install_mysqld.XXXXXXXXX.log' failed!" |
216 |
+ else |
217 |
+ # make sure file is writable for MYSQL_USER... |
218 |
+ touch "${mysqld_logfile}" || die |
219 |
+ chown ${MYSQL_USER} "${mysqld_logfile}" || die |
220 |
+ fi |
221 |
+ |
222 |
+ echo "" |
223 |
+ einfo "Detected settings:" |
224 |
+ einfo "==================" |
225 |
+ einfo "MySQL User:\t\t\t\t${MYSQL_USER}" |
226 |
+ einfo "MySQL Group:\t\t\t\t${MYSQL_GROUP}" |
227 |
+ einfo "MySQL DATA directory:\t\t${MY_DATADIR}" |
228 |
+ einfo "MySQL TMP directory:\t\t\t${MYSQL_TMPDIR}" |
229 |
+ |
230 |
+ if [[ -n "${MYSQL_LOG_BIN}" ]] ; then |
231 |
+ einfo "MySQL Binary Log File location:\t${MYSQL_LOG_BIN}" |
232 |
+ fi |
233 |
+ |
234 |
+ if [[ -n "${MYSQL_RELAY_LOG}" ]] ; then |
235 |
+ einfo "MySQL Relay Log File location:\t${MYSQL_RELAY_LOG}" |
236 |
+ fi |
237 |
+ |
238 |
+ einfo "PID DIR:\t\t\t\t${PID_DIR}" |
239 |
+ einfo "Install db log:\t\t\t${mysql_install_log}" |
240 |
+ einfo "Install server log:\t\t\t${mysqld_logfile}" |
241 |
+ |
242 |
local -a config_files |
243 |
|
244 |
local config_file="${EROOT}/etc/mysql/mysql.d/50-distro-client.cnf" |
245 |
@@ -910,6 +942,8 @@ pkg_config() { |
246 |
;; |
247 |
esac |
248 |
|
249 |
+ echo "Selected authentication plugin: ${MYSQL_DEFAULT_AUTHENTICATION_PLUGIN}" >> "${mysql_install_log}" |
250 |
+ |
251 |
unset user_answer |
252 |
fi |
253 |
|
254 |
@@ -1015,19 +1049,16 @@ pkg_config() { |
255 |
|
256 |
# Prepare timezones, see |
257 |
# https://dev.mysql.com/doc/mysql/en/time-zone-support.html |
258 |
- local tz_sql="${TMPDIR}/tz.sql" |
259 |
+ local tz_sql="$(_mktemp_dry "${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql")" |
260 |
+ [[ -z "${tz_sql}" ]] \ |
261 |
+ && die "_mktemp_dry() for '${MYSQL_TMPDIR}/tz.XXXXXXXXX.sql' failed!" |
262 |
+ |
263 |
echo "USE mysql;" >"${tz_sql}" |
264 |
"${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" >> "${tz_sql}" 2>/dev/null |
265 |
if [[ $? -ne 0 ]] ; then |
266 |
die "mysql_tzinfo_to_sql failed!" |
267 |
fi |
268 |
|
269 |
- chown ${MYSQL_USER} "${tz_sql}" || die |
270 |
- |
271 |
- local mysql_install_log="${TMPDIR}/mysql_install_db.log" |
272 |
- touch "${mysql_install_log}" || die |
273 |
- chown ${MYSQL_USER} "${mysql_install_log}" || die |
274 |
- |
275 |
# --initialize-insecure will not set root password |
276 |
# --initialize would set a random one in the log which we don't need as we set it ourselves |
277 |
local cmd=( |
278 |
@@ -1050,15 +1081,13 @@ pkg_config() { |
279 |
die "Failed to initialize ${PN} data directory. Please review '${mysql_install_log}'!" |
280 |
fi |
281 |
|
282 |
+ rm "${tz_sql}" || die |
283 |
+ |
284 |
local x=${RANDOM} |
285 |
- local socket="${EROOT}/run/mysqld/mysqld${x}.sock" |
286 |
- local pidfile="${EROOT}/run/mysqld/mysqld${x}.pid" |
287 |
+ local socket="${EROOT}${PID_DIR}/mysqld${x}.sock" |
288 |
+ local pidfile="${EROOT}${PID_DIR}/mysqld${x}.pid" |
289 |
unset x |
290 |
|
291 |
- local mysqld_logfile="${TMPDIR}/mysqld.log" |
292 |
- touch "${mysqld_logfile}" || die |
293 |
- chown ${MYSQL_USER} "${mysqld_logfile}" || die |
294 |
- |
295 |
cmd=( |
296 |
"${mysqld_binary}" |
297 |
"${mysqld_options[@]}" |