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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.118 - (hide annotations) (download)
Thu Nov 19 20:59:38 2009 UTC (4 years, 4 months ago) by hanno
Branch: MAIN
Changes since 1.117: +3 -1 lines
adjust mysql eclass for mysql 5.4

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

  ViewVC Help
Powered by ViewVC 1.1.20