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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.151 - (hide annotations) (download)
Mon Sep 6 08:02:08 2010 UTC (4 years ago) by robbat2
Branch: MAIN
Changes since 1.150: +6 -1 lines
Bug #336075: Add warning about mysql_upgrade for some users.

1 robbat2 1.119 # Copyright 1999-2009 Gentoo Foundation
2 vivo 1.1 # Distributed under the terms of the GNU General Public License v2
3 robbat2 1.151 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.150 2010/08/21 19:39:52 vapier Exp $
4 vivo 1.1
5 robbat2 1.119 # @ECLASS: mysql.eclass
6     # @MAINTAINER:
7 vivo 1.54 # Author: Francesco Riosa (Retired) <vivo@gentoo.org>
8 robbat2 1.119 # Maintainers: MySQL Team <mysql-bugs@gentoo.org>
9 robbat2 1.86 # - Luca Longinotti <chtekk@gentoo.org>
10     # - Robin H. Johnson <robbat2@gentoo.org>
11 robbat2 1.119 # @BLURB: This eclass provides most of the functions for mysql ebuilds
12     # @DESCRIPTION:
13     # The mysql.eclass provides almost all the code to build the mysql ebuilds
14     # including the src_unpack, src_prepare, src_configure, src_compile,
15     # scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm
16     # phase hooks.
17 chtekk 1.30
18 vivo 1.59 WANT_AUTOCONF="latest"
19     WANT_AUTOMAKE="latest"
20 chtekk 1.69
21 robbat2 1.127 inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator toolchain-funcs
22 robbat2 1.114
23 robbat2 1.126 # Shorten the path because the socket path length must be shorter than 107 chars
24     # and we will run a mysql server during test phase
25     S="${WORKDIR}/mysql"
26    
27     [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20090228-0714Z"
28     if [[ "${MY_EXTRAS_VER}" == "live" ]]; then
29     EGIT_PROJECT=mysql-extras
30     EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git"
31     inherit git
32     fi
33    
34 robbat2 1.113 case "${EAPI:-0}" in
35     2)
36     EXPORT_FUNCTIONS pkg_setup \
37     src_unpack src_prepare \
38     src_configure src_compile \
39     src_install \
40     pkg_preinst pkg_postinst \
41     pkg_config pkg_postrm
42     IUSE_DEFAULT_ON='+'
43     ;;
44 robbat2 1.119 0 | 1)
45 robbat2 1.113 EXPORT_FUNCTIONS pkg_setup \
46     src_unpack \
47     src_compile \
48     src_install \
49     pkg_preinst pkg_postinst \
50     pkg_config pkg_postrm
51     ;;
52 robbat2 1.119 *)
53     die "Unsupported EAPI: ${EAPI}" ;;
54 robbat2 1.113 esac
55    
56 robbat2 1.137
57     # @ECLASS-VARIABLE: MYSQL_PV_MAJOR
58     # @DESCRIPTION:
59     # Upstream MySQL considers the first two parts of the version number to be the
60     # major version. Upgrades that change major version should always run
61     # mysql_upgrade.
62     MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})"
63    
64 robbat2 1.149 # Cluster is a special case...
65     if [[ "${PN}" == "mysql-cluster" ]]; then
66     case $PV in
67     6.1*|7.0*|7.1*) MYSQL_PV_MAJOR=5.1 ;;
68     esac
69     fi
70    
71    
72 robbat2 1.119 # @ECLASS-VARIABLE: MYSQL_VERSION_ID
73     # @DESCRIPTION:
74 vivo 1.60 # MYSQL_VERSION_ID will be:
75     # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
76     # This is an important part, because many of the choices the MySQL ebuild will do
77     # depend on this variable.
78     # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
79 robbat2 1.88 # We also strip off upstream's trailing letter that they use to respin tarballs
80 chtekk 1.69
81 vivo 1.60 MYSQL_VERSION_ID=""
82 robbat2 1.88 tpv="${PV%[a-z]}"
83     tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
84 vivo 1.60 for vatom in 0 1 2 3 ; do
85     # pad to length 2
86     tpv[${vatom}]="00${tpv[${vatom}]}"
87     MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
88     done
89     # strip leading "0" (otherwise it's considered an octal number by BASH)
90     MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
91    
92 robbat2 1.119 # @ECLASS-VARIABLE: MYSQL_COMMUNITY_FEATURES
93     # @DESCRIPTION:
94     # Specifiy if community features are available. Possible values are 1 (yes)
95     # and 0 (no).
96 robbat2 1.110 # Community features are available in mysql-community
97     # AND in the re-merged mysql-5.0.82 and newer
98 robbat2 1.137 if [ "${PN}" == "mysql-community" -o "${PN}" == "mariadb" ]; then
99 robbat2 1.110 MYSQL_COMMUNITY_FEATURES=1
100     elif [ "${PV#5.0}" != "${PV}" ] && mysql_version_is_at_least "5.0.82"; then
101     MYSQL_COMMUNITY_FEATURES=1
102 robbat2 1.117 elif [ "${PV#5.1}" != "${PV}" ] && mysql_version_is_at_least "5.1.28"; then
103     MYSQL_COMMUNITY_FEATURES=1
104 robbat2 1.132 elif [ "${PV#5.4}" != "${PV}" ] ; then
105     MYSQL_COMMUNITY_FEATURES=1
106     elif [ "${PV#5.5}" != "${PV}" ] ; then
107     MYSQL_COMMUNITY_FEATURES=1
108 robbat2 1.149 elif [ "${PV#6}" != "${PV}" ] ; then
109     MYSQL_COMMUNITY_FEATURES=1
110     elif [ "${PV#7}" != "${PV}" ] ; then
111 hanno 1.118 MYSQL_COMMUNITY_FEATURES=1
112 robbat2 1.110 else
113     MYSQL_COMMUNITY_FEATURES=0
114     fi
115    
116 robbat2 1.120 # @ECLASS-VARIABLE: XTRADB_VER
117     # @DESCRIPTION:
118     # Version of the XTRADB storage engine
119     XTRADB_VER="${XTRADB_VER}"
120    
121     # @ECLASS-VARIABLE: PERCONA_VER
122     # @DESCRIPTION:
123     # Designation by PERCONA for a MySQL version to apply an XTRADB release
124     PERCONA_VER="${PERCONA_VER}"
125    
126 vivo 1.60 # Be warned, *DEPEND are version-dependant
127 robbat2 1.90 # These are used for both runtime and compiletime
128 vivo 1.60 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
129     userland_GNU? ( sys-process/procps )
130     >=sys-apps/sed-4
131     >=sys-apps/texinfo-4.7-r1
132     >=sys-libs/readline-4.1
133 chtekk 1.69 >=sys-libs/zlib-1.2.3"
134 vivo 1.60
135 robbat2 1.137 [[ "${PN}" == "mariadb" ]] \
136     && DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )"
137    
138 chtekk 1.69 # Having different flavours at the same time is not a good idea
139 robbat2 1.149 for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do
140 robbat2 1.137 [[ "${i}" == ${PN} ]] ||
141     DEPEND="${DEPEND} !dev-db/${i}"
142 vivo 1.60 done
143    
144 robbat2 1.90 RDEPEND="${DEPEND}
145     !minimal? ( dev-db/mysql-init-scripts )
146     selinux? ( sec-policy/selinux-mysql )"
147    
148     # compile-time-only
149 vivo 1.60 mysql_version_is_at_least "5.1" \
150     || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
151    
152 robbat2 1.90 # compile-time-only
153 chtekk 1.69 mysql_version_is_at_least "5.1.12" \
154 robbat2 1.107 && DEPEND="${DEPEND} >=dev-util/cmake-2.4.3"
155 chtekk 1.69
156 vivo 1.60 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
157     PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
158    
159 robbat2 1.104 # For other stuff to bring us in
160 robbat2 1.137 PDEPEND="${PDEPEND} =virtual/mysql-${MYSQL_PV_MAJOR}"
161 robbat2 1.104
162 robbat2 1.81 # Work out the default SERVER_URI correctly
163     if [ -z "${SERVER_URI}" ]; then
164 robbat2 1.132 [ -z "${MY_PV}" ] && MY_PV="${PV//_/-}"
165 robbat2 1.137 if [ "${PN}" == "mariadb" ]; then
166     MARIA_FULL_PV="$(replace_version_separator 3 '-' ${PV})"
167 robbat2 1.145 MARIA_FULL_P="${PN}-${MARIA_FULL_PV}"
168     SERVER_URI="
169     http://ftp.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
170     http://maria.llarian.net/download/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
171     http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz
172     "
173 robbat2 1.149 # The community and cluster builds are on the mirrors
174     elif [[ "${MYSQL_COMMUNITY_FEATURES}" == "1" || ${PN} == "mysql-cluster" ]] ; then
175 robbat2 1.148 if [[ "${PN}" == "mysql-cluster" ]] ; then
176     URI_DIR="MySQL-Cluster"
177     URI_FILE="mysql-cluster-gpl"
178     else
179     URI_DIR="MySQL"
180     URI_FILE="mysql"
181     fi
182     URI_A="${URI_FILE}-${MY_PV}.tar.gz"
183     MIRROR_PV=$(get_version_component_range 1-2 ${PV})
184     # Recently upstream switched to an archive site, and not on mirrors
185     SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A}
186     mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}"
187 robbat2 1.110 # The (old) enterprise source is on the primary site only
188 robbat2 1.81 elif [ "${PN}" == "mysql" ]; then
189 robbat2 1.132 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz"
190 robbat2 1.81 fi
191     fi
192    
193 vivo 1.60 # Define correct SRC_URIs
194 robbat2 1.86 SRC_URI="${SERVER_URI}"
195    
196 robbat2 1.122 # Gentoo patches to MySQL
197     [[ ${MY_EXTRAS_VER} != live ]] \
198     && SRC_URI="${SRC_URI}
199 robbat2 1.73 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
200 robbat2 1.124 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
201     http://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
202 robbat2 1.122
203 vivo 1.60 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
204     HOMEPAGE="http://www.mysql.com/"
205 robbat2 1.137 if [[ "${PN}" == "mariadb" ]]; then
206     HOMEPAGE="http://askmonty.org/"
207     DESCRIPTION="MariaDB is a MySQL fork with 3rd-party patches and additional storage engines merged."
208     fi
209 robbat2 1.142 if [[ "${PN}" == "mysql-community" ]]; then
210     DESCRIPTION="${DESCRIPTION} (obsolete, move to dev-db/mysql)"
211     fi
212 vivo 1.60 LICENSE="GPL-2"
213 chtekk 1.69 SLOT="0"
214 robbat2 1.133 IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static test"
215 vivo 1.60
216     mysql_version_is_at_least "4.1" \
217     && IUSE="${IUSE} latin1"
218    
219 robbat2 1.149 if mysql_version_is_at_least "4.1.3" ; then
220     IUSE="${IUSE} extraengine"
221     if [[ "${PN}" != "mysql-cluster" ]] ; then
222     IUSE="${IUSE} cluster"
223     fi
224     fi
225 vivo 1.60
226     mysql_version_is_at_least "5.0" \
227     || IUSE="${IUSE} raid"
228    
229     mysql_version_is_at_least "5.0.18" \
230     && IUSE="${IUSE} max-idx-128"
231    
232     mysql_version_is_at_least "5.1" \
233     || IUSE="${IUSE} berkdb"
234    
235 robbat2 1.133 [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
236     && IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling"
237    
238 robbat2 1.137 [[ "${PN}" == "mariadb" ]] \
239     && IUSE="${IUSE} libevent"
240    
241     # MariaDB has integrated PBXT
242     # PBXT_VERSION means that we have a PBXT patch for this PV
243     # PBXT was only introduced after 5.1.12
244     pbxt_patch_available() {
245     [[ "${PN}" != "mariadb" ]] \
246     && mysql_version_is_at_least "5.1.12" \
247     && [[ -n "${PBXT_VERSION}" ]]
248     return $?
249     }
250    
251     pbxt_available() {
252     pbxt_patch_available || [[ "${PN}" == "mariadb" ]]
253     return $?
254     }
255    
256     # Get the percona tarball if XTRADB_VER and PERCONA_VER are both set
257     # MariaDB has integrated XtraDB
258     # XTRADB_VERS means that we have a XTRADB patch for this PV
259     # XTRADB was only introduced after 5.1.26
260     xtradb_patch_available() {
261     [[ "${PN}" != "mariadb" ]] \
262     && mysql_version_is_at_least "5.1.26" \
263     && [[ -n "${XTRADB_VER}" && -n "${PERCONA_VER}" ]]
264     return $?
265     }
266    
267 robbat2 1.145
268 robbat2 1.137 pbxt_patch_available \
269 robbat2 1.133 && PBXT_P="pbxt-${PBXT_VERSION}" \
270 robbat2 1.134 && PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz" \
271 robbat2 1.133 && SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" \
272 robbat2 1.137
273 robbat2 1.145 # PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins
274     # vs. built outside the dir
275 robbat2 1.137 pbxt_available \
276 robbat2 1.145 && IUSE="${IUSE} pbxt" \
277     && mysql_version_is_at_least "5.1.40" \
278     && PBXT_NEWSTYLE=1
279 vivo 1.60
280 robbat2 1.137 xtradb_patch_available \
281 robbat2 1.133 && XTRADB_P="percona-xtradb-${XTRADB_VER}" \
282 robbat2 1.134 && XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" \
283 robbat2 1.145 && XTRADB_SRC_B1="http://www.percona.com/" \
284     && XTRADB_SRC_B2="${XTRADB_SRC_B1}/percona-builds/" \
285     && XTRADB_SRC_URI1="${XTRADB_SRC_B2}/Percona-Server/Percona-Server-${XTRADB_SRC_URI_COMMON}" \
286     && XTRADB_SRC_URI2="${XTRADB_SRC_B2}/xtradb/${XTRADB_SRC_URI_COMMON}" \
287     && XTRADB_SRC_URI3="${XTRADB_SRC_B1}/${PN}/xtradb/${XTRADB_SRC_URI_COMMON}" \
288     && SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} ${XTRADB_SRC_URI3} )" \
289 robbat2 1.120 && IUSE="${IUSE} xtradb"
290    
291 vivo 1.37 #
292     # HELPER FUNCTIONS:
293     #
294    
295 robbat2 1.119 # @FUNCTION: mysql_disable_test
296     # @DESCRIPTION:
297     # Helper function to disable specific tests.
298 vivo 1.51 mysql_disable_test() {
299 robbat2 1.127 local rawtestname testname testsuite reason mysql_disable_file
300     rawtestname="${1}" ; shift
301     reason="${@}"
302     ewarn "test '${rawtestname}' disabled: '${reason}'"
303    
304     testsuite="${rawtestname/.*}"
305     testname="${rawtestname/*.}"
306     mysql_disable_file="${S}/mysql-test/t/disabled.def"
307 robbat2 1.131 #einfo "rawtestname=${rawtestname} testname=${testname} testsuite=${testsuite}"
308 vivo 1.51 echo ${testname} : ${reason} >> "${mysql_disable_file}"
309 robbat2 1.127
310     # ${S}/mysql-tests/t/disabled.def
311     #
312     # ${S}/mysql-tests/suite/federated/disabled.def
313     #
314     # ${S}/mysql-tests/suite/jp/t/disabled.def
315     # ${S}/mysql-tests/suite/ndb/t/disabled.def
316     # ${S}/mysql-tests/suite/rpl/t/disabled.def
317     # ${S}/mysql-tests/suite/parts/t/disabled.def
318     # ${S}/mysql-tests/suite/rpl_ndb/t/disabled.def
319     # ${S}/mysql-tests/suite/ndb_team/t/disabled.def
320     # ${S}/mysql-tests/suite/binlog/t/disabled.def
321     # ${S}/mysql-tests/suite/innodb/t/disabled.def
322     if [ -n "${testsuite}" ]; then
323     for mysql_disable_file in \
324     ${S}/mysql-test/suite/${testsuite}/disabled.def \
325     ${S}/mysql-test/suite/${testsuite}/t/disabled.def \
326     FAILED ; do
327     [ -f "${mysql_disable_file}" ] && break
328     done
329     if [ "${mysql_disabled_file}" != "FAILED" ]; then
330     echo "${testname} : ${reason}" >> "${mysql_disable_file}"
331     else
332     ewarn "Could not find testsuite disabled.def location for ${rawtestname}"
333     fi
334     fi
335 vivo 1.51 }
336    
337 robbat2 1.119 # @FUNCTION: mysql_init_vars
338     # @DESCRIPTION:
339 vivo 1.8 # void mysql_init_vars()
340 chtekk 1.30 # Initialize global variables
341     # 2005-11-19 <vivo@gentoo.org>
342 vivo 1.8 mysql_init_vars() {
343 chtekk 1.69 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
344     MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
345     MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
346     MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
347     MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
348     MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
349 vivo 1.8
350 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
351     MY_DATADIR=""
352 chtekk 1.30 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
353 robbat2 1.75 MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
354 vivo 1.26 | sed -ne '/datadir/s|^--datadir=||p' \
355     | tail -n1`
356 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
357     MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
358 robbat2 1.89 | sed -e 's/.*=\s*//' \
359     | tail -n1`
360 vivo 1.8 fi
361     fi
362 robbat2 1.75 if [[ -z "${MY_DATADIR}" ]] ; then
363     MY_DATADIR="${MY_LOCALSTATEDIR}"
364     einfo "Using default MY_DATADIR"
365 vivo 1.8 fi
366 robbat2 1.75 elog "MySQL MY_DATADIR is ${MY_DATADIR}"
367 vivo 1.8
368 chtekk 1.30 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
369 robbat2 1.75 if [[ -e "${MY_DATADIR}" ]] ; then
370 robbat2 1.95 # If you get this and you're wondering about it, see bug #207636
371     elog "MySQL datadir found in ${MY_DATADIR}"
372     elog "A new one will not be created."
373 vivo 1.8 PREVIOUS_DATADIR="yes"
374     else
375     PREVIOUS_DATADIR="no"
376     fi
377 chtekk 1.30 export PREVIOUS_DATADIR
378 vivo 1.8 fi
379 robbat2 1.111 else
380     if [[ ${EBUILD_PHASE} == "config" ]]; then
381     local new_MY_DATADIR
382     new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
383     | sed -ne '/datadir/s|^--datadir=||p' \
384     | tail -n1`
385    
386     if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
387     ewarn "MySQL MY_DATADIR has changed"
388     ewarn "from ${MY_DATADIR}"
389     ewarn "to ${new_MY_DATADIR}"
390     MY_DATADIR="${new_MY_DATADIR}"
391     fi
392     fi
393 vivo 1.8 fi
394    
395 robbat2 1.147 if [ "${MY_SOURCEDIR:-unset}" == "unset" ]; then
396     MY_SOURCEDIR=${SERVER_URI##*/}
397     MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
398     fi
399 vivo 1.55
400 chtekk 1.69 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
401 vivo 1.8 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
402 robbat2 1.75 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
403 vivo 1.8 }
404    
405 vivo 1.37 configure_minimal() {
406 vivo 1.46 # These are things we exclude from a minimal build, please
407     # note that the server actually does get built and installed,
408     # but we then delete it before packaging.
409 robbat2 1.84 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication readline"
410 vivo 1.37
411 vivo 1.46 for i in ${minimal_exclude_list} ; do
412     myconf="${myconf} --without-${i}"
413     done
414     myconf="${myconf} --with-extra-charsets=none"
415     myconf="${myconf} --enable-local-infile"
416 vivo 1.47
417 cardoe 1.67 if use static ; then
418 vivo 1.47 myconf="${myconf} --with-client-ldflags=-all-static"
419 robbat2 1.80 myconf="${myconf} --disable-shared --with-pic"
420 vivo 1.47 else
421     myconf="${myconf} --enable-shared --enable-static"
422     fi
423 chtekk 1.50
424 chtekk 1.69 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
425 chtekk 1.50 myconf="${myconf} --with-charset=utf8"
426     myconf="${myconf} --with-collation=utf8_general_ci"
427     else
428     myconf="${myconf} --with-charset=latin1"
429     myconf="${myconf} --with-collation=latin1_swedish_ci"
430     fi
431 vivo 1.37 }
432    
433     configure_common() {
434 chtekk 1.39 myconf="${myconf} $(use_with big-tables)"
435 vivo 1.37 myconf="${myconf} --enable-local-infile"
436     myconf="${myconf} --with-extra-charsets=all"
437     myconf="${myconf} --with-mysqld-user=mysql"
438 chtekk 1.39 myconf="${myconf} --with-server"
439 vivo 1.43 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
440 vivo 1.37 myconf="${myconf} --without-libwrap"
441 chtekk 1.39
442 cardoe 1.67 if use static ; then
443 vivo 1.37 myconf="${myconf} --with-mysqld-ldflags=-all-static"
444     myconf="${myconf} --with-client-ldflags=-all-static"
445 robbat2 1.80 myconf="${myconf} --disable-shared --with-pic"
446 vivo 1.37 else
447     myconf="${myconf} --enable-shared --enable-static"
448     fi
449    
450 cardoe 1.67 if use debug ; then
451 vivo 1.37 myconf="${myconf} --with-debug=full"
452     else
453     myconf="${myconf} --without-debug"
454 vivo 1.51 mysql_version_is_at_least "4.1.3" \
455 robbat2 1.149 && ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) \
456 vivo 1.37 && myconf="${myconf} --without-ndb-debug"
457     fi
458 chtekk 1.39
459 robbat2 1.100 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then
460     ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
461     ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
462     ewarn "You MUST file bugs without these variables set."
463     myconf="${myconf} --with-charset=${MYSQL_DEFAULT_CHARSET}"
464     myconf="${myconf} --with-collation=${MYSQL_DEFAULT_COLLATION}"
465     elif mysql_version_is_at_least "4.1" && ! use latin1 ; then
466     myconf="${myconf} --with-charset=utf8"
467     myconf="${myconf} --with-collation=utf8_general_ci"
468     else
469     myconf="${myconf} --with-charset=latin1"
470     myconf="${myconf} --with-collation=latin1_swedish_ci"
471 vivo 1.37 fi
472 chtekk 1.39
473 cardoe 1.67 if use embedded ; then
474 vivo 1.37 myconf="${myconf} --with-embedded-privilege-control"
475     myconf="${myconf} --with-embedded-server"
476     else
477     myconf="${myconf} --without-embedded-privilege-control"
478     myconf="${myconf} --without-embedded-server"
479     fi
480    
481     }
482    
483     configure_40_41_50() {
484     myconf="${myconf} $(use_with perl bench)"
485     myconf="${myconf} --enable-assembler"
486     myconf="${myconf} --with-extra-tools"
487     myconf="${myconf} --with-innodb"
488     myconf="${myconf} --without-readline"
489 robbat2 1.136 myconf="${myconf} $(use_with ssl openssl)"
490 vivo 1.51 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
491 vivo 1.37
492 chtekk 1.69 # --with-vio is not needed anymore, it's on by default and
493     # has been removed from configure
494 robbat2 1.136 # Apply to 4.x and 5.0.[0-3]
495 cardoe 1.67 if use ssl ; then
496 chtekk 1.69 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
497 vivo 1.62 fi
498    
499 robbat2 1.98 if mysql_version_is_at_least "5.0.60" ; then
500     if use berkdb ; then
501     elog "Berkeley DB support was disabled due to build failures"
502     elog "on multiple arches, go to a version earlier than 5.0.60"
503     elog "if you want it again. Gentoo bug #224067."
504     fi
505     myconf="${myconf} --without-berkeley-db"
506     elif use berkdb ; then
507 chtekk 1.77 # The following fix is due to a bug with bdb on SPARC's. See:
508     # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
509     # It comes down to non-64-bit safety problems.
510 cardoe 1.76 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
511 chtekk 1.77 elog "Berkeley DB support was disabled due to compatibility issues on this arch"
512 cardoe 1.76 myconf="${myconf} --without-berkeley-db"
513     else
514 chtekk 1.39 myconf="${myconf} --with-berkeley-db=./bdb"
515     fi
516 cardoe 1.76 else
517     myconf="${myconf} --without-berkeley-db"
518 vivo 1.37 fi
519    
520 vivo 1.51 if mysql_version_is_at_least "4.1.3" ; then
521 vivo 1.37 myconf="${myconf} --with-geometry"
522 robbat2 1.149 if [[ "${PN}" != "mysql-cluster" ]] ; then
523     myconf="${myconf} $(use_with cluster ndbcluster)"
524     fi
525 vivo 1.37 fi
526    
527 cardoe 1.67 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
528 vivo 1.37 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
529     myconf="${myconf} --with-archive-storage-engine"
530    
531     # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
532     myconf="${myconf} --with-csv-storage-engine"
533    
534     # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
535     myconf="${myconf} --with-blackhole-storage-engine"
536    
537     # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
538     # http://dev.mysql.com/doc/mysql/en/federated-description.html
539     # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
540 vivo 1.51 if mysql_version_is_at_least "5.0.3" ; then
541 chtekk 1.39 elog "Before using the Federated storage engine, please be sure to read"
542     elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
543 vivo 1.37 myconf="${myconf} --with-federated-storage-engine"
544     fi
545     fi
546    
547 robbat2 1.110 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
548     myconf="${myconf} `use_enable community community-features`"
549     if use community; then
550     myconf="${myconf} `use_enable profiling`"
551     else
552     myconf="${myconf} --disable-profiling"
553     fi
554 robbat2 1.99 fi
555    
556 vivo 1.51 mysql_version_is_at_least "5.0.18" \
557 cardoe 1.67 && use max-idx-128 \
558 vivo 1.37 && myconf="${myconf} --with-max-indexes=128"
559     }
560    
561 chtekk 1.39 configure_51() {
562 chtekk 1.40 # TODO: !!!! readd --without-readline
563 chtekk 1.39 # the failure depend upon config/ac-macros/readline.m4 checking into
564 vivo 1.37 # readline.h instead of history.h
565 robbat2 1.136 myconf="${myconf} $(use_with ssl ssl /usr)"
566 vivo 1.37 myconf="${myconf} --enable-assembler"
567     myconf="${myconf} --with-geometry"
568     myconf="${myconf} --with-readline"
569 robbat2 1.133 myconf="${myconf} --with-zlib-dir=/usr/"
570 vivo 1.37 myconf="${myconf} --without-pstack"
571 robbat2 1.145 myconf="${myconf} --with-plugindir=/usr/$(get_libdir)/mysql/plugin"
572    
573 cardoe 1.67 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
574 robbat2 1.136 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
575     myconf="${myconf} $(use_enable community community-features)"
576     if use community; then
577     myconf="${myconf} $(use_enable profiling)"
578     else
579     myconf="${myconf} --disable-profiling"
580     fi
581     fi
582 chtekk 1.39
583 robbat2 1.145 # Scan for all available plugins
584     local plugins_avail="$(
585     LANG=C \
586     find "${S}" \
587     \( \
588     -name 'plug.in' \
589     -o -iname 'configure.in' \
590     -o -iname 'configure.ac' \
591     \) \
592     -print0 \
593     | xargs -0 sed -r -n \
594     -e '/^MYSQL_STORAGE_ENGINE/{
595     s~MYSQL_STORAGE_ENGINE\([[:space:]]*\[?([-_a-z0-9]+)\]?.*,~\1 ~g ;
596     s~^([^ ]+).*~\1~gp;
597     }' \
598     | tr -s '\n' ' '
599     )"
600    
601 vivo 1.37 # 5.1 introduces a new way to manage storage engines (plugins)
602     # like configuration=none
603 robbat2 1.139 # This base set are required, and will always be statically built.
604 robbat2 1.145 local plugins_sta="csv myisam myisammrg heap"
605     local plugins_dyn=""
606     local plugins_dis="example ibmdb2i"
607    
608     # These aren't actually required by the base set, but are really useful:
609     plugins_sta="${plugins_sta} archive blackhole"
610    
611     # default in 5.5.4
612     if mysql_version_is_at_least "5.5.4" ; then
613     plugins_sta="${plugins_sta} partition"
614     fi
615     # Now the extras
616 cardoe 1.67 if use extraengine ; then
617 vivo 1.37 # like configuration=max-no-ndb, archive and example removed in 5.1.11
618 robbat2 1.129 # not added yet: ibmdb2i
619     # Not supporting as examples: example,daemon_example,ftexample
620 robbat2 1.145 plugins_sta="${plugins_sta} partition"
621     plugins_dyn="${plugins_sta} federated"
622 vivo 1.37
623 robbat2 1.137 if [[ "${PN}" != "mariadb" ]] ; then
624     elog "Before using the Federated storage engine, please be sure to read"
625     elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
626     else
627     elog "MariaDB includes the FederatedX engine. Be sure to read"
628     elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine"
629     fi
630 robbat2 1.145 else
631     plugins_dis="${plugins_dis} partition federated"
632 vivo 1.37 fi
633    
634 robbat2 1.130 # Upstream specifically requests that InnoDB always be built:
635     # - innobase, innodb_plugin
636     # Build falcon if available for 6.x series.
637 robbat2 1.145 for i in innobase falcon ; do
638     [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}"
639     done
640     for i in innodb_plugin ; do
641     [ -e "${S}"/storage/${i} ] && plugins_dyn="${plugins_dyn} ${i}"
642 robbat2 1.130 done
643 vivo 1.37
644     # like configuration=max-no-ndb
645 robbat2 1.149 if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) ; then
646 robbat2 1.146 plugins_sta="${plugins_sta} ndbcluster partition"
647     plugins_dis="${plugins_dis//partition}"
648 vivo 1.37 myconf="${myconf} --with-ndb-binlog"
649 robbat2 1.145 else
650     plugins_dis="${plugins_dis} ndbcluster"
651 vivo 1.37 fi
652    
653 robbat2 1.137 if [[ "${PN}" == "mariadb" ]] ; then
654     # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not
655     # caught above.
656 robbat2 1.146 plugins_sta="${plugins_sta} maria innobase"
657 robbat2 1.137 myconf="${myconf} $(use_with libevent)"
658     # This is not optional, without it several upstream testcases fail.
659     # Also strongly recommended by upstream.
660     myconf="${myconf} --with-maria-tmp-tables"
661     fi
662 robbat2 1.145
663     if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then
664     use pbxt \
665     && plugins_dyn="${plugins_dyn} pbxt" \
666     || plugins_dis="${plugins_dis} pbxt"
667     fi
668 robbat2 1.137
669 robbat2 1.145 use static && \
670     plugins_sta="${plugins_sta} ${plugins_dyn}" && \
671     plugins_dyn=""
672    
673     einfo "Available plugins: ${plugins_avail}"
674     einfo "Dynamic plugins: ${plugins_dyn}"
675     einfo "Static plugins: ${plugins_sta}"
676     einfo "Disabled plugins: ${plugins_dis}"
677    
678     # These are the static plugins
679     myconf="${myconf} --with-plugins=${plugins_sta// /,}"
680     # And the disabled ones
681     for i in ${plugins_dis} ; do
682     myconf="${myconf} --without-plugin-${i}"
683     done
684 vivo 1.37 }
685    
686 robbat2 1.112 pbxt_src_configure() {
687 vivo 1.51 mysql_init_vars
688    
689     pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
690    
691     einfo "Reconfiguring dir '${PWD}'"
692 vapier 1.150 eautoreconf
693 vivo 1.51
694 chtekk 1.69 local myconf=""
695 robbat2 1.138 myconf="${myconf} --with-mysql=${S} --libdir=/usr/$(get_libdir)"
696 cardoe 1.67 use debug && myconf="${myconf} --with-debug=full"
697 robbat2 1.138 econf ${myconf} || die "Problem configuring PBXT storage engine"
698 robbat2 1.112 }
699    
700     pbxt_src_compile() {
701 robbat2 1.145
702 robbat2 1.112 # Be backwards compatible for now
703     if [[ $EAPI != 2 ]]; then
704     pbxt_src_configure
705     fi
706 chtekk 1.69 # TODO: is it safe/needed to use emake here ?
707     make || die "Problem making PBXT storage engine (${myconf})"
708 vivo 1.51
709     popd
710 chtekk 1.69 # TODO: modify test suite for PBXT
711 vivo 1.51 }
712    
713     pbxt_src_install() {
714     pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
715 robbat2 1.134 emake install DESTDIR="${D}" || die "Failed to install PBXT"
716 vivo 1.51 popd
717     }
718    
719 vivo 1.37 #
720     # EBUILD FUNCTIONS
721     #
722 robbat2 1.119 # @FUNCTION: mysql_pkg_setup
723     # @DESCRIPTION:
724     # Perform some basic tests and tasks during pkg_setup phase:
725     # die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv"
726     # check for conflicting use flags
727     # create new user and group for mysql
728     # warn about deprecated features
729 vivo 1.1 mysql_pkg_setup() {
730 robbat2 1.83 if hasq test ${FEATURES} ; then
731     if ! use minimal ; then
732 robbat2 1.91 if [[ $UID -eq 0 ]]; then
733 robbat2 1.96 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
734 robbat2 1.83 fi
735     fi
736     fi
737 swegener 1.53
738 chtekk 1.30 # Check for USE flag problems in pkg_setup
739 cardoe 1.67 if use static && use ssl ; then
740 robbat2 1.145 M="MySQL does not support being built statically with SSL support enabled!"
741     eerror "${M}"
742     die "${M}"
743 chtekk 1.30 fi
744 vivo 1.1
745 vivo 1.51 if ! mysql_version_is_at_least "5.0" \
746 cardoe 1.67 && use raid \
747     && use static ; then
748 chtekk 1.30 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
749     eerror "with RAID support enabled."
750     die "USE flags 'raid' and 'static' conflict!"
751 vivo 1.1 fi
752    
753 vivo 1.51 if mysql_version_is_at_least "4.1.3" \
754 robbat2 1.145 && ( use cluster || use extraengine || use embedded ) \
755 cardoe 1.67 && use minimal ; then
756 robbat2 1.145 M="USE flags 'cluster', 'extraengine', 'embedded' conflict with 'minimal' USE flag!"
757     eerror "${M}"
758     die "${M}"
759     fi
760    
761     if mysql_version_is_at_least "5.1" \
762     && xtradb_patch_available \
763     && use xtradb \
764     && use embedded ; then
765     M="USE flags 'xtradb' and 'embedded' conflict and cause build failures"
766     eerror "${M}"
767     die "${M}"
768 vivo 1.1 fi
769 maekke 1.103
770 robbat2 1.144 # Bug #290570, 284946, 307251
771     # Upstream changes made us need a fairly new GCC4.
772     # But only for 5.0.8[3-6]!
773     if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then
774 robbat2 1.127 GCC_VER=$(gcc-version)
775 robbat2 1.125 case ${GCC_VER} in
776 robbat2 1.144 2*|3*|4.0|4.1|4.2)
777     eerror "Some releases of MySQL required a very new GCC, and then"
778     eerror "later release relaxed that requirement again. Either pick a"
779     eerror "MySQL >=5.0.87, or use a newer GCC."
780     die "Active GCC too old!" ;;
781 robbat2 1.125 esac
782     fi
783    
784 robbat2 1.83 # This should come after all of the die statements
785     enewgroup mysql 60 || die "problem adding 'mysql' group"
786     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
787 chtekk 1.39
788 vivo 1.51 mysql_check_version_range "4.0 to 5.0.99.99" \
789 cardoe 1.67 && use berkdb \
790 chtekk 1.41 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
791 robbat2 1.133
792     if [ "${PN}" != "mysql-cluster" ] && use cluster; then
793     ewarn "Upstream has noted that the NDB cluster support in the 5.0 and"
794     ewarn "5.1 series should NOT be put into production. In the near"
795     ewarn "future, it will be disabled from building."
796     ewarn ""
797     ewarn "If you need NDB support, you should instead move to the new"
798     ewarn "mysql-cluster package that represents that upstream NDB"
799     ewarn "development."
800     fi
801 chtekk 1.30 }
802    
803 robbat2 1.119 # @FUNCTION: mysql_src_unpack
804     # @DESCRIPTION:
805     # Unpack the source code and call mysql_src_prepare for EAPI < 2.
806 chtekk 1.30 mysql_src_unpack() {
807     # Initialize the proper variables first
808     mysql_init_vars
809 vivo 1.1
810 chtekk 1.30 unpack ${A}
811 robbat2 1.86 # Grab the patches
812     [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
813 maekke 1.116
814 robbat2 1.109 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
815 robbat2 1.112
816     # Be backwards compatible for now
817 robbat2 1.119 case ${EAPI:-0} in
818     2) : ;;
819     0 | 1) mysql_src_prepare ;;
820     esac
821 robbat2 1.112 }
822    
823 robbat2 1.119 # @FUNCTION: mysql_src_prepare
824     # @DESCRIPTION:
825     # Apply patches to the source code and remove unneeded bundled libs.
826 robbat2 1.112 mysql_src_prepare() {
827 robbat2 1.109 cd "${S}"
828 vivo 1.1
829 chtekk 1.30 # Apply the patches for this MySQL version
830 vivo 1.55 EPATCH_SUFFIX="patch"
831 chtekk 1.69 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
832 robbat2 1.86 # Clean out old items
833     rm -f "${EPATCH_SOURCE}"/*
834     # Now link in right patches
835 vivo 1.55 mysql_mv_patches
836 robbat2 1.86 # And apply
837 chtekk 1.69 epatch
838 vivo 1.1
839 robbat2 1.133 # last -fPIC fixup, per bug #305873
840     i="${S}"/storage/innodb_plugin/plug.in
841     [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}"
842    
843 robbat2 1.149 # Additional checks, remove bundled zlib (Cluster needs this, for static
844     # memory management in zlib, leave available for Cluster)
845     if [[ "${PN}" != "mysql-cluster" ]] ; then
846     rm -f "${S}/zlib/"*.[ch]
847     sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
848     fi
849 chtekk 1.30 rm -f "scripts/mysqlbug"
850 vivo 1.1
851     # Make charsets install in the right place
852 vivo 1.37 find . -name 'Makefile.am' \
853     -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
854 vivo 1.1
855 vivo 1.55 if mysql_version_is_at_least "4.1" ; then
856 chtekk 1.30 # Remove what needs to be recreated, so we're sure it's actually done
857 robbat2 1.122 einfo "Cleaning up old buildscript files"
858 chtekk 1.30 find . -name Makefile \
859     -o -name Makefile.in \
860     -o -name configure \
861     -exec rm -f {} \;
862     rm -f "ltmain.sh"
863 vivo 1.37 rm -f "scripts/mysqlbug"
864 chtekk 1.30 fi
865 vivo 1.1
866 vivo 1.51 local rebuilddirlist d
867 vivo 1.1
868 robbat2 1.137 if xtradb_patch_available && use xtradb ; then
869 robbat2 1.145 einfo "Adding storage engine: Percona XtraDB (replacing InnoDB)"
870     pushd "${S}"/storage >/dev/null
871 robbat2 1.122 i="innobase"
872     o="${WORKDIR}/storage-${i}.mysql-upstream"
873     # Have we been here already?
874 robbat2 1.134 [ -d "${o}" ] && rm -f "${i}"
875 robbat2 1.122 # Or maybe we haven't
876     [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}"
877 robbat2 1.145 cp -ral "${WORKDIR}/${XTRADB_P}" "${i}"
878     popd >/dev/null
879     fi
880    
881     if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]] && use pbxt ; then
882     einfo "Adding storage engine: PBXT"
883     pushd "${S}"/storage >/dev/null
884     i='pbxt'
885     [ -d "${i}" ] && rm -rf "${i}"
886     cp -ral "${WORKDIR}/${PBXT_P}" "${i}"
887     popd >/dev/null
888 robbat2 1.122 fi
889    
890 vivo 1.51 if mysql_version_is_at_least "5.1.12" ; then
891 chtekk 1.42 rebuilddirlist="."
892 robbat2 1.134 # This does not seem to be needed presently. robbat2 2010/02/23
893     #einfo "Updating innobase cmake"
894     ## TODO: check this with a cmake expert
895     #cmake \
896     # -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
897     # -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX)) \
898     # "storage/innobase"
899 vivo 1.1 else
900     rebuilddirlist=". innobase"
901     fi
902    
903 chtekk 1.30 for d in ${rebuilddirlist} ; do
904     einfo "Reconfiguring dir '${d}'"
905 vivo 1.4 pushd "${d}" &>/dev/null
906 vapier 1.150 eautoreconf
907 vivo 1.4 popd &>/dev/null
908 vivo 1.1 done
909    
910 vivo 1.51 if mysql_check_version_range "4.1 to 5.0.99.99" \
911 cardoe 1.67 && use berkdb ; then
912 robbat2 1.122 einfo "Fixing up berkdb buildsystem"
913 vivo 1.51 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
914 chtekk 1.71 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
915     || die "Could not copy libtool.m4 to bdb/dist/"
916 betelgeuse 1.97 #These files exist only with libtool-2*, and need to be included.
917     if [ -f '/usr/share/aclocal/ltsugar.m4' ]; then
918     cat "/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac"
919     cat "/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac"
920     cat "/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac"
921     cat "/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac"
922     fi
923 chtekk 1.71 pushd "bdb/dist" &>/dev/null
924     sh s_all \
925     || die "Failed bdb reconfigure"
926 vivo 1.4 popd &>/dev/null
927 vivo 1.1 fi
928     }
929    
930 robbat2 1.119 # @FUNCTION: mysql_src_configure
931     # @DESCRIPTION:
932     # Configure mysql to build the code for Gentoo respecting the use flags.
933 robbat2 1.112 mysql_src_configure() {
934 chtekk 1.30 # Make sure the vars are correctly initialized
935     mysql_init_vars
936 vivo 1.1
937 chtekk 1.42 # $myconf is modified by the configure_* functions
938     local myconf=""
939 vivo 1.1
940 cardoe 1.67 if use minimal ; then
941 chtekk 1.42 configure_minimal
942 vivo 1.1 else
943 chtekk 1.42 configure_common
944 vivo 1.51 if mysql_version_is_at_least "5.1.10" ; then
945 chtekk 1.42 configure_51
946 vivo 1.1 else
947 chtekk 1.42 configure_40_41_50
948 vivo 1.1 fi
949 vivo 1.23 fi
950    
951 chtekk 1.30 # Bug #114895, bug #110149
952 vivo 1.1 filter-flags "-O" "-O[01]"
953 chtekk 1.30
954     # glib-2.3.2_pre fix, bug #16496
955 vivo 1.1 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
956    
957 robbat2 1.101 # As discovered by bug #246652, doing a double-level of SSP causes NDB to
958     # fail badly during cluster startup.
959     if [[ $(gcc-major-version) -lt 4 ]]; then
960     filter-flags "-fstack-protector-all"
961     fi
962    
963 vivo 1.48 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
964 chtekk 1.34 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
965 vivo 1.51 mysql_version_is_at_least "5.0" \
966 chtekk 1.34 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
967 chtekk 1.39 export CXXFLAGS
968 vivo 1.1
969 robbat2 1.115 # bug #283926, with GCC4.4, this is required to get correct behavior.
970     append-flags -fno-strict-aliasing
971    
972 vivo 1.1 econf \
973     --libexecdir="/usr/sbin" \
974     --sysconfdir="${MY_SYSCONFDIR}" \
975     --localstatedir="${MY_LOCALSTATEDIR}" \
976     --sharedstatedir="${MY_SHAREDSTATEDIR}" \
977     --libdir="${MY_LIBDIR}" \
978     --includedir="${MY_INCLUDEDIR}" \
979     --with-low-memory \
980     --with-client-ldflags=-lstdc++ \
981     --enable-thread-safe-client \
982     --with-comment="Gentoo Linux ${PF}" \
983     --without-docs \
984 chtekk 1.39 ${myconf} || die "econf failed"
985 vivo 1.1
986 chtekk 1.30 # TODO: Move this before autoreconf !!!
987 vivo 1.21 find . -type f -name Makefile -print0 \
988     | xargs -0 -n100 sed -i \
989     -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
990 vivo 1.1
991 robbat2 1.145 if [[ $EAPI == 2 ]] && [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
992 robbat2 1.137 pbxt_patch_available && use pbxt && pbxt_src_configure
993 robbat2 1.112 fi
994     }
995    
996 robbat2 1.119 # @FUNCTION: mysql_src_compile
997     # @DESCRIPTION:
998     # Compile the mysql code.
999 robbat2 1.112 mysql_src_compile() {
1000     # Be backwards compatible for now
1001 robbat2 1.137 case ${EAPI:-0} in
1002     2) : ;;
1003     0 | 1) mysql_src_configure ;;
1004     esac
1005 robbat2 1.112
1006 chtekk 1.39 emake || die "emake failed"
1007 vivo 1.55
1008 robbat2 1.145 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
1009     pbxt_patch_available && use pbxt && pbxt_src_compile
1010     fi
1011 vivo 1.1 }
1012    
1013 robbat2 1.119 # @FUNCTION: mysql_src_install
1014     # @DESCRIPTION:
1015     # Install mysql.
1016 vivo 1.1 mysql_src_install() {
1017 chtekk 1.30 # Make sure the vars are correctly initialized
1018     mysql_init_vars
1019 vivo 1.1
1020 robbat2 1.133 emake install \
1021     DESTDIR="${D}" \
1022     benchdir_root="${MY_SHAREDSTATEDIR}" \
1023     testroot="${MY_SHAREDSTATEDIR}" \
1024     || die "emake install failed"
1025 vivo 1.55
1026 robbat2 1.145 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
1027     pbxt_patch_available && use pbxt && pbxt_src_install
1028     fi
1029 vivo 1.1
1030 chtekk 1.30 # Convenience links
1031 robbat2 1.105 einfo "Making Convenience links for mysqlcheck multi-call binary"
1032 chtekk 1.69 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
1033     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
1034     dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
1035 vivo 1.1
1036 chtekk 1.30 # Various junk (my-*.cnf moved elsewhere)
1037 robbat2 1.105 einfo "Removing duplicate /usr/share/mysql files"
1038 chtekk 1.30 rm -Rf "${D}/usr/share/info"
1039 vivo 1.37 for removeme in "mysql-log-rotate" mysql.server* \
1040     binary-configure* my-*.cnf mi_test_all*
1041     do
1042 robbat2 1.133 rm -f "${D}"/${MY_SHAREDSTATEDIR}/${removeme}
1043 vivo 1.1 done
1044    
1045 chtekk 1.69 # Clean up stuff for a minimal build
1046 cardoe 1.67 if use minimal ; then
1047 robbat2 1.105 einfo "Remove all extra content for minimal build"
1048 chtekk 1.30 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
1049     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}
1050 vivo 1.26 rm -f "${D}/usr/sbin/mysqld"
1051 chtekk 1.30 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
1052 vivo 1.1 fi
1053    
1054 robbat2 1.133 # Unless they explicitly specific USE=test, then do not install the
1055     # testsuite. It DOES have a use to be installed, esp. when you want to do a
1056     # validation of your database configuration after tuning it.
1057     if use !test ; then
1058     rm -rf "${D}"/${MY_SHAREDSTATEDIR}/mysql-test
1059     fi
1060    
1061 chtekk 1.30 # Configuration stuff
1062 robbat2 1.140 if mysql_version_is_at_least "5.1" ; then
1063     mysql_mycnf_version="5.1"
1064     elif mysql_version_is_at_least "4.1" ; then
1065 chtekk 1.30 mysql_mycnf_version="4.1"
1066     else
1067     mysql_mycnf_version="4.0"
1068     fi
1069 robbat2 1.105 einfo "Building default my.cnf"
1070 vivo 1.1 insinto "${MY_SYSCONFDIR}"
1071 vivo 1.55 doins scripts/mysqlaccess.conf
1072 robbat2 1.75 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
1073 chtekk 1.30 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
1074 vivo 1.9 > "${TMPDIR}/my.cnf.ok"
1075 cardoe 1.67 if mysql_version_is_at_least "4.1" && use latin1 ; then
1076 robbat2 1.140 sed -i \
1077     -e "/character-set/s|utf8|latin1|g" \
1078     "${TMPDIR}/my.cnf.ok"
1079 chtekk 1.30 fi
1080 vivo 1.9 newins "${TMPDIR}/my.cnf.ok" my.cnf
1081    
1082 chtekk 1.30 # Minimal builds don't have the MySQL server
1083 cardoe 1.67 if ! use minimal ; then
1084 robbat2 1.105 einfo "Creating initial directories"
1085 chtekk 1.30 # Empty directories ...
1086 vivo 1.1 diropts "-m0750"
1087     if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
1088 robbat2 1.75 dodir "${MY_DATADIR}"
1089     keepdir "${MY_DATADIR}"
1090     chown -R mysql:mysql "${D}/${MY_DATADIR}"
1091 vivo 1.1 fi
1092    
1093     diropts "-m0755"
1094     for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
1095     dodir "${folder}"
1096     keepdir "${folder}"
1097     chown -R mysql:mysql "${D}/${folder}"
1098     done
1099     fi
1100    
1101 chtekk 1.30 # Docs
1102 robbat2 1.105 einfo "Installing docs"
1103 robbat2 1.133 dodoc README ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
1104 robbat2 1.92 doinfo "${S}"/Docs/mysql.info
1105 chtekk 1.30
1106     # Minimal builds don't have the MySQL server
1107 cardoe 1.67 if ! use minimal ; then
1108 robbat2 1.105 einfo "Including support files and sample configurations"
1109 vivo 1.1 docinto "support-files"
1110     for script in \
1111 robbat2 1.92 "${S}"/support-files/my-*.cnf \
1112     "${S}"/support-files/magic \
1113     "${S}"/support-files/ndb-config-2-node.ini
1114 vivo 1.1 do
1115 robbat2 1.134 [[ -f "$script" ]] && dodoc "${script}"
1116 vivo 1.1 done
1117    
1118     docinto "scripts"
1119 robbat2 1.92 for script in "${S}"/scripts/mysql* ; do
1120 robbat2 1.134 [[ -f "$script" ]] && [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
1121 vivo 1.1 done
1122 robbat2 1.78
1123 vivo 1.1 fi
1124 vivo 1.4
1125 vivo 1.58 mysql_lib_symlinks "${D}"
1126 vivo 1.15 }
1127    
1128 robbat2 1.119 # @FUNCTION: mysql_pkg_preinst
1129     # @DESCRIPTION:
1130     # Create the user and groups for mysql - die if that fails.
1131 vivo 1.15 mysql_pkg_preinst() {
1132 chtekk 1.30 enewgroup mysql 60 || die "problem adding 'mysql' group"
1133     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
1134 vivo 1.1 }
1135    
1136 robbat2 1.119 # @FUNCTION: mysql_pkg_postinst
1137     # @DESCRIPTION:
1138     # Run post-installation tasks:
1139     # create the dir for logfiles if non-existant
1140     # touch the logfiles and secure them
1141     # install scripts
1142     # issue required steps for optional features
1143     # issue deprecation warnings
1144 vivo 1.1 mysql_pkg_postinst() {
1145 chtekk 1.30 # Make sure the vars are correctly initialized
1146 vivo 1.1 mysql_init_vars
1147    
1148 chtekk 1.30 # Check FEATURES="collision-protect" before removing this
1149 chtekk 1.69 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
1150 vivo 1.1
1151 chtekk 1.30 # Secure the logfiles
1152 vivo 1.1 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
1153     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
1154     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
1155    
1156 vivo 1.55 # Minimal builds don't have the MySQL server
1157 cardoe 1.67 if ! use minimal ; then
1158 vivo 1.55 docinto "support-files"
1159     for script in \
1160     support-files/my-*.cnf \
1161     support-files/magic \
1162     support-files/ndb-config-2-node.ini
1163     do
1164 robbat2 1.137 [[ -f "${script}" ]] \
1165     && dodoc "${script}"
1166 vivo 1.55 done
1167    
1168     docinto "scripts"
1169     for script in scripts/mysql* ; do
1170 robbat2 1.137 [[ -f "${script}" ]] \
1171     && [[ "${script%.sh}" == "${script}" ]] \
1172     && dodoc "${script}"
1173 vivo 1.55 done
1174 chtekk 1.69
1175     einfo
1176     elog "You might want to run:"
1177     elog "\"emerge --config =${CATEGORY}/${PF}\""
1178     elog "if this is a new install."
1179     einfo
1180 robbat2 1.151
1181     einfo
1182     elog "If you are upgrading major versions, you should run the"
1183     elog "mysql_upgrade tool."
1184     einfo
1185 vivo 1.55 fi
1186    
1187 robbat2 1.137 if pbxt_available && use pbxt ; then
1188 chtekk 1.69 # TODO: explain it better
1189     elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
1190     elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
1191     elog "if, after that, you cannot start the MySQL server,"
1192 vivo 1.63 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
1193 chtekk 1.69 elog "use the MySQL upgrade script to restore the table"
1194     elog "or execute the following SQL command:"
1195     elog " CREATE TABLE IF NOT EXISTS plugin ("
1196     elog " name char(64) binary DEFAULT '' NOT NULL,"
1197     elog " dl char(128) DEFAULT '' NOT NULL,"
1198     elog " PRIMARY KEY (name)"
1199     elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
1200 vivo 1.4 fi
1201 chtekk 1.69
1202 vivo 1.51 mysql_check_version_range "4.0 to 5.0.99.99" \
1203 cardoe 1.67 && use berkdb \
1204 chtekk 1.41 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
1205 vivo 1.1 }
1206    
1207 robbat2 1.119 # @FUNCTION: mysql_pkg_config
1208     # @DESCRIPTION:
1209     # Configure mysql environment.
1210 vivo 1.1 mysql_pkg_config() {
1211 robbat2 1.111 local old_MY_DATADIR="${MY_DATADIR}"
1212    
1213 chtekk 1.30 # Make sure the vars are correctly initialized
1214 vivo 1.1 mysql_init_vars
1215    
1216 robbat2 1.75 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
1217 chtekk 1.30
1218 vivo 1.49 if built_with_use ${CATEGORY}/${PN} minimal ; then
1219 vivo 1.1 die "Minimal builds do NOT include the MySQL server"
1220     fi
1221    
1222 robbat2 1.111 if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
1223     local MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${MY_DATADIR})"
1224     local old_MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${old_MY_DATADIR})"
1225    
1226     if [[ -d "${old_MY_DATADIR_s}" ]]; then
1227     if [[ -d "${MY_DATADIR_s}" ]]; then
1228     ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
1229     ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
1230     else
1231     elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
1232     mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
1233     || die "Moving MY_DATADIR failed"
1234     fi
1235     else
1236     ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
1237     if [[ -d "${MY_DATADIR_s}" ]]; then
1238     ewarn "Attempting to use ${MY_DATADIR_s}"
1239     else
1240     eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
1241     die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
1242 maekke 1.116 fi
1243 robbat2 1.111 fi
1244     fi
1245    
1246 vivo 1.1 local pwd1="a"
1247     local pwd2="b"
1248 robbat2 1.140 local MYSQL_ROOT_PASSWORD=''
1249     local maxtry=15
1250 vivo 1.1
1251 robbat2 1.141 if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${ROOT}/root/.my.cnf" ]; then
1252     MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${ROOT}/root/.my.cnf")"
1253     fi
1254    
1255 robbat2 1.75 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
1256 vivo 1.1 ewarn "You have already a MySQL database in place."
1257 robbat2 1.75 ewarn "(${ROOT}/${MY_DATADIR}/*)"
1258 vivo 1.1 ewarn "Please rename or delete it if you wish to replace it."
1259     die "MySQL database already exists!"
1260     fi
1261    
1262 robbat2 1.102 # Bug #213475 - MySQL _will_ object strenously if your machine is named
1263     # localhost. Also causes weird failures.
1264     [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
1265    
1266 robbat2 1.140 if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
1267 vivo 1.1
1268 robbat2 1.140 einfo "Please provide a password for the mysql 'root' user now,"
1269     einfo "or in the MYSQL_ROOT_PASSWORD env var."
1270     ewarn "Avoid [\"'\\_%] characters in the password"
1271     read -rsp " >" pwd1 ; echo
1272 vivo 1.1
1273 robbat2 1.140 einfo "Retype the password"
1274     read -rsp " >" pwd2 ; echo
1275 vivo 1.1
1276 robbat2 1.140 if [[ "x$pwd1" != "x$pwd2" ]] ; then
1277     die "Passwords are not the same"
1278     fi
1279     MYSQL_ROOT_PASSWORD="${pwd1}"
1280     unset pwd1 pwd2
1281 vivo 1.1 fi
1282    
1283     local options=""
1284     local sqltmp="$(emktemp)"
1285    
1286 chtekk 1.30 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
1287 vivo 1.1 [[ -r "${help_tables}" ]] \
1288 vivo 1.8 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
1289 vivo 1.1 || touch "${TMPDIR}/fill_help_tables.sql"
1290     help_tables="${TMPDIR}/fill_help_tables.sql"
1291    
1292 vivo 1.4 pushd "${TMPDIR}" &>/dev/null
1293 robbat2 1.85 "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1
1294     if [ $? -ne 0 ]; then
1295     grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
1296     die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
1297     fi
1298 vivo 1.4 popd &>/dev/null
1299 robbat2 1.75 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
1300 vivo 1.26 || die "MySQL databases not installed"
1301 robbat2 1.94 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
1302     chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
1303 vivo 1.1
1304 robbat2 1.140 # Figure out which options we need to disable to do the setup
1305     helpfile="${TMPDIR}/mysqld-help"
1306     ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null
1307     for opt in grant-tables host-cache name-resolve networking slave-start bdb \
1308     federated innodb ssl log-bin relay-log slow-query-log external-locking \
1309 robbat2 1.149 ndbcluster \
1310 robbat2 1.140 ; do
1311     optexp="--(skip-)?${opt}" optfull="--skip-${opt}"
1312     egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
1313     done
1314     # But some options changed names
1315     egrep -sq external-locking "${helpfile}" && \
1316     options="${options/skip-locking/skip-external-locking}"
1317    
1318 vivo 1.51 if mysql_version_is_at_least "4.1.3" ; then
1319 vivo 1.1 # Filling timezones, see
1320     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
1321 chtekk 1.30 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
1322 vivo 1.1
1323     if [[ -r "${help_tables}" ]] ; then
1324     cat "${help_tables}" >> "${sqltmp}"
1325     fi
1326     fi
1327 robbat2 1.140
1328     einfo "Creating the mysql database and setting proper"
1329     einfo "permissions on it ..."
1330 vivo 1.1
1331 chtekk 1.30 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
1332     local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
1333 vivo 1.26 local mysqld="${ROOT}/usr/sbin/mysqld \
1334 vivo 1.1 ${options} \
1335     --user=mysql \
1336     --basedir=${ROOT}/usr \
1337 robbat2 1.75 --datadir=${ROOT}/${MY_DATADIR} \
1338 vivo 1.1 --max_allowed_packet=8M \
1339     --net_buffer_length=16K \
1340 robbat2 1.143 --default-storage-engine=MyISAM \
1341 vivo 1.1 --socket=${socket} \
1342     --pid-file=${pidfile}"
1343 robbat2 1.140 #einfo "About to start mysqld: ${mysqld}"
1344     ebegin "Starting mysqld"
1345 chtekk 1.30 ${mysqld} &
1346 robbat2 1.140 rc=$?
1347 vivo 1.1 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
1348 chtekk 1.30 maxtry=$((${maxtry}-1))
1349 vivo 1.1 echo -n "."
1350     sleep 1
1351     done
1352 robbat2 1.140 eend $rc
1353    
1354     if ! [[ -S "${socket}" ]]; then
1355     die "Completely failed to start up mysqld with: ${mysqld}"
1356     fi
1357 vivo 1.1
1358 robbat2 1.140 ebegin "Setting root password"
1359 chtekk 1.30 # Do this from memory, as we don't want clear text passwords in temp files
1360 robbat2 1.140 local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'"
1361 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
1362 vivo 1.1 --socket=${socket} \
1363     -hlocalhost \
1364     -e "${sql}"
1365 robbat2 1.140 eend $?
1366 vivo 1.1
1367 robbat2 1.140 ebegin "Loading \"zoneinfo\", this step may require a few seconds ..."
1368 chtekk 1.30 "${ROOT}/usr/bin/mysql" \
1369 vivo 1.1 --socket=${socket} \
1370     -hlocalhost \
1371     -uroot \
1372 robbat2 1.140 -p"${MYSQL_ROOT_PASSWORD}" \
1373 vivo 1.1 mysql < "${sqltmp}"
1374 robbat2 1.140 rc=$?
1375     eend $?
1376     [ $rc -ne 0 ] && ewarn "Failed to load zoneinfo!"
1377 vivo 1.1
1378 chtekk 1.30 # Stop the server and cleanup
1379 robbat2 1.140 einfo "Stopping the server ..."
1380 vivo 1.1 kill $(< "${pidfile}" )
1381 chtekk 1.30 rm -f "${sqltmp}"
1382 vivo 1.1 wait %1
1383 chtekk 1.30 einfo "Done"
1384 vivo 1.1 }
1385    
1386 robbat2 1.119 # @FUNCTION: mysql_pkg_postrm
1387     # @DESCRIPTION:
1388     # Remove mysql symlinks.
1389 vivo 1.1 mysql_pkg_postrm() {
1390 chtekk 1.70 : # mysql_lib_symlinks "${D}"
1391 vivo 1.25 }

  ViewVC Help
Powered by ViewVC 1.1.20