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/percona-server/
Date: Mon, 25 May 2020 11:57:20
Message-Id: 1590407767.aea109af79202aa443e04d7861951d822fc8761f.whissi@gentoo
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[@]}"