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

Diff of /eclass/mysql.eclass

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

Revision 1.58 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.58 2007/01/04 20:38:16 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 [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070104" 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
56 # having different flavours at the same time is not a good idea
57 for i in "" "-community" "-slotted" ; do
58 [[ "${i}" == ${PN#mysql} ]] ||
59 DEPEND="${DEPEND} !dev-db/mysql${i}"
60 done
61
62 mysql_version_is_at_least "5.1" \
63 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
64
65 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
66 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
67
68 if mysql_version_is_at_least "5.1.12" ; then
69 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
70 fi
71
72 # Shorten the path because the socket path length must be shorter than 107 chars
73 # and we will run a mysql server during test phase
74 S="${WORKDIR}/mysql"
75
76 # BitKeeper dependency, compile-time only
77 [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
78
79 if [[ ${PN} == "mysql-slotted" ]] ; then
80 DEPEND="${DEPEND} app-admin/eselect-mysql"
81 fi
82
83 if [[ ${PN} == "mysql-slotted" ]] ; then
84 SLOT=""
85 tpv=( ${PV//[-._]/ } )
86 for vatom in 0 1 2 ; do
87 SLOT="${SLOT}${tpv[${vatom}]}_"
88 done
89 #finally SLOT=5_0_24 86 #finally SLOT=5_0_24
90 SLOT=${SLOT:0:${#SLOT}-1} 87 SLOT=${SLOT:0:${#SLOT}-1}
91 else 88else
92 SLOT="0" 89 SLOT="0"
93 fi 90fi
94 91
95 # Define correct SRC_URIs 92# Define correct SRC_URIs
96 SRC_URI=" 93SRC_URI="
97 ${SERVER_URI} 94${SERVER_URI}
98 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 95http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
99 " 96"
100 mysql_version_is_at_least "5.1.12" \ 97mysql_version_is_at_least "5.1.12" \
101 && [[ -n "${PBXT_VERSION}" ]] \ 98&& [[ -n "${PBXT_VERSION}" ]] \
102 && 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 )"
103 100
104 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 101DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
105 HOMEPAGE="http://www.mysql.com/" 102HOMEPAGE="http://www.mysql.com/"
106 LICENSE="GPL-2" 103LICENSE="GPL-2"
107 IUSE="big-tables debug embedded minimal perl selinux ssl static" 104IUSE="big-tables debug embedded minimal perl selinux ssl static"
108 RESTRICT="confcache" 105RESTRICT="confcache"
109 106
110 mysql_version_is_at_least "4.1" \ 107mysql_version_is_at_least "4.1" \
111 && IUSE="${IUSE} latin1" 108&& IUSE="${IUSE} latin1"
112 109
113 mysql_version_is_at_least "4.1.3" \ 110mysql_version_is_at_least "4.1.3" \
114 && IUSE="${IUSE} cluster extraengine" 111&& IUSE="${IUSE} cluster extraengine"
115 112
116 mysql_version_is_at_least "5.0" \ 113mysql_version_is_at_least "5.0" \
117 || IUSE="${IUSE} raid" 114|| IUSE="${IUSE} raid"
118 115
119 mysql_version_is_at_least "5.0.18" \ 116mysql_version_is_at_least "5.0.18" \
120 && IUSE="${IUSE} max-idx-128" 117&& IUSE="${IUSE} max-idx-128"
121 118
122 mysql_version_is_at_least "5.1" \ 119mysql_version_is_at_least "5.1" \
123 && IUSE="${IUSE} innodb" 120&& IUSE="${IUSE} innodb"
124 121
125 mysql_version_is_at_least "5.1" \ 122mysql_version_is_at_least "5.1" \
126 || IUSE="${IUSE} berkdb" 123|| IUSE="${IUSE} berkdb"
127 124
128 mysql_version_is_at_least "5.1.12" \ 125mysql_version_is_at_least "5.1.12" \
129 && IUSE="${IUSE} pbxt" 126&& IUSE="${IUSE} pbxt"
130 127
131 RDEPEND="${DEPEND} 128RDEPEND="${DEPEND}
132 sys-apps/mysql 129!minimal? ( sys-apps/mysql )
133 selinux? ( sec-policy/selinux-mysql ) 130selinux? ( sec-policy/selinux-mysql )
134 " 131"
135
136fi # if [[ "${_MYPVR}" != "${PVR}" ]]
137 132
138EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 133EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
139 pkg_postinst pkg_config pkg_postrm 134 pkg_postinst pkg_config pkg_postrm
140 135
141# 136#
177 172
178 if [[ ! -d "${wc_path}" ]]; then 173 if [[ ! -d "${wc_path}" ]]; then
179 local options="-r+" 174 local options="-r+"
180 # first check out 175 # first check out
181 einfo "bitkeeper check out start -->" 176 einfo "bitkeeper check out start -->"
182 einfo " repository: ${repo_uri}" 177 elog " repository: ${repo_uri}"
183 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \
184 || die "${EBK}: can't fetch from ${repo_uri}." 179 || die "${EBK}: can't fetch from ${repo_uri}."
185 else 180 else
186 if [[ ! -d "${wc_path}/BK" ]]; then 181 if [[ ! -d "${wc_path}/BK" ]]; then
187 popd 182 popd
188 die "Look like ${wc_path} is not a bitkeeper path." 183 die "Look like ${wc_path} is not a bitkeeper path."
189 fi 184 fi
190 185
191 # update working copy 186 # update working copy
192 einfo "bitkeeper update start -->" 187 einfo "bitkeeper update start -->"
193 einfo " repository: ${repo_uri}" 188 elog " repository: ${repo_uri}"
194 189
195 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
196 || die "BK: can't update from ${repo_uri} to ${wc_path}." 191 || die "BK: can't update from ${repo_uri} to ${wc_path}."
197 fi 192 fi
198 193
278 myconf="${myconf} --without-${i}" 273 myconf="${myconf} --without-${i}"
279 done 274 done
280 myconf="${myconf} --with-extra-charsets=none" 275 myconf="${myconf} --with-extra-charsets=none"
281 myconf="${myconf} --enable-local-infile" 276 myconf="${myconf} --enable-local-infile"
282 277
283 if useq "static" ; then 278 if use static ; then
284 myconf="${myconf} --with-client-ldflags=-all-static" 279 myconf="${myconf} --with-client-ldflags=-all-static"
285 myconf="${myconf} --disable-shared" 280 myconf="${myconf} --disable-shared"
286 else 281 else
287 myconf="${myconf} --enable-shared --enable-static" 282 myconf="${myconf} --enable-shared --enable-static"
288 fi 283 fi
289 284
290 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
291 myconf="${myconf} --with-charset=utf8" 286 myconf="${myconf} --with-charset=utf8"
292 myconf="${myconf} --with-collation=utf8_general_ci" 287 myconf="${myconf} --with-collation=utf8_general_ci"
293 else 288 else
294 myconf="${myconf} --with-charset=latin1" 289 myconf="${myconf} --with-charset=latin1"
295 myconf="${myconf} --with-collation=latin1_swedish_ci" 290 myconf="${myconf} --with-collation=latin1_swedish_ci"
303 myconf="${myconf} --with-mysqld-user=mysql" 298 myconf="${myconf} --with-mysqld-user=mysql"
304 myconf="${myconf} --with-server" 299 myconf="${myconf} --with-server"
305 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 300 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
306 myconf="${myconf} --without-libwrap" 301 myconf="${myconf} --without-libwrap"
307 302
308 if useq "static" ; then 303 if use static ; then
309 myconf="${myconf} --with-mysqld-ldflags=-all-static" 304 myconf="${myconf} --with-mysqld-ldflags=-all-static"
310 myconf="${myconf} --with-client-ldflags=-all-static" 305 myconf="${myconf} --with-client-ldflags=-all-static"
311 myconf="${myconf} --disable-shared" 306 myconf="${myconf} --disable-shared"
312 else 307 else
313 myconf="${myconf} --enable-shared --enable-static" 308 myconf="${myconf} --enable-shared --enable-static"
314 fi 309 fi
315 310
316 if useq "debug" ; then 311 if use debug ; then
317 myconf="${myconf} --with-debug=full" 312 myconf="${myconf} --with-debug=full"
318 else 313 else
319 myconf="${myconf} --without-debug" 314 myconf="${myconf} --without-debug"
320 mysql_version_is_at_least "4.1.3" \ 315 mysql_version_is_at_least "4.1.3" \
321 && useq "cluster" \ 316 && use cluster \
322 && myconf="${myconf} --without-ndb-debug" 317 && myconf="${myconf} --without-ndb-debug"
323 fi 318 fi
324 319
325 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 320 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
326 myconf="${myconf} --with-charset=utf8" 321 myconf="${myconf} --with-charset=utf8"
327 myconf="${myconf} --with-collation=utf8_general_ci" 322 myconf="${myconf} --with-collation=utf8_general_ci"
328 else 323 else
329 myconf="${myconf} --with-charset=latin1" 324 myconf="${myconf} --with-charset=latin1"
330 myconf="${myconf} --with-collation=latin1_swedish_ci" 325 myconf="${myconf} --with-collation=latin1_swedish_ci"
331 fi 326 fi
332 327
333 if useq "embedded" ; then 328 if use embedded ; then
334 myconf="${myconf} --with-embedded-privilege-control" 329 myconf="${myconf} --with-embedded-privilege-control"
335 myconf="${myconf} --with-embedded-server" 330 myconf="${myconf} --with-embedded-server"
336 else 331 else
337 myconf="${myconf} --without-embedded-privilege-control" 332 myconf="${myconf} --without-embedded-privilege-control"
338 myconf="${myconf} --without-embedded-server" 333 myconf="${myconf} --without-embedded-server"
346 myconf="${myconf} --with-extra-tools" 341 myconf="${myconf} --with-extra-tools"
347 myconf="${myconf} --with-innodb" 342 myconf="${myconf} --with-innodb"
348 myconf="${myconf} --without-readline" 343 myconf="${myconf} --without-readline"
349 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)"
350 345
351 if useq "ssl" ; then 346 if use ssl ; then
352 # --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
353 # has been removed from configure 348 # has been removed from configure
354 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
355 if mysql_version_is_at_least "5.0.6" ; then 352 if mysql_version_is_at_least "5.1.11" ; then
356 # myconf="${myconf} --with-yassl"
357 myconf="${myconf} --with-ssl" 353 myconf="${myconf} $(use_with ssl)"
358 else 354 else
359 myconf="${myconf} --with-openssl" 355 myconf="${myconf} $(use_with ssl openssl)"
360 fi
361 else
362 myconf="${myconf} --without-openssl"
363 fi 356 fi
364 357
365 # 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:
366 # 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
367 # It comes down to non-64-bit safety problems. 360 # It comes down to non-64-bit safety problems.
368 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
369 elog "Berkeley DB support was disabled due to incompatible arch" 362 elog "Berkeley DB support was disabled due to incompatible arch"
370 myconf="${myconf} --without-berkeley-db" 363 myconf="${myconf} --without-berkeley-db"
371 else 364 else
372 if useq "berkdb" ; then 365 if use berkdb ; then
373 myconf="${myconf} --with-berkeley-db=./bdb" 366 myconf="${myconf} --with-berkeley-db=./bdb"
374 else 367 else
375 myconf="${myconf} --without-berkeley-db" 368 myconf="${myconf} --without-berkeley-db"
376 fi 369 fi
377 fi 370 fi
379 if mysql_version_is_at_least "4.1.3" ; then 372 if mysql_version_is_at_least "4.1.3" ; then
380 myconf="${myconf} --with-geometry" 373 myconf="${myconf} --with-geometry"
381 myconf="${myconf} $(use_with cluster ndbcluster)" 374 myconf="${myconf} $(use_with cluster ndbcluster)"
382 fi 375 fi
383 376
384 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
385 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 378 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
386 myconf="${myconf} --with-archive-storage-engine" 379 myconf="${myconf} --with-archive-storage-engine"
387 380
388 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 381 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
389 myconf="${myconf} --with-csv-storage-engine" 382 myconf="${myconf} --with-csv-storage-engine"
400 myconf="${myconf} --with-federated-storage-engine" 393 myconf="${myconf} --with-federated-storage-engine"
401 fi 394 fi
402 fi 395 fi
403 396
404 mysql_version_is_at_least "5.0.18" \ 397 mysql_version_is_at_least "5.0.18" \
405 && useq "max-idx-128" \ 398 && use max-idx-128 \
406 && myconf="${myconf} --with-max-indexes=128" 399 && myconf="${myconf} --with-max-indexes=128"
407} 400}
408 401
409configure_51() { 402configure_51() {
410 # TODO: !!!! readd --without-readline 403 # TODO: !!!! readd --without-readline
415 myconf="${myconf} --with-geometry" 408 myconf="${myconf} --with-geometry"
416 myconf="${myconf} --with-readline" 409 myconf="${myconf} --with-readline"
417 myconf="${myconf} --with-row-based-replication" 410 myconf="${myconf} --with-row-based-replication"
418 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 411 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
419 myconf="${myconf} --without-pstack" 412 myconf="${myconf} --without-pstack"
420 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 413 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
421 414
422 # 5.1 introduces a new way to manage storage engines (plugins) 415 # 5.1 introduces a new way to manage storage engines (plugins)
423 # like configuration=none 416 # like configuration=none
424 local plugins="csv,myisam,myisammrg,heap" 417 local plugins="csv,myisam,myisammrg,heap"
425 if useq "extraengine" ; then 418 if use extraengine ; then
426 # 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
427 plugins="${plugins},archive,blackhole,example,federated,partition" 420 plugins="${plugins},archive,blackhole,example,federated,partition"
428 421
429 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"
430 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"
431 fi 424 fi
432 425
433 if useq "innodb" ; then 426 if use innodb ; then
434 plugins="${plugins},innobase" 427 plugins="${plugins},innobase"
435 fi 428 fi
436 429
437 # like configuration=max-no-ndb 430 # like configuration=max-no-ndb
438 if useq "cluster" ; then 431 if use cluster ; then
439 plugins="${plugins},ndbcluster" 432 plugins="${plugins},ndbcluster"
440 myconf="${myconf} --with-ndb-binlog" 433 myconf="${myconf} --with-ndb-binlog"
441 fi 434 fi
442 435
443 if mysql_version_is_at_least "5.2" ; then 436 if mysql_version_is_at_least "5.2" ; then
457 450
458 local myconf 451 local myconf
459 myconf="${myconf} --with-mysql=${S}" 452 myconf="${myconf} --with-mysql=${S}"
460 mkdir -p ${T}/lib 453 mkdir -p ${T}/lib
461 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 454 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}"
462 useq "debug" && myconf="${myconf} --with-debug=full" 455 use debug && myconf="${myconf} --with-debug=full"
463 # TODO is safe/needed to use econf here ? 456 # TODO is safe/needed to use econf here ?
464 ./configure ${myconf} || die "problem configuring pbxt storage engine" 457 ./configure ${myconf} || die "problem configuring pbxt storage engine"
465 # TODO is safe/needed to use emake here ? 458 # TODO is safe/needed to use emake here ?
466 make || die "problem making pbxt storage engine (${myconf})" 459 make || die "problem making pbxt storage engine (${myconf})"
467 460
482mysql_pkg_setup() { 475mysql_pkg_setup() {
483 enewgroup mysql 60 || die "problem adding 'mysql' group" 476 enewgroup mysql 60 || die "problem adding 'mysql' group"
484 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"
485 478
486 # Check for USE flag problems in pkg_setup 479 # Check for USE flag problems in pkg_setup
487 if useq "static" && useq "ssl" ; then 480 if use static && use ssl ; then
488 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!"
489 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!"
490 fi 483 fi
491 484
492 if ! mysql_version_is_at_least "5.0" \ 485 if ! mysql_version_is_at_least "5.0" \
493 && useq "raid" \ 486 && use raid \
494 && useq "static" ; then 487 && use static ; then
495 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"
496 eerror "with RAID support enabled." 489 eerror "with RAID support enabled."
497 die "USE flags 'raid' and 'static' conflict!" 490 die "USE flags 'raid' and 'static' conflict!"
498 fi 491 fi
499 492
500 if mysql_version_is_at_least "4.1.3" \ 493 if mysql_version_is_at_least "4.1.3" \
501 && ( useq "cluster" || useq "extraengine" ) \ 494 && ( use cluster || use extraengine ) \
502 && useq "minimal" ; then 495 && use minimal ; then
503 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 496 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
504 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 497 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
505 fi 498 fi
506 499
507 mysql_check_version_range "4.0 to 5.0.99.99" \ 500 mysql_check_version_range "4.0 to 5.0.99.99" \
508 && useq "berkdb" \ 501 && use berkdb \
509 && 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!"
510} 503}
511 504
512mysql_src_unpack() { 505mysql_src_unpack() {
513 # Initialize the proper variables first 506 # Initialize the proper variables first
558 local rebuilddirlist d 551 local rebuilddirlist d
559 552
560 if mysql_version_is_at_least "5.1.12" ; then 553 if mysql_version_is_at_least "5.1.12" ; then
561 rebuilddirlist="." 554 rebuilddirlist="."
562 # TODO IMPO! Check this with a cmake expert 555 # TODO IMPO! Check this with a cmake expert
563 useq "innodb" \ 556 use innodb \
564 && cmake \ 557 && cmake \
565 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 558 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
566 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 559 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
567 "storage/innobase" 560 "storage/innobase"
568 else 561 else
575 AT_GNUCONF_UPDATE="yes" eautoreconf 568 AT_GNUCONF_UPDATE="yes" eautoreconf
576 popd &>/dev/null 569 popd &>/dev/null
577 done 570 done
578 571
579 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" \
580 && useq "berkdb" ; then 573 && use berkdb ; then
581 [[ -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"
582 pushd "bdb/dist" \ 575 pushd "bdb/dist" \
583 && sh s_all \ 576 && sh s_all \
584 || die "Failed bdb reconfigure" \ 577 || die "Failed bdb reconfigure" \
585 &>/dev/null 578 &>/dev/null
592 mysql_init_vars 585 mysql_init_vars
593 586
594 # $myconf is modified by the configure_* functions 587 # $myconf is modified by the configure_* functions
595 local myconf="" 588 local myconf=""
596 589
597 if useq "minimal" ; then 590 if use minimal ; then
598 configure_minimal 591 configure_minimal
599 else 592 else
600 configure_common 593 configure_common
601 if mysql_version_is_at_least "5.1.10" ; then 594 if mysql_version_is_at_least "5.1.10" ; then
602 configure_51 595 configure_51
637 | xargs -0 -n100 sed -i \ 630 | xargs -0 -n100 sed -i \
638 -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)|'
639 632
640 emake || die "emake failed" 633 emake || die "emake failed"
641 634
642 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
643} 636}
644 637
645mysql_src_install() { 638mysql_src_install() {
646 # Make sure the vars are correctly initialized 639 # Make sure the vars are correctly initialized
647 mysql_init_vars 640 mysql_init_vars
648 641
649 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 642 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
650 643
651 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
652 645
653 insinto "${MY_INCLUDEDIR}" 646 insinto "${MY_INCLUDEDIR}"
654 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 647 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
655 648
656 # Convenience links 649 # Convenience links
674 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
675 done 668 done
676 fi 669 fi
677 670
678 # clean up stuff for a minimal build 671 # clean up stuff for a minimal build
679 if useq "minimal" ; then 672 if use minimal ; then
680 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 673 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
681 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}
682 rm -f "${D}/usr/sbin/mysqld" 675 rm -f "${D}/usr/sbin/mysqld"
683 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
684 fi 677 fi
703 doins scripts/mysqlaccess.conf 696 doins scripts/mysqlaccess.conf
704 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \ 697 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
705 -e "s!@DATADIR@!${DATADIR}!g" \ 698 -e "s!@DATADIR@!${DATADIR}!g" \
706 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 699 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
707 > "${TMPDIR}/my.cnf.ok" 700 > "${TMPDIR}/my.cnf.ok"
708 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 701 if mysql_version_is_at_least "4.1" && use latin1 ; then
709 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 702 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
710 fi 703 fi
711 newins "${TMPDIR}/my.cnf.ok" my.cnf 704 newins "${TMPDIR}/my.cnf.ok" my.cnf
712 705
713 # Minimal builds don't have the MySQL server 706 # Minimal builds don't have the MySQL server
714 if ! useq "minimal" ; then 707 if ! use minimal ; then
715 # Empty directories ... 708 # Empty directories ...
716 diropts "-m0750" 709 diropts "-m0750"
717 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 710 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
718 dodir "${DATADIR}" 711 dodir "${DATADIR}"
719 keepdir "${DATADIR}" 712 keepdir "${DATADIR}"
730 723
731 # Docs 724 # Docs
732 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 725 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
733 726
734 # Minimal builds don't have the MySQL server 727 # Minimal builds don't have the MySQL server
735 if ! useq "minimal" ; then 728 if ! use minimal ; then
736 docinto "support-files" 729 docinto "support-files"
737 for script in \ 730 for script in \
738 support-files/my-*.cnf \ 731 support-files/my-*.cnf \
739 support-files/magic \ 732 support-files/magic \
740 support-files/ndb-config-2-node.ini 733 support-files/ndb-config-2-node.ini
789 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 782 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
790 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 783 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
791 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 784 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
792 785
793 # Minimal builds don't have the MySQL server 786 # Minimal builds don't have the MySQL server
794 if ! useq "minimal" ; then 787 if ! use minimal ; then
795 docinto "support-files" 788 docinto "support-files"
796 for script in \ 789 for script in \
797 support-files/my-*.cnf \ 790 support-files/my-*.cnf \
798 support-files/magic \ 791 support-files/magic \
799 support-files/ndb-config-2-node.ini 792 support-files/ndb-config-2-node.ini
805 for script in scripts/mysql* ; do 798 for script in scripts/mysql* ; do
806 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
807 done 800 done
808 fi 801 fi
809 802
810 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"
811 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 804 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
812 # TODO tell it better ;-) 805 # TODO tell it better ;-)
813 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
814 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
815 einfo "if, after that you cannot start the mysql server" 808 elog "if, after that you cannot start the mysql server"
816 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
817 einfo "use the mysql upgrade script to restore the table" 810 elog "use the mysql upgrade script to restore the table"
818 einfo " or " 811 elog " or "
819 einfo "CREATE TABLE IF NOT EXISTS plugin (" 812 elog "CREATE TABLE IF NOT EXISTS plugin ("
820 einfo " name char(64) binary DEFAULT '' NOT NULL," 813 elog " name char(64) binary DEFAULT '' NOT NULL,"
821 einfo " dl char(128) DEFAULT '' NOT NULL," 814 elog " dl char(128) DEFAULT '' NOT NULL,"
822 einfo " PRIMARY KEY (name)" 815 elog " PRIMARY KEY (name)"
823 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;"
824 fi 817 fi
825 mysql_check_version_range "4.0 to 5.0.99.99" \ 818 mysql_check_version_range "4.0 to 5.0.99.99" \
826 && useq "berkdb" \ 819 && use berkdb \
827 && 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!"
828} 821}
829 822
830mysql_pkg_config() { 823mysql_pkg_config() {
831 # Make sure the vars are correctly initialized 824 # Make sure the vars are correctly initialized

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

  ViewVC Help
Powered by ViewVC 1.1.20