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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.14 - (hide annotations) (download)
Fri Feb 3 08:48:37 2006 UTC (8 years, 6 months ago) by vivo
Branch: MAIN
Changes since 1.13: +4 -4 lines
socket default path

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

  ViewVC Help
Powered by ViewVC 1.1.20