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

Diff of /eclass/mysql.eclass

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

Revision 1.67 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.67 2007/01/09 15:48:34 cardoe 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"
124 104
125mysql_version_is_at_least "5.1.12" \ 105mysql_version_is_at_least "5.1.12" \
126&& IUSE="${IUSE} pbxt" 106&& IUSE="${IUSE} pbxt"
127 107
128RDEPEND="${DEPEND} 108RDEPEND="${DEPEND}
129!minimal? ( sys-apps/mysql ) 109 !minimal? ( dev-db/mysql-init-scripts )
130selinux? ( sec-policy/selinux-mysql ) 110 selinux? ( sec-policy/selinux-mysql )"
131"
132 111
133EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 112EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
134 pkg_postinst pkg_config pkg_postrm 113 pkg_postinst pkg_config pkg_postrm
135 114
136# 115#
137# HELPER FUNCTIONS: 116# HELPER FUNCTIONS:
138# 117#
139 118
140bitkeeper_fetch() { 119bitkeeper_fetch() {
141
142 local reposuf 120 local reposuf
143 if [[ -z "${1}" ]] ; then 121 if [[ -z "${1}" ]] ; then
144 local tpv 122 local tpv
145 tpv=( ${PV//[-._]/ } ) 123 tpv=( ${PV//[-._]/ } )
146 reposuf="mysql-${tpv[0]}.${tpv[1]}" 124 reposuf="mysql-${tpv[0]}.${tpv[1]}"
147 else 125 else
148 reposuf="${1}" 126 reposuf="${1}"
149 fi 127 fi
150 einfo "using \"${reposuf}\" repository." 128 einfo "Using '${reposuf}' repository."
151 local repo_uri="bk://mysql.bkbits.net/${reposuf}" 129 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
152 ## -- ebk_store_dir: bitkeeper sources store directory 130 ## -- ebk_store_dir: bitkeeper sources store directory
153 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 131 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
154 ## -- ebk_fetch_cmd: bitkeeper fetch command 132 ## -- ebk_fetch_cmd: bitkeeper fetch command
155 # 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
156 # hint: does not work 134 # hint: does not work
157 local ebk_fetch_cmd="sfioball" 135 local ebk_fetch_cmd="sfioball"
158 ## -- ebk_update_cmd: bitkeeper update command 136 ## -- ebk_update_cmd: bitkeeper update command
159 local ebk_update_cmd="update" 137 local ebk_update_cmd="update"
160 138
161 #addread "/etc/bitkeeper" 139 # addread "/etc/bitkeeper"
162 addwrite "${ebk_store_dir}" 140 addwrite "${ebk_store_dir}"
163 141
164 if [[ ! -d "${ebk_store_dir}" ]]; then 142 if [[ ! -d "${ebk_store_dir}" ]] ; then
165 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 143 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
166 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}"
167 fi 145 fi
168 146
169 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}"
170 148
171 local wc_path=${reposuf} 149 local wc_path=${reposuf}
172 150
173 if [[ ! -d "${wc_path}" ]]; then 151 if [[ ! -d "${wc_path}" ]] ; then
174 local options="-r+" 152 local options="-r+"
153
175 # first check out 154 # first checkout
176 einfo "bitkeeper check out start -->" 155 einfo "bitkeeper checkout start -->"
177 elog " repository: ${repo_uri}" 156 einfo " repository: ${repo_uri}"
157
178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 158 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
179 || die "${EBK}: can't fetch from ${repo_uri}." 159 || die "BK: couldn't fetch from ${repo_uri}"
180 else 160 else
181 if [[ ! -d "${wc_path}/BK" ]]; then 161 if [[ ! -d "${wc_path}/BK" ]] ; then
182 popd 162 popd
183 die "Look like ${wc_path} is not a bitkeeper path." 163 die "Looks like ${wc_path} is not a bitkeeper path"
184 fi 164 fi
185 165
186 # update working copy 166 # update working copy
187 einfo "bitkeeper update start -->" 167 einfo "bitkeeper update start -->"
188 elog " repository: ${repo_uri}" 168 einfo " repository: ${repo_uri}"
189 169
190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 170 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
191 || die "BK: can't update from ${repo_uri} to ${wc_path}." 171 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
192 fi 172 fi
193 173
194 einfo " working copy: ${wc_path}" 174 einfo " working copy: ${wc_path}"
195 cd "${wc_path}" 175 cd "${wc_path}"
196 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}"
197 177
198 echo 178 echo
199 popd 179 popd
200
201} 180}
202 181
203mysql_disable_test() { 182mysql_disable_test() {
204 local testname="${1}" ; shift 183 local testname="${1}" ; shift
205 local reason="${@}" 184 local reason="${@}"
206 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 185 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
207 echo ${testname} : ${reason} >> "${mysql_disable_file}" 186 echo ${testname} : ${reason} >> "${mysql_disable_file}"
208 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 187 ewarn "test '${testname}' disabled: '${reason}'"
209} 188}
210 189
211# void mysql_init_vars() 190# void mysql_init_vars()
212# 191#
213# Initialize global variables 192# Initialize global variables
214# 2005-11-19 <vivo@gentoo.org> 193# 2005-11-19 <vivo@gentoo.org>
215 194
216mysql_init_vars() { 195mysql_init_vars() {
217 if [[ ${SLOT} == "0" ]] ; then
218 MY_SUFFIX=""
219 else
220 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
221 fi
222 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 196 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
223 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 197 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
224 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 198 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
225 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 199 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
226 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 200 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
227 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 201 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
228 202
229 if [[ -z "${DATADIR}" ]] ; then 203 if [[ -z "${DATADIR}" ]] ; then
230 DATADIR="" 204 DATADIR=""
231 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 205 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
232 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 206 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
233 | sed -ne '/datadir/s|^--datadir=||p' \ 207 | sed -ne '/datadir/s|^--datadir=||p' \
234 | tail -n1` 208 | tail -n1`
235 if [[ -z "${DATADIR}" ]] ; then 209 if [[ -z "${DATADIR}" ]] ; then
236 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 210 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
237 | sed -e 's/.*=\s*//'` 211 | sed -e 's/.*=\s*//'`
256 fi 230 fi
257 231
258 MY_SOURCEDIR=${SERVER_URI##*/} 232 MY_SOURCEDIR=${SERVER_URI##*/}
259 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 233 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
260 234
261 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 235 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
262 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 236 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
263 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 237 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
264} 238}
265 239
266configure_minimal() { 240configure_minimal() {
280 myconf="${myconf} --disable-shared" 254 myconf="${myconf} --disable-shared"
281 else 255 else
282 myconf="${myconf} --enable-shared --enable-static" 256 myconf="${myconf} --enable-shared --enable-static"
283 fi 257 fi
284 258
285 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
286 myconf="${myconf} --with-charset=utf8" 260 myconf="${myconf} --with-charset=utf8"
287 myconf="${myconf} --with-collation=utf8_general_ci" 261 myconf="${myconf} --with-collation=utf8_general_ci"
288 else 262 else
289 myconf="${myconf} --with-charset=latin1" 263 myconf="${myconf} --with-charset=latin1"
290 myconf="${myconf} --with-collation=latin1_swedish_ci" 264 myconf="${myconf} --with-collation=latin1_swedish_ci"
341 myconf="${myconf} --with-extra-tools" 315 myconf="${myconf} --with-extra-tools"
342 myconf="${myconf} --with-innodb" 316 myconf="${myconf} --with-innodb"
343 myconf="${myconf} --without-readline" 317 myconf="${myconf} --without-readline"
344 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)"
345 319
320 # --with-vio is not needed anymore, it's on by default and
321 # has been removed from configure
346 if use ssl ; then 322 if use ssl ; then
347 # --with-vio is not needed anymore, it's on by default and
348 # has been removed from configure
349 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"
350 fi 324 fi
351 325
352 if mysql_version_is_at_least "5.1.11" ; then 326 if mysql_version_is_at_least "5.1.11" ; then
353 myconf="${myconf} $(use_with ssl)" 327 myconf="${myconf} $(use_with ssl)"
354 else 328 else
356 fi 330 fi
357 331
358 # 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:
359 # 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
360 # It comes down to non-64-bit safety problems. 334 # It comes down to non-64-bit safety problems.
361 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
362 elog "Berkeley DB support was disabled due to incompatible arch" 336 elog "Berkeley DB support was disabled due to incompatible arch"
363 myconf="${myconf} --without-berkeley-db" 337 myconf="${myconf} --without-berkeley-db"
364 else 338 else
365 if use berkdb ; then 339 if use berkdb ; then
366 myconf="${myconf} --with-berkeley-db=./bdb" 340 myconf="${myconf} --with-berkeley-db=./bdb"
446 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 420 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
447 421
448 einfo "Reconfiguring dir '${PWD}'" 422 einfo "Reconfiguring dir '${PWD}'"
449 AT_GNUCONF_UPDATE="yes" eautoreconf 423 AT_GNUCONF_UPDATE="yes" eautoreconf
450 424
451 local myconf 425 local myconf=""
452 myconf="${myconf} --with-mysql=${S}"
453 mkdir -p ${T}/lib
454 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 426 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
455 use debug && myconf="${myconf} --with-debug=full" 427 use debug && myconf="${myconf} --with-debug=full"
456 # TODO is safe/needed to use econf here ? 428 # TODO: is it safe/needed to use econf here ?
457 ./configure ${myconf} || die "problem configuring pbxt storage engine" 429 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
458 # TODO is safe/needed to use emake here ? 430 # TODO: is it safe/needed to use emake here ?
459 make || die "problem making pbxt storage engine (${myconf})" 431 make || die "Problem making PBXT storage engine (${myconf})"
460 432
461 popd 433 popd
462 # TODO: modify test suite 434 # TODO: modify test suite for PBXT
463} 435}
464 436
465pbxt_src_install() { 437pbxt_src_install() {
466 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 438 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
467 make install || die "failed pbxt install" 439 make install || die "Failed to install PBXT"
468 popd 440 popd
469} 441}
470 442
471# 443#
472# EBUILD FUNCTIONS 444# EBUILD FUNCTIONS
508 480
509 unpack ${A} 481 unpack ${A}
510 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 482 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
511 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
512 bitkeeper_fetch "mysql-5.1-ndb" 484 bitkeeper_fetch "mysql-5.1-ndb"
513 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
514 bitkeeper_fetch "mysql-5.2-falcon" 486 bitkeeper_fetch "mysql-5.2-falcon"
515 else 487 else
516 bitkeeper_fetch 488 bitkeeper_fetch
517 fi 489 fi
518 cd "${S}" 490 cd "${S}"
519 einfo "running upstream autorun on bk sources" 491 einfo "Running upstream autorun over BK sources ..."
520 BUILD/autorun.sh 492 BUILD/autorun.sh
521 else 493 else
522 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 494 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
523 cd "${S}" 495 cd "${S}"
524 fi 496 fi
525 497
526 # Apply the patches for this MySQL version 498 # Apply the patches for this MySQL version
527 EPATCH_SUFFIX="patch" 499 EPATCH_SUFFIX="patch"
528 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 500 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
529 mysql_mv_patches 501 mysql_mv_patches
530 epatch || die "failed to apply all patches" 502 epatch
531 503
532 # Additional checks, remove bundled zlib 504 # Additional checks, remove bundled zlib
533 rm -f "${S}/zlib/"*.[ch] 505 rm -f "${S}/zlib/"*.[ch]
534 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"
535 rm -f "scripts/mysqlbug" 507 rm -f "scripts/mysqlbug"
550 522
551 local rebuilddirlist d 523 local rebuilddirlist d
552 524
553 if mysql_version_is_at_least "5.1.12" ; then 525 if mysql_version_is_at_least "5.1.12" ; then
554 rebuilddirlist="." 526 rebuilddirlist="."
555 # TODO IMPO! Check this with a cmake expert 527 # TODO: check this with a cmake expert
556 use innodb \ 528 use innodb \
557 && cmake \ 529 && cmake \
558 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
559 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 531 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
560 "storage/innobase" 532 "storage/innobase"
561 else 533 else
562 rebuilddirlist=". innobase" 534 rebuilddirlist=". innobase"
563 fi 535 fi
564 536
570 done 542 done
571 543
572 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" \
573 && use berkdb ; then 545 && use berkdb ; then
574 [[ -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/"
575 pushd "bdb/dist" \ 549 pushd "bdb/dist" &>/dev/null
576 && sh s_all \ 550 sh s_all \
577 || die "Failed bdb reconfigure" \ 551 || die "Failed bdb reconfigure"
578 &>/dev/null
579 popd &>/dev/null 552 popd &>/dev/null
580 fi 553 fi
581} 554}
582 555
583mysql_src_compile() { 556mysql_src_compile() {
609 mysql_version_is_at_least "5.0" \ 582 mysql_version_is_at_least "5.0" \
610 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 583 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
611 export CXXFLAGS 584 export CXXFLAGS
612 585
613 econf \ 586 econf \
614 --program-suffix="${MY_SUFFIX}" \
615 --libexecdir="/usr/sbin" \ 587 --libexecdir="/usr/sbin" \
616 --sysconfdir="${MY_SYSCONFDIR}" \ 588 --sysconfdir="${MY_SYSCONFDIR}" \
617 --localstatedir="${MY_LOCALSTATEDIR}" \ 589 --localstatedir="${MY_LOCALSTATEDIR}" \
618 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 590 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
619 --libdir="${MY_LIBDIR}" \ 591 --libdir="${MY_LIBDIR}" \
637 609
638mysql_src_install() { 610mysql_src_install() {
639 # Make sure the vars are correctly initialized 611 # Make sure the vars are correctly initialized
640 mysql_init_vars 612 mysql_init_vars
641 613
642 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 614 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
643 615
644 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
645 617
646 insinto "${MY_INCLUDEDIR}" 618 insinto "${MY_INCLUDEDIR}"
647 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 619 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
648 620
649 # Convenience links 621 # Convenience links
650 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
651 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
652 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 624 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
653 625
654 # Various junk (my-*.cnf moved elsewhere) 626 # Various junk (my-*.cnf moved elsewhere)
655 rm -Rf "${D}/usr/share/info" 627 rm -Rf "${D}/usr/share/info"
656 for removeme in "mysql-log-rotate" mysql.server* \ 628 for removeme in "mysql-log-rotate" mysql.server* \
657 binary-configure* my-*.cnf mi_test_all* 629 binary-configure* my-*.cnf mi_test_all*
658 do 630 do
659 rm -f "${D}"/usr/share/mysql/${removeme} 631 rm -f "${D}"/usr/share/mysql/${removeme}
660 done 632 done
661 633
662 # TODO change at Makefile-am level
663 if [[ ${PN} == "mysql-slotted" ]] ; then
664 for moveme in "mysql_fix_privilege_tables.sql" \
665 "fill_help_tables.sql" "ndb-config-2-node.ini"
666 do
667 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
668 done
669 fi
670
671 # clean up stuff for a minimal build 634 # Clean up stuff for a minimal build
672 if use minimal ; then 635 if use minimal ; then
673 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 636 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
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} 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}
675 rm -f "${D}/usr/sbin/mysqld" 638 rm -f "${D}/usr/sbin/mysqld"
676 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
677 fi 640 fi
678 641
679 if [[ ${PN} == "mysql-slotted" ]] ; then
680 local notcatched=$(ls "${D}/usr/share/mysql"/*)
681 if [[ -n "${notcatched}" ]] ; then
682 ewarn "QA notice"
683 ewarn "${notcatched} files in /usr/share/mysql"
684 ewarn "bug mysql-herd to manage them"
685 fi
686 rm -Rf "${D}/usr/share/mysql"
687 fi
688
689 # Configuration stuff 642 # Configuration stuff
690 if mysql_version_is_at_least "4.1" ; then 643 if mysql_version_is_at_least "4.1" ; then
691 mysql_mycnf_version="4.1" 644 mysql_mycnf_version="4.1"
692 else 645 else
693 mysql_mycnf_version="4.0" 646 mysql_mycnf_version="4.0"
694 fi 647 fi
695 insinto "${MY_SYSCONFDIR}" 648 insinto "${MY_SYSCONFDIR}"
696 doins scripts/mysqlaccess.conf 649 doins scripts/mysqlaccess.conf
697 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
698 -e "s!@DATADIR@!${DATADIR}!g" \ 650 sed -e "s!@DATADIR@!${DATADIR}!g" \
699 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 651 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
700 > "${TMPDIR}/my.cnf.ok" 652 > "${TMPDIR}/my.cnf.ok"
701 if mysql_version_is_at_least "4.1" && use latin1 ; then 653 if mysql_version_is_at_least "4.1" && use latin1 ; then
702 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 654 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
703 fi 655 fi
739 for script in scripts/mysql* ; do 691 for script in scripts/mysql* ; do
740 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 692 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
741 done 693 done
742 fi 694 fi
743 695
744 if [[ ${PN} == "mysql-slotted" ]] ; then
745 # MOVED HERE DUE TO BUG #121445
746 # create a list of files, to be used
747 # by external utilities
748 mkdir -p "${D}/var/lib/eselect/mysql/"
749 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
750 pushd "${D}/" &>/dev/null
751 find usr/bin/ usr/sbin/ \
752 -type f -name "*${MY_SUFFIX}*" \
753 -and -not -name "mysql_config${MY_SUFFIX}" \
754 > "${filelist}"
755 find usr/share/man \
756 -type f -name "*${MY_SUFFIX}*" \
757 | sed -e 's/$/.gz/' \
758 >> "${filelist}"
759 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
760 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
761 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
762 popd &>/dev/null
763 fi
764
765 mysql_lib_symlinks "${D}" 696 mysql_lib_symlinks "${D}"
766} 697}
767 698
768mysql_pkg_preinst() { 699mysql_pkg_preinst() {
769 enewgroup mysql 60 || die "problem adding 'mysql' group" 700 enewgroup mysql 60 || die "problem adding 'mysql' group"
773mysql_pkg_postinst() { 704mysql_pkg_postinst() {
774 # Make sure the vars are correctly initialized 705 # Make sure the vars are correctly initialized
775 mysql_init_vars 706 mysql_init_vars
776 707
777 # Check FEATURES="collision-protect" before removing this 708 # Check FEATURES="collision-protect" before removing this
778 [[ -d "${ROOT}/var/log/mysql" ]] \
779 || 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}"
780 710
781 # Secure the logfiles 711 # Secure the logfiles
782 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 712 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
783 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 713 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
784 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 714 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
796 726
797 docinto "scripts" 727 docinto "scripts"
798 for script in scripts/mysql* ; do 728 for script in scripts/mysql* ; do
799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 729 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
800 done 730 done
801 fi
802 731
803 #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
804 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
805 # TODO tell it better ;-) 740 # TODO: explain it better
806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 741 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 742 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
808 elog "if, after that you cannot start the mysql server" 743 elog "if, after that, you cannot start the MySQL server,"
809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 744 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
810 elog "use the mysql upgrade script to restore the table" 745 elog "use the MySQL upgrade script to restore the table"
811 elog " or " 746 elog "or execute the following SQL command:"
812 elog "CREATE TABLE IF NOT EXISTS plugin (" 747 elog " CREATE TABLE IF NOT EXISTS plugin ("
813 elog " name char(64) binary DEFAULT '' NOT NULL," 748 elog " name char(64) binary DEFAULT '' NOT NULL,"
814 elog " dl char(128) DEFAULT '' NOT NULL," 749 elog " dl char(128) DEFAULT '' NOT NULL,"
815 elog " PRIMARY KEY (name)" 750 elog " PRIMARY KEY (name)"
816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;" 751 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
817 fi 752 fi
753
818 mysql_check_version_range "4.0 to 5.0.99.99" \ 754 mysql_check_version_range "4.0 to 5.0.99.99" \
819 && use berkdb \ 755 && use berkdb \
820 && 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!"
821} 757}
822 758
929 wait %1 865 wait %1
930 einfo "Done" 866 einfo "Done"
931} 867}
932 868
933mysql_pkg_postrm() { 869mysql_pkg_postrm() {
934 if [[ ${PN} == "mysql-slotted" ]] ; then
935 mysql_lib_symlinks 870 : # mysql_lib_symlinks "${D}"
936 mysql_clients_link_to_best_version
937 fi
938} 871}

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

  ViewVC Help
Powered by ViewVC 1.1.20