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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.26 - (show annotations) (download)
Fri Mar 17 20:17:53 2006 UTC (8 years, 7 months ago) by vivo
Branch: MAIN
Changes since 1.25: +111 -144 lines
further cleanup, see MySQL changelog

1 # Copyright 1999-2005 Gentoo Foundation
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 $
4
5 # Author: Francesco Riosa <vivo at gentoo.org>
6 # Maintainer: Francesco Riosa <vivo at gentoo.org>
7
8 # MYSQL_VERSION_ID will be
9 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo magic number, all [0..99]
10 # this is an important piece, becouse from this variable depends many of the
11 # choices the ebuild will do.
12 # in particular the code below work only with PVR like "5.0.18-r3"
13 # the result with the previous PVR is "5001803"
14 if [[ -z ${MYSQL_VERSION_ID} ]] ; then
15 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
16 for vatom in 0 1 2 3; do
17 # pad to lenght 2
18 tpv[${vatom}]="00${tpv[${vatom}]}"
19 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
20 done
21 # strip leading "0" (otherwise it's considered an octal number from bash)
22 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
23 fi
24
25 [[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20060316"
26
27 DEPEND="${DEPEND}
28 >=sys-libs/readline-4.1
29 berkdb? ( sys-apps/ed )
30 ssl? ( >=dev-libs/openssl-0.9.6d )
31 userland_GNU? ( sys-process/procps )
32 >=sys-libs/zlib-1.2.3
33 >=sys-apps/texinfo-4.7-r1
34 >=sys-apps/sed-4"
35 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
36 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
37 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
38
39 inherit eutils flag-o-matic gnuconfig autotools mysql_fx
40
41 SLOT=0
42
43 # shorten the path because the socket path length must be shorter than 107 chars
44 # and we will run a mysql server during test phase
45 S="${WORKDIR}/${PN}"
46
47 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
48 HOMEPAGE="http://www.mysql.com/"
49 NEWP="${P/_/-}"
50 SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz
51 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
52 LICENSE="GPL-2"
53 IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static"
54 RESTRICT="primaryuri confcache"
55
56 mysql_version_is_at_least "4.01.03.00" \
57 && IUSE="${IUSE} cluster extraengine"
58
59 mysql_version_is_at_least "5.00.00.00" \
60 || IUSE="${IUSE} raid"
61
62 mysql_version_is_at_least "5.00.18.00" \
63 && IUSE="${IUSE} max-idx-128"
64
65 mysql_version_is_at_least "5.01.00.00" \
66 && IUSE="${IUSE} innodb"
67
68 EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
69 pkg_postinst pkg_config pkg_postrm
70
71 # void mysql_init_vars()
72 #
73 # initialize global variables
74 # 2005-11-19 <vivo at gentoo.org>
75 mysql_init_vars() {
76
77 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql"}
78 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
79 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql$"}
80 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
81 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
82 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
83
84 if [ -z "${DATADIR}" ]; then
85 DATADIR=""
86 if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then
87 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
88 | sed -ne '/datadir/s|^--datadir=||p' \
89 | tail -n1`
90 if [ -z "${DATADIR}" ]; then
91 if useq "srvdir" ; then
92 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
93 else
94 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
95 | sed -e 's/.*=\s*//'`
96 fi
97 fi
98 fi
99 if [ -z "${DATADIR}" ]; then
100 if useq "srvdir" ; then
101 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
102 else
103 DATADIR="${MY_LOCALSTATEDIR}"
104 fi
105 einfo "Using default DATADIR"
106 fi
107 einfo "MySQL DATADIR is ${DATADIR}"
108
109 if [ -z "${PREVIOUS_DATADIR}" ] ; then
110 if [ -a "${DATADIR}" ] ; then
111 ewarn "Previous datadir found, it's YOUR job to change"
112 ewarn "ownership and have care of it"
113 PREVIOUS_DATADIR="yes"
114 export PREVIOUS_DATADIR
115 else
116 PREVIOUS_DATADIR="no"
117 export PREVIOUS_DATADIR
118 fi
119 fi
120 fi
121
122 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
123 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
124 export MY_INCLUDEDIR
125 export DATADIR
126 }
127
128 mysql_pkg_setup() {
129
130 enewgroup mysql 60 || die "problem adding group mysql"
131 enewuser mysql 60 -1 /dev/null mysql \
132 || die "problem adding user mysql"
133 }
134
135 mysql_src_unpack() {
136
137 mysql_init_vars
138
139 if useq "static" && useq "ssl" ; then
140 local msg="MySQL does not support building statically with SSL support"
141 eerror "${msg}"
142 die "${msg}"
143 fi
144
145 if mysql_version_is_at_least "4.01.03.00" \
146 && useq "cluster" \
147 || useq "extraengine" \
148 && useq "minimal" ; then
149 die "USEs cluster, extraengine conflicts with \"minimal\""
150 fi
151
152 unpack ${A} || die
153
154 mv -f "${WORKDIR}/${NEWP}" "${S}"
155 cd "${S}"
156
157 EPATCH_SUFFIX="patch"
158 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory"
159 mysql_mv_patches
160 epatch || die "failed to apply all patches"
161
162 # additional check, remove bundled zlib
163 rm -f "${S}/zlib/"*.[ch]
164 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
165 rm -f scripts/mysqlbug
166
167 # Make charsets install in the right place
168 find . -name 'Makefile.am' \
169 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
170
171 # Manage mysqlmanager
172 mysql_version_is_at_least "5.00.15.00" \
173 && sed -i -e "s!@GENTOO_EXT@!!g" \
174 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
175 "${S}/server-tools/instance-manager/Makefile.am"
176
177 # remove what need to be recreated, so we are sure it's actually done
178 find . -name Makefile \
179 -o -name Makefile.in \
180 -o -name configure \
181 -exec rm -f {} \;
182 rm ltmain.sh
183
184 local rebuilddirlist d buildstep bdbdir
185
186 if mysql_version_is_at_least "5.01.00.00" ; then
187 rebuilddirlist=". storage/innobase"
188 bdbdir='storage/bdb/dist'
189 else
190 rebuilddirlist=". innobase"
191 bdbdir='bdb/dist'
192 fi
193
194 for d in ${rebuilddirlist}; do
195 einfo "reconfiguring dir \"${d}\""
196 pushd "${d}" &>/dev/null
197 AT_GNUCONF_UPDATE="yes" eautoreconf
198 popd &>/dev/null
199 done
200
201 #TODO berkdb in 5.1 need to be worked on
202 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99"
203 then
204 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh"
205 pushd "${bdbdir}" \
206 && sh s_all \
207 || die "failed bdb reconfigure" \
208 &>/dev/null
209 popd &>/dev/null
210 fi
211
212 }
213
214 mysql_src_compile() {
215
216 mysql_init_vars
217 local myconf
218
219 if useq "static" ; then
220 myconf="${myconf} --with-mysqld-ldflags=-all-static"
221 myconf="${myconf} --with-client-ldflags=-all-static"
222 myconf="${myconf} --disable-shared"
223 else
224 myconf="${myconf} --enable-shared --enable-static"
225 fi
226
227 #myconf="${myconf} `use_with tcpd libwrap`"
228 myconf="${myconf} --without-libwrap"
229
230 if useq "ssl" ; then
231 # --with-vio is not needed anymore, it's on by default and
232 # has been removed from configure
233 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
234 if mysql_version_is_at_least "5.00.06.00" ; then
235 # yassl-0.96 is young break with gcc-4.0 || amd64
236 #myconf="${myconf} --with-yassl"
237 myconf="${myconf} --with-openssl"
238 else
239 myconf="${myconf} --with-openssl"
240 fi
241 else
242 myconf="${myconf} --without-openssl"
243 fi
244
245 if useq "debug"; then
246 myconf="${myconf} --with-debug=full"
247 else
248 myconf="${myconf} --without-debug"
249 mysql_version_is_at_least "4.01.03.00" \
250 && useq "cluster" \
251 && myconf="${myconf} --without-ndb-debug"
252 fi
253
254 # these are things we exclude from a minimal build
255 # note that the server actually does get built and installed
256 # but we then delete it before packaging.
257 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
258
259 if ! useq "minimal" ; then
260 myconf="${myconf} --with-server"
261 myconf="${myconf} --with-extra-tools"
262
263 if useq "static" ; then
264 myconf="${myconf} --without-raid"
265 ewarn "disabling raid support, has problem with static"
266 else
267 if mysql_version_is_at_least "5.00.00.00" ; then
268 myconf="${myconf} --without-raid"
269 else
270 myconf="${myconf} `use_with raid`"
271 fi
272 fi
273
274 if ! mysql_version_is_at_least "5.00.00.00" ; then
275 if mysql_version_is_at_least "4.01.00.00" ; then
276 myconf="${myconf} --with-charset=utf8"
277 myconf="${myconf} --with-collation=utf8_general_ci"
278 else
279 myconf="${myconf} --with-charset=latin1"
280 myconf="${myconf} --with-collation=latin1_swedish_ci"
281 fi
282 fi
283
284 # optional again from 2005-12-05
285 if mysql_version_is_at_least "5.01.00.00" ; then
286 myconf="${myconf} $(use_with innodb)"
287 else
288 myconf="${myconf} --with-innodb"
289 fi
290
291 # lots of chars
292 myconf="${myconf} --with-extra-charsets=all"
293
294 #The following fix is due to a bug with bdb on sparc's. See:
295 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
296 # it comes down to non-64-bit safety problems
297 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \
298 || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
299 then
300 ewarn "bdb berkeley-db disabled due to arch or version"
301 myconf="${myconf} --without-berkeley-db"
302 else
303 #TODO berkdb in 5.1 need to be worked on
304 useq "berkdb" && \
305 ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \
306 && myconf="${myconf} --with-berkeley-db=./bdb" \
307 || myconf="${myconf} --without-berkeley-db"
308 fi
309
310 if mysql_version_is_at_least "4.01.03.00" ; then
311 #myconf="${myconf} $(use_with geometry)"
312 myconf="${myconf} --with-geometry"
313 myconf="${myconf} $(use_with cluster ndbcluster)"
314 fi
315
316 mysql_version_is_at_least "4.01.11.00" \
317 && myconf="${myconf} `use_with big-tables`"
318
319 mysql_version_is_at_least "5.01.06.00" \
320 && myconf="${myconf} --with-ndb-binlog"
321
322 if useq "embedded" ; then
323 #REMIND, need the privilege control enabled ?
324 myconf="${myconf} --without-embedded-privilege-control"
325 myconf="${myconf} --with-embedded-server"
326 else
327 myconf="${myconf} --without-embedded-privilege-control"
328 myconf="${myconf} --without-embedded-server"
329 fi
330
331 # benchmarking stuff needs perl
332 if useq "perl" ; then
333 myconf="${myconf} --with-bench"
334 else
335 myconf="${myconf} --without-bench"
336 fi
337 else
338 for i in ${minimal_exclude_list}; do
339 myconf="${myconf} --without-${i}"
340 done
341 myconf="${myconf} --without-berkeley-db"
342 myconf="${myconf} --with-extra-charsets=none"
343 fi
344
345 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine"; then
346 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
347 myconf="${myconf} --with-archive-storage-engine"
348 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
349
350 mysql_version_is_at_least "4.01.04.00" \
351 && myconf="${myconf} --with-csv-storage-engine"
352
353 mysql_version_is_at_least "4.01.11.00" \
354 && myconf="${myconf} --with-blackhole-storage-engine"
355
356 # http://dev.mysql.com/doc/mysql/en/federated-description.html
357 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
358 if mysql_version_is_at_least "5.00.03.00" ; then
359 einfo "before to use federated engine be sure to read"
360 einfo "http://dev.mysql.com/doc/refman/5.0/en/federated-limitations.html"
361 myconf="${myconf} --with-federated-storage-engine"
362
363 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
364 if mysql_version_is_at_least "5.01.00.00" ; then
365 myconf="${myconf} --with-partition"
366 fi
367 fi
368
369 fi
370
371 mysql_version_is_at_least "5.00.18.00" \
372 && useq "max-idx-128" \
373 && myconf="${myconf} --with-max-indexes=128"
374
375 if mysql_version_is_at_least "5.01.05.00" ; then
376 myconf="${myconf} --with-row-based-replication"
377 fi
378
379 #TODO rechek again later, had problem with assembler enabled
380 # and some combination of use-flags with 5.1
381 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
382 myconf="${myconf} --disable-assembler"
383 else
384 myconf="${myconf} --enable-assembler"
385 fi
386
387 #Bug #114895,Bug #110149
388 filter-flags "-O" "-O[01]"
389 #glibc-2.3.2_pre fix; bug #16496
390 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
391
392 #the compiler flags are as per their "official" spec ;)
393 #CFLAGS="${CFLAGS/-O?/} -O3" \
394 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
395 mysql_version_is_at_least "5.00.00.00" \
396 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
397
398 econf \
399 --libexecdir="/usr/sbin" \
400 --sysconfdir="${MY_SYSCONFDIR}" \
401 --localstatedir="${MY_LOCALSTATEDIR}" \
402 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
403 --libdir="${MY_LIBDIR}" \
404 --includedir="${MY_INCLUDEDIR}" \
405 --with-low-memory \
406 --enable-local-infile \
407 --with-mysqld-user=mysql \
408 --with-client-ldflags=-lstdc++ \
409 --enable-thread-safe-client \
410 --with-comment="Gentoo Linux ${PF}" \
411 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
412 --without-readline \
413 --without-docs \
414 ${myconf} || die "bad ./configure"
415
416 # TODO Move this before autoreconf !!!
417 find . -type f -name Makefile -print0 \
418 | xargs -0 -n100 sed -i \
419 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
420
421 emake || die "compile problem"
422 }
423
424 mysql_src_install() {
425
426 mysql_init_vars
427 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
428
429 insinto "${MY_INCLUDEDIR}"
430 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
431
432 # convenience links
433 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
434 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
435 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
436
437 # various junk (my-*.cnf moved elsewhere)
438 rm -rf "${D}/usr/share/info"
439 for removeme in "mysql-log-rotate" mysql.server* \
440 binary-configure* my-*.cnf mi_test_all*
441 do
442 rm -f ${D}/usr/share/mysql/${removeme}
443 done
444
445 # clean up stuff for a minimal build
446 # this is anything server-specific
447 if useq "minimal" ; then
448 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench}
449 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/sbin/mysqld"
451 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
452 fi
453
454 # config stuff
455 insinto "${MY_SYSCONFDIR}"
456 doins scripts/mysqlaccess.conf
457 sed -e "s!@MY_SUFFIX@!!g" \
458 -e "s!@DATADIR@!${DATADIR}!g" \
459 "${FILESDIR}/my.cnf-4.1-r1" \
460 > "${TMPDIR}/my.cnf.ok"
461 newins "${TMPDIR}/my.cnf.ok" my.cnf
462
463 insinto "/etc/conf.d"
464 newins "${FILESDIR}/mysql.conf.d-r1" "mysql"
465 mysql_version_is_at_least "5.00.11.00" \
466 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
467
468 # minimal builds don't have the server
469 if ! useq "minimal" ; then
470 exeinto /etc/init.d
471 newexe "${FILESDIR}/mysql.rc6-r3" "mysql"
472
473 mysql_version_is_at_least "5.00.11.00" \
474 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
475 insinto /etc/logrotate.d
476 newins "${FILESDIR}/logrotate.mysql" "mysql"
477
478 #empty dirs...
479 diropts "-m0750"
480 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
481 dodir "${DATADIR}"
482 keepdir "${DATADIR}"
483 chown -R mysql:mysql "${D}/${DATADIR}"
484 fi
485
486 diropts "-m0755"
487 for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
488 dodir "${folder}"
489 keepdir "${folder}"
490 chown -R mysql:mysql "${D}/${folder}"
491 done
492 fi
493
494 # docs
495 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
496 # minimal builds don't have the server
497 if ! useq "minimal" ; then
498 docinto "support-files"
499 for script in \
500 support-files/my-*.cnf \
501 support-files/magic \
502 support-files/ndb-config-2-node.ini
503 do
504 dodoc "${script}"
505 done
506
507 docinto "scripts"
508 for script in scripts/mysql* ; do
509 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
510 done
511 fi
512
513 ROOT="${D}" mysql_lib_symlinks
514 }
515
516 mysql_pkg_preinst() {
517
518 enewgroup mysql 60 || die "problem adding group mysql"
519 enewuser mysql 60 -1 /dev/null mysql \
520 || die "problem adding user mysql"
521 }
522
523 mysql_pkg_postinst() {
524
525 mysql_init_vars
526
527 # mind at FEATURES=collision-protect before to remove this
528 [ -d "${ROOT}/var/log/mysql" ] \
529 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
530
531 #secure the logfiles... does this bother anybody?
532 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
533 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
534 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
535
536 if ! useq "minimal" ; then
537 # your friendly public service announcement...
538 einfo
539 einfo "You might want to run:"
540 einfo "\"emerge --config =${CATEGORY}/${PF}\""
541 einfo "if this is a new install."
542 einfo
543 mysql_version_is_at_least "5.01.00.00" \
544 || einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream."
545 fi
546 }
547
548 mysql_pkg_config() {
549 mysql_init_vars
550 [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR"
551
552 if built_with_use dev-db/mysql minimal; then
553 die "Minimal builds do NOT include the MySQL server"
554 fi
555
556 local pwd1="a"
557 local pwd2="b"
558 local maxtry=5
559
560 if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then
561 ewarn "You have already a MySQL database in place."
562 ewarn "(${ROOT}/${DATADIR}/*)"
563 ewarn "Please rename or delete it if you wish to replace it."
564 die "MySQL database already exists!"
565 fi
566
567 einfo "Creating the mysql database and setting proper"
568 einfo "permissions on it..."
569
570 einfo "Insert a password for the mysql 'root' user"
571 ewarn "Avoid [\"'\\_%] characters in the password"
572
573 read -rsp " >" pwd1 ; echo
574 einfo "Check the password"
575 read -rsp " >" pwd2 ; echo
576
577 if [[ "x$pwd1" != "x$pwd2" ]] ; then
578 die "Passwords are not the same"
579 fi
580
581 local options=""
582 local sqltmp="$(emktemp)"
583
584 local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
585 [[ -r "${help_tables}" ]] \
586 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
587 || touch "${TMPDIR}/fill_help_tables.sql"
588 help_tables="${TMPDIR}/fill_help_tables.sql"
589
590 pushd "${TMPDIR}" &>/dev/null
591 ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR"
592 popd &>/dev/null
593 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \
594 || die "MySQL databases not installed"
595 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
596 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
597
598 if mysql_version_is_at_least "4.01.03.00" ; then
599 options="--skip-ndbcluster"
600
601 # Filling timezones, see
602 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
603 ${ROOT}/usr/bin/mysql_tzinfo_to_sql ${ROOT}/usr/share/zoneinfo \
604 > "${sqltmp}" 2>/dev/null
605
606 if [[ -r "${help_tables}" ]] ; then
607 cat "${help_tables}" >> "${sqltmp}"
608 fi
609 fi
610
611 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock
612 local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid
613 local mysqld="${ROOT}/usr/sbin/mysqld \
614 ${options} \
615 --user=mysql \
616 --skip-grant-tables \
617 --basedir=${ROOT}/usr \
618 --datadir=${ROOT}/${DATADIR} \
619 --skip-innodb \
620 --skip-bdb \
621 --skip-networking \
622 --max_allowed_packet=8M \
623 --net_buffer_length=16K \
624 --socket=${socket} \
625 --pid-file=${pidfile}"
626 $mysqld &
627 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
628 maxtry=$(($maxtry-1))
629 echo -n "."
630 sleep 1
631 done
632
633 # do this from memory we don't want clear text password in temp files
634 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
635 ${ROOT}/usr/bin/mysql \
636 --socket=${socket} \
637 -hlocalhost \
638 -e "${sql}"
639
640 einfo "Loading \"zoneinfo\" this step may require few seconds"
641
642 ${ROOT}/usr/bin/mysql \
643 --socket=${socket} \
644 -hlocalhost \
645 -uroot \
646 -p"${pwd1}" \
647 mysql < "${sqltmp}"
648
649 # server stop and cleanup
650 kill $(< "${pidfile}" )
651 rm "${sqltmp}"
652 einfo "stopping the server,"
653 wait %1
654 einfo "done"
655 }
656
657 mysql_pkg_postrm() {
658 mysql_lib_symlinks
659 }

  ViewVC Help
Powered by ViewVC 1.1.20