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

Diff of /eclass/mysql.eclass

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

Revision 1.142 Revision 1.152
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2009 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.142 2010/03/24 20:37:54 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.152 2010/10/06 00:13:11 robbat2 Exp $
4 4
5# @ECLASS: mysql.eclass 5# @ECLASS: mysql.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 7# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
8# Maintainers: MySQL Team <mysql-bugs@gentoo.org> 8# Maintainers: MySQL Team <mysql-bugs@gentoo.org>
59# Upstream MySQL considers the first two parts of the version number to be the 59# Upstream MySQL considers the first two parts of the version number to be the
60# major version. Upgrades that change major version should always run 60# major version. Upgrades that change major version should always run
61# mysql_upgrade. 61# mysql_upgrade.
62MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})" 62MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})"
63 63
64# Cluster is a special case...
65if [[ "${PN}" == "mysql-cluster" ]]; then
66 case $PV in
67 6.1*|7.0*|7.1*) MYSQL_PV_MAJOR=5.1 ;;
68 esac
69fi
70
71
64# @ECLASS-VARIABLE: MYSQL_VERSION_ID 72# @ECLASS-VARIABLE: MYSQL_VERSION_ID
65# @DESCRIPTION: 73# @DESCRIPTION:
66# MYSQL_VERSION_ID will be: 74# MYSQL_VERSION_ID will be:
67# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 75# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
68# This is an important part, because many of the choices the MySQL ebuild will do 76# This is an important part, because many of the choices the MySQL ebuild will do
95 MYSQL_COMMUNITY_FEATURES=1 103 MYSQL_COMMUNITY_FEATURES=1
96elif [ "${PV#5.4}" != "${PV}" ] ; then 104elif [ "${PV#5.4}" != "${PV}" ] ; then
97 MYSQL_COMMUNITY_FEATURES=1 105 MYSQL_COMMUNITY_FEATURES=1
98elif [ "${PV#5.5}" != "${PV}" ] ; then 106elif [ "${PV#5.5}" != "${PV}" ] ; then
99 MYSQL_COMMUNITY_FEATURES=1 107 MYSQL_COMMUNITY_FEATURES=1
100elif [ "${PV#6.0}" != "${PV}" ] ; then 108elif [ "${PV#6}" != "${PV}" ] ; then
109 MYSQL_COMMUNITY_FEATURES=1
110elif [ "${PV#7}" != "${PV}" ] ; then
101 MYSQL_COMMUNITY_FEATURES=1 111 MYSQL_COMMUNITY_FEATURES=1
102else 112else
103 MYSQL_COMMUNITY_FEATURES=0 113 MYSQL_COMMUNITY_FEATURES=0
104fi 114fi
105 115
124 134
125[[ "${PN}" == "mariadb" ]] \ 135[[ "${PN}" == "mariadb" ]] \
126&& DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )" 136&& DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )"
127 137
128# Having different flavours at the same time is not a good idea 138# Having different flavours at the same time is not a good idea
129for i in "mysql" "mysql-community" "mariadb" ; do 139for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do
130 [[ "${i}" == ${PN} ]] || 140 [[ "${i}" == ${PN} ]] ||
131 DEPEND="${DEPEND} !dev-db/${i}" 141 DEPEND="${DEPEND} !dev-db/${i}"
132done 142done
133 143
134RDEPEND="${DEPEND} 144RDEPEND="${DEPEND}
152# Work out the default SERVER_URI correctly 162# Work out the default SERVER_URI correctly
153if [ -z "${SERVER_URI}" ]; then 163if [ -z "${SERVER_URI}" ]; then
154 [ -z "${MY_PV}" ] && MY_PV="${PV//_/-}" 164 [ -z "${MY_PV}" ] && MY_PV="${PV//_/-}"
155 if [ "${PN}" == "mariadb" ]; then 165 if [ "${PN}" == "mariadb" ]; then
156 MARIA_FULL_PV="$(replace_version_separator 3 '-' ${PV})" 166 MARIA_FULL_PV="$(replace_version_separator 3 '-' ${PV})"
167 MARIA_FULL_P="${PN}-${MARIA_FULL_PV}"
168 SERVER_URI="
169 http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
170 http://ftp.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
171 http://maria.llarian.net/download/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
157 SERVER_URI="http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/mariadb-${MARIA_FULL_PV}.tar.gz" 172 http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz
173 http://mirrors.fe.up.pt/pub/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
174 http://ftp-stud.hs-esslingen.de/pub/Mirrors/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
175 "
158 # The community build is on the mirrors 176 # The community and cluster builds are on the mirrors
159 elif [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then 177 elif [[ "${MYSQL_COMMUNITY_FEATURES}" == "1" || ${PN} == "mysql-cluster" ]] ; then
160 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${MY_PV}.tar.gz" 178 if [[ "${PN}" == "mysql-cluster" ]] ; then
179 URI_DIR="MySQL-Cluster"
180 URI_FILE="mysql-cluster-gpl"
181 else
182 URI_DIR="MySQL"
183 URI_FILE="mysql"
184 fi
185 URI_A="${URI_FILE}-${MY_PV}.tar.gz"
186 MIRROR_PV=$(get_version_component_range 1-2 ${PV})
187 # Recently upstream switched to an archive site, and not on mirrors
188 SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A}
189 mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}"
161 # The (old) enterprise source is on the primary site only 190 # The (old) enterprise source is on the primary site only
162 elif [ "${PN}" == "mysql" ]; then 191 elif [ "${PN}" == "mysql" ]; then
163 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz" 192 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz"
164 fi 193 fi
165fi 194fi
188IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static test" 217IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static test"
189 218
190mysql_version_is_at_least "4.1" \ 219mysql_version_is_at_least "4.1" \
191&& IUSE="${IUSE} latin1" 220&& IUSE="${IUSE} latin1"
192 221
193mysql_version_is_at_least "4.1.3" \ 222if mysql_version_is_at_least "4.1.3" ; then
194&& IUSE="${IUSE} cluster extraengine" 223 IUSE="${IUSE} extraengine"
224 if [[ "${PN}" != "mysql-cluster" ]] ; then
225 IUSE="${IUSE} cluster"
226 fi
227fi
195 228
196mysql_version_is_at_least "5.0" \ 229mysql_version_is_at_least "5.0" \
197|| IUSE="${IUSE} raid" 230|| IUSE="${IUSE} raid"
198 231
199mysql_version_is_at_least "5.0.18" \ 232mysql_version_is_at_least "5.0.18" \
232 && mysql_version_is_at_least "5.1.26" \ 265 && mysql_version_is_at_least "5.1.26" \
233 && [[ -n "${XTRADB_VER}" && -n "${PERCONA_VER}" ]] 266 && [[ -n "${XTRADB_VER}" && -n "${PERCONA_VER}" ]]
234 return $? 267 return $?
235} 268}
236 269
270
237pbxt_patch_available \ 271pbxt_patch_available \
238&& PBXT_P="pbxt-${PBXT_VERSION}" \ 272&& PBXT_P="pbxt-${PBXT_VERSION}" \
239&& PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz" \ 273&& PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz" \
240&& SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" \ 274&& SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" \
241 275
276# PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins
277# vs. built outside the dir
242pbxt_available \ 278pbxt_available \
243&& IUSE="${IUSE} pbxt" 279&& IUSE="${IUSE} pbxt" \
280&& mysql_version_is_at_least "5.1.40" \
281&& PBXT_NEWSTYLE=1
244 282
245xtradb_patch_available \ 283xtradb_patch_available \
246&& XTRADB_P="percona-xtradb-${XTRADB_VER}" \ 284&& XTRADB_P="percona-xtradb-${XTRADB_VER}" \
247&& XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" \ 285&& XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" \
248&& XTRADB_SRC_URI1="http://www.percona.com/percona-builds/xtradb/${XTRADB_SRC_URI_COMMON}" \ 286&& XTRADB_SRC_B1="http://www.percona.com/" \
287&& XTRADB_SRC_B2="${XTRADB_SRC_B1}/percona-builds/" \
288&& XTRADB_SRC_URI1="${XTRADB_SRC_B2}/Percona-Server/Percona-Server-${XTRADB_SRC_URI_COMMON}" \
249&& XTRADB_SRC_URI2="http://www.percona.com/${PN}/xtradb/${XTRADB_SRC_URI_COMMON}" \ 289&& XTRADB_SRC_URI2="${XTRADB_SRC_B2}/xtradb/${XTRADB_SRC_URI_COMMON}" \
290&& XTRADB_SRC_URI3="${XTRADB_SRC_B1}/${PN}/xtradb/${XTRADB_SRC_URI_COMMON}" \
250&& SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} )" \ 291&& SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} ${XTRADB_SRC_URI3} )" \
251&& IUSE="${IUSE} xtradb" 292&& IUSE="${IUSE} xtradb"
252 293
253# 294#
254# HELPER FUNCTIONS: 295# HELPER FUNCTIONS:
255# 296#
260mysql_disable_test() { 301mysql_disable_test() {
261 local rawtestname testname testsuite reason mysql_disable_file 302 local rawtestname testname testsuite reason mysql_disable_file
262 rawtestname="${1}" ; shift 303 rawtestname="${1}" ; shift
263 reason="${@}" 304 reason="${@}"
264 ewarn "test '${rawtestname}' disabled: '${reason}'" 305 ewarn "test '${rawtestname}' disabled: '${reason}'"
265 306
266 testsuite="${rawtestname/.*}" 307 testsuite="${rawtestname/.*}"
267 testname="${rawtestname/*.}" 308 testname="${rawtestname/*.}"
268 mysql_disable_file="${S}/mysql-test/t/disabled.def" 309 mysql_disable_file="${S}/mysql-test/t/disabled.def"
269 #einfo "rawtestname=${rawtestname} testname=${testname} testsuite=${testsuite}" 310 #einfo "rawtestname=${rawtestname} testname=${testname} testsuite=${testsuite}"
270 echo ${testname} : ${reason} >> "${mysql_disable_file}" 311 echo ${testname} : ${reason} >> "${mysql_disable_file}"
352 MY_DATADIR="${new_MY_DATADIR}" 393 MY_DATADIR="${new_MY_DATADIR}"
353 fi 394 fi
354 fi 395 fi
355 fi 396 fi
356 397
398 if [ "${MY_SOURCEDIR:-unset}" == "unset" ]; then
357 MY_SOURCEDIR=${SERVER_URI##*/} 399 MY_SOURCEDIR=${SERVER_URI##*/}
358 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 400 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
401 fi
359 402
360 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 403 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
361 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 404 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
362 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR 405 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
363} 406}
410 if use debug ; then 453 if use debug ; then
411 myconf="${myconf} --with-debug=full" 454 myconf="${myconf} --with-debug=full"
412 else 455 else
413 myconf="${myconf} --without-debug" 456 myconf="${myconf} --without-debug"
414 mysql_version_is_at_least "4.1.3" \ 457 mysql_version_is_at_least "4.1.3" \
415 && use cluster \ 458 && ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) \
416 && myconf="${myconf} --without-ndb-debug" 459 && myconf="${myconf} --without-ndb-debug"
417 fi 460 fi
418 461
419 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then 462 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then
420 ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" 463 ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
477 myconf="${myconf} --without-berkeley-db" 520 myconf="${myconf} --without-berkeley-db"
478 fi 521 fi
479 522
480 if mysql_version_is_at_least "4.1.3" ; then 523 if mysql_version_is_at_least "4.1.3" ; then
481 myconf="${myconf} --with-geometry" 524 myconf="${myconf} --with-geometry"
525 if [[ "${PN}" != "mysql-cluster" ]] ; then
482 myconf="${myconf} $(use_with cluster ndbcluster)" 526 myconf="${myconf} $(use_with cluster ndbcluster)"
527 fi
483 fi 528 fi
484 529
485 if mysql_version_is_at_least "4.1.3" && use extraengine ; then 530 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
486 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 531 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
487 myconf="${myconf} --with-archive-storage-engine" 532 myconf="${myconf} --with-archive-storage-engine"
524 myconf="${myconf} --enable-assembler" 569 myconf="${myconf} --enable-assembler"
525 myconf="${myconf} --with-geometry" 570 myconf="${myconf} --with-geometry"
526 myconf="${myconf} --with-readline" 571 myconf="${myconf} --with-readline"
527 myconf="${myconf} --with-zlib-dir=/usr/" 572 myconf="${myconf} --with-zlib-dir=/usr/"
528 myconf="${myconf} --without-pstack" 573 myconf="${myconf} --without-pstack"
574 myconf="${myconf} --with-plugindir=/usr/$(get_libdir)/mysql/plugin"
575
529 use max-idx-128 && myconf="${myconf} --with-max-indexes=128" 576 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
530 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then 577 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
531 myconf="${myconf} $(use_enable community community-features)" 578 myconf="${myconf} $(use_enable community community-features)"
532 if use community; then 579 if use community; then
533 myconf="${myconf} $(use_enable profiling)" 580 myconf="${myconf} $(use_enable profiling)"
534 else 581 else
535 myconf="${myconf} --disable-profiling" 582 myconf="${myconf} --disable-profiling"
536 fi 583 fi
537 fi 584 fi
538 585
586 # Scan for all available plugins
587 local plugins_avail="$(
588 LANG=C \
589 find "${S}" \
590 \( \
591 -name 'plug.in' \
592 -o -iname 'configure.in' \
593 -o -iname 'configure.ac' \
594 \) \
595 -print0 \
596 | xargs -0 sed -r -n \
597 -e '/^MYSQL_STORAGE_ENGINE/{
598 s~MYSQL_STORAGE_ENGINE\([[:space:]]*\[?([-_a-z0-9]+)\]?.*,~\1 ~g ;
599 s~^([^ ]+).*~\1~gp;
600 }' \
601 | tr -s '\n' ' '
602 )"
603
539 # 5.1 introduces a new way to manage storage engines (plugins) 604 # 5.1 introduces a new way to manage storage engines (plugins)
540 # like configuration=none 605 # like configuration=none
541 # This base set are required, and will always be statically built. 606 # This base set are required, and will always be statically built.
542 local plugins="csv,myisam,myisammrg,heap" 607 local plugins_sta="csv myisam myisammrg heap"
608 local plugins_dyn=""
609 local plugins_dis="example ibmdb2i"
610
611 # These aren't actually required by the base set, but are really useful:
612 plugins_sta="${plugins_sta} archive blackhole"
613
614 # default in 5.5.4
615 if mysql_version_is_at_least "5.5.4" ; then
616 plugins_sta="${plugins_sta} partition"
617 fi
618 # Now the extras
543 if use extraengine ; then 619 if use extraengine ; then
544 # like configuration=max-no-ndb, archive and example removed in 5.1.11 620 # like configuration=max-no-ndb, archive and example removed in 5.1.11
545 # not added yet: ibmdb2i 621 # not added yet: ibmdb2i
546 # Not supporting as examples: example,daemon_example,ftexample 622 # Not supporting as examples: example,daemon_example,ftexample
547 plugins="${plugins},archive,blackhole,federated,partition" 623 plugins_sta="${plugins_sta} partition"
624 plugins_dyn="${plugins_sta} federated"
548 625
549 if [[ "${PN}" != "mariadb" ]] ; then 626 if [[ "${PN}" != "mariadb" ]] ; then
550 elog "Before using the Federated storage engine, please be sure to read" 627 elog "Before using the Federated storage engine, please be sure to read"
551 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" 628 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
552 else 629 else
553 elog "MariaDB includes the FederatedX engine. Be sure to read" 630 elog "MariaDB includes the FederatedX engine. Be sure to read"
554 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine" 631 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine"
555 fi 632 fi
633 else
634 plugins_dis="${plugins_dis} partition federated"
556 fi 635 fi
557 636
558 # Upstream specifically requests that InnoDB always be built: 637 # Upstream specifically requests that InnoDB always be built:
559 # - innobase, innodb_plugin 638 # - innobase, innodb_plugin
560 # Build falcon if available for 6.x series. 639 # Build falcon if available for 6.x series.
561 for i in innobase innodb_plugin falcon ; do 640 for i in innobase falcon ; do
562 [ -e "${S}"/storage/${i} ] && plugins="${plugins},${i}" 641 [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}"
563 done 642 done
643 for i in innodb_plugin ; do
644 [ -e "${S}"/storage/${i} ] && plugins_dyn="${plugins_dyn} ${i}"
645 done
564 646
565 # like configuration=max-no-ndb 647 # like configuration=max-no-ndb
566 if use cluster ; then 648 if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) ; then
567 plugins="${plugins},ndbcluster" 649 plugins_sta="${plugins_sta} ndbcluster partition"
650 plugins_dis="${plugins_dis//partition}"
568 myconf="${myconf} --with-ndb-binlog" 651 myconf="${myconf} --with-ndb-binlog"
652 else
653 plugins_dis="${plugins_dis} ndbcluster"
569 fi 654 fi
570 655
571 if [[ "${PN}" == "mariadb" ]] ; then 656 if [[ "${PN}" == "mariadb" ]] ; then
572 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not 657 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not
573 # caught above. 658 # caught above.
574 plugins="${plugins},maria,innobase" 659 plugins_sta="${plugins_sta} maria"
575 if use pbxt ; then 660
576 plugins="${plugins},pbxt" 661 [ -e "${S}"/storage/innobase ] || [ -e "${S}"/storage/xtradb ] ||
577 else 662 die "The ${P} package doesn't provide innobase nor xtradb"
578 myconf="${myconf} --without-plugin-pbxt" 663
579 fi 664 for i in innobase xtradb ; do
665 [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}"
666 done
667
580 myconf="${myconf} $(use_with libevent)" 668 myconf="${myconf} $(use_with libevent)"
581 # This is not optional, without it several upstream testcases fail. 669 # This is not optional, without it several upstream testcases fail.
582 # Also strongly recommended by upstream. 670 # Also strongly recommended by upstream.
583 myconf="${myconf} --with-maria-tmp-tables" 671 myconf="${myconf} --with-maria-tmp-tables"
584 fi 672 fi
585 673
674 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then
675 use pbxt \
676 && plugins_dyn="${plugins_dyn} pbxt" \
677 || plugins_dis="${plugins_dis} pbxt"
678 fi
679
680 use static && \
681 plugins_sta="${plugins_sta} ${plugins_dyn}" && \
682 plugins_dyn=""
683
684 einfo "Available plugins: ${plugins_avail}"
685 einfo "Dynamic plugins: ${plugins_dyn}"
686 einfo "Static plugins: ${plugins_sta}"
687 einfo "Disabled plugins: ${plugins_dis}"
688
689 # These are the static plugins
586 myconf="${myconf} --with-plugins=${plugins}" 690 myconf="${myconf} --with-plugins=${plugins_sta// /,}"
691 # And the disabled ones
692 for i in ${plugins_dis} ; do
693 myconf="${myconf} --without-plugin-${i}"
694 done
587} 695}
588 696
589pbxt_src_configure() { 697pbxt_src_configure() {
590 mysql_init_vars 698 mysql_init_vars
591 699
592 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 700 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
593 701
594 einfo "Reconfiguring dir '${PWD}'" 702 einfo "Reconfiguring dir '${PWD}'"
595 AT_GNUCONF_UPDATE="yes" eautoreconf 703 eautoreconf
596 704
597 local myconf="" 705 local myconf=""
598 myconf="${myconf} --with-mysql=${S} --libdir=/usr/$(get_libdir)" 706 myconf="${myconf} --with-mysql=${S} --libdir=/usr/$(get_libdir)"
599 use debug && myconf="${myconf} --with-debug=full" 707 use debug && myconf="${myconf} --with-debug=full"
600 econf ${myconf} || die "Problem configuring PBXT storage engine" 708 econf ${myconf} || die "Problem configuring PBXT storage engine"
601} 709}
602 710
603pbxt_src_compile() { 711pbxt_src_compile() {
712
604 # Be backwards compatible for now 713 # Be backwards compatible for now
605 if [[ $EAPI != 2 ]]; then 714 if [[ $EAPI != 2 ]]; then
606 pbxt_src_configure 715 pbxt_src_configure
607 fi 716 fi
608 # TODO: is it safe/needed to use emake here ? 717 # TODO: is it safe/needed to use emake here ?
637 fi 746 fi
638 fi 747 fi
639 748
640 # Check for USE flag problems in pkg_setup 749 # Check for USE flag problems in pkg_setup
641 if use static && use ssl ; then 750 if use static && use ssl ; then
642 eerror "MySQL does not support being built statically with SSL support enabled!"
643 die "MySQL does not support being built statically with SSL support enabled!" 751 M="MySQL does not support being built statically with SSL support enabled!"
752 eerror "${M}"
753 die "${M}"
644 fi 754 fi
645 755
646 if ! mysql_version_is_at_least "5.0" \ 756 if ! mysql_version_is_at_least "5.0" \
647 && use raid \ 757 && use raid \
648 && use static ; then 758 && use static ; then
650 eerror "with RAID support enabled." 760 eerror "with RAID support enabled."
651 die "USE flags 'raid' and 'static' conflict!" 761 die "USE flags 'raid' and 'static' conflict!"
652 fi 762 fi
653 763
654 if mysql_version_is_at_least "4.1.3" \ 764 if mysql_version_is_at_least "4.1.3" \
655 && ( use cluster || use extraengine ) \ 765 && ( use cluster || use extraengine || use embedded ) \
656 && use minimal ; then 766 && use minimal ; then
657 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
658 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 767 M="USE flags 'cluster', 'extraengine', 'embedded' conflict with 'minimal' USE flag!"
768 eerror "${M}"
769 die "${M}"
659 fi 770 fi
660 771
661 # Bug #290570 fun. Upstream made us need a fairly new GCC4.
662 if mysql_version_is_at_least "5.0.83" ; then 772 if mysql_version_is_at_least "5.1" \
773 && xtradb_patch_available \
774 && use xtradb \
775 && use embedded ; then
776 M="USE flags 'xtradb' and 'embedded' conflict and cause build failures"
777 eerror "${M}"
778 die "${M}"
779 fi
780
781 # Bug #290570, 284946, 307251
782 # Upstream changes made us need a fairly new GCC4.
783 # But only for 5.0.8[3-6]!
784 if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then
663 GCC_VER=$(gcc-version) 785 GCC_VER=$(gcc-version)
664 case ${GCC_VER} in 786 case ${GCC_VER} in
665 2*|3*|4.0|4.1|4.2) die "Active GCC too old! Must have at least GCC4.3" ;; 787 2*|3*|4.0|4.1|4.2)
788 eerror "Some releases of MySQL required a very new GCC, and then"
789 eerror "later release relaxed that requirement again. Either pick a"
790 eerror "MySQL >=5.0.87, or use a newer GCC."
791 die "Active GCC too old!" ;;
666 esac 792 esac
667 fi 793 fi
668 794
669 # This should come after all of the die statements 795 # This should come after all of the die statements
670 enewgroup mysql 60 || die "problem adding 'mysql' group" 796 enewgroup mysql 60 || die "problem adding 'mysql' group"
720 mysql_mv_patches 846 mysql_mv_patches
721 # And apply 847 # And apply
722 epatch 848 epatch
723 849
724 # last -fPIC fixup, per bug #305873 850 # last -fPIC fixup, per bug #305873
725 i="${S}"/storage/innodb_plugin/plug.in 851 i="${S}"/storage/innodb_plugin/plug.in
726 [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}" 852 [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}"
727 853
728 # Additional checks, remove bundled zlib 854 # Additional checks, remove bundled zlib (Cluster needs this, for static
855 # memory management in zlib, leave available for Cluster)
856 if [[ "${PN}" != "mysql-cluster" ]] ; then
729 rm -f "${S}/zlib/"*.[ch] 857 rm -f "${S}/zlib/"*.[ch]
730 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 858 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
859 fi
731 rm -f "scripts/mysqlbug" 860 rm -f "scripts/mysqlbug"
732 861
733 # Make charsets install in the right place 862 # Make charsets install in the right place
734 find . -name 'Makefile.am' \ 863 find . -name 'Makefile.am' \
735 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 864 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
746 fi 875 fi
747 876
748 local rebuilddirlist d 877 local rebuilddirlist d
749 878
750 if xtradb_patch_available && use xtradb ; then 879 if xtradb_patch_available && use xtradb ; then
751 einfo "Replacing InnoDB with Percona XtraDB" 880 einfo "Adding storage engine: Percona XtraDB (replacing InnoDB)"
752 pushd "${S}"/storage 881 pushd "${S}"/storage >/dev/null
753 i="innobase" 882 i="innobase"
754 o="${WORKDIR}/storage-${i}.mysql-upstream" 883 o="${WORKDIR}/storage-${i}.mysql-upstream"
755 # Have we been here already? 884 # Have we been here already?
756 [ -d "${o}" ] && rm -f "${i}" 885 [ -d "${o}" ] && rm -f "${i}"
757 # Or maybe we haven't 886 # Or maybe we haven't
758 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}" 887 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}"
759 cp -ra "${WORKDIR}/${XTRADB_P}" "${i}" 888 cp -ral "${WORKDIR}/${XTRADB_P}" "${i}"
760 popd 889 popd >/dev/null
890 fi
891
892 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]] && use pbxt ; then
893 einfo "Adding storage engine: PBXT"
894 pushd "${S}"/storage >/dev/null
895 i='pbxt'
896 [ -d "${i}" ] && rm -rf "${i}"
897 cp -ral "${WORKDIR}/${PBXT_P}" "${i}"
898 popd >/dev/null
761 fi 899 fi
762 900
763 if mysql_version_is_at_least "5.1.12" ; then 901 if mysql_version_is_at_least "5.1.12" ; then
764 rebuilddirlist="." 902 rebuilddirlist="."
765 # This does not seem to be needed presently. robbat2 2010/02/23 903 # This does not seem to be needed presently. robbat2 2010/02/23
774 fi 912 fi
775 913
776 for d in ${rebuilddirlist} ; do 914 for d in ${rebuilddirlist} ; do
777 einfo "Reconfiguring dir '${d}'" 915 einfo "Reconfiguring dir '${d}'"
778 pushd "${d}" &>/dev/null 916 pushd "${d}" &>/dev/null
779 AT_GNUCONF_UPDATE="yes" eautoreconf 917 eautoreconf
780 popd &>/dev/null 918 popd &>/dev/null
781 done 919 done
782 920
783 if mysql_check_version_range "4.1 to 5.0.99.99" \ 921 if mysql_check_version_range "4.1 to 5.0.99.99" \
784 && use berkdb ; then 922 && use berkdb ; then
859 # TODO: Move this before autoreconf !!! 997 # TODO: Move this before autoreconf !!!
860 find . -type f -name Makefile -print0 \ 998 find . -type f -name Makefile -print0 \
861 | xargs -0 -n100 sed -i \ 999 | xargs -0 -n100 sed -i \
862 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 1000 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
863 1001
864 if [[ $EAPI == 2 ]]; then 1002 if [[ $EAPI == 2 ]] && [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
865 pbxt_patch_available && use pbxt && pbxt_src_configure 1003 pbxt_patch_available && use pbxt && pbxt_src_configure
866 fi 1004 fi
867} 1005}
868 1006
869# @FUNCTION: mysql_src_compile 1007# @FUNCTION: mysql_src_compile
876 0 | 1) mysql_src_configure ;; 1014 0 | 1) mysql_src_configure ;;
877 esac 1015 esac
878 1016
879 emake || die "emake failed" 1017 emake || die "emake failed"
880 1018
1019 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
881 pbxt_patch_available && use pbxt && pbxt_src_compile 1020 pbxt_patch_available && use pbxt && pbxt_src_compile
1021 fi
882} 1022}
883 1023
884# @FUNCTION: mysql_src_install 1024# @FUNCTION: mysql_src_install
885# @DESCRIPTION: 1025# @DESCRIPTION:
886# Install mysql. 1026# Install mysql.
892 DESTDIR="${D}" \ 1032 DESTDIR="${D}" \
893 benchdir_root="${MY_SHAREDSTATEDIR}" \ 1033 benchdir_root="${MY_SHAREDSTATEDIR}" \
894 testroot="${MY_SHAREDSTATEDIR}" \ 1034 testroot="${MY_SHAREDSTATEDIR}" \
895 || die "emake install failed" 1035 || die "emake install failed"
896 1036
1037 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
897 pbxt_patch_available && use pbxt && pbxt_src_install 1038 pbxt_patch_available && use pbxt && pbxt_src_install
1039 fi
898 1040
899 # Convenience links 1041 # Convenience links
900 einfo "Making Convenience links for mysqlcheck multi-call binary" 1042 einfo "Making Convenience links for mysqlcheck multi-call binary"
901 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 1043 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
902 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 1044 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
926 if use !test ; then 1068 if use !test ; then
927 rm -rf "${D}"/${MY_SHAREDSTATEDIR}/mysql-test 1069 rm -rf "${D}"/${MY_SHAREDSTATEDIR}/mysql-test
928 fi 1070 fi
929 1071
930 # Configuration stuff 1072 # Configuration stuff
931 if mysql_version_is_at_least "5.1" ; then 1073 case ${MYSQL_PV_MAJOR} in
932 mysql_mycnf_version="5.1"
933 elif mysql_version_is_at_least "4.1" ; then
934 mysql_mycnf_version="4.1"
935 else
936 mysql_mycnf_version="4.0" 1074 3*|4.0) mysql_mycnf_version="4.0" ;;
937 fi 1075 4.[1-9]|5.0) mysql_mycnf_version="4.1" ;;
938 einfo "Building default my.cnf" 1076 5.[1-9]|6*|7*) mysql_mycnf_version="5.1" ;;
1077 esac
1078 einfo "Building default my.cnf (${mysql_mycnf_version})"
939 insinto "${MY_SYSCONFDIR}" 1079 insinto "${MY_SYSCONFDIR}"
940 doins scripts/mysqlaccess.conf 1080 doins scripts/mysqlaccess.conf
1081 mycnf_src="my.cnf-${mysql_mycnf_version}"
941 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ 1082 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
942 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 1083 "${FILESDIR}/${mycnf_src}" \
943 > "${TMPDIR}/my.cnf.ok" 1084 > "${TMPDIR}/my.cnf.ok"
944 if mysql_version_is_at_least "4.1" && use latin1 ; then 1085 if use latin1 ; then
945 sed -i \ 1086 sed -i \
946 -e "/character-set/s|utf8|latin1|g" \ 1087 -e "/character-set/s|utf8|latin1|g" \
947 "${TMPDIR}/my.cnf.ok" 1088 "${TMPDIR}/my.cnf.ok"
948 fi 1089 fi
949 newins "${TMPDIR}/my.cnf.ok" my.cnf 1090 newins "${TMPDIR}/my.cnf.ok" my.cnf
1043 1184
1044 einfo 1185 einfo
1045 elog "You might want to run:" 1186 elog "You might want to run:"
1046 elog "\"emerge --config =${CATEGORY}/${PF}\"" 1187 elog "\"emerge --config =${CATEGORY}/${PF}\""
1047 elog "if this is a new install." 1188 elog "if this is a new install."
1189 einfo
1190
1191 einfo
1192 elog "If you are upgrading major versions, you should run the"
1193 elog "mysql_upgrade tool."
1048 einfo 1194 einfo
1049 fi 1195 fi
1050 1196
1051 if pbxt_available && use pbxt ; then 1197 if pbxt_available && use pbxt ; then
1052 # TODO: explain it better 1198 # TODO: explain it better
1168 # Figure out which options we need to disable to do the setup 1314 # Figure out which options we need to disable to do the setup
1169 helpfile="${TMPDIR}/mysqld-help" 1315 helpfile="${TMPDIR}/mysqld-help"
1170 ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null 1316 ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null
1171 for opt in grant-tables host-cache name-resolve networking slave-start bdb \ 1317 for opt in grant-tables host-cache name-resolve networking slave-start bdb \
1172 federated innodb ssl log-bin relay-log slow-query-log external-locking \ 1318 federated innodb ssl log-bin relay-log slow-query-log external-locking \
1319 ndbcluster \
1173 ; do 1320 ; do
1174 optexp="--(skip-)?${opt}" optfull="--skip-${opt}" 1321 optexp="--(skip-)?${opt}" optfull="--skip-${opt}"
1175 egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}" 1322 egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
1176 done 1323 done
1177 # But some options changed names 1324 # But some options changed names
1185 1332
1186 if [[ -r "${help_tables}" ]] ; then 1333 if [[ -r "${help_tables}" ]] ; then
1187 cat "${help_tables}" >> "${sqltmp}" 1334 cat "${help_tables}" >> "${sqltmp}"
1188 fi 1335 fi
1189 fi 1336 fi
1190 1337
1191 einfo "Creating the mysql database and setting proper" 1338 einfo "Creating the mysql database and setting proper"
1192 einfo "permissions on it ..." 1339 einfo "permissions on it ..."
1193 1340
1194 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock" 1341 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
1195 local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid" 1342 local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
1198 --user=mysql \ 1345 --user=mysql \
1199 --basedir=${ROOT}/usr \ 1346 --basedir=${ROOT}/usr \
1200 --datadir=${ROOT}/${MY_DATADIR} \ 1347 --datadir=${ROOT}/${MY_DATADIR} \
1201 --max_allowed_packet=8M \ 1348 --max_allowed_packet=8M \
1202 --net_buffer_length=16K \ 1349 --net_buffer_length=16K \
1350 --default-storage-engine=MyISAM \
1203 --socket=${socket} \ 1351 --socket=${socket} \
1204 --pid-file=${pidfile}" 1352 --pid-file=${pidfile}"
1205 #einfo "About to start mysqld: ${mysqld}" 1353 #einfo "About to start mysqld: ${mysqld}"
1206 ebegin "Starting mysqld" 1354 ebegin "Starting mysqld"
1207 ${mysqld} & 1355 ${mysqld} &

Legend:
Removed from v.1.142  
changed lines
  Added in v.1.152

  ViewVC Help
Powered by ViewVC 1.1.20