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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations) (download)
Sat Jan 7 16:43:39 2006 UTC (8 years, 8 months ago) by vivo
Branch: MAIN
Changes since 1.3: +44 -22 lines
- Removed security measure KEYWORDS=".*"
- Add depend on new app-admin/eselect-mysql
- Add einfo to suggest eselect-mysql use
- removed unneded grep
- Hide a list of files to symlink (to be used with eselect-mysql)

1 vivo 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 vivo 1.4 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.3 2006/01/04 20:37:38 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     newins "${FILESDIR}/mysql-slot.conf.d-r1" "mysql"
367     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     newexe "${FILESDIR}/mysql-slot.rc6-r1" "mysql"
381     mysql_version_is_at_least "5.00.11.00" \
382     && newexe "${FILESDIR}/mysqlmanager-slot.rc6" "mysqlmanager"
383     insinto /etc/logrotate.d
384     # TODO
385     newins "${FILESDIR}/logrotate.mysql" "mysql${MY_SUFFIX}"
386    
387     #empty dirs...
388     diropts "-m0750"
389     if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
390     dodir "${DATADIR}"
391     keepdir "${DATADIR}"
392     chown -R mysql:mysql "${D}/${DATADIR}"
393     fi
394    
395     diropts "-m0755"
396     for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
397     dodir "${folder}"
398     keepdir "${folder}"
399     chown -R mysql:mysql "${D}/${folder}"
400     done
401     fi
402    
403     # docs
404     dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
405     # minimal builds don't have the server
406     if ! useq minimal; then
407     docinto "support-files"
408     for script in \
409     support-files/my-*.cnf \
410     support-files/magic \
411     support-files/ndb-config-2-node.ini
412     do
413     dodoc "${script}"
414     done
415    
416     docinto "scripts"
417 vivo 1.4 for script in scripts/mysql* ; do
418     [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
419 vivo 1.1 done
420     fi
421 vivo 1.4
422     # oops, temporary fix
423     mysql_check_version_range "5.00.16.00 to 5.00.18.99" \
424     && cp -f \
425     "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0.15" \
426     "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql"
427    
428     # create a list of executable files, to be used
429     # by external utilities
430     # uncompressed because of the small size
431     local exelist="usr/share/mysql${MY_SUFFIX}/.exe-list"
432     pushd "${D}/" &>/dev/null
433     env -i find usr/bin/ usr/sbin/ usr/share/man \
434     -type f -name "*${MY_SUFFIX}*" \
435     > "${exelist}"
436     echo "${MY_SYSCONFDIR##"/"}" >> "${exelist}"
437     echo "${MY_INCLUDEDIR##"/"}" >> "${exelist}"
438     echo "${MY_LIBDIR##"/"}" >> "${exelist}"
439     echo "${MY_SHAREDSTATEDIR##"/"}" >> "${exelist}"
440     popd &>/dev/null
441 vivo 1.1 }
442    
443     mysql_pkg_preinst() {
444    
445     enewgroup mysql 60 || die "problem adding group mysql"
446     enewuser mysql 60 -1 /dev/null mysql \
447     || die "problem adding user mysql"
448     }
449    
450     mysql_pkg_postinst() {
451    
452     mysql_init_vars
453     mysql_lib_symlinks
454    
455     # mind at FEATURES=collision-protect before to remove this
456     [ -d "${ROOT}/var/log/mysql" ] \
457     || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
458    
459     #secure the logfiles... does this bother anybody?
460     touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
461     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
462     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
463    
464     if ! useq minimal; then
465     # your friendly public service announcement...
466     einfo
467     einfo "You might want to run:"
468     einfo "\"emerge --config =${CATEGORY}/${PF}\""
469     einfo "if this is a new install."
470     einfo
471     fi
472    
473     einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream."
474 vivo 1.4 if [[ ${SLOT} -gt 0 ]] ; then
475     einfo "you may want to run \"eselect myqsl list\" followed by a "
476     einfo "\"eselect myqsl list\" to chose the default mysql server"
477     einfo "Prior to do this unmerge any unslotted MySQL versions with "
478     einfo "emerge -C -p dev-db/mysql <<< NOTICE the \"-p\""
479     einfo "emerge -C =dev-db/mysql-X.Y.Z"
480     fi
481 vivo 1.1 }
482    
483     mysql_pkg_config() {
484     mysql_init_vars
485     [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR"
486    
487     if built_with_use dev-db/mysql minimal; then
488     die "Minimal builds do NOT include the MySQL server"
489     fi
490    
491     local pwd1="a"
492     local pwd2="b"
493     local maxtry=5
494    
495     if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then
496     ewarn "You have already a MySQL database in place."
497     ewarn "(${ROOT}/${DATADIR}/*)"
498     ewarn "Please rename or delete it if you wish to replace it."
499     die "MySQL database already exists!"
500     fi
501    
502     einfo "Creating the mysql database and setting proper"
503     einfo "permissions on it..."
504    
505     einfo "Insert a password for the mysql 'root' user"
506     ewarn "Avoid [\"'\\_%] characters in the password"
507    
508     read -rsp " >" pwd1 ; echo
509     einfo "Check the password"
510     read -rsp " >" pwd2 ; echo
511    
512     if [[ "x$pwd1" != "x$pwd2" ]] ; then
513     die "Passwords are not the same"
514     fi
515    
516     local options=""
517     local sqltmp="$(emktemp)"
518    
519     local help_tables="${ROOT}/usr/share/doc/mysql-${PVR}/scripts/fill_help_tables.sql.gz"
520     [[ -r "${help_tables}" ]] \
521     && zcat "${help_tables}" > "${TMPDIR}/fill_help_tables.sql" \
522     || touch "${TMPDIR}/fill_help_tables.sql"
523     help_tables="${TMPDIR}/fill_help_tables.sql"
524    
525 vivo 1.4 pushd "${TMPDIR}" &>/dev/null
526 vivo 1.1 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR"
527 vivo 1.4 popd &>/dev/null
528 vivo 1.1 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] || die "MySQL databases not installed"
529     chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
530     chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
531    
532     if mysql_version_is_at_least "4.01.03.00" ; then
533     options="--skip-ndbcluster"
534    
535     # Filling timezones, see
536     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
537     ${ROOT}/usr/bin/mysql_tzinfo_to_sql${MY_SUFFIX} ${ROOT}/usr/share/zoneinfo \
538     > "${sqltmp}" 2>/dev/null
539    
540     if [[ -r "${help_tables}" ]] ; then
541     cat "${help_tables}" >> "${sqltmp}"
542     fi
543     fi
544    
545     local socket=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock
546     local pidfile=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock
547     local mysqld="${ROOT}/usr/sbin/mysqld${MY_SUFFIX} \
548     ${options} \
549     --user=mysql \
550     --skip-grant-tables \
551     --basedir=${ROOT}/usr \
552     --datadir=${ROOT}/${DATADIR} \
553     --skip-innodb \
554     --skip-bdb \
555     --skip-networking \
556     --max_allowed_packet=8M \
557     --net_buffer_length=16K \
558     --socket=${socket} \
559     --pid-file=${pidfile}"
560     $mysqld &
561     while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
562     maxtry=$(($maxtry-1))
563     echo -n "."
564     sleep 1
565     done
566    
567     # do this from memory we don't want clear text password in temp files
568     local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
569     ${ROOT}/usr/bin/mysql${MY_SUFFIX} \
570     --socket=${socket} \
571     -hlocalhost \
572     -e "${sql}"
573    
574     einfo "Loading \"zoneinfo\" this step may require few seconds"
575    
576     ${ROOT}/usr/bin/mysql${MY_SUFFIX} \
577     --socket=${socket} \
578     -hlocalhost \
579     -uroot \
580     -p"${pwd1}" \
581     mysql < "${sqltmp}"
582    
583     # server stop and cleanup
584     kill $(< "${pidfile}" )
585     rm "${sqltmp}"
586     einfo "stopping the server,"
587     wait %1
588     einfo "done"
589     }
590    
591     mysql_pkg_postrm() {
592     mysql_lib_symlinks
593 vivo 1.4 if [[ ${SLOT} -gt 0 ]] ; then
594     einfo "you may want to run \"eselect myqsl list\" followed by a "
595     einfo "\"eselect myqsl list\" to chose the default mysql server"
596     fi
597 vivo 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20