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

Diff of /eclass/mysql.eclass

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

Revision 1.55 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.55 2007/01/03 15:27:13 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}" ]] || [[ -z "${MYSQL_VERSION_ID}" ]] 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#
138# HELPER FUNCTIONS: 137# HELPER FUNCTIONS:
139# 138#
140 139
141bitkeeper_fetch() { 140bitkeeper_fetch() {
142 141
142 local reposuf
143 if [[ -z "${1}" ]] ; then
144 local tpv
143 local tpv=( ${PV//[-._]/ } ) 145 tpv=( ${PV//[-._]/ } )
144 local reposuf="${tpv[0]}.${tpv[1]}" 146 reposuf="mysql-${tpv[0]}.${tpv[1]}"
145 useq "cluster" && reposuf="${reposuf}-ndb" 147 else
148 reposuf="${1}"
149 fi
150 einfo "using \"${reposuf}\" repository."
146 local repo_uri="bk://mysql.bkbits.net/mysql-${reposuf}" 151 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
147 ## -- ebk_store_dir: bitkeeper sources store directory 152 ## -- ebk_store_dir: bitkeeper sources store directory
148 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 153 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
149 ## -- ebk_fetch_cmd: bitkeeper fetch command 154 ## -- ebk_fetch_cmd: bitkeeper fetch command
150 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 155 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
151 # hint: does not work 156 # hint: does not work
161 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 166 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}."
162 fi 167 fi
163 168
164 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 169 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}"
165 170
166 local wc_path=mysql-${reposuf} 171 local wc_path=${reposuf}
167 172
168 if [[ ! -d "${wc_path}" ]]; then 173 if [[ ! -d "${wc_path}" ]]; then
169 local options="-r+" 174 local options="-r+"
170 # first check out 175 # first check out
171 einfo "bitkeeper check out start -->" 176 einfo "bitkeeper check out start -->"
172 einfo " repository: ${repo_uri}" 177 elog " repository: ${repo_uri}"
173 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \
174 || die "${EBK}: can't fetch from ${repo_uri}." 179 || die "${EBK}: can't fetch from ${repo_uri}."
175 else 180 else
176 if [[ ! -d "${wc_path}/BK" ]]; then 181 if [[ ! -d "${wc_path}/BK" ]]; then
177 popd 182 popd
178 die "Look like ${wc_path} is not a bitkeeper path." 183 die "Look like ${wc_path} is not a bitkeeper path."
179 fi 184 fi
180 185
181 # update working copy 186 # update working copy
182 einfo "bitkeeper update start -->" 187 einfo "bitkeeper update start -->"
183 einfo " repository: ${repo_uri}" 188 elog " repository: ${repo_uri}"
184 189
185 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
186 || die "BK: can't update from ${repo_uri} to ${wc_path}." 191 || die "BK: can't update from ${repo_uri} to ${wc_path}."
187
188 fi 192 fi
189 193
190 einfo " working copy: ${wc_path}" 194 einfo " working copy: ${wc_path}"
191 cd "${wc_path}" 195 cd "${wc_path}"
192 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 196 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}."
269 myconf="${myconf} --without-${i}" 273 myconf="${myconf} --without-${i}"
270 done 274 done
271 myconf="${myconf} --with-extra-charsets=none" 275 myconf="${myconf} --with-extra-charsets=none"
272 myconf="${myconf} --enable-local-infile" 276 myconf="${myconf} --enable-local-infile"
273 277
274 if useq "static" ; then 278 if use static ; then
275 myconf="${myconf} --with-client-ldflags=-all-static" 279 myconf="${myconf} --with-client-ldflags=-all-static"
276 myconf="${myconf} --disable-shared" 280 myconf="${myconf} --disable-shared"
277 else 281 else
278 myconf="${myconf} --enable-shared --enable-static" 282 myconf="${myconf} --enable-shared --enable-static"
279 fi 283 fi
280 284
281 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
282 myconf="${myconf} --with-charset=utf8" 286 myconf="${myconf} --with-charset=utf8"
283 myconf="${myconf} --with-collation=utf8_general_ci" 287 myconf="${myconf} --with-collation=utf8_general_ci"
284 else 288 else
285 myconf="${myconf} --with-charset=latin1" 289 myconf="${myconf} --with-charset=latin1"
286 myconf="${myconf} --with-collation=latin1_swedish_ci" 290 myconf="${myconf} --with-collation=latin1_swedish_ci"
294 myconf="${myconf} --with-mysqld-user=mysql" 298 myconf="${myconf} --with-mysqld-user=mysql"
295 myconf="${myconf} --with-server" 299 myconf="${myconf} --with-server"
296 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 300 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
297 myconf="${myconf} --without-libwrap" 301 myconf="${myconf} --without-libwrap"
298 302
299 if useq "static" ; then 303 if use static ; then
300 myconf="${myconf} --with-mysqld-ldflags=-all-static" 304 myconf="${myconf} --with-mysqld-ldflags=-all-static"
301 myconf="${myconf} --with-client-ldflags=-all-static" 305 myconf="${myconf} --with-client-ldflags=-all-static"
302 myconf="${myconf} --disable-shared" 306 myconf="${myconf} --disable-shared"
303 else 307 else
304 myconf="${myconf} --enable-shared --enable-static" 308 myconf="${myconf} --enable-shared --enable-static"
305 fi 309 fi
306 310
307 if useq "debug" ; then 311 if use debug ; then
308 myconf="${myconf} --with-debug=full" 312 myconf="${myconf} --with-debug=full"
309 else 313 else
310 myconf="${myconf} --without-debug" 314 myconf="${myconf} --without-debug"
311 mysql_version_is_at_least "4.1.3" \ 315 mysql_version_is_at_least "4.1.3" \
312 && useq "cluster" \ 316 && use cluster \
313 && myconf="${myconf} --without-ndb-debug" 317 && myconf="${myconf} --without-ndb-debug"
314 fi 318 fi
315 319
316 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 320 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
317 myconf="${myconf} --with-charset=utf8" 321 myconf="${myconf} --with-charset=utf8"
318 myconf="${myconf} --with-collation=utf8_general_ci" 322 myconf="${myconf} --with-collation=utf8_general_ci"
319 else 323 else
320 myconf="${myconf} --with-charset=latin1" 324 myconf="${myconf} --with-charset=latin1"
321 myconf="${myconf} --with-collation=latin1_swedish_ci" 325 myconf="${myconf} --with-collation=latin1_swedish_ci"
322 fi 326 fi
323 327
324 if useq "embedded" ; then 328 if use embedded ; then
325 myconf="${myconf} --with-embedded-privilege-control" 329 myconf="${myconf} --with-embedded-privilege-control"
326 myconf="${myconf} --with-embedded-server" 330 myconf="${myconf} --with-embedded-server"
327 else 331 else
328 myconf="${myconf} --without-embedded-privilege-control" 332 myconf="${myconf} --without-embedded-privilege-control"
329 myconf="${myconf} --without-embedded-server" 333 myconf="${myconf} --without-embedded-server"
337 myconf="${myconf} --with-extra-tools" 341 myconf="${myconf} --with-extra-tools"
338 myconf="${myconf} --with-innodb" 342 myconf="${myconf} --with-innodb"
339 myconf="${myconf} --without-readline" 343 myconf="${myconf} --without-readline"
340 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)"
341 345
342 if useq "ssl" ; then 346 if use ssl ; then
343 # --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
344 # has been removed from configure 348 # has been removed from configure
345 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
346 if mysql_version_is_at_least "5.0.6" ; then 352 if mysql_version_is_at_least "5.1.11" ; then
347 # myconf="${myconf} --with-yassl" 353 myconf="${myconf} $(use_with ssl)"
348 myconf="${myconf} --with-openssl"
349 else 354 else
350 myconf="${myconf} --with-openssl" 355 myconf="${myconf} $(use_with ssl openssl)"
351 fi
352 else
353 myconf="${myconf} --without-openssl"
354 fi 356 fi
355 357
356 # 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:
357 # 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
358 # It comes down to non-64-bit safety problems. 360 # It comes down to non-64-bit safety problems.
359 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
360 elog "Berkeley DB support was disabled due to incompatible arch" 362 elog "Berkeley DB support was disabled due to incompatible arch"
361 myconf="${myconf} --without-berkeley-db" 363 myconf="${myconf} --without-berkeley-db"
362 else 364 else
363 if useq "berkdb" ; then 365 if use berkdb ; then
364 myconf="${myconf} --with-berkeley-db=./bdb" 366 myconf="${myconf} --with-berkeley-db=./bdb"
365 else 367 else
366 myconf="${myconf} --without-berkeley-db" 368 myconf="${myconf} --without-berkeley-db"
367 fi 369 fi
368 fi 370 fi
370 if mysql_version_is_at_least "4.1.3" ; then 372 if mysql_version_is_at_least "4.1.3" ; then
371 myconf="${myconf} --with-geometry" 373 myconf="${myconf} --with-geometry"
372 myconf="${myconf} $(use_with cluster ndbcluster)" 374 myconf="${myconf} $(use_with cluster ndbcluster)"
373 fi 375 fi
374 376
375 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
376 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 378 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
377 myconf="${myconf} --with-archive-storage-engine" 379 myconf="${myconf} --with-archive-storage-engine"
378 380
379 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 381 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
380 myconf="${myconf} --with-csv-storage-engine" 382 myconf="${myconf} --with-csv-storage-engine"
391 myconf="${myconf} --with-federated-storage-engine" 393 myconf="${myconf} --with-federated-storage-engine"
392 fi 394 fi
393 fi 395 fi
394 396
395 mysql_version_is_at_least "5.0.18" \ 397 mysql_version_is_at_least "5.0.18" \
396 && useq "max-idx-128" \ 398 && use max-idx-128 \
397 && myconf="${myconf} --with-max-indexes=128" 399 && myconf="${myconf} --with-max-indexes=128"
398} 400}
399 401
400configure_51() { 402configure_51() {
401 # TODO: !!!! readd --without-readline 403 # TODO: !!!! readd --without-readline
406 myconf="${myconf} --with-geometry" 408 myconf="${myconf} --with-geometry"
407 myconf="${myconf} --with-readline" 409 myconf="${myconf} --with-readline"
408 myconf="${myconf} --with-row-based-replication" 410 myconf="${myconf} --with-row-based-replication"
409 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 411 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
410 myconf="${myconf} --without-pstack" 412 myconf="${myconf} --without-pstack"
411 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 413 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
412 414
413 # 5.1 introduces a new way to manage storage engines (plugins) 415 # 5.1 introduces a new way to manage storage engines (plugins)
414 # like configuration=none 416 # like configuration=none
415 local plugins="csv,myisam,myisammrg,heap" 417 local plugins="csv,myisam,myisammrg,heap"
416 if useq "extraengine" ; then 418 if use extraengine ; then
417 # 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
418 plugins="${plugins},archive,blackhole,example,federated,partition" 420 plugins="${plugins},archive,blackhole,example,federated,partition"
419 421
420 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"
421 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"
422 fi 424 fi
423 425
424 if useq "innodb" ; then 426 if use innodb ; then
425 plugins="${plugins},innobase" 427 plugins="${plugins},innobase"
426 fi 428 fi
427 429
428 # like configuration=max-no-ndb 430 # like configuration=max-no-ndb
429 if useq "cluster" ; then 431 if use cluster ; then
430 plugins="${plugins},ndbcluster" 432 plugins="${plugins},ndbcluster"
431 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"
432 fi 438 fi
433 439
434 myconf="${myconf} --with-plugins=${plugins}" 440 myconf="${myconf} --with-plugins=${plugins}"
435} 441}
436 442
444 450
445 local myconf 451 local myconf
446 myconf="${myconf} --with-mysql=${S}" 452 myconf="${myconf} --with-mysql=${S}"
447 mkdir -p ${T}/lib 453 mkdir -p ${T}/lib
448 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 454 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}"
449 useq "debug" && myconf="${myconf} --with-debug=full" 455 use debug && myconf="${myconf} --with-debug=full"
450 # TODO is safe/needed to use econf here ? 456 # TODO is safe/needed to use econf here ?
451 ./configure ${myconf} || die "problem configuring pbxt storage engine" 457 ./configure ${myconf} || die "problem configuring pbxt storage engine"
452 # TODO is safe/needed to use emake here ? 458 # TODO is safe/needed to use emake here ?
453 make || die "problem making pbxt storage engine (${myconf})" 459 make || die "problem making pbxt storage engine (${myconf})"
454 460
469mysql_pkg_setup() { 475mysql_pkg_setup() {
470 enewgroup mysql 60 || die "problem adding 'mysql' group" 476 enewgroup mysql 60 || die "problem adding 'mysql' group"
471 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"
472 478
473 # Check for USE flag problems in pkg_setup 479 # Check for USE flag problems in pkg_setup
474 if useq "static" && useq "ssl" ; then 480 if use static && use ssl ; then
475 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!"
476 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!"
477 fi 483 fi
478 484
479 if ! mysql_version_is_at_least "5.0" \ 485 if ! mysql_version_is_at_least "5.0" \
480 && useq "raid" \ 486 && use raid \
481 && useq "static" ; then 487 && use static ; then
482 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"
483 eerror "with RAID support enabled." 489 eerror "with RAID support enabled."
484 die "USE flags 'raid' and 'static' conflict!" 490 die "USE flags 'raid' and 'static' conflict!"
485 fi 491 fi
486 492
487 if mysql_version_is_at_least "4.1.3" \ 493 if mysql_version_is_at_least "4.1.3" \
488 && ( useq "cluster" || useq "extraengine" ) \ 494 && ( use cluster || use extraengine ) \
489 && useq "minimal" ; then 495 && use minimal ; then
490 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 496 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
491 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 497 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
492 fi 498 fi
493 499
494 mysql_check_version_range "4.0 to 5.0.99.99" \ 500 mysql_check_version_range "4.0 to 5.0.99.99" \
495 && useq "berkdb" \ 501 && use berkdb \
496 && 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!"
497} 503}
498 504
499mysql_src_unpack() { 505mysql_src_unpack() {
500 # Initialize the proper variables first 506 # Initialize the proper variables first
501 mysql_init_vars 507 mysql_init_vars
502 508
503 unpack ${A} 509 unpack ${A}
504 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 510 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
511 if mysql_check_version_range "5.1 to 5.1.99" ; then
512 bitkeeper_fetch "mysql-5.1-ndb"
513 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then
514 bitkeeper_fetch "mysql-5.2-falcon"
515 else
505 bitkeeper_fetch 516 bitkeeper_fetch
517 fi
506 cd "${S}" 518 cd "${S}"
507 einfo "running upstream autorun on bk sources" 519 einfo "running upstream autorun on bk sources"
508 BUILD/autorun.sh 520 BUILD/autorun.sh
509 else 521 else
510 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 522 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
539 local rebuilddirlist d 551 local rebuilddirlist d
540 552
541 if mysql_version_is_at_least "5.1.12" ; then 553 if mysql_version_is_at_least "5.1.12" ; then
542 rebuilddirlist="." 554 rebuilddirlist="."
543 # TODO IMPO! Check this with a cmake expert 555 # TODO IMPO! Check this with a cmake expert
544 useq "innodb" \ 556 use innodb \
545 && cmake \ 557 && cmake \
546 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 558 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
547 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 559 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
548 "storage/innobase" 560 "storage/innobase"
549 else 561 else
556 AT_GNUCONF_UPDATE="yes" eautoreconf 568 AT_GNUCONF_UPDATE="yes" eautoreconf
557 popd &>/dev/null 569 popd &>/dev/null
558 done 570 done
559 571
560 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" \
561 && useq "berkdb" ; then 573 && use berkdb ; then
562 [[ -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"
563 pushd "bdb/dist" \ 575 pushd "bdb/dist" \
564 && sh s_all \ 576 && sh s_all \
565 || die "Failed bdb reconfigure" \ 577 || die "Failed bdb reconfigure" \
566 &>/dev/null 578 &>/dev/null
573 mysql_init_vars 585 mysql_init_vars
574 586
575 # $myconf is modified by the configure_* functions 587 # $myconf is modified by the configure_* functions
576 local myconf="" 588 local myconf=""
577 589
578 if useq "minimal" ; then 590 if use minimal ; then
579 configure_minimal 591 configure_minimal
580 else 592 else
581 configure_common 593 configure_common
582 if mysql_version_is_at_least "5.1.10" ; then 594 if mysql_version_is_at_least "5.1.10" ; then
583 configure_51 595 configure_51
618 | xargs -0 -n100 sed -i \ 630 | xargs -0 -n100 sed -i \
619 -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)|'
620 632
621 emake || die "emake failed" 633 emake || die "emake failed"
622 634
623 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
624} 636}
625 637
626mysql_src_install() { 638mysql_src_install() {
627 # Make sure the vars are correctly initialized 639 # Make sure the vars are correctly initialized
628 mysql_init_vars 640 mysql_init_vars
629 641
630 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 642 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
631 643
632 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
633 645
634 insinto "${MY_INCLUDEDIR}" 646 insinto "${MY_INCLUDEDIR}"
635 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 647 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
636 648
637 # Convenience links 649 # Convenience links
655 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
656 done 668 done
657 fi 669 fi
658 670
659 # clean up stuff for a minimal build 671 # clean up stuff for a minimal build
660 if useq "minimal" ; then 672 if use minimal ; then
661 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 673 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
662 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}
663 rm -f "${D}/usr/sbin/mysqld" 675 rm -f "${D}/usr/sbin/mysqld"
664 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
665 fi 677 fi
684 doins scripts/mysqlaccess.conf 696 doins scripts/mysqlaccess.conf
685 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \ 697 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
686 -e "s!@DATADIR@!${DATADIR}!g" \ 698 -e "s!@DATADIR@!${DATADIR}!g" \
687 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 699 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
688 > "${TMPDIR}/my.cnf.ok" 700 > "${TMPDIR}/my.cnf.ok"
689 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 701 if mysql_version_is_at_least "4.1" && use latin1 ; then
690 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 702 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
691 fi 703 fi
692 newins "${TMPDIR}/my.cnf.ok" my.cnf 704 newins "${TMPDIR}/my.cnf.ok" my.cnf
693 705
694 # Minimal builds don't have the MySQL server 706 # Minimal builds don't have the MySQL server
695 if ! useq "minimal" ; then 707 if ! use minimal ; then
696 # Empty directories ... 708 # Empty directories ...
697 diropts "-m0750" 709 diropts "-m0750"
698 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 710 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
699 dodir "${DATADIR}" 711 dodir "${DATADIR}"
700 keepdir "${DATADIR}" 712 keepdir "${DATADIR}"
711 723
712 # Docs 724 # Docs
713 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 725 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
714 726
715 # Minimal builds don't have the MySQL server 727 # Minimal builds don't have the MySQL server
716 if ! useq "minimal" ; then 728 if ! use minimal ; then
717 docinto "support-files" 729 docinto "support-files"
718 for script in \ 730 for script in \
719 support-files/my-*.cnf \ 731 support-files/my-*.cnf \
720 support-files/magic \ 732 support-files/magic \
721 support-files/ndb-config-2-node.ini 733 support-files/ndb-config-2-node.ini
747 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}" 759 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
748 echo "${MY_LIBDIR#"/"}" >> "${filelist}" 760 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
749 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}" 761 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
750 popd &>/dev/null 762 popd &>/dev/null
751 fi 763 fi
764
765 mysql_lib_symlinks "${D}"
752} 766}
753 767
754mysql_pkg_preinst() { 768mysql_pkg_preinst() {
755 enewgroup mysql 60 || die "problem adding 'mysql' group" 769 enewgroup mysql 60 || die "problem adding 'mysql' group"
756 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"
768 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 782 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
769 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 783 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
770 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 784 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
771 785
772 # Minimal builds don't have the MySQL server 786 # Minimal builds don't have the MySQL server
773 if ! useq "minimal" ; then 787 if ! use minimal ; then
774 docinto "support-files" 788 docinto "support-files"
775 for script in \ 789 for script in \
776 support-files/my-*.cnf \ 790 support-files/my-*.cnf \
777 support-files/magic \ 791 support-files/magic \
778 support-files/ndb-config-2-node.ini 792 support-files/ndb-config-2-node.ini
784 for script in scripts/mysql* ; do 798 for script in scripts/mysql* ; do
785 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
786 done 800 done
787 fi 801 fi
788 802
789 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"
790 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 804 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
791 # TODO tell it better ;-) 805 # TODO tell it better ;-)
792 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
793 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
794 einfo "if, after that you cannot start the mysql server" 808 elog "if, after that you cannot start the mysql server"
795 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
796 einfo "use the mysql upgrade script to restore the table" 810 elog "use the mysql upgrade script to restore the table"
797 einfo " or " 811 elog " or "
798 einfo "CREATE TABLE IF NOT EXISTS plugin (" 812 elog "CREATE TABLE IF NOT EXISTS plugin ("
799 einfo " name char(64) binary DEFAULT '' NOT NULL," 813 elog " name char(64) binary DEFAULT '' NOT NULL,"
800 einfo " dl char(128) DEFAULT '' NOT NULL," 814 elog " dl char(128) DEFAULT '' NOT NULL,"
801 einfo " PRIMARY KEY (name)" 815 elog " PRIMARY KEY (name)"
802 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;"
803 fi 817 fi
804 mysql_check_version_range "4.0 to 5.0.99.99" \ 818 mysql_check_version_range "4.0 to 5.0.99.99" \
805 && useq "berkdb" \ 819 && use berkdb \
806 && 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!"
807} 821}
808 822
809mysql_pkg_config() { 823mysql_pkg_config() {
810 # Make sure the vars are correctly initialized 824 # Make sure the vars are correctly initialized
917} 931}
918 932
919mysql_pkg_postrm() { 933mysql_pkg_postrm() {
920 if [[ ${PN} == "mysql-slotted" ]] ; then 934 if [[ ${PN} == "mysql-slotted" ]] ; then
921 mysql_lib_symlinks 935 mysql_lib_symlinks
936 mysql_clients_link_to_best_version
922 fi 937 fi
923} 938}

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

  ViewVC Help
Powered by ViewVC 1.1.20