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

Diff of /eclass/mysql.eclass

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

Revision 1.56 Revision 1.67
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2006 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.56 2007/01/04 10:32:38 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.67 2007/01/09 15:48:34 cardoe Exp $
4# kate: encoding utf-8; eol unix; 4# kate: encoding utf-8; eol unix;
5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off; 5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off;
6# kate: word-wrap-column 80; word-wrap off; 6# kate: word-wrap-column 80; word-wrap off;
7 7
8# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 8# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
10 10
11# Note that MYSQL_VERSION_ID must be empty !!! 11# Note that MYSQL_VERSION_ID must be empty !!!
12 12
13ECLASS="mysql" 13ECLASS="mysql"
14INHERITED="$INHERITED $ECLASS" 14INHERITED="$INHERITED $ECLASS"
15WANT_AUTOCONF="latest"
16WANT_AUTOMAKE="latest"
15inherit eutils flag-o-matic gnuconfig autotools mysql_fx 17inherit eutils flag-o-matic gnuconfig autotools mysql_fx
16 18
17# avoid running userspace code 8 times per ebuild :( 19# Shorten the path because the socket path length must be shorter than 107 chars
18if [[ "${_MYPVR}" != "${PVR}" ]] && [[ -n "${PVR}" ]] 20# and we will run a mysql server during test phase
19then 21S="${WORKDIR}/mysql"
20 _MYPVR=${PVR}
21 22
22 [[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20070103" 23[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108"
23 24
24 if [[ ${PR#r} -lt 60 ]] ; then 25if [[ ${PR#r} -lt 60 ]] ; then
25 IS_BITKEEPER=0 26 IS_BITKEEPER=0
26 elif [[ ${PR#r} -lt 90 ]] ; then 27elif [[ ${PR#r} -lt 90 ]] ; then
27 IS_BITKEEPER=60 28 IS_BITKEEPER=60
28 else 29else
29 IS_BITKEEPER=90 30 IS_BITKEEPER=90
30 fi 31fi
31 32
32 # MYSQL_VERSION_ID will be: 33# MYSQL_VERSION_ID will be:
33 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 34# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
34 # This is an important part, because many of the choices the MySQL ebuild will do 35# This is an important part, because many of the choices the MySQL ebuild will do
35 # depend on this variable. 36# depend on this variable.
36 # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 37# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
37 MYSQL_VERSION_ID="" 38MYSQL_VERSION_ID=""
38 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 39tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
39 for vatom in 0 1 2 3 ; do 40for vatom in 0 1 2 3 ; do
40 # pad to length 2 41 # pad to length 2
41 tpv[${vatom}]="00${tpv[${vatom}]}" 42 tpv[${vatom}]="00${tpv[${vatom}]}"
42 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 43 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
44done
45# strip leading "0" (otherwise it's considered an octal number by BASH)
46MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
47
48# Be warned, *DEPEND are version-dependant
49DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
50 userland_GNU? ( sys-process/procps )
51 >=sys-apps/sed-4
52 >=sys-apps/texinfo-4.7-r1
53 >=sys-libs/readline-4.1
54 >=sys-libs/zlib-1.2.3
55 "
56
57# having different flavours at the same time is not a good idea
58for i in "" "-community" "-slotted" ; do
59 [[ "${i}" == ${PN#mysql} ]] ||
60 DEPEND="${DEPEND} !dev-db/mysql${i}"
61done
62
63mysql_version_is_at_least "5.1" \
64|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
65
66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
68
69if mysql_version_is_at_least "5.1.12" ; then
70 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
71fi
72
73# BitKeeper dependency, compile-time only
74[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
75
76if [[ ${PN} == "mysql-slotted" ]] ; then
77 DEPEND="${DEPEND} app-admin/eselect-mysql"
78fi
79
80if [[ ${PN} == "mysql-slotted" ]] ; then
81 SLOT=""
82 tpv=( ${PV//[-._]/ } )
83 for vatom in 0 1 2 ; do
84 SLOT="${SLOT}${tpv[${vatom}]}_"
43 done 85 done
44 # strip leading "0" (otherwise it's considered an octal number by BASH)
45 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
46
47 # Be warned, *DEPEND are version-dependant
48 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
49 userland_GNU? ( sys-process/procps )
50 >=sys-apps/sed-4
51 >=sys-apps/texinfo-4.7-r1
52 >=sys-libs/readline-4.1
53 >=sys-libs/zlib-1.2.3"
54
55 # having different flavours at the same time is not a good idea
56 for i in "" "-community" "-slotted" ; do
57 [[ "${i}" == ${PN#mysql} ]] ||
58 DEPEND="${DEPEND} !dev-db/mysql${i}"
59 done
60
61 mysql_version_is_at_least "5.1" \
62 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
63
64 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
65 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
66
67 if mysql_version_is_at_least "5.1.12" ; then
68 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
69 fi
70
71 # Shorten the path because the socket path length must be shorter than 107 chars
72 # and we will run a mysql server during test phase
73 S="${WORKDIR}/mysql"
74
75 # BitKeeper dependency, compile-time only
76 [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
77
78 if [[ ${PN} == "mysql-slotted" ]] ; then
79 DEPEND="${DEPEND} app-admin/eselect-mysql"
80 fi
81
82 if [[ ${PN} == "mysql-slotted" ]] ; then
83 SLOT=""
84 tpv=( ${PV//[-._]/ } )
85 for vatom in 0 1 2 ; do
86 SLOT="${SLOT}${tpv[${vatom}]}_"
87 done
88 #finally SLOT=5_0_24 86 #finally SLOT=5_0_24
89 SLOT=${SLOT:0:${#SLOT}-1} 87 SLOT=${SLOT:0:${#SLOT}-1}
90 else 88else
91 SLOT="0" 89 SLOT="0"
92 fi 90fi
93 91
94 # Define correct SRC_URIs 92# Define correct SRC_URIs
95 SRC_URI=" 93SRC_URI="
96 ${SERVER_URI} 94${SERVER_URI}
97 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 95http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
98 " 96"
99 mysql_version_is_at_least "5.1.12" \ 97mysql_version_is_at_least "5.1.12" \
100 && [[ -n "${PBXT_VERSION}" ]] \ 98&& [[ -n "${PBXT_VERSION}" ]] \
101 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 99&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
102 100
103 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 101DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
104 HOMEPAGE="http://www.mysql.com/" 102HOMEPAGE="http://www.mysql.com/"
105 LICENSE="GPL-2" 103LICENSE="GPL-2"
106 IUSE="big-tables debug embedded minimal perl selinux ssl static" 104IUSE="big-tables debug embedded minimal perl selinux ssl static"
107 RESTRICT="confcache" 105RESTRICT="confcache"
108 106
109 mysql_version_is_at_least "4.1" \ 107mysql_version_is_at_least "4.1" \
110 && IUSE="${IUSE} latin1" 108&& IUSE="${IUSE} latin1"
111 109
112 mysql_version_is_at_least "4.1.3" \ 110mysql_version_is_at_least "4.1.3" \
113 && IUSE="${IUSE} cluster extraengine" 111&& IUSE="${IUSE} cluster extraengine"
114 112
115 mysql_version_is_at_least "5.0" \ 113mysql_version_is_at_least "5.0" \
116 || IUSE="${IUSE} raid" 114|| IUSE="${IUSE} raid"
117 115
118 mysql_version_is_at_least "5.0.18" \ 116mysql_version_is_at_least "5.0.18" \
119 && IUSE="${IUSE} max-idx-128" 117&& IUSE="${IUSE} max-idx-128"
120 118
121 mysql_version_is_at_least "5.1" \ 119mysql_version_is_at_least "5.1" \
122 && IUSE="${IUSE} innodb" 120&& IUSE="${IUSE} innodb"
123 121
124 mysql_version_is_at_least "5.1" \ 122mysql_version_is_at_least "5.1" \
125 || IUSE="${IUSE} berkdb" 123|| IUSE="${IUSE} berkdb"
126 124
127 mysql_version_is_at_least "5.1.12" \ 125mysql_version_is_at_least "5.1.12" \
128 && IUSE="${IUSE} pbxt" 126&& IUSE="${IUSE} pbxt"
129 127
128RDEPEND="${DEPEND}
129!minimal? ( sys-apps/mysql )
130 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )" 130selinux? ( sec-policy/selinux-mysql )
131 131"
132fi # if [[ "${_MYPVR}" != "${PVR}" ]]
133 132
134EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 133EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
135 pkg_postinst pkg_config pkg_postrm 134 pkg_postinst pkg_config pkg_postrm
136 135
137# 136#
173 172
174 if [[ ! -d "${wc_path}" ]]; then 173 if [[ ! -d "${wc_path}" ]]; then
175 local options="-r+" 174 local options="-r+"
176 # first check out 175 # first check out
177 einfo "bitkeeper check out start -->" 176 einfo "bitkeeper check out start -->"
178 einfo " repository: ${repo_uri}" 177 elog " repository: ${repo_uri}"
179 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \
180 || die "${EBK}: can't fetch from ${repo_uri}." 179 || die "${EBK}: can't fetch from ${repo_uri}."
181 else 180 else
182 if [[ ! -d "${wc_path}/BK" ]]; then 181 if [[ ! -d "${wc_path}/BK" ]]; then
183 popd 182 popd
184 die "Look like ${wc_path} is not a bitkeeper path." 183 die "Look like ${wc_path} is not a bitkeeper path."
185 fi 184 fi
186 185
187 # update working copy 186 # update working copy
188 einfo "bitkeeper update start -->" 187 einfo "bitkeeper update start -->"
189 einfo " repository: ${repo_uri}" 188 elog " repository: ${repo_uri}"
190 189
191 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
192 || die "BK: can't update from ${repo_uri} to ${wc_path}." 191 || die "BK: can't update from ${repo_uri} to ${wc_path}."
193 fi 192 fi
194 193
274 myconf="${myconf} --without-${i}" 273 myconf="${myconf} --without-${i}"
275 done 274 done
276 myconf="${myconf} --with-extra-charsets=none" 275 myconf="${myconf} --with-extra-charsets=none"
277 myconf="${myconf} --enable-local-infile" 276 myconf="${myconf} --enable-local-infile"
278 277
279 if useq "static" ; then 278 if use static ; then
280 myconf="${myconf} --with-client-ldflags=-all-static" 279 myconf="${myconf} --with-client-ldflags=-all-static"
281 myconf="${myconf} --disable-shared" 280 myconf="${myconf} --disable-shared"
282 else 281 else
283 myconf="${myconf} --enable-shared --enable-static" 282 myconf="${myconf} --enable-shared --enable-static"
284 fi 283 fi
285 284
286 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then 285 if mysql_version_is_at_least "4.01.00.00" && ! use latin1 ; then
287 myconf="${myconf} --with-charset=utf8" 286 myconf="${myconf} --with-charset=utf8"
288 myconf="${myconf} --with-collation=utf8_general_ci" 287 myconf="${myconf} --with-collation=utf8_general_ci"
289 else 288 else
290 myconf="${myconf} --with-charset=latin1" 289 myconf="${myconf} --with-charset=latin1"
291 myconf="${myconf} --with-collation=latin1_swedish_ci" 290 myconf="${myconf} --with-collation=latin1_swedish_ci"
299 myconf="${myconf} --with-mysqld-user=mysql" 298 myconf="${myconf} --with-mysqld-user=mysql"
300 myconf="${myconf} --with-server" 299 myconf="${myconf} --with-server"
301 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 300 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
302 myconf="${myconf} --without-libwrap" 301 myconf="${myconf} --without-libwrap"
303 302
304 if useq "static" ; then 303 if use static ; then
305 myconf="${myconf} --with-mysqld-ldflags=-all-static" 304 myconf="${myconf} --with-mysqld-ldflags=-all-static"
306 myconf="${myconf} --with-client-ldflags=-all-static" 305 myconf="${myconf} --with-client-ldflags=-all-static"
307 myconf="${myconf} --disable-shared" 306 myconf="${myconf} --disable-shared"
308 else 307 else
309 myconf="${myconf} --enable-shared --enable-static" 308 myconf="${myconf} --enable-shared --enable-static"
310 fi 309 fi
311 310
312 if useq "debug" ; then 311 if use debug ; then
313 myconf="${myconf} --with-debug=full" 312 myconf="${myconf} --with-debug=full"
314 else 313 else
315 myconf="${myconf} --without-debug" 314 myconf="${myconf} --without-debug"
316 mysql_version_is_at_least "4.1.3" \ 315 mysql_version_is_at_least "4.1.3" \
317 && useq "cluster" \ 316 && use cluster \
318 && myconf="${myconf} --without-ndb-debug" 317 && myconf="${myconf} --without-ndb-debug"
319 fi 318 fi
320 319
321 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 320 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
322 myconf="${myconf} --with-charset=utf8" 321 myconf="${myconf} --with-charset=utf8"
323 myconf="${myconf} --with-collation=utf8_general_ci" 322 myconf="${myconf} --with-collation=utf8_general_ci"
324 else 323 else
325 myconf="${myconf} --with-charset=latin1" 324 myconf="${myconf} --with-charset=latin1"
326 myconf="${myconf} --with-collation=latin1_swedish_ci" 325 myconf="${myconf} --with-collation=latin1_swedish_ci"
327 fi 326 fi
328 327
329 if useq "embedded" ; then 328 if use embedded ; then
330 myconf="${myconf} --with-embedded-privilege-control" 329 myconf="${myconf} --with-embedded-privilege-control"
331 myconf="${myconf} --with-embedded-server" 330 myconf="${myconf} --with-embedded-server"
332 else 331 else
333 myconf="${myconf} --without-embedded-privilege-control" 332 myconf="${myconf} --without-embedded-privilege-control"
334 myconf="${myconf} --without-embedded-server" 333 myconf="${myconf} --without-embedded-server"
342 myconf="${myconf} --with-extra-tools" 341 myconf="${myconf} --with-extra-tools"
343 myconf="${myconf} --with-innodb" 342 myconf="${myconf} --with-innodb"
344 myconf="${myconf} --without-readline" 343 myconf="${myconf} --without-readline"
345 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" 344 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
346 345
347 if useq "ssl" ; then 346 if use ssl ; then
348 # --with-vio is not needed anymore, it's on by default and 347 # --with-vio is not needed anymore, it's on by default and
349 # has been removed from configure 348 # has been removed from configure
350 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 349 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
350 fi
351
351 if mysql_version_is_at_least "5.0.6" ; then 352 if mysql_version_is_at_least "5.1.11" ; then
352 # myconf="${myconf} --with-yassl" 353 myconf="${myconf} $(use_with ssl)"
353 myconf="${myconf} --with-openssl"
354 else 354 else
355 myconf="${myconf} --with-openssl" 355 myconf="${myconf} $(use_with ssl openssl)"
356 fi
357 else
358 myconf="${myconf} --without-openssl"
359 fi 356 fi
360 357
361 # The following fix is due to a bug with bdb on SPARC's. See: 358 # The following fix is due to a bug with bdb on SPARC's. See:
362 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 359 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
363 # It comes down to non-64-bit safety problems. 360 # It comes down to non-64-bit safety problems.
364 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then 361 if use sparc || use alpha || use hppa || use mips || use amd64 ; then
365 elog "Berkeley DB support was disabled due to incompatible arch" 362 elog "Berkeley DB support was disabled due to incompatible arch"
366 myconf="${myconf} --without-berkeley-db" 363 myconf="${myconf} --without-berkeley-db"
367 else 364 else
368 if useq "berkdb" ; then 365 if use berkdb ; then
369 myconf="${myconf} --with-berkeley-db=./bdb" 366 myconf="${myconf} --with-berkeley-db=./bdb"
370 else 367 else
371 myconf="${myconf} --without-berkeley-db" 368 myconf="${myconf} --without-berkeley-db"
372 fi 369 fi
373 fi 370 fi
375 if mysql_version_is_at_least "4.1.3" ; then 372 if mysql_version_is_at_least "4.1.3" ; then
376 myconf="${myconf} --with-geometry" 373 myconf="${myconf} --with-geometry"
377 myconf="${myconf} $(use_with cluster ndbcluster)" 374 myconf="${myconf} $(use_with cluster ndbcluster)"
378 fi 375 fi
379 376
380 if mysql_version_is_at_least "4.1.3" && useq "extraengine" ; then 377 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
381 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 378 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
382 myconf="${myconf} --with-archive-storage-engine" 379 myconf="${myconf} --with-archive-storage-engine"
383 380
384 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 381 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
385 myconf="${myconf} --with-csv-storage-engine" 382 myconf="${myconf} --with-csv-storage-engine"
396 myconf="${myconf} --with-federated-storage-engine" 393 myconf="${myconf} --with-federated-storage-engine"
397 fi 394 fi
398 fi 395 fi
399 396
400 mysql_version_is_at_least "5.0.18" \ 397 mysql_version_is_at_least "5.0.18" \
401 && useq "max-idx-128" \ 398 && use max-idx-128 \
402 && myconf="${myconf} --with-max-indexes=128" 399 && myconf="${myconf} --with-max-indexes=128"
403} 400}
404 401
405configure_51() { 402configure_51() {
406 # TODO: !!!! readd --without-readline 403 # TODO: !!!! readd --without-readline
411 myconf="${myconf} --with-geometry" 408 myconf="${myconf} --with-geometry"
412 myconf="${myconf} --with-readline" 409 myconf="${myconf} --with-readline"
413 myconf="${myconf} --with-row-based-replication" 410 myconf="${myconf} --with-row-based-replication"
414 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 411 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
415 myconf="${myconf} --without-pstack" 412 myconf="${myconf} --without-pstack"
416 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 413 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
417 414
418 # 5.1 introduces a new way to manage storage engines (plugins) 415 # 5.1 introduces a new way to manage storage engines (plugins)
419 # like configuration=none 416 # like configuration=none
420 local plugins="csv,myisam,myisammrg,heap" 417 local plugins="csv,myisam,myisammrg,heap"
421 if useq "extraengine" ; then 418 if use extraengine ; then
422 # like configuration=max-no-ndb, archive and example removed in 5.1.11 419 # like configuration=max-no-ndb, archive and example removed in 5.1.11
423 plugins="${plugins},archive,blackhole,example,federated,partition" 420 plugins="${plugins},archive,blackhole,example,federated,partition"
424 421
425 elog "Before using the Federated storage engine, please be sure to read" 422 elog "Before using the Federated storage engine, please be sure to read"
426 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" 423 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
427 fi 424 fi
428 425
429 if useq "innodb" ; then 426 if use innodb ; then
430 plugins="${plugins},innobase" 427 plugins="${plugins},innobase"
431 fi 428 fi
432 429
433 # like configuration=max-no-ndb 430 # like configuration=max-no-ndb
434 if useq "cluster" ; then 431 if use cluster ; then
435 plugins="${plugins},ndbcluster" 432 plugins="${plugins},ndbcluster"
436 myconf="${myconf} --with-ndb-binlog" 433 myconf="${myconf} --with-ndb-binlog"
434 fi
435
436 if mysql_version_is_at_least "5.2" ; then
437 plugins="${plugins},falcon"
437 fi 438 fi
438 439
439 myconf="${myconf} --with-plugins=${plugins}" 440 myconf="${myconf} --with-plugins=${plugins}"
440} 441}
441 442
449 450
450 local myconf 451 local myconf
451 myconf="${myconf} --with-mysql=${S}" 452 myconf="${myconf} --with-mysql=${S}"
452 mkdir -p ${T}/lib 453 mkdir -p ${T}/lib
453 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 454 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}"
454 useq "debug" && myconf="${myconf} --with-debug=full" 455 use debug && myconf="${myconf} --with-debug=full"
455 # TODO is safe/needed to use econf here ? 456 # TODO is safe/needed to use econf here ?
456 ./configure ${myconf} || die "problem configuring pbxt storage engine" 457 ./configure ${myconf} || die "problem configuring pbxt storage engine"
457 # TODO is safe/needed to use emake here ? 458 # TODO is safe/needed to use emake here ?
458 make || die "problem making pbxt storage engine (${myconf})" 459 make || die "problem making pbxt storage engine (${myconf})"
459 460
474mysql_pkg_setup() { 475mysql_pkg_setup() {
475 enewgroup mysql 60 || die "problem adding 'mysql' group" 476 enewgroup mysql 60 || die "problem adding 'mysql' group"
476 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 477 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
477 478
478 # Check for USE flag problems in pkg_setup 479 # Check for USE flag problems in pkg_setup
479 if useq "static" && useq "ssl" ; then 480 if use static && use ssl ; then
480 eerror "MySQL does not support being built statically with SSL support enabled!" 481 eerror "MySQL does not support being built statically with SSL support enabled!"
481 die "MySQL does not support being built statically with SSL support enabled!" 482 die "MySQL does not support being built statically with SSL support enabled!"
482 fi 483 fi
483 484
484 if ! mysql_version_is_at_least "5.0" \ 485 if ! mysql_version_is_at_least "5.0" \
485 && useq "raid" \ 486 && use raid \
486 && useq "static" ; then 487 && use static ; then
487 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically" 488 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
488 eerror "with RAID support enabled." 489 eerror "with RAID support enabled."
489 die "USE flags 'raid' and 'static' conflict!" 490 die "USE flags 'raid' and 'static' conflict!"
490 fi 491 fi
491 492
492 if mysql_version_is_at_least "4.1.3" \ 493 if mysql_version_is_at_least "4.1.3" \
493 && ( useq "cluster" || useq "extraengine" ) \ 494 && ( use cluster || use extraengine ) \
494 && useq "minimal" ; then 495 && use minimal ; then
495 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 496 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
496 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 497 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
497 fi 498 fi
498 499
499 mysql_check_version_range "4.0 to 5.0.99.99" \ 500 mysql_check_version_range "4.0 to 5.0.99.99" \
500 && useq "berkdb" \ 501 && use berkdb \
501 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 502 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
502} 503}
503 504
504mysql_src_unpack() { 505mysql_src_unpack() {
505 # Initialize the proper variables first 506 # Initialize the proper variables first
507 508
508 unpack ${A} 509 unpack ${A}
509 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 510 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
510 if mysql_check_version_range "5.1 to 5.1.99" ; then 511 if mysql_check_version_range "5.1 to 5.1.99" ; then
511 bitkeeper_fetch "mysql-5.1-ndb" 512 bitkeeper_fetch "mysql-5.1-ndb"
512 elif mysql_check_version_range "5.2 to 5.2.99" ; then 513 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then
513 bitkeeper_fetch "mysql-5.2-falcon" 514 bitkeeper_fetch "mysql-5.2-falcon"
514 else 515 else
515 bitkeeper_fetch 516 bitkeeper_fetch
516 fi 517 fi
517 cd "${S}" 518 cd "${S}"
550 local rebuilddirlist d 551 local rebuilddirlist d
551 552
552 if mysql_version_is_at_least "5.1.12" ; then 553 if mysql_version_is_at_least "5.1.12" ; then
553 rebuilddirlist="." 554 rebuilddirlist="."
554 # TODO IMPO! Check this with a cmake expert 555 # TODO IMPO! Check this with a cmake expert
555 useq "innodb" \ 556 use innodb \
556 && cmake \ 557 && cmake \
557 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 558 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
558 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 559 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
559 "storage/innobase" 560 "storage/innobase"
560 else 561 else
567 AT_GNUCONF_UPDATE="yes" eautoreconf 568 AT_GNUCONF_UPDATE="yes" eautoreconf
568 popd &>/dev/null 569 popd &>/dev/null
569 done 570 done
570 571
571 if mysql_check_version_range "4.1 to 5.0.99.99" \ 572 if mysql_check_version_range "4.1 to 5.0.99.99" \
572 && useq "berkdb" ; then 573 && use berkdb ; then
573 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" 574 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
574 pushd "bdb/dist" \ 575 pushd "bdb/dist" \
575 && sh s_all \ 576 && sh s_all \
576 || die "Failed bdb reconfigure" \ 577 || die "Failed bdb reconfigure" \
577 &>/dev/null 578 &>/dev/null
584 mysql_init_vars 585 mysql_init_vars
585 586
586 # $myconf is modified by the configure_* functions 587 # $myconf is modified by the configure_* functions
587 local myconf="" 588 local myconf=""
588 589
589 if useq "minimal" ; then 590 if use minimal ; then
590 configure_minimal 591 configure_minimal
591 else 592 else
592 configure_common 593 configure_common
593 if mysql_version_is_at_least "5.1.10" ; then 594 if mysql_version_is_at_least "5.1.10" ; then
594 configure_51 595 configure_51
629 | xargs -0 -n100 sed -i \ 630 | xargs -0 -n100 sed -i \
630 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 631 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
631 632
632 emake || die "emake failed" 633 emake || die "emake failed"
633 634
634 mysql_version_is_at_least "5.1.1" && useq "pbxt" && pbxt_src_compile 635 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
635} 636}
636 637
637mysql_src_install() { 638mysql_src_install() {
638 # Make sure the vars are correctly initialized 639 # Make sure the vars are correctly initialized
639 mysql_init_vars 640 mysql_init_vars
640 641
641 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 642 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
642 643
643 mysql_version_is_at_least "5.1.12" && useq "pbxt" && pbxt_src_install 644 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
644 645
645 insinto "${MY_INCLUDEDIR}" 646 insinto "${MY_INCLUDEDIR}"
646 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 647 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
647 648
648 # Convenience links 649 # Convenience links
666 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null 667 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
667 done 668 done
668 fi 669 fi
669 670
670 # clean up stuff for a minimal build 671 # clean up stuff for a minimal build
671 if useq "minimal" ; then 672 if use minimal ; then
672 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 673 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
673 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} 674 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}
674 rm -f "${D}/usr/sbin/mysqld" 675 rm -f "${D}/usr/sbin/mysqld"
675 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 676 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
676 fi 677 fi
695 doins scripts/mysqlaccess.conf 696 doins scripts/mysqlaccess.conf
696 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \ 697 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
697 -e "s!@DATADIR@!${DATADIR}!g" \ 698 -e "s!@DATADIR@!${DATADIR}!g" \
698 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 699 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
699 > "${TMPDIR}/my.cnf.ok" 700 > "${TMPDIR}/my.cnf.ok"
700 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 701 if mysql_version_is_at_least "4.1" && use latin1 ; then
701 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 702 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
702 fi 703 fi
703 newins "${TMPDIR}/my.cnf.ok" my.cnf 704 newins "${TMPDIR}/my.cnf.ok" my.cnf
704 705
705 # Minimal builds don't have the MySQL server 706 # Minimal builds don't have the MySQL server
706 if ! useq "minimal" ; then 707 if ! use minimal ; then
707 # Empty directories ... 708 # Empty directories ...
708 diropts "-m0750" 709 diropts "-m0750"
709 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 710 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
710 dodir "${DATADIR}" 711 dodir "${DATADIR}"
711 keepdir "${DATADIR}" 712 keepdir "${DATADIR}"
722 723
723 # Docs 724 # Docs
724 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 725 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
725 726
726 # Minimal builds don't have the MySQL server 727 # Minimal builds don't have the MySQL server
727 if ! useq "minimal" ; then 728 if ! use minimal ; then
728 docinto "support-files" 729 docinto "support-files"
729 for script in \ 730 for script in \
730 support-files/my-*.cnf \ 731 support-files/my-*.cnf \
731 support-files/magic \ 732 support-files/magic \
732 support-files/ndb-config-2-node.ini 733 support-files/ndb-config-2-node.ini
758 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}" 759 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
759 echo "${MY_LIBDIR#"/"}" >> "${filelist}" 760 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
760 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}" 761 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
761 popd &>/dev/null 762 popd &>/dev/null
762 fi 763 fi
764
765 mysql_lib_symlinks "${D}"
763} 766}
764 767
765mysql_pkg_preinst() { 768mysql_pkg_preinst() {
766 enewgroup mysql 60 || die "problem adding 'mysql' group" 769 enewgroup mysql 60 || die "problem adding 'mysql' group"
767 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 770 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
779 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 782 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
780 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 783 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
781 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 784 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
782 785
783 # Minimal builds don't have the MySQL server 786 # Minimal builds don't have the MySQL server
784 if ! useq "minimal" ; then 787 if ! use minimal ; then
785 docinto "support-files" 788 docinto "support-files"
786 for script in \ 789 for script in \
787 support-files/my-*.cnf \ 790 support-files/my-*.cnf \
788 support-files/magic \ 791 support-files/magic \
789 support-files/ndb-config-2-node.ini 792 support-files/ndb-config-2-node.ini
795 for script in scripts/mysql* ; do 798 for script in scripts/mysql* ; do
796 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
797 done 800 done
798 fi 801 fi
799 802
800 einfo "you may want to read slotting upgrade documents in the overlay" 803 #einfo "you may want to read slotting upgrade documents in the overlay"
801 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 804 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
802 # TODO tell it better ;-) 805 # TODO tell it better ;-)
803 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
804 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
805 einfo "if, after that you cannot start the mysql server" 808 elog "if, after that you cannot start the mysql server"
806 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
807 einfo "use the mysql upgrade script to restore the table" 810 elog "use the mysql upgrade script to restore the table"
808 einfo " or " 811 elog " or "
809 einfo "CREATE TABLE IF NOT EXISTS plugin (" 812 elog "CREATE TABLE IF NOT EXISTS plugin ("
810 einfo " name char(64) binary DEFAULT '' NOT NULL," 813 elog " name char(64) binary DEFAULT '' NOT NULL,"
811 einfo " dl char(128) DEFAULT '' NOT NULL," 814 elog " dl char(128) DEFAULT '' NOT NULL,"
812 einfo " PRIMARY KEY (name)" 815 elog " PRIMARY KEY (name)"
813 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;"
814 fi 817 fi
815 mysql_check_version_range "4.0 to 5.0.99.99" \ 818 mysql_check_version_range "4.0 to 5.0.99.99" \
816 && useq "berkdb" \ 819 && use berkdb \
817 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 820 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
818} 821}
819 822
820mysql_pkg_config() { 823mysql_pkg_config() {
821 # Make sure the vars are correctly initialized 824 # Make sure the vars are correctly initialized
928} 931}
929 932
930mysql_pkg_postrm() { 933mysql_pkg_postrm() {
931 if [[ ${PN} == "mysql-slotted" ]] ; then 934 if [[ ${PN} == "mysql-slotted" ]] ; then
932 mysql_lib_symlinks 935 mysql_lib_symlinks
936 mysql_clients_link_to_best_version
933 fi 937 fi
934} 938}

Legend:
Removed from v.1.56  
changed lines
  Added in v.1.67

  ViewVC Help
Powered by ViewVC 1.1.20