/[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.73
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2007 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.68 2007/01/12 17:00:39 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.73 2007/04/15 13:00:51 robbat2 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 "${DATADIR}" ]] ; then
229 DATADIR="" 204 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 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 "${DATADIR}" ]] ; then
235 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 210 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
236 | sed -e 's/.*=\s*//'` 211 | sed -e 's/.*=\s*//'`
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 DATADIR MY_SOURCEDIR
263} 238}
264 239
265configure_minimal() { 240configure_minimal() {
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
355 fi 330 fi
356 331
357 # The following fix is due to a bug with bdb on SPARC's. See: 332 # 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 333 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
359 # It comes down to non-64-bit safety problems. 334 # It comes down to non-64-bit safety problems.
360 if use sparc || use alpha || use hppa || use mips || use amd64 ; then 335 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
361 elog "Berkeley DB support was disabled due to incompatible arch" 336 elog "Berkeley DB support was disabled due to incompatible arch"
362 myconf="${myconf} --without-berkeley-db" 337 myconf="${myconf} --without-berkeley-db"
363 else 338 else
364 if use berkdb ; then 339 if use berkdb ; then
365 myconf="${myconf} --with-berkeley-db=./bdb" 340 myconf="${myconf} --with-berkeley-db=./bdb"
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@!${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
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
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.73

  ViewVC Help
Powered by ViewVC 1.1.20