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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.114 - (hide annotations) (download)
Mon Jul 6 19:06:03 2009 UTC (5 years, 1 month ago) by robbat2
Branch: MAIN
Changes since 1.113: +3 -3 lines
EXPORT_FUNCTIONS goes after inherit.

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.114 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.113 2009/07/06 19:05:07 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 robbat2 1.109
514     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     econf \
630     --libexecdir="/usr/sbin" \
631     --sysconfdir="${MY_SYSCONFDIR}" \
632     --localstatedir="${MY_LOCALSTATEDIR}" \
633     --sharedstatedir="${MY_SHAREDSTATEDIR}" \
634     --libdir="${MY_LIBDIR}" \
635     --includedir="${MY_INCLUDEDIR}" \
636     --with-low-memory \
637     --with-client-ldflags=-lstdc++ \
638     --enable-thread-safe-client \
639     --with-comment="Gentoo Linux ${PF}" \
640     --without-docs \
641 chtekk 1.39 ${myconf} || die "econf failed"
642 vivo 1.1
643 chtekk 1.30 # TODO: Move this before autoreconf !!!
644 vivo 1.21 find . -type f -name Makefile -print0 \
645     | xargs -0 -n100 sed -i \
646     -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
647 vivo 1.1
648 robbat2 1.112 if [[ $EAPI == 2 ]]; then
649     mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure
650     fi
651     }
652    
653     mysql_src_compile() {
654     # Be backwards compatible for now
655     if [[ $EAPI != 2 ]]; then
656     mysql_src_configure
657     fi
658    
659 chtekk 1.39 emake || die "emake failed"
660 vivo 1.55
661 cardoe 1.67 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
662 vivo 1.1 }
663    
664     mysql_src_install() {
665 chtekk 1.30 # Make sure the vars are correctly initialized
666     mysql_init_vars
667 vivo 1.1
668 chtekk 1.69 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
669 vivo 1.55
670 cardoe 1.67 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
671 vivo 1.1
672 chtekk 1.30 # Convenience links
673 robbat2 1.105 einfo "Making Convenience links for mysqlcheck multi-call binary"
674 chtekk 1.69 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
675     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
676     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
677 vivo 1.1
678 chtekk 1.30 # Various junk (my-*.cnf moved elsewhere)
679 robbat2 1.105 einfo "Removing duplicate /usr/share/mysql files"
680 chtekk 1.30 rm -Rf "${D}/usr/share/info"
681 vivo 1.37 for removeme in "mysql-log-rotate" mysql.server* \
682     binary-configure* my-*.cnf mi_test_all*
683     do
684 chtekk 1.30 rm -f "${D}"/usr/share/mysql/${removeme}
685 vivo 1.1 done
686    
687 chtekk 1.69 # Clean up stuff for a minimal build
688 cardoe 1.67 if use minimal ; then
689 robbat2 1.105 einfo "Remove all extra content for minimal build"
690 chtekk 1.30 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
691     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}
692 vivo 1.26 rm -f "${D}/usr/sbin/mysqld"
693 chtekk 1.30 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
694 vivo 1.1 fi
695    
696 chtekk 1.30 # Configuration stuff
697 vivo 1.51 if mysql_version_is_at_least "4.1" ; then
698 chtekk 1.30 mysql_mycnf_version="4.1"
699     else
700     mysql_mycnf_version="4.0"
701     fi
702 robbat2 1.105 einfo "Building default my.cnf"
703 vivo 1.1 insinto "${MY_SYSCONFDIR}"
704 vivo 1.55 doins scripts/mysqlaccess.conf
705 robbat2 1.75 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
706 chtekk 1.30 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
707 vivo 1.9 > "${TMPDIR}/my.cnf.ok"
708 cardoe 1.67 if mysql_version_is_at_least "4.1" && use latin1 ; then
709 chtekk 1.30 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
710     fi
711 vivo 1.9 newins "${TMPDIR}/my.cnf.ok" my.cnf
712    
713 chtekk 1.30 # Minimal builds don't have the MySQL server
714 cardoe 1.67 if ! use minimal ; then
715 robbat2 1.105 einfo "Creating initial directories"
716 chtekk 1.30 # Empty directories ...
717 vivo 1.1 diropts "-m0750"
718     if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
719 robbat2 1.75 dodir "${MY_DATADIR}"
720     keepdir "${MY_DATADIR}"
721     chown -R mysql:mysql "${D}/${MY_DATADIR}"
722 vivo 1.1 fi
723    
724     diropts "-m0755"
725     for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
726     dodir "${folder}"
727     keepdir "${folder}"
728     chown -R mysql:mysql "${D}/${folder}"
729     done
730     fi
731    
732 chtekk 1.30 # Docs
733 robbat2 1.105 einfo "Installing docs"
734 vivo 1.1 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
735 robbat2 1.92 doinfo "${S}"/Docs/mysql.info
736 chtekk 1.30
737     # Minimal builds don't have the MySQL server
738 cardoe 1.67 if ! use minimal ; then
739 robbat2 1.105 einfo "Including support files and sample configurations"
740 vivo 1.1 docinto "support-files"
741     for script in \
742 robbat2 1.92 "${S}"/support-files/my-*.cnf \
743     "${S}"/support-files/magic \
744     "${S}"/support-files/ndb-config-2-node.ini
745 vivo 1.1 do
746     dodoc "${script}"
747     done
748    
749     docinto "scripts"
750 robbat2 1.92 for script in "${S}"/scripts/mysql* ; do
751 vivo 1.4 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
752 vivo 1.1 done
753 robbat2 1.78
754 vivo 1.1 fi
755 vivo 1.4
756 vivo 1.58 mysql_lib_symlinks "${D}"
757 vivo 1.15 }
758    
759     mysql_pkg_preinst() {
760 chtekk 1.30 enewgroup mysql 60 || die "problem adding 'mysql' group"
761     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
762 vivo 1.1 }
763    
764     mysql_pkg_postinst() {
765 chtekk 1.30 # Make sure the vars are correctly initialized
766 vivo 1.1 mysql_init_vars
767    
768 chtekk 1.30 # Check FEATURES="collision-protect" before removing this
769 chtekk 1.69 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
770 vivo 1.1
771 chtekk 1.30 # Secure the logfiles
772 vivo 1.1 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
773     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
774     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
775    
776 vivo 1.55 # Minimal builds don't have the MySQL server
777 cardoe 1.67 if ! use minimal ; then
778 vivo 1.55 docinto "support-files"
779     for script in \
780     support-files/my-*.cnf \
781     support-files/magic \
782     support-files/ndb-config-2-node.ini
783     do
784     dodoc "${script}"
785     done
786    
787     docinto "scripts"
788     for script in scripts/mysql* ; do
789     [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
790     done
791 chtekk 1.69
792     einfo
793     elog "You might want to run:"
794     elog "\"emerge --config =${CATEGORY}/${PF}\""
795     elog "if this is a new install."
796     einfo
797 vivo 1.55 fi
798    
799 cardoe 1.67 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
800 chtekk 1.69 # TODO: explain it better
801     elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
802     elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
803     elog "if, after that, you cannot start the MySQL server,"
804 vivo 1.63 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
805 chtekk 1.69 elog "use the MySQL upgrade script to restore the table"
806     elog "or execute the following SQL command:"
807     elog " CREATE TABLE IF NOT EXISTS plugin ("
808     elog " name char(64) binary DEFAULT '' NOT NULL,"
809     elog " dl char(128) DEFAULT '' NOT NULL,"
810     elog " PRIMARY KEY (name)"
811     elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
812 vivo 1.4 fi
813 chtekk 1.69
814 vivo 1.51 mysql_check_version_range "4.0 to 5.0.99.99" \
815 cardoe 1.67 && use berkdb \
816 chtekk 1.41 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
817 vivo 1.1 }
818    
819     mysql_pkg_config() {
820 robbat2 1.111 local old_MY_DATADIR="${MY_DATADIR}"
821    
822 chtekk 1.30 # Make sure the vars are correctly initialized
823 vivo 1.1 mysql_init_vars
824    
825 robbat2 1.75 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
826 chtekk 1.30
827 vivo 1.49 if built_with_use ${CATEGORY}/${PN} minimal ; then
828 vivo 1.1 die "Minimal builds do NOT include the MySQL server"
829     fi
830    
831 robbat2 1.111 if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
832     local MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${MY_DATADIR})"
833     local old_MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${old_MY_DATADIR})"
834    
835     if [[ -d "${old_MY_DATADIR_s}" ]]; then
836     if [[ -d "${MY_DATADIR_s}" ]]; then
837     ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
838     ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
839     else
840     elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
841     mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
842     || die "Moving MY_DATADIR failed"
843     fi
844     else
845     ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
846     if [[ -d "${MY_DATADIR_s}" ]]; then
847     ewarn "Attempting to use ${MY_DATADIR_s}"
848     else
849     eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
850     die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
851     fi
852     fi
853     fi
854    
855 vivo 1.1 local pwd1="a"
856     local pwd2="b"
857     local maxtry=5
858    
859 robbat2 1.75 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
860 vivo 1.1 ewarn "You have already a MySQL database in place."
861 robbat2 1.75 ewarn "(${ROOT}/${MY_DATADIR}/*)"
862 vivo 1.1 ewarn "Please rename or delete it if you wish to replace it."
863     die "MySQL database already exists!"
864     fi
865    
866 robbat2 1.102 # Bug #213475 - MySQL _will_ object strenously if your machine is named
867     # localhost. Also causes weird failures.
868     [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
869    
870 vivo 1.1 einfo "Creating the mysql database and setting proper"
871 chtekk 1.30 einfo "permissions on it ..."
872 vivo 1.1
873     einfo "Insert a password for the mysql 'root' user"
874     ewarn "Avoid [\"'\\_%] characters in the password"
875 chtekk 1.30 read -rsp " >" pwd1 ; echo
876 vivo 1.1
877 chtekk 1.30 einfo "Retype the password"
878 vivo 1.1 read -rsp " >" pwd2 ; echo
879    
880     if [[ "x$pwd1" != "x$pwd2" ]] ; then
881     die "Passwords are not the same"
882     fi
883    
884     local options=""
885     local sqltmp="$(emktemp)"
886    
887 chtekk 1.30 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
888 vivo 1.1 [[ -r "${help_tables}" ]] \
889 vivo 1.8 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
890 vivo 1.1 || touch "${TMPDIR}/fill_help_tables.sql"
891     help_tables="${TMPDIR}/fill_help_tables.sql"
892    
893 vivo 1.4 pushd "${TMPDIR}" &>/dev/null
894 robbat2 1.85 "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1
895     if [ $? -ne 0 ]; then
896     grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
897     die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
898     fi
899 vivo 1.4 popd &>/dev/null
900 robbat2 1.75 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
901 vivo 1.26 || die "MySQL databases not installed"
902 robbat2 1.94 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
903     chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
904 vivo 1.1
905 vivo 1.51 if mysql_version_is_at_least "4.1.3" ; then
906 vivo 1.1 options="--skip-ndbcluster"
907    
908     # Filling timezones, see
909     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
910 chtekk 1.30 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
911 vivo 1.1
912     if [[ -r "${help_tables}" ]] ; then
913     cat "${help_tables}" >> "${sqltmp}"
914     fi
915     fi
916    
917 chtekk 1.30 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
918     local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
919 vivo 1.26 local mysqld="${ROOT}/usr/sbin/mysqld \
920 vivo 1.1 ${options} \
921     --user=mysql \
922     --skip-grant-tables \
923     --basedir=${ROOT}/usr \
924 robbat2 1.75 --datadir=${ROOT}/${MY_DATADIR} \
925 vivo 1.1 --skip-innodb \
926     --skip-bdb \
927     --skip-networking \
928     --max_allowed_packet=8M \
929     --net_buffer_length=16K \
930     --socket=${socket} \
931     --pid-file=${pidfile}"
932 chtekk 1.30 ${mysqld} &
933 vivo 1.1 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
934 chtekk 1.30 maxtry=$((${maxtry}-1))
935 vivo 1.1 echo -n "."
936     sleep 1
937     done
938    
939 chtekk 1.30 # Do this from memory, as we don't want clear text passwords in temp files
940 vivo 1.1 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
941 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
942 vivo 1.1 --socket=${socket} \
943     -hlocalhost \
944     -e "${sql}"
945    
946 chtekk 1.30 einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
947 vivo 1.1
948 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
949 vivo 1.1 --socket=${socket} \
950     -hlocalhost \
951     -uroot \
952     -p"${pwd1}" \
953     mysql < "${sqltmp}"
954    
955 chtekk 1.30 # Stop the server and cleanup
956 vivo 1.1 kill $(< "${pidfile}" )
957 chtekk 1.30 rm -f "${sqltmp}"
958     einfo "Stopping the server ..."
959 vivo 1.1 wait %1
960 chtekk 1.30 einfo "Done"
961 vivo 1.1 }
962    
963     mysql_pkg_postrm() {
964 chtekk 1.70 : # mysql_lib_symlinks "${D}"
965 vivo 1.25 }

  ViewVC Help
Powered by ViewVC 1.1.20