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

Diff of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.32 Revision 1.73
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2007 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.32 2006/05/31 20:45:49 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.73 2007/04/15 13:00:51 robbat2 Exp $
4 4
5# Author: Francesco Riosa <vivo@gentoo.org> 5# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
6# Maintainer: Luca Longinotti <chtekk@gentoo.org> 6# Maintainer: Luca Longinotti <chtekk@gentoo.org>
7 7
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too 8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too!
9# Note that MYSQL_VERSION_ID must be empty !!! 9# Note that MYSQL_VERSION_ID must be empty!
10
11WANT_AUTOCONF="latest"
12WANT_AUTOMAKE="latest"
13
14inherit eutils flag-o-matic gnuconfig autotools mysql_fx
15
16# Shorten the path because the socket path length must be shorter than 107 chars
17# and we will run a mysql server during test phase
18S="${WORKDIR}/mysql"
19
20[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108"
21
22if [[ ${PR#r} -lt 60 ]] ; then
23 IS_BITKEEPER=0
24elif [[ ${PR#r} -lt 90 ]] ; then
25 IS_BITKEEPER=60
26else
27 IS_BITKEEPER=90
28fi
10 29
11# MYSQL_VERSION_ID will be: 30# MYSQL_VERSION_ID will be:
12# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 31# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
13# This is an important part, because many of the choices the MySQL ebuild will do 32# This is an important part, because many of the choices the MySQL ebuild will do
14# depend on this variable. 33# depend on this variable.
15# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 34# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
16 35
17if [[ -z "${MYSQL_VERSION_ID}" ]] ; then 36MYSQL_VERSION_ID=""
18 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 37tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
19 for vatom in 0 1 2 3 ; do 38for vatom in 0 1 2 3 ; do
20 # pad to length 2 39 # pad to length 2
21 tpv[${vatom}]="00${tpv[${vatom}]}" 40 tpv[${vatom}]="00${tpv[${vatom}]}"
22 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 41 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
23 done 42done
24 # strip leading "0" (otherwise it's considered an octal number by BASH) 43# strip leading "0" (otherwise it's considered an octal number by BASH)
25 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 44MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
26fi
27 45
28DEPEND="${DEPEND} 46# Be warned, *DEPEND are version-dependant
47DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
48 userland_GNU? ( sys-process/procps )
49 >=sys-apps/sed-4
50 >=sys-apps/texinfo-4.7-r1
29 >=sys-libs/readline-4.1 51 >=sys-libs/readline-4.1
30 berkdb? ( sys-apps/ed )
31 ssl? ( >=dev-libs/openssl-0.9.6d )
32 userland_GNU? ( sys-process/procps )
33 >=sys-libs/zlib-1.2.3 52 >=sys-libs/zlib-1.2.3"
34 >=sys-apps/texinfo-4.7-r1
35 >=sys-apps/sed-4"
36 53
37RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )" 54# Having different flavours at the same time is not a good idea
55for i in "" "-community" ; do
56 [[ "${i}" == ${PN#mysql} ]] ||
57 DEPEND="${DEPEND} !dev-db/mysql${i}"
58done
59
60mysql_version_is_at_least "5.1" \
61|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
62
63mysql_version_is_at_least "5.1.12" \
64&& DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
38 65
39# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
40PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
41 68
42inherit eutils flag-o-matic gnuconfig autotools mysql_fx 69# BitKeeper dependency, compile-time only
43 70[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
44# Shorten the path because the socket path length must be shorter than 107 chars
45# and we will run a mysql server during test phase
46S="${WORKDIR}/${PN}"
47
48# Define $MY_FIXED_PV for MySQL patchsets
49MY_FIXED_PV="${PV/_alpha/}"
50MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
51MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
52 71
53# Define correct SRC_URIs 72# Define correct SRC_URIs
54SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${P/_/-}.tar.gz" 73SRC_URI="${SERVER_URI}
55if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then 74 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
56 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2" 75 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
57 # We add the Gentoo mirror here, as we only use primaryuri for the MySQL tarball 76mysql_version_is_at_least "5.1.12" \
58 SRC_URI="${SRC_URI} mirror://gentoo/${MYSQL_PATCHSET_FILENAME} http://gentoo.longitekk.com/${MYSQL_PATCHSET_FILENAME}" 77&& [[ -n "${PBXT_VERSION}" ]] \
59fi 78&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
60 79
61DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 80DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
62HOMEPAGE="http://www.mysql.com/" 81HOMEPAGE="http://www.mysql.com/"
82LICENSE="GPL-2"
63SLOT="0" 83SLOT="0"
64LICENSE="GPL-2"
65IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static" 84IUSE="big-tables debug embedded minimal perl selinux ssl static"
66RESTRICT="primaryuri confcache" 85RESTRICT="confcache"
67 86
68mysql_version_is_at_least "4.01.00.00" \ 87mysql_version_is_at_least "4.1" \
69&& IUSE="${IUSE} latin1" 88&& IUSE="${IUSE} latin1"
70 89
71mysql_version_is_at_least "4.01.03.00" \ 90mysql_version_is_at_least "4.1.3" \
72&& IUSE="${IUSE} cluster extraengine" 91&& IUSE="${IUSE} cluster extraengine"
73 92
74mysql_version_is_at_least "5.00.00.00" \ 93mysql_version_is_at_least "5.0" \
75|| IUSE="${IUSE} raid" 94|| IUSE="${IUSE} raid"
76 95
77mysql_version_is_at_least "5.00.18.00" \ 96mysql_version_is_at_least "5.0.18" \
78&& IUSE="${IUSE} max-idx-128" 97&& IUSE="${IUSE} max-idx-128"
79 98
80mysql_version_is_at_least "5.01.00.00" \ 99mysql_version_is_at_least "5.1" \
81&& IUSE="${IUSE} innodb" 100&& IUSE="${IUSE} innodb"
82 101
102mysql_version_is_at_least "5.1" \
103|| IUSE="${IUSE} berkdb"
104
105mysql_version_is_at_least "5.1.12" \
106&& IUSE="${IUSE} pbxt"
107
108RDEPEND="${DEPEND}
109 !minimal? ( dev-db/mysql-init-scripts )
110 selinux? ( sec-policy/selinux-mysql )"
111
83EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 112EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
84 pkg_postinst pkg_config pkg_postrm 113 pkg_postinst pkg_config pkg_postrm
114
115#
116# HELPER FUNCTIONS:
117#
118
119bitkeeper_fetch() {
120 local reposuf
121 if [[ -z "${1}" ]] ; then
122 local tpv
123 tpv=( ${PV//[-._]/ } )
124 reposuf="mysql-${tpv[0]}.${tpv[1]}"
125 else
126 reposuf="${1}"
127 fi
128 einfo "Using '${reposuf}' repository."
129 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
130 ## -- ebk_store_dir: bitkeeper sources store directory
131 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
132 ## -- ebk_fetch_cmd: bitkeeper fetch command
133 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
134 # hint: does not work
135 local ebk_fetch_cmd="sfioball"
136 ## -- ebk_update_cmd: bitkeeper update command
137 local ebk_update_cmd="update"
138
139 # addread "/etc/bitkeeper"
140 addwrite "${ebk_store_dir}"
141
142 if [[ ! -d "${ebk_store_dir}" ]] ; then
143 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
144 mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}"
145 fi
146
147 pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}"
148
149 local wc_path=${reposuf}
150
151 if [[ ! -d "${wc_path}" ]] ; then
152 local options="-r+"
153
154 # first checkout
155 einfo "bitkeeper checkout start -->"
156 einfo " repository: ${repo_uri}"
157
158 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
159 || die "BK: couldn't fetch from ${repo_uri}"
160 else
161 if [[ ! -d "${wc_path}/BK" ]] ; then
162 popd
163 die "Looks like ${wc_path} is not a bitkeeper path"
164 fi
165
166 # update working copy
167 einfo "bitkeeper update start -->"
168 einfo " repository: ${repo_uri}"
169
170 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
171 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
172 fi
173
174 einfo " working copy: ${wc_path}"
175 cd "${wc_path}"
176 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}"
177
178 echo
179 popd
180}
181
182mysql_disable_test() {
183 local testname="${1}" ; shift
184 local reason="${@}"
185 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
186 echo ${testname} : ${reason} >> "${mysql_disable_file}"
187 ewarn "test '${testname}' disabled: '${reason}'"
188}
85 189
86# void mysql_init_vars() 190# void mysql_init_vars()
87# 191#
88# Initialize global variables 192# Initialize global variables
89# 2005-11-19 <vivo@gentoo.org> 193# 2005-11-19 <vivo@gentoo.org>
101 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 205 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
102 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ 206 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
103 | sed -ne '/datadir/s|^--datadir=||p' \ 207 | sed -ne '/datadir/s|^--datadir=||p' \
104 | tail -n1` 208 | tail -n1`
105 if [[ -z "${DATADIR}" ]] ; then 209 if [[ -z "${DATADIR}" ]] ; then
106 if useq "srvdir" ; then
107 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
108 else
109 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 210 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
110 | sed -e 's/.*=\s*//'` 211 | sed -e 's/.*=\s*//'`
111 fi
112 fi 212 fi
113 fi 213 fi
114 if [[ -z "${DATADIR}" ]] ; then 214 if [[ -z "${DATADIR}" ]] ; then
115 if useq "srvdir" ; then
116 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
117 else
118 DATADIR="${MY_LOCALSTATEDIR}" 215 DATADIR="${MY_LOCALSTATEDIR}"
119 fi
120 einfo "Using default DATADIR" 216 einfo "Using default DATADIR"
121 fi 217 fi
122 einfo "MySQL DATADIR is ${DATADIR}" 218 elog "MySQL DATADIR is ${DATADIR}"
123 219
124 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 220 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
125 if [[ -e "${DATADIR}" ]] ; then 221 if [[ -e "${DATADIR}" ]] ; then
126 ewarn "Previous datadir found, it's YOUR job to change" 222 elog "Previous datadir found, it's YOUR job to change"
127 ewarn "ownership and take care of it" 223 elog "ownership and take care of it"
128 PREVIOUS_DATADIR="yes" 224 PREVIOUS_DATADIR="yes"
129 else 225 else
130 PREVIOUS_DATADIR="no" 226 PREVIOUS_DATADIR="no"
131 fi 227 fi
132 export PREVIOUS_DATADIR 228 export PREVIOUS_DATADIR
133 fi 229 fi
134 fi 230 fi
135 231
232 MY_SOURCEDIR=${SERVER_URI##*/}
233 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
234
136 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 235 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
137 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 236 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
138 export MY_INCLUDEDIR 237 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
139 export DATADIR
140} 238}
239
240configure_minimal() {
241 # These are things we exclude from a minimal build, please
242 # note that the server actually does get built and installed,
243 # but we then delete it before packaging.
244 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication"
245
246 for i in ${minimal_exclude_list} ; do
247 myconf="${myconf} --without-${i}"
248 done
249 myconf="${myconf} --with-extra-charsets=none"
250 myconf="${myconf} --enable-local-infile"
251
252 if use static ; then
253 myconf="${myconf} --with-client-ldflags=-all-static"
254 myconf="${myconf} --disable-shared"
255 else
256 myconf="${myconf} --enable-shared --enable-static"
257 fi
258
259 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
260 myconf="${myconf} --with-charset=utf8"
261 myconf="${myconf} --with-collation=utf8_general_ci"
262 else
263 myconf="${myconf} --with-charset=latin1"
264 myconf="${myconf} --with-collation=latin1_swedish_ci"
265 fi
266}
267
268configure_common() {
269 myconf="${myconf} $(use_with big-tables)"
270 myconf="${myconf} --enable-local-infile"
271 myconf="${myconf} --with-extra-charsets=all"
272 myconf="${myconf} --with-mysqld-user=mysql"
273 myconf="${myconf} --with-server"
274 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
275 myconf="${myconf} --without-libwrap"
276
277 if use static ; then
278 myconf="${myconf} --with-mysqld-ldflags=-all-static"
279 myconf="${myconf} --with-client-ldflags=-all-static"
280 myconf="${myconf} --disable-shared"
281 else
282 myconf="${myconf} --enable-shared --enable-static"
283 fi
284
285 if use debug ; then
286 myconf="${myconf} --with-debug=full"
287 else
288 myconf="${myconf} --without-debug"
289 mysql_version_is_at_least "4.1.3" \
290 && use cluster \
291 && myconf="${myconf} --without-ndb-debug"
292 fi
293
294 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
295 myconf="${myconf} --with-charset=utf8"
296 myconf="${myconf} --with-collation=utf8_general_ci"
297 else
298 myconf="${myconf} --with-charset=latin1"
299 myconf="${myconf} --with-collation=latin1_swedish_ci"
300 fi
301
302 if use embedded ; then
303 myconf="${myconf} --with-embedded-privilege-control"
304 myconf="${myconf} --with-embedded-server"
305 else
306 myconf="${myconf} --without-embedded-privilege-control"
307 myconf="${myconf} --without-embedded-server"
308 fi
309
310}
311
312configure_40_41_50() {
313 myconf="${myconf} $(use_with perl bench)"
314 myconf="${myconf} --enable-assembler"
315 myconf="${myconf} --with-extra-tools"
316 myconf="${myconf} --with-innodb"
317 myconf="${myconf} --without-readline"
318 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
319
320 # --with-vio is not needed anymore, it's on by default and
321 # has been removed from configure
322 if use ssl ; then
323 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
324 fi
325
326 if mysql_version_is_at_least "5.1.11" ; then
327 myconf="${myconf} $(use_with ssl)"
328 else
329 myconf="${myconf} $(use_with ssl openssl)"
330 fi
331
332 # The following fix is due to a bug with bdb on SPARC's. See:
333 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
334 # It comes down to non-64-bit safety problems.
335 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
336 elog "Berkeley DB support was disabled due to incompatible arch"
337 myconf="${myconf} --without-berkeley-db"
338 else
339 if use berkdb ; then
340 myconf="${myconf} --with-berkeley-db=./bdb"
341 else
342 myconf="${myconf} --without-berkeley-db"
343 fi
344 fi
345
346 if mysql_version_is_at_least "4.1.3" ; then
347 myconf="${myconf} --with-geometry"
348 myconf="${myconf} $(use_with cluster ndbcluster)"
349 fi
350
351 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
352 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
353 myconf="${myconf} --with-archive-storage-engine"
354
355 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
356 myconf="${myconf} --with-csv-storage-engine"
357
358 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
359 myconf="${myconf} --with-blackhole-storage-engine"
360
361 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
362 # http://dev.mysql.com/doc/mysql/en/federated-description.html
363 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
364 if mysql_version_is_at_least "5.0.3" ; then
365 elog "Before using the Federated storage engine, please be sure to read"
366 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
367 myconf="${myconf} --with-federated-storage-engine"
368 fi
369 fi
370
371 mysql_version_is_at_least "5.0.18" \
372 && use max-idx-128 \
373 && myconf="${myconf} --with-max-indexes=128"
374}
375
376configure_51() {
377 # TODO: !!!! readd --without-readline
378 # the failure depend upon config/ac-macros/readline.m4 checking into
379 # readline.h instead of history.h
380 myconf="${myconf} $(use_with ssl)"
381 myconf="${myconf} --enable-assembler"
382 myconf="${myconf} --with-geometry"
383 myconf="${myconf} --with-readline"
384 myconf="${myconf} --with-row-based-replication"
385 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
386 myconf="${myconf} --without-pstack"
387 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
388
389 # 5.1 introduces a new way to manage storage engines (plugins)
390 # like configuration=none
391 local plugins="csv,myisam,myisammrg,heap"
392 if use extraengine ; then
393 # like configuration=max-no-ndb, archive and example removed in 5.1.11
394 plugins="${plugins},archive,blackhole,example,federated,partition"
395
396 elog "Before using the Federated storage engine, please be sure to read"
397 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
398 fi
399
400 if use innodb ; then
401 plugins="${plugins},innobase"
402 fi
403
404 # like configuration=max-no-ndb
405 if use cluster ; then
406 plugins="${plugins},ndbcluster"
407 myconf="${myconf} --with-ndb-binlog"
408 fi
409
410 if mysql_version_is_at_least "5.2" ; then
411 plugins="${plugins},falcon"
412 fi
413
414 myconf="${myconf} --with-plugins=${plugins}"
415}
416
417pbxt_src_compile() {
418 mysql_init_vars
419
420 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
421
422 einfo "Reconfiguring dir '${PWD}'"
423 AT_GNUCONF_UPDATE="yes" eautoreconf
424
425 local myconf=""
426 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
427 use debug && myconf="${myconf} --with-debug=full"
428 # TODO: is it safe/needed to use econf here ?
429 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
430 # TODO: is it safe/needed to use emake here ?
431 make || die "Problem making PBXT storage engine (${myconf})"
432
433 popd
434 # TODO: modify test suite for PBXT
435}
436
437pbxt_src_install() {
438 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
439 make install || die "Failed to install PBXT"
440 popd
441}
442
443#
444# EBUILD FUNCTIONS
445#
141 446
142mysql_pkg_setup() { 447mysql_pkg_setup() {
143 enewgroup mysql 60 || die "problem adding 'mysql' group" 448 enewgroup mysql 60 || die "problem adding 'mysql' group"
144 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 449 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
145 450
146 # Check for USE flag problems in pkg_setup 451 # Check for USE flag problems in pkg_setup
147 if useq "static" && useq "ssl" ; then 452 if use static && use ssl ; then
148 eerror "MySQL does not support being built statically with SSL support enabled!" 453 eerror "MySQL does not support being built statically with SSL support enabled!"
149 die "MySQL does not support being built statically with SSL support enabled!" 454 die "MySQL does not support being built statically with SSL support enabled!"
150 fi 455 fi
151 456
152 if ! mysql_version_is_at_least "5.00.00.00" \ 457 if ! mysql_version_is_at_least "5.0" \
153 && useq "raid" \ 458 && use raid \
154 && useq "static" ; then 459 && use static ; then
155 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically" 460 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
156 eerror "with RAID support enabled." 461 eerror "with RAID support enabled."
157 die "USE flags 'raid' and 'static' conflict!" 462 die "USE flags 'raid' and 'static' conflict!"
158 fi 463 fi
159 464
160 if mysql_version_is_at_least "4.01.03.00" \ 465 if mysql_version_is_at_least "4.1.3" \
161 && ( useq "cluster" || useq "extraengine" ) \ 466 && ( use cluster || use extraengine ) \
162 && useq "minimal" ; then 467 && use minimal ; then
163 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 468 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
164 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 469 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
165 fi 470 fi
471
472 mysql_check_version_range "4.0 to 5.0.99.99" \
473 && use berkdb \
474 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
166} 475}
167 476
168mysql_src_unpack() { 477mysql_src_unpack() {
169 # Initialize the proper variables first 478 # Initialize the proper variables first
170 mysql_init_vars 479 mysql_init_vars
171 480
172 unpack ${A} 481 unpack ${A}
173 482 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
174 mv -f "${WORKDIR}/${P/_/-}" "${S}" 483 if mysql_check_version_range "5.1 to 5.1.99" ; then
484 bitkeeper_fetch "mysql-5.1-ndb"
485 elif mysql_check_version_range "5.2 to 5.2.99" ; then
486 bitkeeper_fetch "mysql-5.2-falcon"
487 else
488 bitkeeper_fetch
489 fi
175 cd "${S}" 490 cd "${S}"
491 einfo "Running upstream autorun over BK sources ..."
492 BUILD/autorun.sh
493 else
494 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
495 cd "${S}"
496 fi
176 497
177 # Apply the patches for this MySQL version 498 # Apply the patches for this MySQL version
178 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then 499 EPATCH_SUFFIX="patch"
179 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch 500 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
180 fi 501 mysql_mv_patches
502 epatch
181 503
182 # Additional checks, remove bundled zlib 504 # Additional checks, remove bundled zlib
183 rm -f "${S}/zlib/"*.[ch] 505 rm -f "${S}/zlib/"*.[ch]
184 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 506 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
185 rm -f "scripts/mysqlbug" 507 rm -f "scripts/mysqlbug"
186 508
187 # Make charsets install in the right place 509 # Make charsets install in the right place
510 find . -name 'Makefile.am' \
188 find . -name 'Makefile.am' -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 511 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
189 512
190 # Manage mysqlmanager
191 mysql_version_is_at_least "5.00.15.00" \
192 && sed -i -e "s!@GENTOO_EXT@!!g" -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" "${S}/server-tools/instance-manager/Makefile.am"
193
194 if mysql_version_is_at_least "4.01.00.00" ; then 513 if mysql_version_is_at_least "4.1" ; then
195 # Remove what needs to be recreated, so we're sure it's actually done 514 # Remove what needs to be recreated, so we're sure it's actually done
196 find . -name Makefile \ 515 find . -name Makefile \
197 -o -name Makefile.in \ 516 -o -name Makefile.in \
198 -o -name configure \ 517 -o -name configure \
199 -exec rm -f {} \; 518 -exec rm -f {} \;
200 rm -f "ltmain.sh" 519 rm -f "ltmain.sh"
520 rm -f "scripts/mysqlbug"
201 fi 521 fi
202 522
203 local rebuilddirlist bdbdir d 523 local rebuilddirlist d
204 524
205 if mysql_version_is_at_least "5.01.00.00" ; then 525 if mysql_version_is_at_least "5.1.12" ; then
206 rebuilddirlist=". storage/innobase" 526 rebuilddirlist="."
207 bdbdir='storage/bdb/dist' 527 # TODO: check this with a cmake expert
528 use innodb \
529 && cmake \
530 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
531 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
532 "storage/innobase"
208 else 533 else
209 rebuilddirlist=". innobase" 534 rebuilddirlist=". innobase"
210 bdbdir='bdb/dist'
211 fi 535 fi
212 536
213 for d in ${rebuilddirlist} ; do 537 for d in ${rebuilddirlist} ; do
214 einfo "Reconfiguring dir '${d}'" 538 einfo "Reconfiguring dir '${d}'"
215 pushd "${d}" &>/dev/null 539 pushd "${d}" &>/dev/null
216 AT_GNUCONF_UPDATE="yes" eautoreconf 540 AT_GNUCONF_UPDATE="yes" eautoreconf
217 popd &>/dev/null 541 popd &>/dev/null
218 done 542 done
219 543
220 # TODO: berkdb in MySQL 5.1 needs to be worked on
221 if useq "berkdb" \
222 && ! mysql_check_version_range "4.00.00.00 to 4.00.99.99" \ 544 if mysql_check_version_range "4.1 to 5.0.99.99" \
223 && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then 545 && use berkdb ; then
224 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh" 546 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
225 pushd "${bdbdir}" \ 547 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
548 || die "Could not copy libtool.m4 to bdb/dist/"
549 pushd "bdb/dist" &>/dev/null
226 && sh s_all \ 550 sh s_all \
227 || die "Failed bdb reconfigure" \ 551 || die "Failed bdb reconfigure"
228 &>/dev/null
229 popd &>/dev/null 552 popd &>/dev/null
230 fi 553 fi
231} 554}
232 555
233mysql_src_compile() { 556mysql_src_compile() {
234 # Make sure the vars are correctly initialized 557 # Make sure the vars are correctly initialized
235 mysql_init_vars 558 mysql_init_vars
236 559
560 # $myconf is modified by the configure_* functions
237 local myconf 561 local myconf=""
238 562
239 if useq "static" ; then 563 if use minimal ; then
240 myconf="${myconf} --with-mysqld-ldflags=-all-static" 564 configure_minimal
241 myconf="${myconf} --with-client-ldflags=-all-static"
242 myconf="${myconf} --disable-shared"
243 else 565 else
244 myconf="${myconf} --enable-shared --enable-static" 566 configure_common
245 fi
246
247 myconf="${myconf} --without-libwrap"
248
249 if useq "ssl" ; then
250 # --with-vio is not needed anymore, it's on by default and
251 # has been removed from configure
252 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
253 if mysql_version_is_at_least "5.00.06.00" ; then 567 if mysql_version_is_at_least "5.1.10" ; then
254 # yassl-0.96 is still young and breaks with GCC-4.X or amd64 568 configure_51
255 # myconf="${myconf} --with-yassl"
256 myconf="${myconf} --with-openssl"
257 else 569 else
258 myconf="${myconf} --with-openssl" 570 configure_40_41_50
259 fi
260 else
261 myconf="${myconf} --without-openssl"
262 fi
263
264 if useq "debug" ; then
265 myconf="${myconf} --with-debug=full"
266 else
267 myconf="${myconf} --without-debug"
268
269 mysql_version_is_at_least "4.01.03.00" && useq "cluster" \
270 && myconf="${myconf} --without-ndb-debug"
271 fi
272
273 # These are things we exclude from a minimal build.
274 # Note that the server actually does get built and installed,
275 # but we then delete it.
276 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
277
278 if ! useq "minimal" ; then
279 myconf="${myconf} --with-server"
280 myconf="${myconf} --with-extra-tools"
281
282 if ! mysql_version_is_at_least "5.00.00.00" ; then
283 if useq "raid" ; then
284 myconf="${myconf} --with-raid"
285 else
286 myconf="${myconf} --without-raid"
287 fi 571 fi
288 fi
289
290 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
291 myconf="${myconf} --with-charset=utf8"
292 myconf="${myconf} --with-collation=utf8_general_ci"
293 else
294 myconf="${myconf} --with-charset=latin1"
295 myconf="${myconf} --with-collation=latin1_swedish_ci"
296 fi
297
298 # Optional again with MySQL 5.1
299 if mysql_version_is_at_least "5.01.00.00" ; then
300 if useq "innodb" ; then
301 myconf="${myconf} --with-innodb"
302 else
303 myconf="${myconf} --without-innodb"
304 fi
305 fi
306
307 # Lots of charsets
308 myconf="${myconf} --with-extra-charsets=all"
309
310 # The following fix is due to a bug with bdb on SPARC's. See:
311 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
312 # It comes down to non-64-bit safety problems.
313 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
314 ewarn "bdb berkeley-db disabled due to incompatible arch"
315 myconf="${myconf} --without-berkeley-db"
316 else
317 # TODO: berkdb in MySQL 5.1 needs to be worked on
318 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
319 myconf="${myconf} --with-berkeley-db=./bdb"
320 else
321 myconf="${myconf} --without-berkeley-db"
322 fi
323 fi
324
325 if mysql_version_is_at_least "4.01.03.00" ; then
326 myconf="${myconf} --with-geometry"
327
328 if useq "cluster" ; then
329 myconf="${myconf} --with-ndbcluster"
330 else
331 myconf="${myconf} --without-ndbcluster"
332 fi
333 fi
334
335 if useq "big-tables" ; then
336 myconf="${myconf} --with-big-tables"
337 else
338 myconf="${myconf} --without-big-tables"
339 fi
340
341 mysql_version_is_at_least "5.01.06.00" \
342 && myconf="${myconf} --with-ndb-binlog"
343
344 if useq "embedded" ; then
345 myconf="${myconf} --with-embedded-privilege-control"
346 myconf="${myconf} --with-embedded-server"
347 else
348 myconf="${myconf} --without-embedded-privilege-control"
349 myconf="${myconf} --without-embedded-server"
350 fi
351
352 # Benchmarking stuff needs Perl
353 if useq "perl" ; then
354 myconf="${myconf} --with-bench"
355 else
356 myconf="${myconf} --without-bench"
357 fi
358 else
359 for i in ${minimal_exclude_list} ; do
360 myconf="${myconf} --without-${i}"
361 done
362 myconf="${myconf} --without-berkeley-db"
363 myconf="${myconf} --with-extra-charsets=none"
364 fi
365
366 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
367 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
368 myconf="${myconf} --with-archive-storage-engine"
369
370 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
371 myconf="${myconf} --with-csv-storage-engine"
372
373 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
374 myconf="${myconf} --with-blackhole-storage-engine"
375
376 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
377 # http://dev.mysql.com/doc/mysql/en/federated-description.html
378 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
379 if mysql_version_is_at_least "5.00.03.00" ; then
380 einfo "Before using the Federated storage engine, please be sure to read"
381 einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
382 myconf="${myconf} --with-federated-storage-engine"
383 fi
384
385 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
386 if mysql_version_is_at_least "5.01.00.00" ; then
387 myconf="${myconf} --with-partition"
388 fi
389 fi
390
391 mysql_version_is_at_least "5.00.18.00" \
392 && useq "max-idx-128" \
393 && myconf="${myconf} --with-max-indexes=128"
394
395 mysql_version_is_at_least "5.01.05.00" \
396 && myconf="${myconf} --with-row-based-replication"
397
398 # TODO: Rechek again later, there were problems with assembler enabled
399 # and some combination of USE flags with MySQL 5.1
400 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
401 myconf="${myconf} --disable-assembler"
402 else
403 myconf="${myconf} --enable-assembler"
404 fi 572 fi
405 573
406 # Bug #114895, bug #110149 574 # Bug #114895, bug #110149
407 filter-flags "-O" "-O[01]" 575 filter-flags "-O" "-O[01]"
408 576
409 # glib-2.3.2_pre fix, bug #16496 577 # glib-2.3.2_pre fix, bug #16496
410 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 578 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
411 579
412 # The compiler flags are as their "official" spec says ;) 580 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
413 # CFLAGS="${CFLAGS/-O?/} -O3"
414 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 581 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
415 mysql_version_is_at_least "5.00.00.00" \ 582 mysql_version_is_at_least "5.0" \
416 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 583 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
584 export CXXFLAGS
417 585
418 econf \ 586 econf \
419 --libexecdir="/usr/sbin" \ 587 --libexecdir="/usr/sbin" \
420 --sysconfdir="${MY_SYSCONFDIR}" \ 588 --sysconfdir="${MY_SYSCONFDIR}" \
421 --localstatedir="${MY_LOCALSTATEDIR}" \ 589 --localstatedir="${MY_LOCALSTATEDIR}" \
422 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 590 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
423 --libdir="${MY_LIBDIR}" \ 591 --libdir="${MY_LIBDIR}" \
424 --includedir="${MY_INCLUDEDIR}" \ 592 --includedir="${MY_INCLUDEDIR}" \
425 --with-low-memory \ 593 --with-low-memory \
426 --enable-local-infile \
427 --with-mysqld-user=mysql \
428 --with-client-ldflags=-lstdc++ \ 594 --with-client-ldflags=-lstdc++ \
429 --enable-thread-safe-client \ 595 --enable-thread-safe-client \
430 --with-comment="Gentoo Linux ${PF}" \ 596 --with-comment="Gentoo Linux ${PF}" \
431 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
432 --without-readline \
433 --without-docs \ 597 --without-docs \
434 ${myconf} || die "bad ./configure" 598 ${myconf} || die "econf failed"
435 599
436 # TODO: Move this before autoreconf !!! 600 # TODO: Move this before autoreconf !!!
437 find . -type f -name Makefile -print0 \ 601 find . -type f -name Makefile -print0 \
438 | xargs -0 -n100 sed -i \ 602 | xargs -0 -n100 sed -i \
439 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 603 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
440 604
441 emake || die "compile problem" 605 emake || die "emake failed"
606
607 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
442} 608}
443 609
444mysql_src_install() { 610mysql_src_install() {
445 # Make sure the vars are correctly initialized 611 # Make sure the vars are correctly initialized
446 mysql_init_vars 612 mysql_init_vars
447 613
448 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "make install error" 614 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
615
616 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
449 617
450 insinto "${MY_INCLUDEDIR}" 618 insinto "${MY_INCLUDEDIR}"
451 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 619 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
452 620
453 # Convenience links 621 # Convenience links
455 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
456 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 624 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
457 625
458 # Various junk (my-*.cnf moved elsewhere) 626 # Various junk (my-*.cnf moved elsewhere)
459 rm -Rf "${D}/usr/share/info" 627 rm -Rf "${D}/usr/share/info"
460 for removeme in "mysql-log-rotate" mysql.server* binary-configure* my-*.cnf mi_test_all* ; do 628 for removeme in "mysql-log-rotate" mysql.server* \
629 binary-configure* my-*.cnf mi_test_all*
630 do
461 rm -f "${D}"/usr/share/mysql/${removeme} 631 rm -f "${D}"/usr/share/mysql/${removeme}
462 done 632 done
463 633
464 # Clean up stuff for a minimal build 634 # Clean up stuff for a minimal build
465 if useq "minimal" ; then 635 if use minimal ; then
466 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 636 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
467 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} 637 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}
468 rm -f "${D}/usr/sbin/mysqld" 638 rm -f "${D}/usr/sbin/mysqld"
469 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 639 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
470 fi 640 fi
471 641
472 # Configuration stuff 642 # Configuration stuff
473 if mysql_version_is_at_least "4.01.00.00" ; then 643 if mysql_version_is_at_least "4.1" ; then
474 mysql_mycnf_version="4.1" 644 mysql_mycnf_version="4.1"
475 else 645 else
476 mysql_mycnf_version="4.0" 646 mysql_mycnf_version="4.0"
477 fi 647 fi
478 insinto "${MY_SYSCONFDIR}" 648 insinto "${MY_SYSCONFDIR}"
479 doins "scripts/mysqlaccess.conf" 649 doins scripts/mysqlaccess.conf
480 sed -e "s!@DATADIR@!${DATADIR}!g" \ 650 sed -e "s!@DATADIR@!${DATADIR}!g" \
481 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 651 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
482 > "${TMPDIR}/my.cnf.ok" 652 > "${TMPDIR}/my.cnf.ok"
483 if mysql_version_is_at_least "4.01.00.00" && useq "latin1" ; then 653 if mysql_version_is_at_least "4.1" && use latin1 ; then
484 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 654 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
485 fi 655 fi
486 newins "${TMPDIR}/my.cnf.ok" my.cnf 656 newins "${TMPDIR}/my.cnf.ok" my.cnf
487 657
488 insinto "/etc/conf.d"
489 newins "${FILESDIR}/mysql.conf.d" "mysql"
490 mysql_version_is_at_least "5.00.11.00" \
491 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
492
493 # Minimal builds don't have the MySQL server 658 # Minimal builds don't have the MySQL server
494 if ! useq "minimal" ; then 659 if ! use minimal ; then
495 exeinto "/etc/init.d"
496 newexe "${FILESDIR}/mysql.rc6" "mysql"
497 mysql_version_is_at_least "5.00.11.00" \
498 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
499
500 insinto "/etc/logrotate.d"
501 newins "${FILESDIR}/logrotate.mysql" "mysql"
502
503 # Empty directories ... 660 # Empty directories ...
504 diropts "-m0750" 661 diropts "-m0750"
505 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 662 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
506 dodir "${DATADIR}" 663 dodir "${DATADIR}"
507 keepdir "${DATADIR}" 664 keepdir "${DATADIR}"
518 675
519 # Docs 676 # Docs
520 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 677 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
521 678
522 # Minimal builds don't have the MySQL server 679 # Minimal builds don't have the MySQL server
523 if ! useq "minimal" ; then 680 if ! use minimal ; then
524 docinto "support-files" 681 docinto "support-files"
525 for script in \ 682 for script in \
526 support-files/my-*.cnf \ 683 support-files/my-*.cnf \
527 support-files/magic \ 684 support-files/magic \
528 support-files/ndb-config-2-node.ini 685 support-files/ndb-config-2-node.ini
534 for script in scripts/mysql* ; do 691 for script in scripts/mysql* ; do
535 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 692 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
536 done 693 done
537 fi 694 fi
538 695
539 ROOT="${D}" mysql_lib_symlinks 696 mysql_lib_symlinks "${D}"
540} 697}
541 698
542mysql_pkg_preinst() { 699mysql_pkg_preinst() {
543 enewgroup mysql 60 || die "problem adding 'mysql' group" 700 enewgroup mysql 60 || die "problem adding 'mysql' group"
544 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 701 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
554 # Secure the logfiles 711 # Secure the logfiles
555 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 712 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
556 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 713 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
557 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 714 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
558 715
716 # Minimal builds don't have the MySQL server
559 if ! useq "minimal" ; then 717 if ! use minimal ; then
560 # Your friendly public service announcement ... 718 docinto "support-files"
719 for script in \
720 support-files/my-*.cnf \
721 support-files/magic \
722 support-files/ndb-config-2-node.ini
723 do
724 dodoc "${script}"
725 done
726
727 docinto "scripts"
728 for script in scripts/mysql* ; do
729 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
730 done
731
561 einfo 732 einfo
562 einfo "You might want to run:" 733 elog "You might want to run:"
563 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 734 elog "\"emerge --config =${CATEGORY}/${PF}\""
564 einfo "if this is a new install." 735 elog "if this is a new install."
565 einfo 736 einfo
566 mysql_version_is_at_least "5.01.00.00" \
567 || einfo "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream."
568 fi 737 fi
738
739 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
740 # TODO: explain it better
741 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
742 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
743 elog "if, after that, you cannot start the MySQL server,"
744 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
745 elog "use the MySQL upgrade script to restore the table"
746 elog "or execute the following SQL command:"
747 elog " CREATE TABLE IF NOT EXISTS plugin ("
748 elog " name char(64) binary DEFAULT '' NOT NULL,"
749 elog " dl char(128) DEFAULT '' NOT NULL,"
750 elog " PRIMARY KEY (name)"
751 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
752 fi
753
754 mysql_check_version_range "4.0 to 5.0.99.99" \
755 && use berkdb \
756 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
569} 757}
570 758
571mysql_pkg_config() { 759mysql_pkg_config() {
572 # Make sure the vars are correctly initialized 760 # Make sure the vars are correctly initialized
573 mysql_init_vars 761 mysql_init_vars
574 762
575 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR" 763 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR"
576 764
577 if built_with_use dev-db/mysql minimal ; then 765 if built_with_use ${CATEGORY}/${PN} minimal ; then
578 die "Minimal builds do NOT include the MySQL server" 766 die "Minimal builds do NOT include the MySQL server"
579 fi 767 fi
580 768
581 local pwd1="a" 769 local pwd1="a"
582 local pwd2="b" 770 local pwd2="b"
618 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \ 806 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \
619 || die "MySQL databases not installed" 807 || die "MySQL databases not installed"
620 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null 808 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null
621 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null 809 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null
622 810
623 if mysql_version_is_at_least "4.01.03.00" ; then 811 if mysql_version_is_at_least "4.1.3" ; then
624 options="--skip-ndbcluster" 812 options="--skip-ndbcluster"
625 813
626 # Filling timezones, see 814 # Filling timezones, see
627 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 815 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
628 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null 816 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
677 wait %1 865 wait %1
678 einfo "Done" 866 einfo "Done"
679} 867}
680 868
681mysql_pkg_postrm() { 869mysql_pkg_postrm() {
682 mysql_lib_symlinks 870 : # mysql_lib_symlinks "${D}"
683} 871}

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.73

  ViewVC Help
Powered by ViewVC 1.1.20