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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.116 - (hide annotations) (download)
Sun Oct 11 11:42:07 2009 UTC (4 years, 11 months ago) by maekke
Branch: MAIN
Changes since 1.115: +3 -3 lines
whitespace

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

  ViewVC Help
Powered by ViewVC 1.1.20