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

Diff of /eclass/mysql.eclass

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

Revision 1.68 Revision 1.76
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2007 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.68 2007/01/12 17:00:39 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.76 2007/05/09 16:25:33 cardoe Exp $
4# kate: encoding utf-8; eol unix;
5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off;
6# kate: word-wrap-column 80; word-wrap off;
7 4
8# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 5# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
9# Maintainer: Luca Longinotti <chtekk@gentoo.org> 6# Maintainer: Luca Longinotti <chtekk@gentoo.org>
10 7
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too!
11# Note that MYSQL_VERSION_ID must be empty !!! 9# Note that MYSQL_VERSION_ID must be empty!
12 10
13ECLASS="mysql"
14INHERITED="$INHERITED $ECLASS"
15WANT_AUTOCONF="latest" 11WANT_AUTOCONF="latest"
16WANT_AUTOMAKE="latest" 12WANT_AUTOMAKE="latest"
13
17inherit eutils flag-o-matic gnuconfig autotools mysql_fx 14inherit eutils flag-o-matic gnuconfig autotools mysql_fx
18 15
19# Shorten the path because the socket path length must be shorter than 107 chars 16# Shorten the path because the socket path length must be shorter than 107 chars
20# and we will run a mysql server during test phase 17# and we will run a mysql server during test phase
21S="${WORKDIR}/mysql" 18S="${WORKDIR}/mysql"
33# MYSQL_VERSION_ID will be: 30# MYSQL_VERSION_ID will be:
34# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 31# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
35# This is an important part, because many of the choices the MySQL ebuild will do 32# This is an important part, because many of the choices the MySQL ebuild will do
36# depend on this variable. 33# depend on this variable.
37# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 34# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
35
38MYSQL_VERSION_ID="" 36MYSQL_VERSION_ID=""
39tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 37tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
40for vatom in 0 1 2 3 ; do 38for vatom in 0 1 2 3 ; do
41 # pad to length 2 39 # pad to length 2
42 tpv[${vatom}]="00${tpv[${vatom}]}" 40 tpv[${vatom}]="00${tpv[${vatom}]}"
49DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) 47DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
50 userland_GNU? ( sys-process/procps ) 48 userland_GNU? ( sys-process/procps )
51 >=sys-apps/sed-4 49 >=sys-apps/sed-4
52 >=sys-apps/texinfo-4.7-r1 50 >=sys-apps/texinfo-4.7-r1
53 >=sys-libs/readline-4.1 51 >=sys-libs/readline-4.1
54 >=sys-libs/zlib-1.2.3 52 >=sys-libs/zlib-1.2.3"
55 "
56 53
57# having different flavours at the same time is not a good idea 54# Having different flavours at the same time is not a good idea
58for i in "" "-community" "-slotted" ; do 55for i in "" "-community" ; do
59 [[ "${i}" == ${PN#mysql} ]] || 56 [[ "${i}" == ${PN#mysql} ]] ||
60 DEPEND="${DEPEND} !dev-db/mysql${i}" 57 DEPEND="${DEPEND} !dev-db/mysql${i}"
61done 58done
62 59
63mysql_version_is_at_least "5.1" \ 60mysql_version_is_at_least "5.1" \
64|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" 61|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
65 62
63mysql_version_is_at_least "5.1.12" \
64&& DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
65
66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
68 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 69# BitKeeper dependency, compile-time only
74[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" 70[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
75 71
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}]}_"
85 done
86 #finally SLOT=5_0_24
87 SLOT=${SLOT:0:${#SLOT}-1}
88else
89 SLOT="0"
90fi
91
92# Define correct SRC_URIs 72# Define correct SRC_URIs
93SRC_URI=" 73SRC_URI="${SERVER_URI}
94${SERVER_URI} 74 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
95http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 75 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
96"
97mysql_version_is_at_least "5.1.12" \ 76mysql_version_is_at_least "5.1.12" \
98&& [[ -n "${PBXT_VERSION}" ]] \ 77&& [[ -n "${PBXT_VERSION}" ]] \
99&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 78&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
100 79
101DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 80DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
102HOMEPAGE="http://www.mysql.com/" 81HOMEPAGE="http://www.mysql.com/"
103LICENSE="GPL-2" 82LICENSE="GPL-2"
83SLOT="0"
104IUSE="big-tables debug embedded minimal perl selinux ssl static" 84IUSE="big-tables debug embedded minimal perl selinux ssl static"
105RESTRICT="confcache" 85RESTRICT="confcache"
106 86
107mysql_version_is_at_least "4.1" \ 87mysql_version_is_at_least "4.1" \
108&& IUSE="${IUSE} latin1" 88&& IUSE="${IUSE} latin1"
135# 115#
136# HELPER FUNCTIONS: 116# HELPER FUNCTIONS:
137# 117#
138 118
139bitkeeper_fetch() { 119bitkeeper_fetch() {
140
141 local reposuf 120 local reposuf
142 if [[ -z "${1}" ]] ; then 121 if [[ -z "${1}" ]] ; then
143 local tpv 122 local tpv
144 tpv=( ${PV//[-._]/ } ) 123 tpv=( ${PV//[-._]/ } )
145 reposuf="mysql-${tpv[0]}.${tpv[1]}" 124 reposuf="mysql-${tpv[0]}.${tpv[1]}"
146 else 125 else
147 reposuf="${1}" 126 reposuf="${1}"
148 fi 127 fi
149 einfo "using \"${reposuf}\" repository." 128 einfo "Using '${reposuf}' repository."
150 local repo_uri="bk://mysql.bkbits.net/${reposuf}" 129 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
151 ## -- ebk_store_dir: bitkeeper sources store directory 130 ## -- ebk_store_dir: bitkeeper sources store directory
152 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 131 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
153 ## -- ebk_fetch_cmd: bitkeeper fetch command 132 ## -- ebk_fetch_cmd: bitkeeper fetch command
154 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 133 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
155 # hint: does not work 134 # hint: does not work
156 local ebk_fetch_cmd="sfioball" 135 local ebk_fetch_cmd="sfioball"
157 ## -- ebk_update_cmd: bitkeeper update command 136 ## -- ebk_update_cmd: bitkeeper update command
158 local ebk_update_cmd="update" 137 local ebk_update_cmd="update"
159 138
160 #addread "/etc/bitkeeper" 139 # addread "/etc/bitkeeper"
161 addwrite "${ebk_store_dir}" 140 addwrite "${ebk_store_dir}"
162 141
163 if [[ ! -d "${ebk_store_dir}" ]]; then 142 if [[ ! -d "${ebk_store_dir}" ]] ; then
164 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 143 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
165 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 144 mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}"
166 fi 145 fi
167 146
168 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 147 pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}"
169 148
170 local wc_path=${reposuf} 149 local wc_path=${reposuf}
171 150
172 if [[ ! -d "${wc_path}" ]]; then 151 if [[ ! -d "${wc_path}" ]] ; then
173 local options="-r+" 152 local options="-r+"
153
174 # first check out 154 # first checkout
175 einfo "bitkeeper check out start -->" 155 einfo "bitkeeper checkout start -->"
176 elog " repository: ${repo_uri}" 156 einfo " repository: ${repo_uri}"
157
177 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 158 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
178 || die "${EBK}: can't fetch from ${repo_uri}." 159 || die "BK: couldn't fetch from ${repo_uri}"
179 else 160 else
180 if [[ ! -d "${wc_path}/BK" ]]; then 161 if [[ ! -d "${wc_path}/BK" ]] ; then
181 popd 162 popd
182 die "Look like ${wc_path} is not a bitkeeper path." 163 die "Looks like ${wc_path} is not a bitkeeper path"
183 fi 164 fi
184 165
185 # update working copy 166 # update working copy
186 einfo "bitkeeper update start -->" 167 einfo "bitkeeper update start -->"
187 elog " repository: ${repo_uri}" 168 einfo " repository: ${repo_uri}"
188 169
189 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 170 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
190 || die "BK: can't update from ${repo_uri} to ${wc_path}." 171 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
191 fi 172 fi
192 173
193 einfo " working copy: ${wc_path}" 174 einfo " working copy: ${wc_path}"
194 cd "${wc_path}" 175 cd "${wc_path}"
195 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 176 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}"
196 177
197 echo 178 echo
198 popd 179 popd
199
200} 180}
201 181
202mysql_disable_test() { 182mysql_disable_test() {
203 local testname="${1}" ; shift 183 local testname="${1}" ; shift
204 local reason="${@}" 184 local reason="${@}"
205 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 185 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
206 echo ${testname} : ${reason} >> "${mysql_disable_file}" 186 echo ${testname} : ${reason} >> "${mysql_disable_file}"
207 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 187 ewarn "test '${testname}' disabled: '${reason}'"
208} 188}
209 189
210# void mysql_init_vars() 190# void mysql_init_vars()
211# 191#
212# Initialize global variables 192# Initialize global variables
213# 2005-11-19 <vivo@gentoo.org> 193# 2005-11-19 <vivo@gentoo.org>
214 194
215mysql_init_vars() { 195mysql_init_vars() {
216 if [[ ${SLOT} == "0" ]] ; then
217 MY_SUFFIX=""
218 else
219 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
220 fi
221 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 196 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
222 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 197 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
223 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 198 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
224 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 199 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
225 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 200 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
226 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 201 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
227 202
228 if [[ -z "${DATADIR}" ]] ; then 203 if [[ -z "${MY_DATADIR}" ]] ; then
229 DATADIR="" 204 MY_DATADIR=""
230 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 205 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
231 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 206 MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
232 | sed -ne '/datadir/s|^--datadir=||p' \ 207 | sed -ne '/datadir/s|^--datadir=||p' \
233 | tail -n1` 208 | tail -n1`
234 if [[ -z "${DATADIR}" ]] ; then 209 if [[ -z "${MY_DATADIR}" ]] ; then
235 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 210 MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
236 | sed -e 's/.*=\s*//'` 211 | sed -e 's/.*=\s*//'`
237 fi 212 fi
238 fi 213 fi
239 if [[ -z "${DATADIR}" ]] ; then 214 if [[ -z "${MY_DATADIR}" ]] ; then
240 DATADIR="${MY_LOCALSTATEDIR}" 215 MY_DATADIR="${MY_LOCALSTATEDIR}"
241 einfo "Using default DATADIR" 216 einfo "Using default MY_DATADIR"
242 fi 217 fi
243 elog "MySQL DATADIR is ${DATADIR}" 218 elog "MySQL MY_DATADIR is ${MY_DATADIR}"
244 219
245 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 220 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
246 if [[ -e "${DATADIR}" ]] ; then 221 if [[ -e "${MY_DATADIR}" ]] ; then
247 elog "Previous datadir found, it's YOUR job to change" 222 elog "Previous datadir found, it's YOUR job to change"
248 elog "ownership and take care of it" 223 elog "ownership and take care of it"
249 PREVIOUS_DATADIR="yes" 224 PREVIOUS_DATADIR="yes"
250 else 225 else
251 PREVIOUS_DATADIR="no" 226 PREVIOUS_DATADIR="no"
255 fi 230 fi
256 231
257 MY_SOURCEDIR=${SERVER_URI##*/} 232 MY_SOURCEDIR=${SERVER_URI##*/}
258 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 233 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
259 234
260 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 235 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
261 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 236 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
262 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 237 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
263} 238}
264 239
265configure_minimal() { 240configure_minimal() {
266 # These are things we exclude from a minimal build, please 241 # These are things we exclude from a minimal build, please
267 # note that the server actually does get built and installed, 242 # note that the server actually does get built and installed,
279 myconf="${myconf} --disable-shared" 254 myconf="${myconf} --disable-shared"
280 else 255 else
281 myconf="${myconf} --enable-shared --enable-static" 256 myconf="${myconf} --enable-shared --enable-static"
282 fi 257 fi
283 258
284 if mysql_version_is_at_least "4.01.00.00" && ! use latin1 ; then 259 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
285 myconf="${myconf} --with-charset=utf8" 260 myconf="${myconf} --with-charset=utf8"
286 myconf="${myconf} --with-collation=utf8_general_ci" 261 myconf="${myconf} --with-collation=utf8_general_ci"
287 else 262 else
288 myconf="${myconf} --with-charset=latin1" 263 myconf="${myconf} --with-charset=latin1"
289 myconf="${myconf} --with-collation=latin1_swedish_ci" 264 myconf="${myconf} --with-collation=latin1_swedish_ci"
340 myconf="${myconf} --with-extra-tools" 315 myconf="${myconf} --with-extra-tools"
341 myconf="${myconf} --with-innodb" 316 myconf="${myconf} --with-innodb"
342 myconf="${myconf} --without-readline" 317 myconf="${myconf} --without-readline"
343 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" 318 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
344 319
320 # --with-vio is not needed anymore, it's on by default and
321 # has been removed from configure
345 if use ssl ; then 322 if use ssl ; then
346 # --with-vio is not needed anymore, it's on by default and
347 # has been removed from configure
348 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 323 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
349 fi 324 fi
350 325
351 if mysql_version_is_at_least "5.1.11" ; then 326 if mysql_version_is_at_least "5.1.11" ; then
352 myconf="${myconf} $(use_with ssl)" 327 myconf="${myconf} $(use_with ssl)"
353 else 328 else
354 myconf="${myconf} $(use_with ssl openssl)" 329 myconf="${myconf} $(use_with ssl openssl)"
355 fi 330 fi
356 331
332 if use berkdb ; then
357 # The following fix is due to a bug with bdb on SPARC's. See: 333 # The following fix is due to a bug with bdb on SPARC's. See:
358 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 334 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
359 # It comes down to non-64-bit safety problems. 335 # It comes down to non-64-bit safety problems.
360 if use sparc || use alpha || use hppa || use mips || use amd64 ; then 336 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
361 elog "Berkeley DB support was disabled due to incompatible arch" 337 elog "Berkeley DB support was disabled due to compatiblity issues on this arch"
338 myconf="${myconf} --without-berkeley-db"
339 else
340 myconf="${myconf} --with-berkeley-db=./bdb"
341 fi
342 else
362 myconf="${myconf} --without-berkeley-db" 343 myconf="${myconf} --without-berkeley-db"
363 else
364 if use berkdb ; then
365 myconf="${myconf} --with-berkeley-db=./bdb"
366 else
367 myconf="${myconf} --without-berkeley-db"
368 fi
369 fi 344 fi
370 345
371 if mysql_version_is_at_least "4.1.3" ; then 346 if mysql_version_is_at_least "4.1.3" ; then
372 myconf="${myconf} --with-geometry" 347 myconf="${myconf} --with-geometry"
373 myconf="${myconf} $(use_with cluster ndbcluster)" 348 myconf="${myconf} $(use_with cluster ndbcluster)"
445 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 420 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
446 421
447 einfo "Reconfiguring dir '${PWD}'" 422 einfo "Reconfiguring dir '${PWD}'"
448 AT_GNUCONF_UPDATE="yes" eautoreconf 423 AT_GNUCONF_UPDATE="yes" eautoreconf
449 424
450 local myconf 425 local myconf=""
451 myconf="${myconf} --with-mysql=${S}"
452 mkdir -p ${T}/lib
453 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 426 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
454 use debug && myconf="${myconf} --with-debug=full" 427 use debug && myconf="${myconf} --with-debug=full"
455 # TODO is safe/needed to use econf here ? 428 # TODO: is it safe/needed to use econf here ?
456 ./configure ${myconf} || die "problem configuring pbxt storage engine" 429 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
457 # TODO is safe/needed to use emake here ? 430 # TODO: is it safe/needed to use emake here ?
458 make || die "problem making pbxt storage engine (${myconf})" 431 make || die "Problem making PBXT storage engine (${myconf})"
459 432
460 popd 433 popd
461 # TODO: modify test suite 434 # TODO: modify test suite for PBXT
462} 435}
463 436
464pbxt_src_install() { 437pbxt_src_install() {
465 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 438 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
466 make install || die "failed pbxt install" 439 make install || die "Failed to install PBXT"
467 popd 440 popd
468} 441}
469 442
470# 443#
471# EBUILD FUNCTIONS 444# EBUILD FUNCTIONS
507 480
508 unpack ${A} 481 unpack ${A}
509 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 482 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
510 if mysql_check_version_range "5.1 to 5.1.99" ; then 483 if mysql_check_version_range "5.1 to 5.1.99" ; then
511 bitkeeper_fetch "mysql-5.1-ndb" 484 bitkeeper_fetch "mysql-5.1-ndb"
512 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then 485 elif mysql_check_version_range "5.2 to 5.2.99" ; then
513 bitkeeper_fetch "mysql-5.2-falcon" 486 bitkeeper_fetch "mysql-5.2-falcon"
514 else 487 else
515 bitkeeper_fetch 488 bitkeeper_fetch
516 fi 489 fi
517 cd "${S}" 490 cd "${S}"
518 einfo "running upstream autorun on bk sources" 491 einfo "Running upstream autorun over BK sources ..."
519 BUILD/autorun.sh 492 BUILD/autorun.sh
520 else 493 else
521 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 494 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
522 cd "${S}" 495 cd "${S}"
523 fi 496 fi
524 497
525 # Apply the patches for this MySQL version 498 # Apply the patches for this MySQL version
526 EPATCH_SUFFIX="patch" 499 EPATCH_SUFFIX="patch"
527 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 500 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
528 mysql_mv_patches 501 mysql_mv_patches
529 epatch || die "failed to apply all patches" 502 epatch
530 503
531 # Additional checks, remove bundled zlib 504 # Additional checks, remove bundled zlib
532 rm -f "${S}/zlib/"*.[ch] 505 rm -f "${S}/zlib/"*.[ch]
533 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 506 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
534 rm -f "scripts/mysqlbug" 507 rm -f "scripts/mysqlbug"
549 522
550 local rebuilddirlist d 523 local rebuilddirlist d
551 524
552 if mysql_version_is_at_least "5.1.12" ; then 525 if mysql_version_is_at_least "5.1.12" ; then
553 rebuilddirlist="." 526 rebuilddirlist="."
554 # TODO IMPO! Check this with a cmake expert 527 # TODO: check this with a cmake expert
555 use innodb \ 528 use innodb \
556 && cmake \ 529 && cmake \
557 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
558 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 531 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
559 "storage/innobase" 532 "storage/innobase"
560 else 533 else
561 rebuilddirlist=". innobase" 534 rebuilddirlist=". innobase"
562 fi 535 fi
563 536
569 done 542 done
570 543
571 if mysql_check_version_range "4.1 to 5.0.99.99" \ 544 if mysql_check_version_range "4.1 to 5.0.99.99" \
572 && use berkdb ; then 545 && use berkdb ; then
573 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" 546 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
547 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
548 || die "Could not copy libtool.m4 to bdb/dist/"
574 pushd "bdb/dist" \ 549 pushd "bdb/dist" &>/dev/null
575 && sh s_all \ 550 sh s_all \
576 || die "Failed bdb reconfigure" \ 551 || die "Failed bdb reconfigure"
577 &>/dev/null
578 popd &>/dev/null 552 popd &>/dev/null
579 fi 553 fi
580} 554}
581 555
582mysql_src_compile() { 556mysql_src_compile() {
608 mysql_version_is_at_least "5.0" \ 582 mysql_version_is_at_least "5.0" \
609 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 583 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
610 export CXXFLAGS 584 export CXXFLAGS
611 585
612 econf \ 586 econf \
613 --program-suffix="${MY_SUFFIX}" \
614 --libexecdir="/usr/sbin" \ 587 --libexecdir="/usr/sbin" \
615 --sysconfdir="${MY_SYSCONFDIR}" \ 588 --sysconfdir="${MY_SYSCONFDIR}" \
616 --localstatedir="${MY_LOCALSTATEDIR}" \ 589 --localstatedir="${MY_LOCALSTATEDIR}" \
617 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 590 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
618 --libdir="${MY_LIBDIR}" \ 591 --libdir="${MY_LIBDIR}" \
636 609
637mysql_src_install() { 610mysql_src_install() {
638 # Make sure the vars are correctly initialized 611 # Make sure the vars are correctly initialized
639 mysql_init_vars 612 mysql_init_vars
640 613
641 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 614 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
642 615
643 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install 616 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
644 617
645 insinto "${MY_INCLUDEDIR}" 618 insinto "${MY_INCLUDEDIR}"
646 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 619 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
647 620
648 # Convenience links 621 # Convenience links
649 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
650 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
651 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 624 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
652 625
653 # Various junk (my-*.cnf moved elsewhere) 626 # Various junk (my-*.cnf moved elsewhere)
654 rm -Rf "${D}/usr/share/info" 627 rm -Rf "${D}/usr/share/info"
655 for removeme in "mysql-log-rotate" mysql.server* \ 628 for removeme in "mysql-log-rotate" mysql.server* \
656 binary-configure* my-*.cnf mi_test_all* 629 binary-configure* my-*.cnf mi_test_all*
657 do 630 do
658 rm -f "${D}"/usr/share/mysql/${removeme} 631 rm -f "${D}"/usr/share/mysql/${removeme}
659 done 632 done
660 633
661 # TODO change at Makefile-am level
662 if [[ ${PN} == "mysql-slotted" ]] ; then
663 for moveme in "mysql_fix_privilege_tables.sql" \
664 "fill_help_tables.sql" "ndb-config-2-node.ini"
665 do
666 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
667 done
668 fi
669
670 # clean up stuff for a minimal build 634 # Clean up stuff for a minimal build
671 if use minimal ; then 635 if use minimal ; then
672 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 636 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} 637 rm -f "${D}"/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam}
674 rm -f "${D}/usr/sbin/mysqld" 638 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 639 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
676 fi 640 fi
677 641
678 if [[ ${PN} == "mysql-slotted" ]] ; then
679 local notcatched=$(ls "${D}/usr/share/mysql"/*)
680 if [[ -n "${notcatched}" ]] ; then
681 ewarn "QA notice"
682 ewarn "${notcatched} files in /usr/share/mysql"
683 ewarn "bug mysql-herd to manage them"
684 fi
685 rm -Rf "${D}/usr/share/mysql"
686 fi
687
688 # Configuration stuff 642 # Configuration stuff
689 if mysql_version_is_at_least "4.1" ; then 643 if mysql_version_is_at_least "4.1" ; then
690 mysql_mycnf_version="4.1" 644 mysql_mycnf_version="4.1"
691 else 645 else
692 mysql_mycnf_version="4.0" 646 mysql_mycnf_version="4.0"
693 fi 647 fi
694 insinto "${MY_SYSCONFDIR}" 648 insinto "${MY_SYSCONFDIR}"
695 doins scripts/mysqlaccess.conf 649 doins scripts/mysqlaccess.conf
696 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
697 -e "s!@DATADIR@!${DATADIR}!g" \ 650 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
698 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 651 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
699 > "${TMPDIR}/my.cnf.ok" 652 > "${TMPDIR}/my.cnf.ok"
700 if mysql_version_is_at_least "4.1" && use latin1 ; then 653 if mysql_version_is_at_least "4.1" && use latin1 ; then
701 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 654 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
702 fi 655 fi
705 # Minimal builds don't have the MySQL server 658 # Minimal builds don't have the MySQL server
706 if ! use minimal ; then 659 if ! use minimal ; then
707 # Empty directories ... 660 # Empty directories ...
708 diropts "-m0750" 661 diropts "-m0750"
709 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 662 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
710 dodir "${DATADIR}" 663 dodir "${MY_DATADIR}"
711 keepdir "${DATADIR}" 664 keepdir "${MY_DATADIR}"
712 chown -R mysql:mysql "${D}/${DATADIR}" 665 chown -R mysql:mysql "${D}/${MY_DATADIR}"
713 fi 666 fi
714 667
715 diropts "-m0755" 668 diropts "-m0755"
716 for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do 669 for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
717 dodir "${folder}" 670 dodir "${folder}"
738 for script in scripts/mysql* ; do 691 for script in scripts/mysql* ; do
739 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 692 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
740 done 693 done
741 fi 694 fi
742 695
743 if [[ ${PN} == "mysql-slotted" ]] ; then
744 # MOVED HERE DUE TO BUG #121445
745 # create a list of files, to be used
746 # by external utilities
747 mkdir -p "${D}/var/lib/eselect/mysql/"
748 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
749 pushd "${D}/" &>/dev/null
750 find usr/bin/ usr/sbin/ \
751 -type f -name "*${MY_SUFFIX}*" \
752 -and -not -name "mysql_config${MY_SUFFIX}" \
753 > "${filelist}"
754 find usr/share/man \
755 -type f -name "*${MY_SUFFIX}*" \
756 | sed -e 's/$/.gz/' \
757 >> "${filelist}"
758 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
759 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
760 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
761 popd &>/dev/null
762 fi
763
764 mysql_lib_symlinks "${D}" 696 mysql_lib_symlinks "${D}"
765} 697}
766 698
767mysql_pkg_preinst() { 699mysql_pkg_preinst() {
768 enewgroup mysql 60 || die "problem adding 'mysql' group" 700 enewgroup mysql 60 || die "problem adding 'mysql' group"
772mysql_pkg_postinst() { 704mysql_pkg_postinst() {
773 # Make sure the vars are correctly initialized 705 # Make sure the vars are correctly initialized
774 mysql_init_vars 706 mysql_init_vars
775 707
776 # Check FEATURES="collision-protect" before removing this 708 # Check FEATURES="collision-protect" before removing this
777 [[ -d "${ROOT}/var/log/mysql" ]] \
778 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 709 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
779 710
780 # Secure the logfiles 711 # Secure the logfiles
781 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 712 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
782 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 713 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
783 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 714 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
795 726
796 docinto "scripts" 727 docinto "scripts"
797 for script in scripts/mysql* ; do 728 for script in scripts/mysql* ; do
798 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 729 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
799 done 730 done
800 fi
801 731
802 #einfo "you may want to read slotting upgrade documents in the overlay" 732 einfo
733 elog "You might want to run:"
734 elog "\"emerge --config =${CATEGORY}/${PF}\""
735 elog "if this is a new install."
736 einfo
737 fi
738
803 if mysql_version_is_at_least "5.1.12" && use pbxt ; then 739 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
804 # TODO tell it better ;-) 740 # TODO: explain it better
805 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 741 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
806 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 742 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
807 elog "if, after that you cannot start the mysql server" 743 elog "if, after that, you cannot start the MySQL server,"
808 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 744 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
809 elog "use the mysql upgrade script to restore the table" 745 elog "use the MySQL upgrade script to restore the table"
810 elog " or " 746 elog "or execute the following SQL command:"
811 elog "CREATE TABLE IF NOT EXISTS plugin (" 747 elog " CREATE TABLE IF NOT EXISTS plugin ("
812 elog " name char(64) binary DEFAULT '' NOT NULL," 748 elog " name char(64) binary DEFAULT '' NOT NULL,"
813 elog " dl char(128) DEFAULT '' NOT NULL," 749 elog " dl char(128) DEFAULT '' NOT NULL,"
814 elog " PRIMARY KEY (name)" 750 elog " PRIMARY KEY (name)"
815 elog ") CHARACTER SET utf8 COLLATE utf8_bin;" 751 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
816 fi 752 fi
753
817 mysql_check_version_range "4.0 to 5.0.99.99" \ 754 mysql_check_version_range "4.0 to 5.0.99.99" \
818 && use berkdb \ 755 && use berkdb \
819 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 756 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
820} 757}
821 758
822mysql_pkg_config() { 759mysql_pkg_config() {
823 # Make sure the vars are correctly initialized 760 # Make sure the vars are correctly initialized
824 mysql_init_vars 761 mysql_init_vars
825 762
826 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR" 763 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
827 764
828 if built_with_use ${CATEGORY}/${PN} minimal ; then 765 if built_with_use ${CATEGORY}/${PN} minimal ; then
829 die "Minimal builds do NOT include the MySQL server" 766 die "Minimal builds do NOT include the MySQL server"
830 fi 767 fi
831 768
832 local pwd1="a" 769 local pwd1="a"
833 local pwd2="b" 770 local pwd2="b"
834 local maxtry=5 771 local maxtry=5
835 772
836 if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then 773 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
837 ewarn "You have already a MySQL database in place." 774 ewarn "You have already a MySQL database in place."
838 ewarn "(${ROOT}/${DATADIR}/*)" 775 ewarn "(${ROOT}/${MY_DATADIR}/*)"
839 ewarn "Please rename or delete it if you wish to replace it." 776 ewarn "Please rename or delete it if you wish to replace it."
840 die "MySQL database already exists!" 777 die "MySQL database already exists!"
841 fi 778 fi
842 779
843 einfo "Creating the mysql database and setting proper" 780 einfo "Creating the mysql database and setting proper"
864 help_tables="${TMPDIR}/fill_help_tables.sql" 801 help_tables="${TMPDIR}/fill_help_tables.sql"
865 802
866 pushd "${TMPDIR}" &>/dev/null 803 pushd "${TMPDIR}" &>/dev/null
867 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR" 804 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
868 popd &>/dev/null 805 popd &>/dev/null
869 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \ 806 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
870 || die "MySQL databases not installed" 807 || die "MySQL databases not installed"
871 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null 808 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null
872 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null 809 chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null
873 810
874 if mysql_version_is_at_least "4.1.3" ; then 811 if mysql_version_is_at_least "4.1.3" ; then
875 options="--skip-ndbcluster" 812 options="--skip-ndbcluster"
876 813
877 # Filling timezones, see 814 # Filling timezones, see
888 local mysqld="${ROOT}/usr/sbin/mysqld \ 825 local mysqld="${ROOT}/usr/sbin/mysqld \
889 ${options} \ 826 ${options} \
890 --user=mysql \ 827 --user=mysql \
891 --skip-grant-tables \ 828 --skip-grant-tables \
892 --basedir=${ROOT}/usr \ 829 --basedir=${ROOT}/usr \
893 --datadir=${ROOT}/${DATADIR} \ 830 --datadir=${ROOT}/${MY_DATADIR} \
894 --skip-innodb \ 831 --skip-innodb \
895 --skip-bdb \ 832 --skip-bdb \
896 --skip-networking \ 833 --skip-networking \
897 --max_allowed_packet=8M \ 834 --max_allowed_packet=8M \
898 --net_buffer_length=16K \ 835 --net_buffer_length=16K \
928 wait %1 865 wait %1
929 einfo "Done" 866 einfo "Done"
930} 867}
931 868
932mysql_pkg_postrm() { 869mysql_pkg_postrm() {
933 if [[ ${PN} == "mysql-slotted" ]] ; then
934 mysql_lib_symlinks 870 : # mysql_lib_symlinks "${D}"
935 mysql_clients_link_to_best_version
936 fi
937} 871}

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.76

  ViewVC Help
Powered by ViewVC 1.1.20