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

Contents of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.107 - (hide annotations) (download)
Sat Feb 28 10:49:50 2009 UTC (5 years, 1 month ago) by robbat2
Branch: MAIN
Changes since 1.106: +5 -10 lines
Back in 2006 we updated 4.1 and 5.0 per upstreams request that InnoDB was always build. However 5.1 never got updated, so do it now.

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

  ViewVC Help
Powered by ViewVC 1.1.20