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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.117 - (hide annotations) (download)
Thu Nov 19 18:22:44 2009 UTC (4 years, 4 months ago) by robbat2
Branch: MAIN
Changes since 1.116: +3 -1 lines
For newer 5.1 series MySQL, community features are also available. Only turn on as of 5.1.28, as the config option was not available earlier (and caused a configure fail).

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

  ViewVC Help
Powered by ViewVC 1.1.20