/[gentoo-x86]/eclass/mysql.eclass
Gentoo

Diff of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.25 Revision 1.27
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2005 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.25 2006/03/16 20:39:00 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.27 2006/04/10 21:35:55 vivo Exp $
4# $ID: $
4 5
5# Author: Francesco Riosa <vivo at gentoo.org> 6# Author: Francesco Riosa <vivo at gentoo.org>
6# Maintainer: Francesco Riosa <vivo at gentoo.org> 7# Maintainer: Luca Longinotti <chtekk at gentoo.org>
8
9# MYSQL_VERSION_ID will be
10# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo magic number, all [0..99]
11# this is an important piece, becouse from this variable depends many of the
12# choices the ebuild will do.
13# in particular the code below work only with PVR like "5.0.18-r3"
14# the result with the previous PVR is "5001803"
15if [[ -z ${MYSQL_VERSION_ID} ]] ; then
16 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
17 for vatom in 0 1 2 3; do
18 # pad to lenght 2
19 tpv[${vatom}]="00${tpv[${vatom}]}"
20 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
21 done
22 # strip leading "0" (otherwise it's considered an octal number from bash)
23 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
24fi
25
26[[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20060410"
27
28DEPEND="${DEPEND}
29 >=sys-libs/readline-4.1
30 berkdb? ( sys-apps/ed )
31 ssl? ( >=dev-libs/openssl-0.9.6d )
32 userland_GNU? ( sys-process/procps )
33 >=sys-libs/zlib-1.2.3
34 >=sys-apps/texinfo-4.7-r1
35 >=sys-apps/sed-4"
36RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
37# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
38PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
7 39
8inherit eutils flag-o-matic gnuconfig autotools mysql_fx 40inherit eutils flag-o-matic gnuconfig autotools mysql_fx
9 41
10#major, minor only in the slot 42SLOT=0
11SLOT=$(( ${MYSQL_VERSION_ID} / 10000 ))
12 43
13# shorten the path because the socket path length must be shorter than 107 chars 44# shorten the path because the socket path length must be shorter than 107 chars
14# and we will run a mysql server during test phase 45# and we will run a mysql server during test phase
15S="${WORKDIR}/${PN}" 46S="${WORKDIR}/${PN}"
16 47
33&& IUSE="${IUSE} max-idx-128" 64&& IUSE="${IUSE} max-idx-128"
34 65
35mysql_version_is_at_least "5.01.00.00" \ 66mysql_version_is_at_least "5.01.00.00" \
36&& IUSE="${IUSE} innodb" 67&& IUSE="${IUSE} innodb"
37 68
38EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_prerm pkg_postrm 69EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
70 pkg_postinst pkg_config pkg_postrm
39 71
40# void mysql_init_vars() 72# void mysql_init_vars()
41# 73#
42# initialize global variables 74# initialize global variables
43# 2005-11-19 <vivo at gentoo.org> 75# 2005-11-19 <vivo at gentoo.org>
44mysql_init_vars() { 76mysql_init_vars() {
45 77
46 if [[ ${SLOT} -eq 0 ]] ; then
47 MY_SUFFIX=""
48 else
49 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
50 fi
51 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 78 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql"}
52 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 79 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
53 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 80 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql$"}
54 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 81 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
55 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 82 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
56 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 83 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
57 84
58 if [ -z "${DATADIR}" ]; then 85 if [ -z "${DATADIR}" ]; then
59 DATADIR="" 86 DATADIR=""
60 if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then 87 if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then
61 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null | sed -ne '/datadir/s|^--datadir=||p' | tail -n1` 88 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
89 | sed -ne '/datadir/s|^--datadir=||p' \
90 | tail -n1`
62 if [ -z "${DATADIR}" ]; then 91 if [ -z "${DATADIR}" ]; then
63 if useq "srvdir" ; then 92 if useq "srvdir" ; then
64 DATADIR="${ROOT}/srv/localhost/mysql${MY_SUFFIX}/datadir" 93 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
65 else 94 else
66 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" | sed -e 's/.*=\s*//'` 95 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
96 | sed -e 's/.*=\s*//'`
67 fi 97 fi
68 fi 98 fi
69 fi 99 fi
70 if [ -z "${DATADIR}" ]; then 100 if [ -z "${DATADIR}" ]; then
71 if useq "srvdir" ; then 101 if useq "srvdir" ; then
72 DATADIR="${ROOT}/srv/localhost/mysql${MY_SUFFIX}/datadir" 102 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
73 else 103 else
74 DATADIR="${MY_LOCALSTATEDIR}" 104 DATADIR="${MY_LOCALSTATEDIR}"
75 fi 105 fi
76 einfo "Using default DATADIR" 106 einfo "Using default DATADIR"
77 fi 107 fi
88 export PREVIOUS_DATADIR 118 export PREVIOUS_DATADIR
89 fi 119 fi
90 fi 120 fi
91 fi 121 fi
92 122
93 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 123 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
94 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 124 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
95 export MY_INCLUDEDIR 125 export MY_INCLUDEDIR
96 export DATADIR 126 export DATADIR
97} 127}
98 128
105 135
106mysql_src_unpack() { 136mysql_src_unpack() {
107 137
108 mysql_init_vars 138 mysql_init_vars
109 139
110 if useq static && useq ssl; then 140 if useq "static" && useq "ssl" ; then
111 local msg="MySQL does not support building statically with SSL support" 141 local msg="MySQL does not support building statically with SSL support"
112 eerror "${msg}" 142 eerror "${msg}"
113 die "${msg}" 143 die "${msg}"
114 fi 144 fi
115 145
116 if mysql_version_is_at_least "4.01.03.00" \ 146 if mysql_version_is_at_least "4.01.03.00" \
117 && useq cluster \ 147 && useq "cluster" \
118 || useq extraengine \ 148 || useq "extraengine" \
119 && useq minimal ; then 149 && useq "minimal" ; then
120 die "USEs cluster, extraengine conflicts with \"minimal\"" 150 die "USEs cluster, extraengine conflicts with \"minimal\""
121 fi 151 fi
122 152
123 unpack ${A} || die 153 unpack ${A} || die
124 154
139 find . -name 'Makefile.am' \ 169 find . -name 'Makefile.am' \
140 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 170 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
141 171
142 # Manage mysqlmanager 172 # Manage mysqlmanager
143 mysql_version_is_at_least "5.00.15.00" \ 173 mysql_version_is_at_least "5.00.15.00" \
144 && sed -i -e "s!@GENTOO_EXT@!${MY_SUFFIX}!g" \ 174 && sed -i -e "s!@GENTOO_EXT@!!g" \
145 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \ 175 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
146 "${S}/server-tools/instance-manager/Makefile.am" 176 "${S}/server-tools/instance-manager/Makefile.am"
147 177
148 # remove what need to be recreated, so we are sure it's actually done 178 # remove what need to be recreated, so we are sure it's actually done
149 find . -name Makefile -o -name Makefile.in -o -name configure -exec rm -f {} \; 179 find . -name Makefile \
180 -o -name Makefile.in \
181 -o -name configure \
182 -exec rm -f {} \;
150 rm ltmain.sh 183 rm ltmain.sh
151 184
152 local rebuilddirlist d buildstep bdbdir 185 local rebuilddirlist d buildstep bdbdir
153 186
154 if mysql_version_is_at_least "5.01.00.00" ; then 187 if mysql_version_is_at_least "5.01.00.00" ; then
165 AT_GNUCONF_UPDATE="yes" eautoreconf 198 AT_GNUCONF_UPDATE="yes" eautoreconf
166 popd &>/dev/null 199 popd &>/dev/null
167 done 200 done
168 201
169 #TODO berkdb in 5.1 need to be worked on 202 #TODO berkdb in 5.1 need to be worked on
170 if useq berkdb && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" 203 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99"
171 then 204 then
172 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh" 205 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh"
173 pushd "${bdbdir}" && sh s_all || die "failed bdb reconfigure" &>/dev/null 206 pushd "${bdbdir}" \
207 && sh s_all \
208 || die "failed bdb reconfigure" \
209 &>/dev/null
174 popd &>/dev/null 210 popd &>/dev/null
175 fi 211 fi
176 212
177} 213}
178 214
179mysql_src_compile() { 215mysql_src_compile() {
180 216
181 mysql_init_vars 217 mysql_init_vars
182 local myconf 218 local myconf
183 219
184 if useq static ; then 220 if useq "static" ; then
185 myconf="${myconf} --with-mysqld-ldflags=-all-static" 221 myconf="${myconf} --with-mysqld-ldflags=-all-static"
186 myconf="${myconf} --with-client-ldflags=-all-static" 222 myconf="${myconf} --with-client-ldflags=-all-static"
187 myconf="${myconf} --disable-shared" 223 myconf="${myconf} --disable-shared"
188 else 224 else
189 myconf="${myconf} --enable-shared --enable-static" 225 myconf="${myconf} --enable-shared --enable-static"
190 fi 226 fi
191 227
192 #myconf="${myconf} `use_with tcpd libwrap`" 228 #myconf="${myconf} `use_with tcpd libwrap`"
193 myconf="${myconf} --without-libwrap" 229 myconf="${myconf} --without-libwrap"
194 230
195 if useq ssl ; then 231 if useq "ssl" ; then
196 # --with-vio is not needed anymore, it's on by default and 232 # --with-vio is not needed anymore, it's on by default and
197 # has been removed from configure 233 # has been removed from configure
198 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio" 234 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
199 if mysql_version_is_at_least "5.00.06.00" ; then 235 if mysql_version_is_at_least "5.00.06.00" ; then
200 # yassl-0.96 is young break with gcc-4.0 || amd64 236 # yassl-0.96 is young break with gcc-4.0 || amd64
205 fi 241 fi
206 else 242 else
207 myconf="${myconf} --without-openssl" 243 myconf="${myconf} --without-openssl"
208 fi 244 fi
209 245
210 if useq debug; then 246 if useq "debug"; then
211 myconf="${myconf} --with-debug=full" 247 myconf="${myconf} --with-debug=full"
212 else 248 else
213 myconf="${myconf} --without-debug" 249 myconf="${myconf} --without-debug"
214 mysql_version_is_at_least "4.01.03.00" && useq cluster && myconf="${myconf} --without-ndb-debug" 250 mysql_version_is_at_least "4.01.03.00" \
215 fi 251 && useq "cluster" \
216
217 # benchmarking stuff needs perl
218 # and shouldn't be bothered with on minimal builds
219 if useq perl && ! useq minimal; then
220 myconf="${myconf} --with-bench"
221 else
222 myconf="${myconf} --without-bench" 252 && myconf="${myconf} --without-ndb-debug"
223 fi 253 fi
224 254
225 # these are things we exclude from a minimal build 255 # these are things we exclude from a minimal build
226 # note that the server actually does get built and installed 256 # note that the server actually does get built and installed
227 # but we then delete it before packaging. 257 # but we then delete it before packaging.
228 local minimal_exclude_list="server embedded-server extra-tools innodb" 258 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
259
229 if ! useq minimal; then 260 if ! useq "minimal" ; then
230 for i in ${minimal_exclude_list}; do
231 myconf="${myconf} --with-${i}" 261 myconf="${myconf} --with-server"
232 done 262 myconf="${myconf} --with-extra-tools"
233 263
234 if useq static ; then 264 if useq "static" ; then
235 myconf="${myconf} --without-raid" 265 myconf="${myconf} --without-raid"
236 ewarn "disabling raid support, has problem with static" 266 ewarn "disabling raid support, has problem with static"
237 else 267 else
238 if mysql_version_is_at_least "5.00.00.00" ; then 268 if mysql_version_is_at_least "5.00.00.00" ; then
239 myconf="${myconf} --without-raid" 269 myconf="${myconf} --without-raid"
263 myconf="${myconf} --with-extra-charsets=all" 293 myconf="${myconf} --with-extra-charsets=all"
264 294
265 #The following fix is due to a bug with bdb on sparc's. See: 295 #The following fix is due to a bug with bdb on sparc's. See:
266 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 296 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
267 # it comes down to non-64-bit safety problems 297 # it comes down to non-64-bit safety problems
268 if useq sparc || useq alpha || useq hppa || useq mips || useq amd64 \ 298 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \
269 || mysql_check_version_range "5.01.00.00 to 5.01.06.99" 299 || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
270 then 300 then
271 ewarn "bdb berkeley-db disabled due to arch or version" 301 ewarn "bdb berkeley-db disabled due to arch or version"
272 myconf="${myconf} --without-berkeley-db" 302 myconf="${myconf} --without-berkeley-db"
273 else 303 else
274 #TODO berkdb in 5.1 need to be worked on 304 #TODO berkdb in 5.1 need to be worked on
275 useq berkdb && \ 305 useq "berkdb" && \
276 ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \ 306 ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \
277 && myconf="${myconf} --with-berkeley-db=./bdb" \ 307 && myconf="${myconf} --with-berkeley-db=./bdb" \
278 || myconf="${myconf} --without-berkeley-db" 308 || myconf="${myconf} --without-berkeley-db"
279 fi 309 fi
280 310
282 #myconf="${myconf} $(use_with geometry)" 312 #myconf="${myconf} $(use_with geometry)"
283 myconf="${myconf} --with-geometry" 313 myconf="${myconf} --with-geometry"
284 myconf="${myconf} $(use_with cluster ndbcluster)" 314 myconf="${myconf} $(use_with cluster ndbcluster)"
285 fi 315 fi
286 316
287 mysql_version_is_at_least "4.01.11.00" && myconf="${myconf} `use_with big-tables`" 317 mysql_version_is_at_least "4.01.11.00" \
318 && myconf="${myconf} `use_with big-tables`"
288 319
289 mysql_version_is_at_least "5.01.06.00" && myconf="${myconf} --with-ndb-binlog" 320 mysql_version_is_at_least "5.01.06.00" \
321 && myconf="${myconf} --with-ndb-binlog"
290 322
291 if useq embedded ; then 323 if useq "embedded" ; then
292 #REMIND, need the privilege control enabled ? 324 #REMIND, need the privilege control enabled ?
293 myconf="${myconf} --without-embedded-privilege-control" 325 myconf="${myconf} --without-embedded-privilege-control"
294 myconf="${myconf} --with-embedded-server" 326 myconf="${myconf} --with-embedded-server"
295 else 327 else
296 myconf="${myconf} --without-embedded-privilege-control" 328 myconf="${myconf} --without-embedded-privilege-control"
297 myconf="${myconf} --without-embedded-server" 329 myconf="${myconf} --without-embedded-server"
298 fi 330 fi
331
332 # benchmarking stuff needs perl
333 if useq "perl" ; then
334 myconf="${myconf} --with-bench"
335 else
336 myconf="${myconf} --without-bench"
337 fi
299 else 338 else
300 for i in ${minimal_exclude_list}; do 339 for i in ${minimal_exclude_list}; do
301 myconf="${myconf} --without-${i}" 340 myconf="${myconf} --without-${i}"
302 done 341 done
303 myconf="${myconf} --without-berkeley-db" 342 myconf="${myconf} --without-berkeley-db"
304 myconf="${myconf} --with-extra-charsets=none" 343 myconf="${myconf} --with-extra-charsets=none"
305 fi 344 fi
306 345
307 if mysql_version_is_at_least "4.01.03.00" && useq extraengine; then 346 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine"; then
308 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 347 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
309 myconf="${myconf} --with-archive-storage-engine" 348 myconf="${myconf} --with-archive-storage-engine"
310 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 349 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
311 350
312 mysql_version_is_at_least "4.01.04.00" \ 351 mysql_version_is_at_least "4.01.04.00" \
336 375
337 if mysql_version_is_at_least "5.01.05.00" ; then 376 if mysql_version_is_at_least "5.01.05.00" ; then
338 myconf="${myconf} --with-row-based-replication" 377 myconf="${myconf} --with-row-based-replication"
339 fi 378 fi
340 379
341 #TODO rechek again later, had problem with assembler enabled 380 #TODO rechek again later, had problem with assembler enabled
342 # and some combination of use-flags with 5.1 381 # and some combination of use-flags with 5.1
343 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then 382 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
344 myconf="${myconf} --disable-assembler" 383 myconf="${myconf} --disable-assembler"
345 else 384 else
346 myconf="${myconf} --enable-assembler" 385 myconf="${myconf} --enable-assembler"
356 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 395 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
357 mysql_version_is_at_least "5.00.00.00" \ 396 mysql_version_is_at_least "5.00.00.00" \
358 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 397 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
359 398
360 econf \ 399 econf \
361 --program-suffix="${MY_SUFFIX}" \
362 --libexecdir="/usr/sbin" \ 400 --libexecdir="/usr/sbin" \
363 --sysconfdir="${MY_SYSCONFDIR}" \ 401 --sysconfdir="${MY_SYSCONFDIR}" \
364 --localstatedir="${MY_LOCALSTATEDIR}" \ 402 --localstatedir="${MY_LOCALSTATEDIR}" \
365 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 403 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
366 --libdir="${MY_LIBDIR}" \ 404 --libdir="${MY_LIBDIR}" \
370 --with-mysqld-user=mysql \ 408 --with-mysqld-user=mysql \
371 --with-client-ldflags=-lstdc++ \ 409 --with-client-ldflags=-lstdc++ \
372 --enable-thread-safe-client \ 410 --enable-thread-safe-client \
373 --with-comment="Gentoo Linux ${PF}" \ 411 --with-comment="Gentoo Linux ${PF}" \
374 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \ 412 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
375 --with-lib-ccflags="-fPIC" \
376 --without-readline \ 413 --without-readline \
377 --without-docs \ 414 --without-docs \
378 ${myconf} || die "bad ./configure" 415 ${myconf} || die "bad ./configure"
379 416
380 # TODO Move this before autoreconf !!! 417 # TODO Move this before autoreconf !!!
392 429
393 insinto "${MY_INCLUDEDIR}" 430 insinto "${MY_INCLUDEDIR}"
394 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 431 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
395 432
396 # convenience links 433 # convenience links
397 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 434 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
398 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 435 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
399 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 436 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
400 437
401 # various junk (my-*.cnf moved elsewhere) 438 # various junk (my-*.cnf moved elsewhere)
402 rm -rf "${D}/usr/share/info" 439 rm -rf "${D}/usr/share/info"
403 for removeme in "mysql-log-rotate" mysql.server* \ 440 for removeme in "mysql-log-rotate" mysql.server* \
404 binary-configure* my-*.cnf mi_test_all* 441 binary-configure* my-*.cnf mi_test_all*
405 do 442 do
406 rm -f ${D}/usr/share/mysql/${removeme} 443 rm -f ${D}/usr/share/mysql/${removeme}
407 done 444 done
408 445
409 # TODO change at Makefile-am level
410 for moveme in "mysql_fix_privilege_tables.sql" \
411 "fill_help_tables.sql" "ndb-config-2-node.ini"
412 do
413 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
414 done
415
416 if [[ -n "${MY_SUFFIX}" ]] ; then
417 local notcatched=$(ls "${D}/usr/share/mysql"/*)
418 if [[ -n "${notcatched}" ]] ; then
419 ewarn "QA notice"
420 ewarn "${notcatched} files in /usr/share/mysql"
421 ewarn "bug mysql-herd to manage them"
422 fi
423 rm -rf "${D}/usr/share/mysql"
424 fi
425
426 # clean up stuff for a minimal build 446 # clean up stuff for a minimal build
427 # this is anything server-specific 447 # this is anything server-specific
428 if useq minimal; then 448 if useq "minimal" ; then
429 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench} 449 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench}
430 rm -f ${D}/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam} 450 rm -f ${D}/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam}
431 rm -f "${D}/usr/sbin/mysqld${MY_SUFFIX}" 451 rm -f "${D}/usr/sbin/mysqld"
432 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 452 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
433 fi 453 fi
434 454
435 # config stuff 455 # config stuff
436 insinto "${MY_SYSCONFDIR}" 456 insinto "${MY_SYSCONFDIR}"
437 doins scripts/mysqlaccess.conf 457 doins scripts/mysqlaccess.conf
438 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \ 458 sed -e "s!@MY_SUFFIX@!!g" \
439 -e "s!@DATADIR@!${DATADIR}!g" \ 459 -e "s!@DATADIR@!${DATADIR}!g" \
440 "${FILESDIR}/my.cnf-4.1-r1" \ 460 "${FILESDIR}/my.cnf-4.1-r1" \
441 > "${TMPDIR}/my.cnf.ok" 461 > "${TMPDIR}/my.cnf.ok"
442 newins "${TMPDIR}/my.cnf.ok" my.cnf 462 newins "${TMPDIR}/my.cnf.ok" my.cnf
443 463
445 newins "${FILESDIR}/mysql.conf.d-r1" "mysql" 465 newins "${FILESDIR}/mysql.conf.d-r1" "mysql"
446 mysql_version_is_at_least "5.00.11.00" \ 466 mysql_version_is_at_least "5.00.11.00" \
447 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager" 467 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
448 468
449 # minimal builds don't have the server 469 # minimal builds don't have the server
450 if ! useq minimal; then 470 if ! useq "minimal" ; then
451 exeinto /etc/init.d 471 exeinto /etc/init.d
452 newexe "${FILESDIR}/mysql.rc6-r3" "mysql" 472 newexe "${FILESDIR}/mysql.rc6-r3" "mysql"
453 473
454 mysql_version_is_at_least "5.00.11.00" \ 474 mysql_version_is_at_least "5.00.11.00" \
455 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager" 475 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
456 insinto /etc/logrotate.d 476 insinto /etc/logrotate.d
457 sed -e "s!___MY_SUFFIX___!${MY_SUFFIX}!g" \
458 "${FILESDIR}/logrotate-slot.mysql" \
459 > "${TMPDIR}/logrotate.mysql"
460 newins "${TMPDIR}/logrotate.mysql" "mysql${MY_SUFFIX}" 477 newins "${FILESDIR}/logrotate.mysql" "mysql"
461 478
462 #empty dirs... 479 #empty dirs...
463 diropts "-m0750" 480 diropts "-m0750"
464 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 481 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
465 dodir "${DATADIR}" 482 dodir "${DATADIR}"
476 fi 493 fi
477 494
478 # docs 495 # docs
479 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 496 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
480 # minimal builds don't have the server 497 # minimal builds don't have the server
481 if ! useq minimal; then 498 if ! useq "minimal" ; then
482 docinto "support-files" 499 docinto "support-files"
483 for script in \ 500 for script in \
484 support-files/my-*.cnf \ 501 support-files/my-*.cnf \
485 support-files/magic \ 502 support-files/magic \
486 support-files/ndb-config-2-node.ini 503 support-files/ndb-config-2-node.ini
492 for script in scripts/mysql* ; do 509 for script in scripts/mysql* ; do
493 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 510 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
494 done 511 done
495 fi 512 fi
496 513
497 # oops, temporary fix 514 ROOT="${D}" mysql_lib_symlinks
498 mysql_check_version_range "5.00.16.00 to 5.00.18.99" \
499 && cp -f \
500 "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0" \
501 "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql"
502
503 if [[ ${SLOT} -gt 0 ]] ; then
504 # MOVED HERE DUE TO BUG #121445
505 # create a list of files, to be used
506 # by external utilities
507 mkdir -p "${D}/var/lib/eselect/mysql/"
508 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
509 pushd "${D}/" &>/dev/null
510 find usr/bin/ usr/sbin/ \
511 -type f -name "*${MY_SUFFIX}*" \
512 -and -not -name "mysql_config${MY_SUFFIX}" \
513 > "${filelist}"
514 find usr/share/man \
515 -type f -name "*${MY_SUFFIX}*" \
516 | sed -e 's/$/.gz/' \
517 >> "${filelist}"
518 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
519 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
520 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
521 popd &>/dev/null
522 fi
523
524 # It's safer portage wis doing this in instal, but we can't
525 # if it's a slotted install
526 [[ ${SLOT} -eq 0 ]] && ROOT="${D}" mysql_lib_symlinks
527} 515}
528 516
529mysql_pkg_preinst() { 517mysql_pkg_preinst() {
530 518
531 enewgroup mysql 60 || die "problem adding group mysql" 519 enewgroup mysql 60 || die "problem adding group mysql"
534} 522}
535 523
536mysql_pkg_postinst() { 524mysql_pkg_postinst() {
537 525
538 mysql_init_vars 526 mysql_init_vars
539 # slotted, manage lib symlinks on the real file-system
540 # to cope with other version installed
541 [[ ${SLOT} -ne 0 ]] && mysql_lib_symlinks
542 527
543 # mind at FEATURES=collision-protect before to remove this 528 # mind at FEATURES=collision-protect before to remove this
544 [ -d "${ROOT}/var/log/mysql" ] \ 529 [ -d "${ROOT}/var/log/mysql" ] \
545 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 530 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
546 531
547 #secure the logfiles... does this bother anybody? 532 #secure the logfiles... does this bother anybody?
548 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 533 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
549 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 534 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
550 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 535 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
551 536
552 if ! useq minimal; then 537 if ! useq "minimal" ; then
553 if [[ ${SLOT} -gt 0 ]] ; then
554 einfo "you may want to read:"
555 einfo "http://www.gentoo.org/doc/en/mysql-upgrade-slotted.xml"
556 einfo "you may want to run \"eselect mysql list\" followed by a "
557 einfo "\"eselect mysql set 1\" to choose the default mysql server"
558 fi
559
560 # your friendly public service announcement... 538 # your friendly public service announcement...
561 einfo 539 einfo
562 einfo "You might want to run:" 540 einfo "You might want to run:"
563 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 541 einfo "\"emerge --config =${CATEGORY}/${PF}\""
564 einfo "if this is a new install." 542 einfo "if this is a new install."
609 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 587 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
610 || touch "${TMPDIR}/fill_help_tables.sql" 588 || touch "${TMPDIR}/fill_help_tables.sql"
611 help_tables="${TMPDIR}/fill_help_tables.sql" 589 help_tables="${TMPDIR}/fill_help_tables.sql"
612 590
613 pushd "${TMPDIR}" &>/dev/null 591 pushd "${TMPDIR}" &>/dev/null
614 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR" 592 ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR"
615 popd &>/dev/null 593 popd &>/dev/null
616 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] || die "MySQL databases not installed" 594 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \
595 || die "MySQL databases not installed"
617 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null 596 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
618 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null 597 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
619 598
620 if mysql_version_is_at_least "4.01.03.00" ; then 599 if mysql_version_is_at_least "4.01.03.00" ; then
621 options="--skip-ndbcluster" 600 options="--skip-ndbcluster"
622 601
623 # Filling timezones, see 602 # Filling timezones, see
624 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 603 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
625 ${ROOT}/usr/bin/mysql_tzinfo_to_sql${MY_SUFFIX} ${ROOT}/usr/share/zoneinfo \ 604 ${ROOT}/usr/bin/mysql_tzinfo_to_sql ${ROOT}/usr/share/zoneinfo \
626 > "${sqltmp}" 2>/dev/null 605 > "${sqltmp}" 2>/dev/null
627 606
628 if [[ -r "${help_tables}" ]] ; then 607 if [[ -r "${help_tables}" ]] ; then
629 cat "${help_tables}" >> "${sqltmp}" 608 cat "${help_tables}" >> "${sqltmp}"
630 fi 609 fi
631 fi 610 fi
632 611
633 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock 612 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock
634 local pidfile=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.pid 613 local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid
635 local mysqld="${ROOT}/usr/sbin/mysqld${MY_SUFFIX} \ 614 local mysqld="${ROOT}/usr/sbin/mysqld \
636 ${options} \ 615 ${options} \
637 --user=mysql \ 616 --user=mysql \
638 --skip-grant-tables \ 617 --skip-grant-tables \
639 --basedir=${ROOT}/usr \ 618 --basedir=${ROOT}/usr \
640 --datadir=${ROOT}/${DATADIR} \ 619 --datadir=${ROOT}/${DATADIR} \
652 sleep 1 631 sleep 1
653 done 632 done
654 633
655 # do this from memory we don't want clear text password in temp files 634 # do this from memory we don't want clear text password in temp files
656 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'" 635 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
657 ${ROOT}/usr/bin/mysql${MY_SUFFIX} \ 636 ${ROOT}/usr/bin/mysql \
658 --socket=${socket} \ 637 --socket=${socket} \
659 -hlocalhost \ 638 -hlocalhost \
660 -e "${sql}" 639 -e "${sql}"
661 640
662 einfo "Loading \"zoneinfo\" this step may require few seconds" 641 einfo "Loading \"zoneinfo\" this step may require few seconds"
663 642
664 ${ROOT}/usr/bin/mysql${MY_SUFFIX} \ 643 ${ROOT}/usr/bin/mysql \
665 --socket=${socket} \ 644 --socket=${socket} \
666 -hlocalhost \ 645 -hlocalhost \
667 -uroot \ 646 -uroot \
668 -p"${pwd1}" \ 647 -p"${pwd1}" \
669 mysql < "${sqltmp}" 648 mysql < "${sqltmp}"
674 einfo "stopping the server," 653 einfo "stopping the server,"
675 wait %1 654 wait %1
676 einfo "done" 655 einfo "done"
677} 656}
678 657
679mysql_pkg_prerm() {
680 if [[ ${SLOT} -gt 0 ]] ; then
681 # external program
682 eselect mysql slot_remove "${SLOT}"
683 fi
684}
685
686mysql_pkg_postrm() { 658mysql_pkg_postrm() {
687 mysql_lib_symlinks 659 mysql_lib_symlinks
688 if [[ ${SLOT} -gt 0 ]] ; then
689 einfo "you may want to run \"eselect mysql list\" followed by a "
690 einfo "\"eselect mysql list\" to choose the default mysql server"
691 fi
692} 660}

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.27

  ViewVC Help
Powered by ViewVC 1.1.20