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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.106 - (hide annotations) (download)
Wed Feb 11 11:29:48 2009 UTC (5 years, 6 months ago) by robbat2
Branch: MAIN
Changes since 1.105: +1 -4 lines
Bug #252732: A really really old problem from v1.1 of the eclass caused the original my_config.h to be preserved always instead of being overwritten. If you had an old header with the atomic.h problem, this means it never went away.

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

  ViewVC Help
Powered by ViewVC 1.1.20