1 |
commit: b19f6190519f94450e4aa23cde091b8fd24d763d |
2 |
Author: Brian Evans <grknight <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Sep 29 02:28:36 2017 +0000 |
4 |
Commit: Brian Evans <grknight <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Sep 29 02:30:51 2017 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b19f6190 |
7 |
|
8 |
mysql*.eclass: Tighten up creation of directories |
9 |
|
10 |
eclass/mysql-cmake.eclass | 6 +++--- |
11 |
eclass/mysql-multilib-r1.eclass | 34 ++++++++++++---------------------- |
12 |
eclass/mysql-multilib.eclass | 23 +++++++++-------------- |
13 |
eclass/mysql-v2.eclass | 23 +++++++++-------------- |
14 |
4 files changed, 33 insertions(+), 53 deletions(-) |
15 |
|
16 |
diff --git a/eclass/mysql-cmake.eclass b/eclass/mysql-cmake.eclass |
17 |
index 25d2c3c80e9..2963a97ada8 100644 |
18 |
--- a/eclass/mysql-cmake.eclass |
19 |
+++ b/eclass/mysql-cmake.eclass |
20 |
@@ -338,7 +338,7 @@ mysql-cmake_src_prepare() { |
21 |
rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga" |
22 |
fi |
23 |
|
24 |
- epatch_user |
25 |
+ cmake-utils_src_prepare |
26 |
} |
27 |
|
28 |
# @FUNCTION: mysql-cmake_src_configure |
29 |
@@ -511,14 +511,14 @@ mysql-cmake_src_install() { |
30 |
if [[ ${PREVIOUS_DATADIR} != "yes" ]] ; then |
31 |
dodir "${MY_DATADIR#${EPREFIX}}" |
32 |
keepdir "${MY_DATADIR#${EPREFIX}}" |
33 |
- chown -R mysql:mysql "${D}/${MY_DATADIR}" |
34 |
+ nonfatal fowners -R mysql:mysql "${D}/${MY_DATADIR}" |
35 |
fi |
36 |
|
37 |
diropts "-m0755" |
38 |
for folder in "${MY_LOGDIR#${EPREFIX}}" ; do |
39 |
dodir "${folder}" |
40 |
keepdir "${folder}" |
41 |
- chown -R mysql:mysql "${ED}/${folder}" |
42 |
+ nonfatal fowners -R mysql:mysql "${ED}/${folder}" |
43 |
done |
44 |
fi |
45 |
|
46 |
|
47 |
diff --git a/eclass/mysql-multilib-r1.eclass b/eclass/mysql-multilib-r1.eclass |
48 |
index 54954911faa..fcf3b4ef9d1 100644 |
49 |
--- a/eclass/mysql-multilib-r1.eclass |
50 |
+++ b/eclass/mysql-multilib-r1.eclass |
51 |
@@ -342,11 +342,7 @@ mysql-multilib-r1_src_prepare() { |
52 |
echo > "${S}/support-files/SELinux/CMakeLists.txt" || die |
53 |
fi |
54 |
|
55 |
- if [[ "${EAPI}x" == "5x" ]] ; then |
56 |
- epatch_user |
57 |
- else |
58 |
- default |
59 |
- fi |
60 |
+ cmake-utils_src_prepare |
61 |
} |
62 |
|
63 |
# @FUNCTION: mysql-multilib-r1_src_configure |
64 |
@@ -608,14 +604,14 @@ multilib_src_install() { |
65 |
if [[ ${PREVIOUS_DATADIR} != "yes" ]] ; then |
66 |
dodir "${MY_DATADIR#${EPREFIX}}" |
67 |
keepdir "${MY_DATADIR#${EPREFIX}}" |
68 |
- chown -R mysql:mysql "${D}/${MY_DATADIR}" |
69 |
+ nonfatal fowners -R mysql:mysql "${D}/${MY_DATADIR}" |
70 |
fi |
71 |
|
72 |
diropts "-m0755" |
73 |
for folder in "${MY_LOGDIR#${EPREFIX}}" ; do |
74 |
dodir "${folder}" |
75 |
keepdir "${folder}" |
76 |
- chown -R mysql:mysql "${ED}/${folder}" |
77 |
+ nonfatal fowners -R mysql:mysql "${ED}/${folder}" |
78 |
done |
79 |
|
80 |
einfo "Including support files and sample configurations" |
81 |
@@ -684,15 +680,9 @@ mysql-multilib-r1_pkg_postinst() { |
82 |
# Make sure the vars are correctly initialized |
83 |
mysql_init_vars |
84 |
|
85 |
- # Check FEATURES="collision-protect" before removing this |
86 |
+ # Create log directory securely if it does not exist |
87 |
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" |
88 |
|
89 |
- # Secure the logfiles |
90 |
- touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} |
91 |
- chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* |
92 |
- chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* |
93 |
- |
94 |
- # Minimal builds don't have the MySQL server |
95 |
if use server ; then |
96 |
docinto "support-files" |
97 |
for script in \ |
98 |
@@ -929,12 +919,14 @@ mysql-multilib-r1_pkg_config() { |
99 |
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it |
100 |
PID_DIR="${EROOT}/var/run/mysqld" |
101 |
if [[ ! -d "${PID_DIR}" ]]; then |
102 |
- mkdir -p "${PID_DIR}" || die "Could not create pid directory" |
103 |
- chown mysql:mysql "${PID_DIR}" || die "Could not set ownership on pid directory" |
104 |
- chmod 755 "${PID_DIR}" || die "Could not set permissions on pid directory" |
105 |
+ install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory" |
106 |
+ fi |
107 |
+ |
108 |
+ if [[ ! -d "${MY_DATADIR}" ]]; then |
109 |
+ install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory" |
110 |
fi |
111 |
|
112 |
- pushd "${TMPDIR}" &>/dev/null |
113 |
+ pushd "${TMPDIR}" &>/dev/null || die |
114 |
|
115 |
# Filling timezones, see |
116 |
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html |
117 |
@@ -957,17 +949,15 @@ mysql-multilib-r1_pkg_config() { |
118 |
fi |
119 |
cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT}/${MY_DATADIR}" "--tmpdir=${ROOT}/${MYSQL_TMPDIR}" ${initialize_options} ) |
120 |
einfo "Command: ${cmd[*]}" |
121 |
- "${cmd[@]}" \ |
122 |
+ su -s /bin/sh -c "${cmd[*]}" mysql \ |
123 |
>"${TMPDIR}"/mysql_install_db.log 2>&1 |
124 |
if [ $? -ne 0 ]; then |
125 |
grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 |
126 |
die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
127 |
fi |
128 |
- popd &>/dev/null |
129 |
+ popd &>/dev/null || die |
130 |
[[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ |
131 |
|| die "MySQL databases not installed" |
132 |
- chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
133 |
- chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
134 |
|
135 |
local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock" |
136 |
local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid" |
137 |
|
138 |
diff --git a/eclass/mysql-multilib.eclass b/eclass/mysql-multilib.eclass |
139 |
index aa0930e4475..b172bc0c40a 100644 |
140 |
--- a/eclass/mysql-multilib.eclass |
141 |
+++ b/eclass/mysql-multilib.eclass |
142 |
@@ -843,14 +843,9 @@ mysql-multilib_pkg_postinst() { |
143 |
# Make sure the vars are correctly initialized |
144 |
mysql_init_vars |
145 |
|
146 |
- # Check FEATURES="collision-protect" before removing this |
147 |
+ # Create log directory securely if it does not exist |
148 |
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" |
149 |
|
150 |
- # Secure the logfiles |
151 |
- touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} |
152 |
- chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* |
153 |
- chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* |
154 |
- |
155 |
# Minimal builds don't have the MySQL server |
156 |
if use_if_iuse minimal ; then |
157 |
: |
158 |
@@ -1070,28 +1065,28 @@ mysql-multilib_pkg_config() { |
159 |
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it |
160 |
PID_DIR="${EROOT}/var/run/mysqld" |
161 |
if [[ ! -d "${PID_DIR}" ]]; then |
162 |
- mkdir -p "${PID_DIR}" || die "Could not create pid directory" |
163 |
- chown mysql:mysql "${PID_DIR}" || die "Could not set ownership on pid directory" |
164 |
- chmod 755 "${PID_DIR}" || die "Could not set permissions on pid directory" |
165 |
+ install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory" |
166 |
+ fi |
167 |
+ |
168 |
+ if [[ ! -d "${MY_DATADIR}" ]]; then |
169 |
+ install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory" |
170 |
fi |
171 |
|
172 |
- pushd "${TMPDIR}" &>/dev/null |
173 |
+ pushd "${TMPDIR}" &>/dev/null || die |
174 |
#cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' '--basedir=${EPREFIX}/usr' ${options}" |
175 |
cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db |
176 |
[[ -f ${cmd} ]] || cmd=${EROOT}usr/bin/mysql_install_db |
177 |
cmd="'$cmd' '--basedir=${EPREFIX}/usr' ${options} '--datadir=${ROOT}/${MY_DATADIR}' '--tmpdir=${ROOT}/${MYSQL_TMPDIR}'" |
178 |
einfo "Command: $cmd" |
179 |
- eval $cmd \ |
180 |
+ su -s /bin/sh -c "${cmd}" mysql \ |
181 |
>"${TMPDIR}"/mysql_install_db.log 2>&1 |
182 |
if [ $? -ne 0 ]; then |
183 |
grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 |
184 |
die "Failed to run mysql_install_db. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
185 |
fi |
186 |
- popd &>/dev/null |
187 |
+ popd &>/dev/null || die |
188 |
[[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ |
189 |
|| die "MySQL databases not installed" |
190 |
- chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
191 |
- chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
192 |
|
193 |
# Filling timezones, see |
194 |
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html |
195 |
|
196 |
diff --git a/eclass/mysql-v2.eclass b/eclass/mysql-v2.eclass |
197 |
index 3734e19bca9..53cba1eb729 100644 |
198 |
--- a/eclass/mysql-v2.eclass |
199 |
+++ b/eclass/mysql-v2.eclass |
200 |
@@ -587,14 +587,9 @@ mysql-v2_pkg_postinst() { |
201 |
# Make sure the vars are correctly initialized |
202 |
mysql_init_vars |
203 |
|
204 |
- # Check FEATURES="collision-protect" before removing this |
205 |
+ # Create log directory securely if it does not exist |
206 |
[[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" |
207 |
|
208 |
- # Secure the logfiles |
209 |
- touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} |
210 |
- chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* |
211 |
- chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* |
212 |
- |
213 |
# Minimal builds don't have the MySQL server |
214 |
if ! use minimal ; then |
215 |
docinto "support-files" |
216 |
@@ -821,28 +816,28 @@ mysql-v2_pkg_config() { |
217 |
# Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it |
218 |
PID_DIR="${EROOT}/var/run/mysqld" |
219 |
if [[ ! -d "${PID_DIR}" ]]; then |
220 |
- mkdir -p "${PID_DIR}" || die "Could not create pid directory" |
221 |
- chown mysql:mysql "${PID_DIR}" || die "Could not set ownership on pid directory" |
222 |
- chmod 755 "${PID_DIR}" || die "Could not set permissions on pid directory" |
223 |
+ install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory" |
224 |
+ fi |
225 |
+ |
226 |
+ if [[ ! -d "${MY_DATADIR}" ]]; then |
227 |
+ install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory" |
228 |
fi |
229 |
|
230 |
- pushd "${TMPDIR}" &>/dev/null |
231 |
+ pushd "${TMPDIR}" &>/dev/null || die |
232 |
#cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' '--basedir=${EPREFIX}/usr' ${options}" |
233 |
cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db |
234 |
[[ -f ${cmd} ]] || cmd=${EROOT}usr/bin/mysql_install_db |
235 |
cmd="'$cmd' '--basedir=${EPREFIX}/usr' ${options} '--datadir=${ROOT}/${MY_DATADIR}' '--tmpdir=${ROOT}/${MYSQL_TMPDIR}'" |
236 |
einfo "Command: $cmd" |
237 |
- eval $cmd \ |
238 |
+ su -s /bin/sh -c "${cmd}" mysql \ |
239 |
>"${TMPDIR}"/mysql_install_db.log 2>&1 |
240 |
if [ $? -ne 0 ]; then |
241 |
grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 |
242 |
die "Failed to run mysql_install_db. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
243 |
fi |
244 |
- popd &>/dev/null |
245 |
+ popd &>/dev/null || die |
246 |
[[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ |
247 |
|| die "MySQL databases not installed" |
248 |
- chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
249 |
- chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
250 |
|
251 |
# Filling timezones, see |
252 |
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html |