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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (hide annotations) (download)
Sun Jan 8 23:29:20 2006 UTC (8 years, 9 months ago) by vivo
Branch: MAIN
Changes since 1.4: +41 -26 lines
mozextension.eclass, replace spaces with tab, hope their dev will not kill me
mysql.eclass, latest eselect compatibility changes, final refinition to be effectively tested

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

  ViewVC Help
Powered by ViewVC 1.1.20