/[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.71
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.71 2007/03/06 15:55:55 chtekk 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}
95http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 74 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
96"
97mysql_version_is_at_least "5.1.12" \ 75mysql_version_is_at_least "5.1.12" \
98&& [[ -n "${PBXT_VERSION}" ]] \ 76&& [[ -n "${PBXT_VERSION}" ]] \
99&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 77&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
100 78
101DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 79DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
102HOMEPAGE="http://www.mysql.com/" 80HOMEPAGE="http://www.mysql.com/"
103LICENSE="GPL-2" 81LICENSE="GPL-2"
82SLOT="0"
104IUSE="big-tables debug embedded minimal perl selinux ssl static" 83IUSE="big-tables debug embedded minimal perl selinux ssl static"
105RESTRICT="confcache" 84RESTRICT="confcache"
106 85
107mysql_version_is_at_least "4.1" \ 86mysql_version_is_at_least "4.1" \
108&& IUSE="${IUSE} latin1" 87&& IUSE="${IUSE} latin1"
124 103
125mysql_version_is_at_least "5.1.12" \ 104mysql_version_is_at_least "5.1.12" \
126&& IUSE="${IUSE} pbxt" 105&& IUSE="${IUSE} pbxt"
127 106
128RDEPEND="${DEPEND} 107RDEPEND="${DEPEND}
129!minimal? ( sys-apps/mysql ) 108 !minimal? ( dev-db/mysql-init-scripts )
130selinux? ( sec-policy/selinux-mysql ) 109 selinux? ( sec-policy/selinux-mysql )"
131"
132 110
133EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 111EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
134 pkg_postinst pkg_config pkg_postrm 112 pkg_postinst pkg_config pkg_postrm
135 113
136# 114#
137# HELPER FUNCTIONS: 115# HELPER FUNCTIONS:
138# 116#
139 117
140bitkeeper_fetch() { 118bitkeeper_fetch() {
141
142 local reposuf 119 local reposuf
143 if [[ -z "${1}" ]] ; then 120 if [[ -z "${1}" ]] ; then
144 local tpv 121 local tpv
145 tpv=( ${PV//[-._]/ } ) 122 tpv=( ${PV//[-._]/ } )
146 reposuf="mysql-${tpv[0]}.${tpv[1]}" 123 reposuf="mysql-${tpv[0]}.${tpv[1]}"
147 else 124 else
148 reposuf="${1}" 125 reposuf="${1}"
149 fi 126 fi
150 einfo "using \"${reposuf}\" repository." 127 einfo "Using '${reposuf}' repository."
151 local repo_uri="bk://mysql.bkbits.net/${reposuf}" 128 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
152 ## -- ebk_store_dir: bitkeeper sources store directory 129 ## -- ebk_store_dir: bitkeeper sources store directory
153 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 130 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
154 ## -- ebk_fetch_cmd: bitkeeper fetch command 131 ## -- ebk_fetch_cmd: bitkeeper fetch command
155 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 132 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
156 # hint: does not work 133 # hint: does not work
157 local ebk_fetch_cmd="sfioball" 134 local ebk_fetch_cmd="sfioball"
158 ## -- ebk_update_cmd: bitkeeper update command 135 ## -- ebk_update_cmd: bitkeeper update command
159 local ebk_update_cmd="update" 136 local ebk_update_cmd="update"
160 137
161 #addread "/etc/bitkeeper" 138 # addread "/etc/bitkeeper"
162 addwrite "${ebk_store_dir}" 139 addwrite "${ebk_store_dir}"
163 140
164 if [[ ! -d "${ebk_store_dir}" ]]; then 141 if [[ ! -d "${ebk_store_dir}" ]] ; then
165 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 142 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
166 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 143 mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}"
167 fi 144 fi
168 145
169 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 146 pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}"
170 147
171 local wc_path=${reposuf} 148 local wc_path=${reposuf}
172 149
173 if [[ ! -d "${wc_path}" ]]; then 150 if [[ ! -d "${wc_path}" ]] ; then
174 local options="-r+" 151 local options="-r+"
152
175 # first check out 153 # first checkout
176 einfo "bitkeeper check out start -->" 154 einfo "bitkeeper checkout start -->"
177 elog " repository: ${repo_uri}" 155 einfo " repository: ${repo_uri}"
156
178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 157 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
179 || die "${EBK}: can't fetch from ${repo_uri}." 158 || die "BK: couldn't fetch from ${repo_uri}"
180 else 159 else
181 if [[ ! -d "${wc_path}/BK" ]]; then 160 if [[ ! -d "${wc_path}/BK" ]] ; then
182 popd 161 popd
183 die "Look like ${wc_path} is not a bitkeeper path." 162 die "Looks like ${wc_path} is not a bitkeeper path"
184 fi 163 fi
185 164
186 # update working copy 165 # update working copy
187 einfo "bitkeeper update start -->" 166 einfo "bitkeeper update start -->"
188 elog " repository: ${repo_uri}" 167 einfo " repository: ${repo_uri}"
189 168
190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 169 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
191 || die "BK: can't update from ${repo_uri} to ${wc_path}." 170 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
192 fi 171 fi
193 172
194 einfo " working copy: ${wc_path}" 173 einfo " working copy: ${wc_path}"
195 cd "${wc_path}" 174 cd "${wc_path}"
196 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 175 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}"
197 176
198 echo 177 echo
199 popd 178 popd
200
201} 179}
202 180
203mysql_disable_test() { 181mysql_disable_test() {
204 local testname="${1}" ; shift 182 local testname="${1}" ; shift
205 local reason="${@}" 183 local reason="${@}"
206 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 184 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
207 echo ${testname} : ${reason} >> "${mysql_disable_file}" 185 echo ${testname} : ${reason} >> "${mysql_disable_file}"
208 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 186 ewarn "test '${testname}' disabled: '${reason}'"
209} 187}
210 188
211# void mysql_init_vars() 189# void mysql_init_vars()
212# 190#
213# Initialize global variables 191# Initialize global variables
214# 2005-11-19 <vivo@gentoo.org> 192# 2005-11-19 <vivo@gentoo.org>
215 193
216mysql_init_vars() { 194mysql_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}"} 195 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
223 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 196 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
224 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 197 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
225 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 198 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
226 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 199 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
227 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 200 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
228 201
229 if [[ -z "${DATADIR}" ]] ; then 202 if [[ -z "${DATADIR}" ]] ; then
230 DATADIR="" 203 DATADIR=""
231 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 204 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
232 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 205 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
233 | sed -ne '/datadir/s|^--datadir=||p' \ 206 | sed -ne '/datadir/s|^--datadir=||p' \
234 | tail -n1` 207 | tail -n1`
235 if [[ -z "${DATADIR}" ]] ; then 208 if [[ -z "${DATADIR}" ]] ; then
236 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 209 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
237 | sed -e 's/.*=\s*//'` 210 | sed -e 's/.*=\s*//'`
256 fi 229 fi
257 230
258 MY_SOURCEDIR=${SERVER_URI##*/} 231 MY_SOURCEDIR=${SERVER_URI##*/}
259 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 232 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
260 233
261 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 234 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
262 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 235 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
263 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 236 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
264} 237}
265 238
266configure_minimal() { 239configure_minimal() {
280 myconf="${myconf} --disable-shared" 253 myconf="${myconf} --disable-shared"
281 else 254 else
282 myconf="${myconf} --enable-shared --enable-static" 255 myconf="${myconf} --enable-shared --enable-static"
283 fi 256 fi
284 257
285 if mysql_version_is_at_least "4.01.00.00" && ! use latin1 ; then 258 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
286 myconf="${myconf} --with-charset=utf8" 259 myconf="${myconf} --with-charset=utf8"
287 myconf="${myconf} --with-collation=utf8_general_ci" 260 myconf="${myconf} --with-collation=utf8_general_ci"
288 else 261 else
289 myconf="${myconf} --with-charset=latin1" 262 myconf="${myconf} --with-charset=latin1"
290 myconf="${myconf} --with-collation=latin1_swedish_ci" 263 myconf="${myconf} --with-collation=latin1_swedish_ci"
341 myconf="${myconf} --with-extra-tools" 314 myconf="${myconf} --with-extra-tools"
342 myconf="${myconf} --with-innodb" 315 myconf="${myconf} --with-innodb"
343 myconf="${myconf} --without-readline" 316 myconf="${myconf} --without-readline"
344 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" 317 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
345 318
319 # --with-vio is not needed anymore, it's on by default and
320 # has been removed from configure
346 if use ssl ; then 321 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" 322 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
350 fi 323 fi
351 324
352 if mysql_version_is_at_least "5.1.11" ; then 325 if mysql_version_is_at_least "5.1.11" ; then
353 myconf="${myconf} $(use_with ssl)" 326 myconf="${myconf} $(use_with ssl)"
354 else 327 else
356 fi 329 fi
357 330
358 # The following fix is due to a bug with bdb on SPARC's. See: 331 # 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 332 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
360 # It comes down to non-64-bit safety problems. 333 # It comes down to non-64-bit safety problems.
361 if use sparc || use alpha || use hppa || use mips || use amd64 ; then 334 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
362 elog "Berkeley DB support was disabled due to incompatible arch" 335 elog "Berkeley DB support was disabled due to incompatible arch"
363 myconf="${myconf} --without-berkeley-db" 336 myconf="${myconf} --without-berkeley-db"
364 else 337 else
365 if use berkdb ; then 338 if use berkdb ; then
366 myconf="${myconf} --with-berkeley-db=./bdb" 339 myconf="${myconf} --with-berkeley-db=./bdb"
446 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 419 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
447 420
448 einfo "Reconfiguring dir '${PWD}'" 421 einfo "Reconfiguring dir '${PWD}'"
449 AT_GNUCONF_UPDATE="yes" eautoreconf 422 AT_GNUCONF_UPDATE="yes" eautoreconf
450 423
451 local myconf 424 local myconf=""
452 myconf="${myconf} --with-mysql=${S}"
453 mkdir -p ${T}/lib
454 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 425 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
455 use debug && myconf="${myconf} --with-debug=full" 426 use debug && myconf="${myconf} --with-debug=full"
456 # TODO is safe/needed to use econf here ? 427 # TODO: is it safe/needed to use econf here ?
457 ./configure ${myconf} || die "problem configuring pbxt storage engine" 428 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
458 # TODO is safe/needed to use emake here ? 429 # TODO: is it safe/needed to use emake here ?
459 make || die "problem making pbxt storage engine (${myconf})" 430 make || die "Problem making PBXT storage engine (${myconf})"
460 431
461 popd 432 popd
462 # TODO: modify test suite 433 # TODO: modify test suite for PBXT
463} 434}
464 435
465pbxt_src_install() { 436pbxt_src_install() {
466 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 437 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
467 make install || die "failed pbxt install" 438 make install || die "Failed to install PBXT"
468 popd 439 popd
469} 440}
470 441
471# 442#
472# EBUILD FUNCTIONS 443# EBUILD FUNCTIONS
508 479
509 unpack ${A} 480 unpack ${A}
510 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 481 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
511 if mysql_check_version_range "5.1 to 5.1.99" ; then 482 if mysql_check_version_range "5.1 to 5.1.99" ; then
512 bitkeeper_fetch "mysql-5.1-ndb" 483 bitkeeper_fetch "mysql-5.1-ndb"
513 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then 484 elif mysql_check_version_range "5.2 to 5.2.99" ; then
514 bitkeeper_fetch "mysql-5.2-falcon" 485 bitkeeper_fetch "mysql-5.2-falcon"
515 else 486 else
516 bitkeeper_fetch 487 bitkeeper_fetch
517 fi 488 fi
518 cd "${S}" 489 cd "${S}"
519 einfo "running upstream autorun on bk sources" 490 einfo "Running upstream autorun over BK sources ..."
520 BUILD/autorun.sh 491 BUILD/autorun.sh
521 else 492 else
522 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 493 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
523 cd "${S}" 494 cd "${S}"
524 fi 495 fi
525 496
526 # Apply the patches for this MySQL version 497 # Apply the patches for this MySQL version
527 EPATCH_SUFFIX="patch" 498 EPATCH_SUFFIX="patch"
528 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 499 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
529 mysql_mv_patches 500 mysql_mv_patches
530 epatch || die "failed to apply all patches" 501 epatch
531 502
532 # Additional checks, remove bundled zlib 503 # Additional checks, remove bundled zlib
533 rm -f "${S}/zlib/"*.[ch] 504 rm -f "${S}/zlib/"*.[ch]
534 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 505 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
535 rm -f "scripts/mysqlbug" 506 rm -f "scripts/mysqlbug"
550 521
551 local rebuilddirlist d 522 local rebuilddirlist d
552 523
553 if mysql_version_is_at_least "5.1.12" ; then 524 if mysql_version_is_at_least "5.1.12" ; then
554 rebuilddirlist="." 525 rebuilddirlist="."
555 # TODO IMPO! Check this with a cmake expert 526 # TODO: check this with a cmake expert
556 use innodb \ 527 use innodb \
557 && cmake \ 528 && cmake \
558 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 529 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
559 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
560 "storage/innobase" 531 "storage/innobase"
570 done 541 done
571 542
572 if mysql_check_version_range "4.1 to 5.0.99.99" \ 543 if mysql_check_version_range "4.1 to 5.0.99.99" \
573 && use berkdb ; then 544 && use berkdb ; then
574 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" 545 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
546 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
547 || die "Could not copy libtool.m4 to bdb/dist/"
575 pushd "bdb/dist" \ 548 pushd "bdb/dist" &>/dev/null
576 && sh s_all \ 549 sh s_all \
577 || die "Failed bdb reconfigure" \ 550 || die "Failed bdb reconfigure"
578 &>/dev/null
579 popd &>/dev/null 551 popd &>/dev/null
580 fi 552 fi
581} 553}
582 554
583mysql_src_compile() { 555mysql_src_compile() {
609 mysql_version_is_at_least "5.0" \ 581 mysql_version_is_at_least "5.0" \
610 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 582 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
611 export CXXFLAGS 583 export CXXFLAGS
612 584
613 econf \ 585 econf \
614 --program-suffix="${MY_SUFFIX}" \
615 --libexecdir="/usr/sbin" \ 586 --libexecdir="/usr/sbin" \
616 --sysconfdir="${MY_SYSCONFDIR}" \ 587 --sysconfdir="${MY_SYSCONFDIR}" \
617 --localstatedir="${MY_LOCALSTATEDIR}" \ 588 --localstatedir="${MY_LOCALSTATEDIR}" \
618 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 589 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
619 --libdir="${MY_LIBDIR}" \ 590 --libdir="${MY_LIBDIR}" \
637 608
638mysql_src_install() { 609mysql_src_install() {
639 # Make sure the vars are correctly initialized 610 # Make sure the vars are correctly initialized
640 mysql_init_vars 611 mysql_init_vars
641 612
642 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 613 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
643 614
644 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install 615 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
645 616
646 insinto "${MY_INCLUDEDIR}" 617 insinto "${MY_INCLUDEDIR}"
647 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 618 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
648 619
649 # Convenience links 620 # Convenience links
650 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 621 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
651 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
652 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
653 624
654 # Various junk (my-*.cnf moved elsewhere) 625 # Various junk (my-*.cnf moved elsewhere)
655 rm -Rf "${D}/usr/share/info" 626 rm -Rf "${D}/usr/share/info"
656 for removeme in "mysql-log-rotate" mysql.server* \ 627 for removeme in "mysql-log-rotate" mysql.server* \
657 binary-configure* my-*.cnf mi_test_all* 628 binary-configure* my-*.cnf mi_test_all*
658 do 629 do
659 rm -f "${D}"/usr/share/mysql/${removeme} 630 rm -f "${D}"/usr/share/mysql/${removeme}
660 done 631 done
661 632
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 633 # Clean up stuff for a minimal build
672 if use minimal ; then 634 if use minimal ; then
673 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 635 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} 636 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" 637 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 638 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
677 fi 639 fi
678 640
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 641 # Configuration stuff
690 if mysql_version_is_at_least "4.1" ; then 642 if mysql_version_is_at_least "4.1" ; then
691 mysql_mycnf_version="4.1" 643 mysql_mycnf_version="4.1"
692 else 644 else
693 mysql_mycnf_version="4.0" 645 mysql_mycnf_version="4.0"
694 fi 646 fi
695 insinto "${MY_SYSCONFDIR}" 647 insinto "${MY_SYSCONFDIR}"
696 doins scripts/mysqlaccess.conf 648 doins scripts/mysqlaccess.conf
697 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
698 -e "s!@DATADIR@!${DATADIR}!g" \ 649 sed -e "s!@DATADIR@!${DATADIR}!g" \
699 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 650 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
700 > "${TMPDIR}/my.cnf.ok" 651 > "${TMPDIR}/my.cnf.ok"
701 if mysql_version_is_at_least "4.1" && use latin1 ; then 652 if mysql_version_is_at_least "4.1" && use latin1 ; then
702 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 653 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
703 fi 654 fi
739 for script in scripts/mysql* ; do 690 for script in scripts/mysql* ; do
740 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 691 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
741 done 692 done
742 fi 693 fi
743 694
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}" 695 mysql_lib_symlinks "${D}"
766} 696}
767 697
768mysql_pkg_preinst() { 698mysql_pkg_preinst() {
769 enewgroup mysql 60 || die "problem adding 'mysql' group" 699 enewgroup mysql 60 || die "problem adding 'mysql' group"
773mysql_pkg_postinst() { 703mysql_pkg_postinst() {
774 # Make sure the vars are correctly initialized 704 # Make sure the vars are correctly initialized
775 mysql_init_vars 705 mysql_init_vars
776 706
777 # Check FEATURES="collision-protect" before removing this 707 # Check FEATURES="collision-protect" before removing this
778 [[ -d "${ROOT}/var/log/mysql" ]] \
779 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 708 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
780 709
781 # Secure the logfiles 710 # Secure the logfiles
782 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 711 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
783 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 712 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
784 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 713 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
796 725
797 docinto "scripts" 726 docinto "scripts"
798 for script in scripts/mysql* ; do 727 for script in scripts/mysql* ; do
799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 728 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
800 done 729 done
801 fi
802 730
803 #einfo "you may want to read slotting upgrade documents in the overlay" 731 einfo
732 elog "You might want to run:"
733 elog "\"emerge --config =${CATEGORY}/${PF}\""
734 elog "if this is a new install."
735 einfo
736 fi
737
804 if mysql_version_is_at_least "5.1.12" && use pbxt ; then 738 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
805 # TODO tell it better ;-) 739 # TODO: explain it better
806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 740 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 741 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
808 elog "if, after that you cannot start the mysql server" 742 elog "if, after that, you cannot start the MySQL server,"
809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 743 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
810 elog "use the mysql upgrade script to restore the table" 744 elog "use the MySQL upgrade script to restore the table"
811 elog " or " 745 elog "or execute the following SQL command:"
812 elog "CREATE TABLE IF NOT EXISTS plugin (" 746 elog " CREATE TABLE IF NOT EXISTS plugin ("
813 elog " name char(64) binary DEFAULT '' NOT NULL," 747 elog " name char(64) binary DEFAULT '' NOT NULL,"
814 elog " dl char(128) DEFAULT '' NOT NULL," 748 elog " dl char(128) DEFAULT '' NOT NULL,"
815 elog " PRIMARY KEY (name)" 749 elog " PRIMARY KEY (name)"
816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;" 750 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
817 fi 751 fi
752
818 mysql_check_version_range "4.0 to 5.0.99.99" \ 753 mysql_check_version_range "4.0 to 5.0.99.99" \
819 && use berkdb \ 754 && use berkdb \
820 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 755 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
821} 756}
822 757
929 wait %1 864 wait %1
930 einfo "Done" 865 einfo "Done"
931} 866}
932 867
933mysql_pkg_postrm() { 868mysql_pkg_postrm() {
934 if [[ ${PN} == "mysql-slotted" ]] ; then
935 mysql_lib_symlinks 869 : # mysql_lib_symlinks "${D}"
936 mysql_clients_link_to_best_version
937 fi
938} 870}

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

  ViewVC Help
Powered by ViewVC 1.1.20