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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.10 - (hide annotations) (download)
Tue Jan 24 23:56:01 2006 UTC (8 years, 7 months ago) by vivo
Branch: MAIN
Changes since 1.9: +2 -3 lines
inherit again from mysql_fx, needed for emerge, removed unwanted debug output

1 vivo 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 vivo 1.10 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.9 2006/01/24 23:09:00 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     --with-unix-socket-path="/var/run/mysqld/mysqld${MY_SUFFIX}.sock" \
359     --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.5 newins "${FILESDIR}/mysql-slot.conf.d-r2" "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.5 newexe "${FILESDIR}/mysql-slot.rc6-r2" "mysql"
440     [[ ${SLOT} -gt 0 ]] && dosym "/etc/init.d/mysql" "/etc/init.d/mysql${MY_SUFFIX}"
441    
442 vivo 1.1 mysql_version_is_at_least "5.00.11.00" \
443     && newexe "${FILESDIR}/mysqlmanager-slot.rc6" "mysqlmanager"
444     insinto /etc/logrotate.d
445 vivo 1.9 sed -e "s!___MY_SUFFIX___!${MY_SUFFIX}!g" \
446 vivo 1.8 "${FILESDIR}/logrotate-slot.mysql" \
447     > "${TMPDIR}/logrotate.mysql"
448     newins "${TMPDIR}/logrotate.mysql" "mysql${MY_SUFFIX}"
449 vivo 1.1
450     #empty dirs...
451     diropts "-m0750"
452     if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
453     dodir "${DATADIR}"
454     keepdir "${DATADIR}"
455     chown -R mysql:mysql "${D}/${DATADIR}"
456     fi
457    
458     diropts "-m0755"
459     for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
460     dodir "${folder}"
461     keepdir "${folder}"
462     chown -R mysql:mysql "${D}/${folder}"
463     done
464     fi
465    
466     # docs
467     dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
468     # minimal builds don't have the server
469     if ! useq minimal; then
470     docinto "support-files"
471     for script in \
472     support-files/my-*.cnf \
473     support-files/magic \
474     support-files/ndb-config-2-node.ini
475     do
476     dodoc "${script}"
477     done
478    
479     docinto "scripts"
480 vivo 1.4 for script in scripts/mysql* ; do
481     [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
482 vivo 1.1 done
483     fi
484 vivo 1.4
485     # oops, temporary fix
486     mysql_check_version_range "5.00.16.00 to 5.00.18.99" \
487     && cp -f \
488 vivo 1.6 "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0" \
489 vivo 1.4 "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql"
490 vivo 1.1 }
491    
492     mysql_pkg_preinst() {
493    
494     enewgroup mysql 60 || die "problem adding group mysql"
495     enewuser mysql 60 -1 /dev/null mysql \
496     || die "problem adding user mysql"
497     }
498    
499     mysql_pkg_postinst() {
500    
501     mysql_init_vars
502     mysql_lib_symlinks
503    
504     # mind at FEATURES=collision-protect before to remove this
505     [ -d "${ROOT}/var/log/mysql" ] \
506     || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
507    
508     #secure the logfiles... does this bother anybody?
509     touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
510     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
511     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
512    
513 vivo 1.5 # create a list of files, to be used
514     # by external utilities
515     # uncompressed because of the small size
516     local filelist="${ROOT}/var/lib/eselect/mysql/mysql${MY_SUFFIX}"
517     pushd "${D}/" &>/dev/null
518     mkdir -p "${ROOT}/var/lib/eselect/mysql/"
519     env -i find usr/bin/ usr/sbin/ usr/share/man \
520     -type f -name "*${MY_SUFFIX}*" \
521 vivo 1.6 -and -not -name "mysql_config${MY_SUFFIX}" \
522 vivo 1.5 > "${filelist}.filelist"
523     echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}.filelist"
524     echo "${MY_LIBDIR#"/"}" >> "${filelist}.filelist"
525     echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}.filelist"
526     popd &>/dev/null
527    
528 vivo 1.1 if ! useq minimal; then
529 vivo 1.5 if [[ ${SLOT} -gt 0 ]] ; then
530     if [[ -f "${ROOT}/usr/sbin/mysqld" ]] ; then
531     einfo "you may want to run unmerge any unslotted MySQL versions with "
532     einfo "emerge -C --pretend dev-db/mysql"
533     einfo "emerge -C =dev-db/mysql-X.Y.Z"
534     einfo "After the unmerge run \"eselect myqsl list\" followed by a "
535     einfo "\"eselect myqsl set 1\" to chose the default mysql server"
536     else
537     local tmpres="$( eselect mysql show )"
538     # "like grep -q unset"
539     if [[ "{$tmpres}" == "{$tmpres/unset/}" ]] ; then
540     eselect mysql set 1
541     else
542     einfo "The version of mysql emerged now stils is _NOT_ the default"
543     einfo "you may want to run \"eselect myqsl list\" followed by a "
544     einfo "\"eselect myqsl set 1\" to chose the default mysql server"
545     fi
546     fi
547     fi
548    
549 vivo 1.1 # your friendly public service announcement...
550     einfo
551     einfo "You might want to run:"
552     einfo "\"emerge --config =${CATEGORY}/${PF}\""
553     einfo "if this is a new install."
554     einfo
555 vivo 1.5 einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream."
556 vivo 1.4 fi
557 vivo 1.1 }
558    
559     mysql_pkg_config() {
560     mysql_init_vars
561     [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR"
562    
563     if built_with_use dev-db/mysql minimal; then
564     die "Minimal builds do NOT include the MySQL server"
565     fi
566    
567     local pwd1="a"
568     local pwd2="b"
569     local maxtry=5
570    
571     if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then
572     ewarn "You have already a MySQL database in place."
573     ewarn "(${ROOT}/${DATADIR}/*)"
574     ewarn "Please rename or delete it if you wish to replace it."
575     die "MySQL database already exists!"
576     fi
577    
578     einfo "Creating the mysql database and setting proper"
579     einfo "permissions on it..."
580    
581     einfo "Insert a password for the mysql 'root' user"
582     ewarn "Avoid [\"'\\_%] characters in the password"
583    
584     read -rsp " >" pwd1 ; echo
585     einfo "Check the password"
586     read -rsp " >" pwd2 ; echo
587    
588     if [[ "x$pwd1" != "x$pwd2" ]] ; then
589     die "Passwords are not the same"
590     fi
591    
592     local options=""
593     local sqltmp="$(emktemp)"
594    
595 vivo 1.8 local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
596 vivo 1.1 [[ -r "${help_tables}" ]] \
597 vivo 1.8 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
598 vivo 1.1 || touch "${TMPDIR}/fill_help_tables.sql"
599     help_tables="${TMPDIR}/fill_help_tables.sql"
600    
601 vivo 1.4 pushd "${TMPDIR}" &>/dev/null
602 vivo 1.1 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR"
603 vivo 1.4 popd &>/dev/null
604 vivo 1.1 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] || die "MySQL databases not installed"
605     chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
606     chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
607    
608     if mysql_version_is_at_least "4.01.03.00" ; then
609     options="--skip-ndbcluster"
610    
611     # Filling timezones, see
612     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
613     ${ROOT}/usr/bin/mysql_tzinfo_to_sql${MY_SUFFIX} ${ROOT}/usr/share/zoneinfo \
614     > "${sqltmp}" 2>/dev/null
615    
616     if [[ -r "${help_tables}" ]] ; then
617     cat "${help_tables}" >> "${sqltmp}"
618     fi
619     fi
620    
621     local socket=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock
622     local pidfile=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock
623     local mysqld="${ROOT}/usr/sbin/mysqld${MY_SUFFIX} \
624     ${options} \
625     --user=mysql \
626     --skip-grant-tables \
627     --basedir=${ROOT}/usr \
628     --datadir=${ROOT}/${DATADIR} \
629     --skip-innodb \
630     --skip-bdb \
631     --skip-networking \
632     --max_allowed_packet=8M \
633     --net_buffer_length=16K \
634     --socket=${socket} \
635     --pid-file=${pidfile}"
636     $mysqld &
637     while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
638     maxtry=$(($maxtry-1))
639     echo -n "."
640     sleep 1
641     done
642    
643     # do this from memory we don't want clear text password in temp files
644     local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
645     ${ROOT}/usr/bin/mysql${MY_SUFFIX} \
646     --socket=${socket} \
647     -hlocalhost \
648     -e "${sql}"
649    
650     einfo "Loading \"zoneinfo\" this step may require few seconds"
651    
652     ${ROOT}/usr/bin/mysql${MY_SUFFIX} \
653     --socket=${socket} \
654     -hlocalhost \
655     -uroot \
656     -p"${pwd1}" \
657     mysql < "${sqltmp}"
658    
659     # server stop and cleanup
660     kill $(< "${pidfile}" )
661     rm "${sqltmp}"
662     einfo "stopping the server,"
663     wait %1
664     einfo "done"
665     }
666    
667     mysql_pkg_postrm() {
668     mysql_lib_symlinks
669 vivo 1.4 if [[ ${SLOT} -gt 0 ]] ; then
670     einfo "you may want to run \"eselect myqsl list\" followed by a "
671     einfo "\"eselect myqsl list\" to chose the default mysql server"
672     fi
673 vivo 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20