Gentoo Archives: gentoo-commits

From: Brian Evans <grknight@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/
Date: Fri, 29 Sep 2017 02:31:02
Message-Id: 1506652251.b19f6190519f94450e4aa23cde091b8fd24d763d.grknight@gentoo
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