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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.112 - (hide annotations) (download)
Mon Jul 6 18:58:41 2009 UTC (5 years, 3 months ago) by robbat2
Branch: MAIN
Changes since 1.111: +47 -5 lines
Take mysql.eclass into the realm of EAPI2.

1 chtekk 1.69 # Copyright 1999-2007 Gentoo Foundation
2 vivo 1.1 # Distributed under the terms of the GNU General Public License v2
3 robbat2 1.112 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.111 2009/07/06 18:21:18 robbat2 Exp $
4 vivo 1.1
5 vivo 1.54 # Author: Francesco Riosa (Retired) <vivo@gentoo.org>
6 robbat2 1.86 # Maintainer: MySQL Team <mysql-bugs@gentoo.org>
7     # - Luca Longinotti <chtekk@gentoo.org>
8     # - Robin H. Johnson <robbat2@gentoo.org>
9 chtekk 1.30
10 vivo 1.59 WANT_AUTOCONF="latest"
11     WANT_AUTOMAKE="latest"
12 chtekk 1.69
13 robbat2 1.104 inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator
14 vivo 1.54
15 vivo 1.59 # Shorten the path because the socket path length must be shorter than 107 chars
16     # and we will run a mysql server during test phase
17     S="${WORKDIR}/mysql"
18    
19 robbat2 1.108 [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20090228-0714Z"
20 robbat2 1.86 if [[ "${MY_EXTRAS_VER}" == "live" ]]; then
21 robbat2 1.87 EGIT_PROJECT=mysql-extras
22 robbat2 1.86 EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git"
23     inherit git
24     fi
25 vivo 1.54
26 vivo 1.60 # MYSQL_VERSION_ID will be:
27     # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
28     # This is an important part, because many of the choices the MySQL ebuild will do
29     # depend on this variable.
30     # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
31 robbat2 1.88 # We also strip off upstream's trailing letter that they use to respin tarballs
32 chtekk 1.69
33 vivo 1.60 MYSQL_VERSION_ID=""
34 robbat2 1.88 tpv="${PV%[a-z]}"
35     tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
36 vivo 1.60 for vatom in 0 1 2 3 ; do
37     # pad to length 2
38     tpv[${vatom}]="00${tpv[${vatom}]}"
39     MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
40     done
41     # strip leading "0" (otherwise it's considered an octal number by BASH)
42     MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
43    
44 robbat2 1.110 # Community features are available in mysql-community
45     # AND in the re-merged mysql-5.0.82 and newer
46     if [ "${PN}" == "mysql-community" ]; then
47     MYSQL_COMMUNITY_FEATURES=1
48     elif [ "${PV#5.0}" != "${PV}" ] && mysql_version_is_at_least "5.0.82"; then
49     MYSQL_COMMUNITY_FEATURES=1
50     else
51     MYSQL_COMMUNITY_FEATURES=0
52     fi
53    
54 vivo 1.60 # Be warned, *DEPEND are version-dependant
55 robbat2 1.90 # These are used for both runtime and compiletime
56 vivo 1.60 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
57     userland_GNU? ( sys-process/procps )
58     >=sys-apps/sed-4
59     >=sys-apps/texinfo-4.7-r1
60     >=sys-libs/readline-4.1
61 chtekk 1.69 >=sys-libs/zlib-1.2.3"
62 vivo 1.60
63 chtekk 1.69 # Having different flavours at the same time is not a good idea
64     for i in "" "-community" ; do
65 vivo 1.60 [[ "${i}" == ${PN#mysql} ]] ||
66     DEPEND="${DEPEND} !dev-db/mysql${i}"
67     done
68    
69 robbat2 1.90 RDEPEND="${DEPEND}
70     !minimal? ( dev-db/mysql-init-scripts )
71     selinux? ( sec-policy/selinux-mysql )"
72    
73     # compile-time-only
74 vivo 1.60 mysql_version_is_at_least "5.1" \
75     || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
76    
77 robbat2 1.90 # compile-time-only
78 chtekk 1.69 mysql_version_is_at_least "5.1.12" \
79 robbat2 1.107 && DEPEND="${DEPEND} >=dev-util/cmake-2.4.3"
80 chtekk 1.69
81 vivo 1.60 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
82     PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
83    
84 robbat2 1.104 # For other stuff to bring us in
85     PDEPEND="${PDEPEND} =virtual/mysql-$(get_version_component_range 1-2 ${PV})"
86    
87 robbat2 1.81 # Work out the default SERVER_URI correctly
88     if [ -z "${SERVER_URI}" ]; then
89     # The community build is on the mirrors
90 robbat2 1.110 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
91 robbat2 1.81 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${PV//_/-}.tar.gz"
92 robbat2 1.110 # The (old) enterprise source is on the primary site only
93 robbat2 1.81 elif [ "${PN}" == "mysql" ]; then
94     SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${PV//_/-}.tar.gz"
95     fi
96     fi
97    
98 vivo 1.60 # Define correct SRC_URIs
99 robbat2 1.86 SRC_URI="${SERVER_URI}"
100    
101     [[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI}
102 robbat2 1.73 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
103 chtekk 1.69 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
104 vivo 1.60 mysql_version_is_at_least "5.1.12" \
105     && [[ -n "${PBXT_VERSION}" ]] \
106     && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
107    
108     DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
109     HOMEPAGE="http://www.mysql.com/"
110     LICENSE="GPL-2"
111 chtekk 1.69 SLOT="0"
112 vivo 1.60 IUSE="big-tables debug embedded minimal perl selinux ssl static"
113    
114     mysql_version_is_at_least "4.1" \
115     && IUSE="${IUSE} latin1"
116    
117     mysql_version_is_at_least "4.1.3" \
118     && IUSE="${IUSE} cluster extraengine"
119    
120     mysql_version_is_at_least "5.0" \
121     || IUSE="${IUSE} raid"
122    
123     mysql_version_is_at_least "5.0.18" \
124     && IUSE="${IUSE} max-idx-128"
125    
126     mysql_version_is_at_least "5.1" \
127     || IUSE="${IUSE} berkdb"
128    
129     mysql_version_is_at_least "5.1.12" \
130     && IUSE="${IUSE} pbxt"
131    
132 robbat2 1.110 [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
133     && IUSE="${IUSE} community profiling"
134    
135 robbat2 1.112 case "${EAPI:-0}" in
136     2)
137     EXPORT_FUNCTIONS pkg_setup \
138     src_unpack src_prepare \
139     src_configure src_compile \
140     src_install \
141     pkg_preinst pkg_postinst \
142     pkg_config pkg_postrm
143     ;;
144     *)
145     EXPORT_FUNCTIONS pkg_setup \
146     src_unpack \
147     src_compile \
148     src_install \
149     pkg_preinst pkg_postinst \
150     pkg_config pkg_postrm
151     ;;
152     esac
153 vivo 1.1
154 vivo 1.37 #
155     # HELPER FUNCTIONS:
156     #
157    
158 vivo 1.51 mysql_disable_test() {
159     local testname="${1}" ; shift
160     local reason="${@}"
161     local mysql_disable_file="${S}/mysql-test/t/disabled.def"
162     echo ${testname} : ${reason} >> "${mysql_disable_file}"
163 chtekk 1.69 ewarn "test '${testname}' disabled: '${reason}'"
164 vivo 1.51 }
165    
166 vivo 1.8 # void mysql_init_vars()
167     #
168 chtekk 1.30 # Initialize global variables
169     # 2005-11-19 <vivo@gentoo.org>
170    
171 vivo 1.8 mysql_init_vars() {
172 chtekk 1.69 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
173     MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
174     MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
175     MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
176     MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
177     MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
178 vivo 1.8
179 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
180     MY_DATADIR=""
181 chtekk 1.30 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
182 robbat2 1.75 MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
183 vivo 1.26 | sed -ne '/datadir/s|^--datadir=||p' \
184     | tail -n1`
185 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
186     MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
187 robbat2 1.89 | sed -e 's/.*=\s*//' \
188     | tail -n1`
189 vivo 1.8 fi
190     fi
191 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
192     MY_DATADIR="${MY_LOCALSTATEDIR}"
193     einfo "Using default MY_DATADIR"
194 vivo 1.8 fi
195 robbat2 1.75 elog "MySQL MY_DATADIR is ${MY_DATADIR}"
196 vivo 1.8
197 chtekk 1.30 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
198 robbat2 1.75 if [[ -e "${MY_DATADIR}" ]] ; then
199 robbat2 1.95 # If you get this and you're wondering about it, see bug #207636
200     elog "MySQL datadir found in ${MY_DATADIR}"
201     elog "A new one will not be created."
202 vivo 1.8 PREVIOUS_DATADIR="yes"
203     else
204     PREVIOUS_DATADIR="no"
205     fi
206 chtekk 1.30 export PREVIOUS_DATADIR
207 vivo 1.8 fi
208 robbat2 1.111 else
209     if [[ ${EBUILD_PHASE} == "config" ]]; then
210     local new_MY_DATADIR
211     new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
212     | sed -ne '/datadir/s|^--datadir=||p' \
213     | tail -n1`
214    
215     if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
216     ewarn "MySQL MY_DATADIR has changed"
217     ewarn "from ${MY_DATADIR}"
218     ewarn "to ${new_MY_DATADIR}"
219     MY_DATADIR="${new_MY_DATADIR}"
220     fi
221     fi
222 vivo 1.8 fi
223    
224 vivo 1.55 MY_SOURCEDIR=${SERVER_URI##*/}
225     MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
226    
227 chtekk 1.69 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
228 vivo 1.8 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
229 robbat2 1.75 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
230 vivo 1.8 }
231    
232 vivo 1.37 configure_minimal() {
233 vivo 1.46 # These are things we exclude from a minimal build, please
234     # note that the server actually does get built and installed,
235     # but we then delete it before packaging.
236 robbat2 1.84 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication readline"
237 vivo 1.37
238 vivo 1.46 for i in ${minimal_exclude_list} ; do
239     myconf="${myconf} --without-${i}"
240     done
241     myconf="${myconf} --with-extra-charsets=none"
242     myconf="${myconf} --enable-local-infile"
243 vivo 1.47
244 cardoe 1.67 if use static ; then
245 vivo 1.47 myconf="${myconf} --with-client-ldflags=-all-static"
246 robbat2 1.80 myconf="${myconf} --disable-shared --with-pic"
247 vivo 1.47 else
248     myconf="${myconf} --enable-shared --enable-static"
249     fi
250 chtekk 1.50
251 chtekk 1.69 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
252 chtekk 1.50 myconf="${myconf} --with-charset=utf8"
253     myconf="${myconf} --with-collation=utf8_general_ci"
254     else
255     myconf="${myconf} --with-charset=latin1"
256     myconf="${myconf} --with-collation=latin1_swedish_ci"
257     fi
258 vivo 1.37 }
259    
260     configure_common() {
261 chtekk 1.39 myconf="${myconf} $(use_with big-tables)"
262 vivo 1.37 myconf="${myconf} --enable-local-infile"
263     myconf="${myconf} --with-extra-charsets=all"
264     myconf="${myconf} --with-mysqld-user=mysql"
265 chtekk 1.39 myconf="${myconf} --with-server"
266 vivo 1.43 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
267 vivo 1.37 myconf="${myconf} --without-libwrap"
268 chtekk 1.39
269 cardoe 1.67 if use static ; then
270 vivo 1.37 myconf="${myconf} --with-mysqld-ldflags=-all-static"
271     myconf="${myconf} --with-client-ldflags=-all-static"
272 robbat2 1.80 myconf="${myconf} --disable-shared --with-pic"
273 vivo 1.37 else
274     myconf="${myconf} --enable-shared --enable-static"
275     fi
276    
277 cardoe 1.67 if use debug ; then
278 vivo 1.37 myconf="${myconf} --with-debug=full"
279     else
280     myconf="${myconf} --without-debug"
281 vivo 1.51 mysql_version_is_at_least "4.1.3" \
282 cardoe 1.67 && use cluster \
283 vivo 1.37 && myconf="${myconf} --without-ndb-debug"
284     fi
285 chtekk 1.39
286 robbat2 1.100 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then
287     ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
288     ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
289     ewarn "You MUST file bugs without these variables set."
290     myconf="${myconf} --with-charset=${MYSQL_DEFAULT_CHARSET}"
291     myconf="${myconf} --with-collation=${MYSQL_DEFAULT_COLLATION}"
292     elif mysql_version_is_at_least "4.1" && ! use latin1 ; then
293     myconf="${myconf} --with-charset=utf8"
294     myconf="${myconf} --with-collation=utf8_general_ci"
295     else
296     myconf="${myconf} --with-charset=latin1"
297     myconf="${myconf} --with-collation=latin1_swedish_ci"
298 vivo 1.37 fi
299 chtekk 1.39
300 cardoe 1.67 if use embedded ; then
301 vivo 1.37 myconf="${myconf} --with-embedded-privilege-control"
302     myconf="${myconf} --with-embedded-server"
303     else
304     myconf="${myconf} --without-embedded-privilege-control"
305     myconf="${myconf} --without-embedded-server"
306     fi
307    
308     }
309    
310     configure_40_41_50() {
311     myconf="${myconf} $(use_with perl bench)"
312     myconf="${myconf} --enable-assembler"
313     myconf="${myconf} --with-extra-tools"
314     myconf="${myconf} --with-innodb"
315     myconf="${myconf} --without-readline"
316 vivo 1.51 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
317 vivo 1.37
318 chtekk 1.69 # --with-vio is not needed anymore, it's on by default and
319     # has been removed from configure
320 cardoe 1.67 if use ssl ; then
321 chtekk 1.69 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
322 vivo 1.62 fi
323    
324     if mysql_version_is_at_least "5.1.11" ; then
325     myconf="${myconf} $(use_with ssl)"
326 vivo 1.37 else
327 vivo 1.62 myconf="${myconf} $(use_with ssl openssl)"
328 vivo 1.37 fi
329 maekke 1.103
330 robbat2 1.98 if mysql_version_is_at_least "5.0.60" ; then
331     if use berkdb ; then
332     elog "Berkeley DB support was disabled due to build failures"
333     elog "on multiple arches, go to a version earlier than 5.0.60"
334     elog "if you want it again. Gentoo bug #224067."
335     fi
336     myconf="${myconf} --without-berkeley-db"
337     elif use berkdb ; then
338 chtekk 1.77 # The following fix is due to a bug with bdb on SPARC's. See:
339     # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
340     # It comes down to non-64-bit safety problems.
341 cardoe 1.76 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
342 chtekk 1.77 elog "Berkeley DB support was disabled due to compatibility issues on this arch"
343 cardoe 1.76 myconf="${myconf} --without-berkeley-db"
344     else
345 chtekk 1.39 myconf="${myconf} --with-berkeley-db=./bdb"
346     fi
347 cardoe 1.76 else
348     myconf="${myconf} --without-berkeley-db"
349 vivo 1.37 fi
350    
351 vivo 1.51 if mysql_version_is_at_least "4.1.3" ; then
352 vivo 1.37 myconf="${myconf} --with-geometry"
353     myconf="${myconf} $(use_with cluster ndbcluster)"
354     fi
355    
356 cardoe 1.67 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
357 vivo 1.37 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
358     myconf="${myconf} --with-archive-storage-engine"
359    
360     # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
361     myconf="${myconf} --with-csv-storage-engine"
362    
363     # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
364     myconf="${myconf} --with-blackhole-storage-engine"
365    
366     # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
367     # http://dev.mysql.com/doc/mysql/en/federated-description.html
368     # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
369 vivo 1.51 if mysql_version_is_at_least "5.0.3" ; then
370 chtekk 1.39 elog "Before using the Federated storage engine, please be sure to read"
371     elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
372 vivo 1.37 myconf="${myconf} --with-federated-storage-engine"
373     fi
374     fi
375    
376 robbat2 1.110 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
377     myconf="${myconf} `use_enable community community-features`"
378     if use community; then
379     myconf="${myconf} `use_enable profiling`"
380     else
381     myconf="${myconf} --disable-profiling"
382     fi
383 robbat2 1.99 fi
384    
385 vivo 1.51 mysql_version_is_at_least "5.0.18" \
386 cardoe 1.67 && use max-idx-128 \
387 vivo 1.37 && myconf="${myconf} --with-max-indexes=128"
388     }
389    
390 chtekk 1.39 configure_51() {
391 chtekk 1.40 # TODO: !!!! readd --without-readline
392 chtekk 1.39 # the failure depend upon config/ac-macros/readline.m4 checking into
393 vivo 1.37 # readline.h instead of history.h
394     myconf="${myconf} $(use_with ssl)"
395     myconf="${myconf} --enable-assembler"
396     myconf="${myconf} --with-geometry"
397     myconf="${myconf} --with-readline"
398     myconf="${myconf} --with-row-based-replication"
399     myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
400     myconf="${myconf} --without-pstack"
401 cardoe 1.67 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
402 chtekk 1.39
403 vivo 1.37 # 5.1 introduces a new way to manage storage engines (plugins)
404     # like configuration=none
405     local plugins="csv,myisam,myisammrg,heap"
406 cardoe 1.67 if use extraengine ; then
407 vivo 1.37 # like configuration=max-no-ndb, archive and example removed in 5.1.11
408 vivo 1.52 plugins="${plugins},archive,blackhole,example,federated,partition"
409 vivo 1.37
410 chtekk 1.39 elog "Before using the Federated storage engine, please be sure to read"
411     elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
412 vivo 1.37 fi
413    
414 robbat2 1.107 # Upstream specifically requests that InnoDB always be built.
415     plugins="${plugins},innobase"
416 vivo 1.37
417     # like configuration=max-no-ndb
418 cardoe 1.67 if use cluster ; then
419 vivo 1.37 plugins="${plugins},ndbcluster"
420     myconf="${myconf} --with-ndb-binlog"
421     fi
422    
423 vivo 1.58 if mysql_version_is_at_least "5.2" ; then
424     plugins="${plugins},falcon"
425     fi
426    
427 vivo 1.37 myconf="${myconf} --with-plugins=${plugins}"
428     }
429    
430 robbat2 1.112 pbxt_src_configure() {
431 vivo 1.51 mysql_init_vars
432    
433     pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
434    
435     einfo "Reconfiguring dir '${PWD}'"
436     AT_GNUCONF_UPDATE="yes" eautoreconf
437    
438 chtekk 1.69 local myconf=""
439     myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
440 cardoe 1.67 use debug && myconf="${myconf} --with-debug=full"
441 chtekk 1.69 # TODO: is it safe/needed to use econf here ?
442     ./configure ${myconf} || die "Problem configuring PBXT storage engine"
443 robbat2 1.112 }
444    
445     pbxt_src_compile() {
446     # Be backwards compatible for now
447     if [[ $EAPI != 2 ]]; then
448     pbxt_src_configure
449     fi
450 chtekk 1.69 # TODO: is it safe/needed to use emake here ?
451     make || die "Problem making PBXT storage engine (${myconf})"
452 vivo 1.51
453     popd
454 chtekk 1.69 # TODO: modify test suite for PBXT
455 vivo 1.51 }
456    
457     pbxt_src_install() {
458     pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
459 chtekk 1.69 make install || die "Failed to install PBXT"
460 vivo 1.51 popd
461     }
462    
463 vivo 1.37 #
464     # EBUILD FUNCTIONS
465     #
466 vivo 1.1 mysql_pkg_setup() {
467 robbat2 1.83 if hasq test ${FEATURES} ; then
468     if ! use minimal ; then
469 robbat2 1.91 if [[ $UID -eq 0 ]]; then
470 robbat2 1.96 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
471 robbat2 1.83 fi
472     fi
473     fi
474 swegener 1.53
475 chtekk 1.30 # Check for USE flag problems in pkg_setup
476 cardoe 1.67 if use static && use ssl ; then
477 chtekk 1.30 eerror "MySQL does not support being built statically with SSL support enabled!"
478     die "MySQL does not support being built statically with SSL support enabled!"
479     fi
480 vivo 1.1
481 vivo 1.51 if ! mysql_version_is_at_least "5.0" \
482 cardoe 1.67 && use raid \
483     && use static ; then
484 chtekk 1.30 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
485     eerror "with RAID support enabled."
486     die "USE flags 'raid' and 'static' conflict!"
487 vivo 1.1 fi
488    
489 vivo 1.51 if mysql_version_is_at_least "4.1.3" \
490 cardoe 1.67 && ( use cluster || use extraengine ) \
491     && use minimal ; then
492 chtekk 1.30 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
493     die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
494 vivo 1.1 fi
495 maekke 1.103
496 robbat2 1.83 # This should come after all of the die statements
497     enewgroup mysql 60 || die "problem adding 'mysql' group"
498     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
499 chtekk 1.39
500 vivo 1.51 mysql_check_version_range "4.0 to 5.0.99.99" \
501 cardoe 1.67 && use berkdb \
502 chtekk 1.41 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
503 chtekk 1.30 }
504    
505     mysql_src_unpack() {
506     # Initialize the proper variables first
507     mysql_init_vars
508 vivo 1.1
509 chtekk 1.30 unpack ${A}
510 robbat2 1.86 # Grab the patches
511     [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
512 robbat2 1.109
513     mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
514 robbat2 1.112
515     # Be backwards compatible for now
516     if [[ $EAPI != 2 ]]; then
517     mysql_src_prepare
518     fi
519     }
520    
521     mysql_src_prepare() {
522 robbat2 1.109 cd "${S}"
523 vivo 1.1
524 chtekk 1.30 # Apply the patches for this MySQL version
525 vivo 1.55 EPATCH_SUFFIX="patch"
526 chtekk 1.69 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
527 robbat2 1.86 # Clean out old items
528     rm -f "${EPATCH_SOURCE}"/*
529     # Now link in right patches
530 vivo 1.55 mysql_mv_patches
531 robbat2 1.86 # And apply
532 chtekk 1.69 epatch
533 vivo 1.1
534 chtekk 1.30 # Additional checks, remove bundled zlib
535 vivo 1.1 rm -f "${S}/zlib/"*.[ch]
536     sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
537 chtekk 1.30 rm -f "scripts/mysqlbug"
538 vivo 1.1
539     # Make charsets install in the right place
540 vivo 1.37 find . -name 'Makefile.am' \
541     -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
542 vivo 1.1
543 vivo 1.55 if mysql_version_is_at_least "4.1" ; then
544 chtekk 1.30 # Remove what needs to be recreated, so we're sure it's actually done
545     find . -name Makefile \
546     -o -name Makefile.in \
547     -o -name configure \
548     -exec rm -f {} \;
549     rm -f "ltmain.sh"
550 vivo 1.37 rm -f "scripts/mysqlbug"
551 chtekk 1.30 fi
552 vivo 1.1
553 vivo 1.51 local rebuilddirlist d
554 vivo 1.1
555 vivo 1.51 if mysql_version_is_at_least "5.1.12" ; then
556 chtekk 1.42 rebuilddirlist="."
557 swegener 1.74 # TODO: check this with a cmake expert
558 robbat2 1.107 cmake \
559 chtekk 1.72 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
560 robbat2 1.82 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX)) \
561 vivo 1.51 "storage/innobase"
562 vivo 1.1 else
563     rebuilddirlist=". innobase"
564     fi
565    
566 chtekk 1.30 for d in ${rebuilddirlist} ; do
567     einfo "Reconfiguring dir '${d}'"
568 vivo 1.4 pushd "${d}" &>/dev/null
569 vivo 1.21 AT_GNUCONF_UPDATE="yes" eautoreconf
570 vivo 1.4 popd &>/dev/null
571 vivo 1.1 done
572    
573 vivo 1.51 if mysql_check_version_range "4.1 to 5.0.99.99" \
574 cardoe 1.67 && use berkdb ; then
575 vivo 1.51 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
576 chtekk 1.71 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
577     || die "Could not copy libtool.m4 to bdb/dist/"
578 betelgeuse 1.97 #These files exist only with libtool-2*, and need to be included.
579     if [ -f '/usr/share/aclocal/ltsugar.m4' ]; then
580     cat "/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac"
581     cat "/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac"
582     cat "/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac"
583     cat "/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac"
584     fi
585 chtekk 1.71 pushd "bdb/dist" &>/dev/null
586     sh s_all \
587     || die "Failed bdb reconfigure"
588 vivo 1.4 popd &>/dev/null
589 vivo 1.1 fi
590     }
591    
592 robbat2 1.112 mysql_src_configure() {
593 chtekk 1.30 # Make sure the vars are correctly initialized
594     mysql_init_vars
595 vivo 1.1
596 chtekk 1.42 # $myconf is modified by the configure_* functions
597     local myconf=""
598 vivo 1.1
599 cardoe 1.67 if use minimal ; then
600 chtekk 1.42 configure_minimal
601 vivo 1.1 else
602 chtekk 1.42 configure_common
603 vivo 1.51 if mysql_version_is_at_least "5.1.10" ; then
604 chtekk 1.42 configure_51
605 vivo 1.1 else
606 chtekk 1.42 configure_40_41_50
607 vivo 1.1 fi
608 vivo 1.23 fi
609    
610 chtekk 1.30 # Bug #114895, bug #110149
611 vivo 1.1 filter-flags "-O" "-O[01]"
612 chtekk 1.30
613     # glib-2.3.2_pre fix, bug #16496
614 vivo 1.1 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
615    
616 robbat2 1.101 # As discovered by bug #246652, doing a double-level of SSP causes NDB to
617     # fail badly during cluster startup.
618     if [[ $(gcc-major-version) -lt 4 ]]; then
619     filter-flags "-fstack-protector-all"
620     fi
621    
622 vivo 1.48 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
623 chtekk 1.34 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
624 vivo 1.51 mysql_version_is_at_least "5.0" \
625 chtekk 1.34 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
626 chtekk 1.39 export CXXFLAGS
627 vivo 1.1
628     econf \
629     --libexecdir="/usr/sbin" \
630     --sysconfdir="${MY_SYSCONFDIR}" \
631     --localstatedir="${MY_LOCALSTATEDIR}" \
632     --sharedstatedir="${MY_SHAREDSTATEDIR}" \
633     --libdir="${MY_LIBDIR}" \
634     --includedir="${MY_INCLUDEDIR}" \
635     --with-low-memory \
636     --with-client-ldflags=-lstdc++ \
637     --enable-thread-safe-client \
638     --with-comment="Gentoo Linux ${PF}" \
639     --without-docs \
640 chtekk 1.39 ${myconf} || die "econf failed"
641 vivo 1.1
642 chtekk 1.30 # TODO: Move this before autoreconf !!!
643 vivo 1.21 find . -type f -name Makefile -print0 \
644     | xargs -0 -n100 sed -i \
645     -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
646 vivo 1.1
647 robbat2 1.112 if [[ $EAPI == 2 ]]; then
648     mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure
649     fi
650     }
651    
652     mysql_src_compile() {
653     # Be backwards compatible for now
654     if [[ $EAPI != 2 ]]; then
655     mysql_src_configure
656     fi
657    
658 chtekk 1.39 emake || die "emake failed"
659 vivo 1.55
660 cardoe 1.67 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
661 vivo 1.1 }
662    
663     mysql_src_install() {
664 chtekk 1.30 # Make sure the vars are correctly initialized
665     mysql_init_vars
666 vivo 1.1
667 chtekk 1.69 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
668 vivo 1.55
669 cardoe 1.67 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
670 vivo 1.1
671 chtekk 1.30 # Convenience links
672 robbat2 1.105 einfo "Making Convenience links for mysqlcheck multi-call binary"
673 chtekk 1.69 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
674     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
675     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
676 vivo 1.1
677 chtekk 1.30 # Various junk (my-*.cnf moved elsewhere)
678 robbat2 1.105 einfo "Removing duplicate /usr/share/mysql files"
679 chtekk 1.30 rm -Rf "${D}/usr/share/info"
680 vivo 1.37 for removeme in "mysql-log-rotate" mysql.server* \
681     binary-configure* my-*.cnf mi_test_all*
682     do
683 chtekk 1.30 rm -f "${D}"/usr/share/mysql/${removeme}
684 vivo 1.1 done
685    
686 chtekk 1.69 # Clean up stuff for a minimal build
687 cardoe 1.67 if use minimal ; then
688 robbat2 1.105 einfo "Remove all extra content for minimal build"
689 chtekk 1.30 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
690     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}
691 vivo 1.26 rm -f "${D}/usr/sbin/mysqld"
692 chtekk 1.30 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
693 vivo 1.1 fi
694    
695 chtekk 1.30 # Configuration stuff
696 vivo 1.51 if mysql_version_is_at_least "4.1" ; then
697 chtekk 1.30 mysql_mycnf_version="4.1"
698     else
699     mysql_mycnf_version="4.0"
700     fi
701 robbat2 1.105 einfo "Building default my.cnf"
702 vivo 1.1 insinto "${MY_SYSCONFDIR}"
703 vivo 1.55 doins scripts/mysqlaccess.conf
704 robbat2 1.75 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
705 chtekk 1.30 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
706 vivo 1.9 > "${TMPDIR}/my.cnf.ok"
707 cardoe 1.67 if mysql_version_is_at_least "4.1" && use latin1 ; then
708 chtekk 1.30 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
709     fi
710 vivo 1.9 newins "${TMPDIR}/my.cnf.ok" my.cnf
711    
712 chtekk 1.30 # Minimal builds don't have the MySQL server
713 cardoe 1.67 if ! use minimal ; then
714 robbat2 1.105 einfo "Creating initial directories"
715 chtekk 1.30 # Empty directories ...
716 vivo 1.1 diropts "-m0750"
717     if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
718 robbat2 1.75 dodir "${MY_DATADIR}"
719     keepdir "${MY_DATADIR}"
720     chown -R mysql:mysql "${D}/${MY_DATADIR}"
721 vivo 1.1 fi
722    
723     diropts "-m0755"
724     for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
725     dodir "${folder}"
726     keepdir "${folder}"
727     chown -R mysql:mysql "${D}/${folder}"
728     done
729     fi
730    
731 chtekk 1.30 # Docs
732 robbat2 1.105 einfo "Installing docs"
733 vivo 1.1 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
734 robbat2 1.92 doinfo "${S}"/Docs/mysql.info
735 chtekk 1.30
736     # Minimal builds don't have the MySQL server
737 cardoe 1.67 if ! use minimal ; then
738 robbat2 1.105 einfo "Including support files and sample configurations"
739 vivo 1.1 docinto "support-files"
740     for script in \
741 robbat2 1.92 "${S}"/support-files/my-*.cnf \
742     "${S}"/support-files/magic \
743     "${S}"/support-files/ndb-config-2-node.ini
744 vivo 1.1 do
745     dodoc "${script}"
746     done
747    
748     docinto "scripts"
749 robbat2 1.92 for script in "${S}"/scripts/mysql* ; do
750 vivo 1.4 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
751 vivo 1.1 done
752 robbat2 1.78
753 vivo 1.1 fi
754 vivo 1.4
755 vivo 1.58 mysql_lib_symlinks "${D}"
756 vivo 1.15 }
757    
758     mysql_pkg_preinst() {
759 chtekk 1.30 enewgroup mysql 60 || die "problem adding 'mysql' group"
760     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
761 vivo 1.1 }
762    
763     mysql_pkg_postinst() {
764 chtekk 1.30 # Make sure the vars are correctly initialized
765 vivo 1.1 mysql_init_vars
766    
767 chtekk 1.30 # Check FEATURES="collision-protect" before removing this
768 chtekk 1.69 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
769 vivo 1.1
770 chtekk 1.30 # Secure the logfiles
771 vivo 1.1 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
772     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
773     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
774    
775 vivo 1.55 # Minimal builds don't have the MySQL server
776 cardoe 1.67 if ! use minimal ; then
777 vivo 1.55 docinto "support-files"
778     for script in \
779     support-files/my-*.cnf \
780     support-files/magic \
781     support-files/ndb-config-2-node.ini
782     do
783     dodoc "${script}"
784     done
785    
786     docinto "scripts"
787     for script in scripts/mysql* ; do
788     [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
789     done
790 chtekk 1.69
791     einfo
792     elog "You might want to run:"
793     elog "\"emerge --config =${CATEGORY}/${PF}\""
794     elog "if this is a new install."
795     einfo
796 vivo 1.55 fi
797    
798 cardoe 1.67 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
799 chtekk 1.69 # TODO: explain it better
800     elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
801     elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
802     elog "if, after that, you cannot start the MySQL server,"
803 vivo 1.63 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
804 chtekk 1.69 elog "use the MySQL upgrade script to restore the table"
805     elog "or execute the following SQL command:"
806     elog " CREATE TABLE IF NOT EXISTS plugin ("
807     elog " name char(64) binary DEFAULT '' NOT NULL,"
808     elog " dl char(128) DEFAULT '' NOT NULL,"
809     elog " PRIMARY KEY (name)"
810     elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
811 vivo 1.4 fi
812 chtekk 1.69
813 vivo 1.51 mysql_check_version_range "4.0 to 5.0.99.99" \
814 cardoe 1.67 && use berkdb \
815 chtekk 1.41 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
816 vivo 1.1 }
817    
818     mysql_pkg_config() {
819 robbat2 1.111 local old_MY_DATADIR="${MY_DATADIR}"
820    
821 chtekk 1.30 # Make sure the vars are correctly initialized
822 vivo 1.1 mysql_init_vars
823    
824 robbat2 1.75 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
825 chtekk 1.30
826 vivo 1.49 if built_with_use ${CATEGORY}/${PN} minimal ; then
827 vivo 1.1 die "Minimal builds do NOT include the MySQL server"
828     fi
829    
830 robbat2 1.111 if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
831     local MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${MY_DATADIR})"
832     local old_MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${old_MY_DATADIR})"
833    
834     if [[ -d "${old_MY_DATADIR_s}" ]]; then
835     if [[ -d "${MY_DATADIR_s}" ]]; then
836     ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
837     ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
838     else
839     elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
840     mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
841     || die "Moving MY_DATADIR failed"
842     fi
843     else
844     ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
845     if [[ -d "${MY_DATADIR_s}" ]]; then
846     ewarn "Attempting to use ${MY_DATADIR_s}"
847     else
848     eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
849     die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
850     fi
851     fi
852     fi
853    
854 vivo 1.1 local pwd1="a"
855     local pwd2="b"
856     local maxtry=5
857    
858 robbat2 1.75 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
859 vivo 1.1 ewarn "You have already a MySQL database in place."
860 robbat2 1.75 ewarn "(${ROOT}/${MY_DATADIR}/*)"
861 vivo 1.1 ewarn "Please rename or delete it if you wish to replace it."
862     die "MySQL database already exists!"
863     fi
864    
865 robbat2 1.102 # Bug #213475 - MySQL _will_ object strenously if your machine is named
866     # localhost. Also causes weird failures.
867     [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
868    
869 vivo 1.1 einfo "Creating the mysql database and setting proper"
870 chtekk 1.30 einfo "permissions on it ..."
871 vivo 1.1
872     einfo "Insert a password for the mysql 'root' user"
873     ewarn "Avoid [\"'\\_%] characters in the password"
874 chtekk 1.30 read -rsp " >" pwd1 ; echo
875 vivo 1.1
876 chtekk 1.30 einfo "Retype the password"
877 vivo 1.1 read -rsp " >" pwd2 ; echo
878    
879     if [[ "x$pwd1" != "x$pwd2" ]] ; then
880     die "Passwords are not the same"
881     fi
882    
883     local options=""
884     local sqltmp="$(emktemp)"
885    
886 chtekk 1.30 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
887 vivo 1.1 [[ -r "${help_tables}" ]] \
888 vivo 1.8 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
889 vivo 1.1 || touch "${TMPDIR}/fill_help_tables.sql"
890     help_tables="${TMPDIR}/fill_help_tables.sql"
891    
892 vivo 1.4 pushd "${TMPDIR}" &>/dev/null
893 robbat2 1.85 "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1
894     if [ $? -ne 0 ]; then
895     grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
896     die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
897     fi
898 vivo 1.4 popd &>/dev/null
899 robbat2 1.75 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
900 vivo 1.26 || die "MySQL databases not installed"
901 robbat2 1.94 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
902     chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
903 vivo 1.1
904 vivo 1.51 if mysql_version_is_at_least "4.1.3" ; then
905 vivo 1.1 options="--skip-ndbcluster"
906    
907     # Filling timezones, see
908     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
909 chtekk 1.30 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
910 vivo 1.1
911     if [[ -r "${help_tables}" ]] ; then
912     cat "${help_tables}" >> "${sqltmp}"
913     fi
914     fi
915    
916 chtekk 1.30 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
917     local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
918 vivo 1.26 local mysqld="${ROOT}/usr/sbin/mysqld \
919 vivo 1.1 ${options} \
920     --user=mysql \
921     --skip-grant-tables \
922     --basedir=${ROOT}/usr \
923 robbat2 1.75 --datadir=${ROOT}/${MY_DATADIR} \
924 vivo 1.1 --skip-innodb \
925     --skip-bdb \
926     --skip-networking \
927     --max_allowed_packet=8M \
928     --net_buffer_length=16K \
929     --socket=${socket} \
930     --pid-file=${pidfile}"
931 chtekk 1.30 ${mysqld} &
932 vivo 1.1 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
933 chtekk 1.30 maxtry=$((${maxtry}-1))
934 vivo 1.1 echo -n "."
935     sleep 1
936     done
937    
938 chtekk 1.30 # Do this from memory, as we don't want clear text passwords in temp files
939 vivo 1.1 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
940 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
941 vivo 1.1 --socket=${socket} \
942     -hlocalhost \
943     -e "${sql}"
944    
945 chtekk 1.30 einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
946 vivo 1.1
947 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
948 vivo 1.1 --socket=${socket} \
949     -hlocalhost \
950     -uroot \
951     -p"${pwd1}" \
952     mysql < "${sqltmp}"
953    
954 chtekk 1.30 # Stop the server and cleanup
955 vivo 1.1 kill $(< "${pidfile}" )
956 chtekk 1.30 rm -f "${sqltmp}"
957     einfo "Stopping the server ..."
958 vivo 1.1 wait %1
959 chtekk 1.30 einfo "Done"
960 vivo 1.1 }
961    
962     mysql_pkg_postrm() {
963 chtekk 1.70 : # mysql_lib_symlinks "${D}"
964 vivo 1.25 }

  ViewVC Help
Powered by ViewVC 1.1.20