/[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.149
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.149 2010/08/20 23:52:51 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.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
170 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" 171 http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz
172 "
158 # The community build is on the mirrors 173 # The community and cluster builds are on the mirrors
159 elif [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then 174 elif [[ "${MYSQL_COMMUNITY_FEATURES}" == "1" || ${PN} == "mysql-cluster" ]] ; then
160 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${MY_PV}.tar.gz" 175 if [[ "${PN}" == "mysql-cluster" ]] ; then
176 URI_DIR="MySQL-Cluster"
177 URI_FILE="mysql-cluster-gpl"
178 else
179 URI_DIR="MySQL"
180 URI_FILE="mysql"
181 fi
182 URI_A="${URI_FILE}-${MY_PV}.tar.gz"
183 MIRROR_PV=$(get_version_component_range 1-2 ${PV})
184 # Recently upstream switched to an archive site, and not on mirrors
185 SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A}
186 mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}"
161 # The (old) enterprise source is on the primary site only 187 # The (old) enterprise source is on the primary site only
162 elif [ "${PN}" == "mysql" ]; then 188 elif [ "${PN}" == "mysql" ]; then
163 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz" 189 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz"
164 fi 190 fi
165fi 191fi
188IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static test" 214IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static test"
189 215
190mysql_version_is_at_least "4.1" \ 216mysql_version_is_at_least "4.1" \
191&& IUSE="${IUSE} latin1" 217&& IUSE="${IUSE} latin1"
192 218
193mysql_version_is_at_least "4.1.3" \ 219if mysql_version_is_at_least "4.1.3" ; then
194&& IUSE="${IUSE} cluster extraengine" 220 IUSE="${IUSE} extraengine"
221 if [[ "${PN}" != "mysql-cluster" ]] ; then
222 IUSE="${IUSE} cluster"
223 fi
224fi
195 225
196mysql_version_is_at_least "5.0" \ 226mysql_version_is_at_least "5.0" \
197|| IUSE="${IUSE} raid" 227|| IUSE="${IUSE} raid"
198 228
199mysql_version_is_at_least "5.0.18" \ 229mysql_version_is_at_least "5.0.18" \
232 && mysql_version_is_at_least "5.1.26" \ 262 && mysql_version_is_at_least "5.1.26" \
233 && [[ -n "${XTRADB_VER}" && -n "${PERCONA_VER}" ]] 263 && [[ -n "${XTRADB_VER}" && -n "${PERCONA_VER}" ]]
234 return $? 264 return $?
235} 265}
236 266
267
237pbxt_patch_available \ 268pbxt_patch_available \
238&& PBXT_P="pbxt-${PBXT_VERSION}" \ 269&& 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" \ 270&& 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} )" \ 271&& SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" \
241 272
273# PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins
274# vs. built outside the dir
242pbxt_available \ 275pbxt_available \
243&& IUSE="${IUSE} pbxt" 276&& IUSE="${IUSE} pbxt" \
277&& mysql_version_is_at_least "5.1.40" \
278&& PBXT_NEWSTYLE=1
244 279
245xtradb_patch_available \ 280xtradb_patch_available \
246&& XTRADB_P="percona-xtradb-${XTRADB_VER}" \ 281&& XTRADB_P="percona-xtradb-${XTRADB_VER}" \
247&& XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" \ 282&& 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}" \ 283&& XTRADB_SRC_B1="http://www.percona.com/" \
284&& XTRADB_SRC_B2="${XTRADB_SRC_B1}/percona-builds/" \
285&& 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}" \ 286&& XTRADB_SRC_URI2="${XTRADB_SRC_B2}/xtradb/${XTRADB_SRC_URI_COMMON}" \
287&& XTRADB_SRC_URI3="${XTRADB_SRC_B1}/${PN}/xtradb/${XTRADB_SRC_URI_COMMON}" \
250&& SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} )" \ 288&& SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} ${XTRADB_SRC_URI3} )" \
251&& IUSE="${IUSE} xtradb" 289&& IUSE="${IUSE} xtradb"
252 290
253# 291#
254# HELPER FUNCTIONS: 292# HELPER FUNCTIONS:
255# 293#
352 MY_DATADIR="${new_MY_DATADIR}" 390 MY_DATADIR="${new_MY_DATADIR}"
353 fi 391 fi
354 fi 392 fi
355 fi 393 fi
356 394
395 if [ "${MY_SOURCEDIR:-unset}" == "unset" ]; then
357 MY_SOURCEDIR=${SERVER_URI##*/} 396 MY_SOURCEDIR=${SERVER_URI##*/}
358 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 397 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
398 fi
359 399
360 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 400 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
361 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 401 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
362 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR 402 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
363} 403}
410 if use debug ; then 450 if use debug ; then
411 myconf="${myconf} --with-debug=full" 451 myconf="${myconf} --with-debug=full"
412 else 452 else
413 myconf="${myconf} --without-debug" 453 myconf="${myconf} --without-debug"
414 mysql_version_is_at_least "4.1.3" \ 454 mysql_version_is_at_least "4.1.3" \
415 && use cluster \ 455 && ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) \
416 && myconf="${myconf} --without-ndb-debug" 456 && myconf="${myconf} --without-ndb-debug"
417 fi 457 fi
418 458
419 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then 459 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then
420 ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" 460 ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
477 myconf="${myconf} --without-berkeley-db" 517 myconf="${myconf} --without-berkeley-db"
478 fi 518 fi
479 519
480 if mysql_version_is_at_least "4.1.3" ; then 520 if mysql_version_is_at_least "4.1.3" ; then
481 myconf="${myconf} --with-geometry" 521 myconf="${myconf} --with-geometry"
522 if [[ "${PN}" != "mysql-cluster" ]] ; then
482 myconf="${myconf} $(use_with cluster ndbcluster)" 523 myconf="${myconf} $(use_with cluster ndbcluster)"
524 fi
483 fi 525 fi
484 526
485 if mysql_version_is_at_least "4.1.3" && use extraengine ; then 527 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
486 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 528 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
487 myconf="${myconf} --with-archive-storage-engine" 529 myconf="${myconf} --with-archive-storage-engine"
524 myconf="${myconf} --enable-assembler" 566 myconf="${myconf} --enable-assembler"
525 myconf="${myconf} --with-geometry" 567 myconf="${myconf} --with-geometry"
526 myconf="${myconf} --with-readline" 568 myconf="${myconf} --with-readline"
527 myconf="${myconf} --with-zlib-dir=/usr/" 569 myconf="${myconf} --with-zlib-dir=/usr/"
528 myconf="${myconf} --without-pstack" 570 myconf="${myconf} --without-pstack"
571 myconf="${myconf} --with-plugindir=/usr/$(get_libdir)/mysql/plugin"
572
529 use max-idx-128 && myconf="${myconf} --with-max-indexes=128" 573 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
530 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then 574 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
531 myconf="${myconf} $(use_enable community community-features)" 575 myconf="${myconf} $(use_enable community community-features)"
532 if use community; then 576 if use community; then
533 myconf="${myconf} $(use_enable profiling)" 577 myconf="${myconf} $(use_enable profiling)"
534 else 578 else
535 myconf="${myconf} --disable-profiling" 579 myconf="${myconf} --disable-profiling"
536 fi 580 fi
537 fi 581 fi
538 582
583 # Scan for all available plugins
584 local plugins_avail="$(
585 LANG=C \
586 find "${S}" \
587 \( \
588 -name 'plug.in' \
589 -o -iname 'configure.in' \
590 -o -iname 'configure.ac' \
591 \) \
592 -print0 \
593 | xargs -0 sed -r -n \
594 -e '/^MYSQL_STORAGE_ENGINE/{
595 s~MYSQL_STORAGE_ENGINE\([[:space:]]*\[?([-_a-z0-9]+)\]?.*,~\1 ~g ;
596 s~^([^ ]+).*~\1~gp;
597 }' \
598 | tr -s '\n' ' '
599 )"
600
539 # 5.1 introduces a new way to manage storage engines (plugins) 601 # 5.1 introduces a new way to manage storage engines (plugins)
540 # like configuration=none 602 # like configuration=none
541 # This base set are required, and will always be statically built. 603 # This base set are required, and will always be statically built.
542 local plugins="csv,myisam,myisammrg,heap" 604 local plugins_sta="csv myisam myisammrg heap"
605 local plugins_dyn=""
606 local plugins_dis="example ibmdb2i"
607
608 # These aren't actually required by the base set, but are really useful:
609 plugins_sta="${plugins_sta} archive blackhole"
610
611 # default in 5.5.4
612 if mysql_version_is_at_least "5.5.4" ; then
613 plugins_sta="${plugins_sta} partition"
614 fi
615 # Now the extras
543 if use extraengine ; then 616 if use extraengine ; then
544 # like configuration=max-no-ndb, archive and example removed in 5.1.11 617 # like configuration=max-no-ndb, archive and example removed in 5.1.11
545 # not added yet: ibmdb2i 618 # not added yet: ibmdb2i
546 # Not supporting as examples: example,daemon_example,ftexample 619 # Not supporting as examples: example,daemon_example,ftexample
547 plugins="${plugins},archive,blackhole,federated,partition" 620 plugins_sta="${plugins_sta} partition"
621 plugins_dyn="${plugins_sta} federated"
548 622
549 if [[ "${PN}" != "mariadb" ]] ; then 623 if [[ "${PN}" != "mariadb" ]] ; then
550 elog "Before using the Federated storage engine, please be sure to read" 624 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" 625 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
552 else 626 else
553 elog "MariaDB includes the FederatedX engine. Be sure to read" 627 elog "MariaDB includes the FederatedX engine. Be sure to read"
554 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine" 628 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine"
555 fi 629 fi
630 else
631 plugins_dis="${plugins_dis} partition federated"
556 fi 632 fi
557 633
558 # Upstream specifically requests that InnoDB always be built: 634 # Upstream specifically requests that InnoDB always be built:
559 # - innobase, innodb_plugin 635 # - innobase, innodb_plugin
560 # Build falcon if available for 6.x series. 636 # Build falcon if available for 6.x series.
561 for i in innobase innodb_plugin falcon ; do 637 for i in innobase falcon ; do
562 [ -e "${S}"/storage/${i} ] && plugins="${plugins},${i}" 638 [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}"
563 done 639 done
640 for i in innodb_plugin ; do
641 [ -e "${S}"/storage/${i} ] && plugins_dyn="${plugins_dyn} ${i}"
642 done
564 643
565 # like configuration=max-no-ndb 644 # like configuration=max-no-ndb
566 if use cluster ; then 645 if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) ; then
567 plugins="${plugins},ndbcluster" 646 plugins_sta="${plugins_sta} ndbcluster partition"
647 plugins_dis="${plugins_dis//partition}"
568 myconf="${myconf} --with-ndb-binlog" 648 myconf="${myconf} --with-ndb-binlog"
649 else
650 plugins_dis="${plugins_dis} ndbcluster"
569 fi 651 fi
570 652
571 if [[ "${PN}" == "mariadb" ]] ; then 653 if [[ "${PN}" == "mariadb" ]] ; then
572 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not 654 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not
573 # caught above. 655 # caught above.
574 plugins="${plugins},maria,innobase" 656 plugins_sta="${plugins_sta} maria innobase"
575 if use pbxt ; then
576 plugins="${plugins},pbxt"
577 else
578 myconf="${myconf} --without-plugin-pbxt"
579 fi
580 myconf="${myconf} $(use_with libevent)" 657 myconf="${myconf} $(use_with libevent)"
581 # This is not optional, without it several upstream testcases fail. 658 # This is not optional, without it several upstream testcases fail.
582 # Also strongly recommended by upstream. 659 # Also strongly recommended by upstream.
583 myconf="${myconf} --with-maria-tmp-tables" 660 myconf="${myconf} --with-maria-tmp-tables"
584 fi 661 fi
662
663 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then
664 use pbxt \
665 && plugins_dyn="${plugins_dyn} pbxt" \
666 || plugins_dis="${plugins_dis} pbxt"
667 fi
585 668
669 use static && \
670 plugins_sta="${plugins_sta} ${plugins_dyn}" && \
671 plugins_dyn=""
672
673 einfo "Available plugins: ${plugins_avail}"
674 einfo "Dynamic plugins: ${plugins_dyn}"
675 einfo "Static plugins: ${plugins_sta}"
676 einfo "Disabled plugins: ${plugins_dis}"
677
678 # These are the static plugins
586 myconf="${myconf} --with-plugins=${plugins}" 679 myconf="${myconf} --with-plugins=${plugins_sta// /,}"
680 # And the disabled ones
681 for i in ${plugins_dis} ; do
682 myconf="${myconf} --without-plugin-${i}"
683 done
587} 684}
588 685
589pbxt_src_configure() { 686pbxt_src_configure() {
590 mysql_init_vars 687 mysql_init_vars
591 688
599 use debug && myconf="${myconf} --with-debug=full" 696 use debug && myconf="${myconf} --with-debug=full"
600 econf ${myconf} || die "Problem configuring PBXT storage engine" 697 econf ${myconf} || die "Problem configuring PBXT storage engine"
601} 698}
602 699
603pbxt_src_compile() { 700pbxt_src_compile() {
701
604 # Be backwards compatible for now 702 # Be backwards compatible for now
605 if [[ $EAPI != 2 ]]; then 703 if [[ $EAPI != 2 ]]; then
606 pbxt_src_configure 704 pbxt_src_configure
607 fi 705 fi
608 # TODO: is it safe/needed to use emake here ? 706 # TODO: is it safe/needed to use emake here ?
637 fi 735 fi
638 fi 736 fi
639 737
640 # Check for USE flag problems in pkg_setup 738 # Check for USE flag problems in pkg_setup
641 if use static && use ssl ; then 739 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!" 740 M="MySQL does not support being built statically with SSL support enabled!"
741 eerror "${M}"
742 die "${M}"
644 fi 743 fi
645 744
646 if ! mysql_version_is_at_least "5.0" \ 745 if ! mysql_version_is_at_least "5.0" \
647 && use raid \ 746 && use raid \
648 && use static ; then 747 && use static ; then
650 eerror "with RAID support enabled." 749 eerror "with RAID support enabled."
651 die "USE flags 'raid' and 'static' conflict!" 750 die "USE flags 'raid' and 'static' conflict!"
652 fi 751 fi
653 752
654 if mysql_version_is_at_least "4.1.3" \ 753 if mysql_version_is_at_least "4.1.3" \
655 && ( use cluster || use extraengine ) \ 754 && ( use cluster || use extraengine || use embedded ) \
656 && use minimal ; then 755 && 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!" 756 M="USE flags 'cluster', 'extraengine', 'embedded' conflict with 'minimal' USE flag!"
757 eerror "${M}"
758 die "${M}"
659 fi 759 fi
660 760
661 # Bug #290570 fun. Upstream made us need a fairly new GCC4.
662 if mysql_version_is_at_least "5.0.83" ; then 761 if mysql_version_is_at_least "5.1" \
762 && xtradb_patch_available \
763 && use xtradb \
764 && use embedded ; then
765 M="USE flags 'xtradb' and 'embedded' conflict and cause build failures"
766 eerror "${M}"
767 die "${M}"
768 fi
769
770 # Bug #290570, 284946, 307251
771 # Upstream changes made us need a fairly new GCC4.
772 # But only for 5.0.8[3-6]!
773 if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then
663 GCC_VER=$(gcc-version) 774 GCC_VER=$(gcc-version)
664 case ${GCC_VER} in 775 case ${GCC_VER} in
665 2*|3*|4.0|4.1|4.2) die "Active GCC too old! Must have at least GCC4.3" ;; 776 2*|3*|4.0|4.1|4.2)
777 eerror "Some releases of MySQL required a very new GCC, and then"
778 eerror "later release relaxed that requirement again. Either pick a"
779 eerror "MySQL >=5.0.87, or use a newer GCC."
780 die "Active GCC too old!" ;;
666 esac 781 esac
667 fi 782 fi
668 783
669 # This should come after all of the die statements 784 # This should come after all of the die statements
670 enewgroup mysql 60 || die "problem adding 'mysql' group" 785 enewgroup mysql 60 || die "problem adding 'mysql' group"
723 838
724 # last -fPIC fixup, per bug #305873 839 # last -fPIC fixup, per bug #305873
725 i="${S}"/storage/innodb_plugin/plug.in 840 i="${S}"/storage/innodb_plugin/plug.in
726 [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}" 841 [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}"
727 842
728 # Additional checks, remove bundled zlib 843 # Additional checks, remove bundled zlib (Cluster needs this, for static
844 # memory management in zlib, leave available for Cluster)
845 if [[ "${PN}" != "mysql-cluster" ]] ; then
729 rm -f "${S}/zlib/"*.[ch] 846 rm -f "${S}/zlib/"*.[ch]
730 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 847 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
848 fi
731 rm -f "scripts/mysqlbug" 849 rm -f "scripts/mysqlbug"
732 850
733 # Make charsets install in the right place 851 # Make charsets install in the right place
734 find . -name 'Makefile.am' \ 852 find . -name 'Makefile.am' \
735 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 853 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
746 fi 864 fi
747 865
748 local rebuilddirlist d 866 local rebuilddirlist d
749 867
750 if xtradb_patch_available && use xtradb ; then 868 if xtradb_patch_available && use xtradb ; then
751 einfo "Replacing InnoDB with Percona XtraDB" 869 einfo "Adding storage engine: Percona XtraDB (replacing InnoDB)"
752 pushd "${S}"/storage 870 pushd "${S}"/storage >/dev/null
753 i="innobase" 871 i="innobase"
754 o="${WORKDIR}/storage-${i}.mysql-upstream" 872 o="${WORKDIR}/storage-${i}.mysql-upstream"
755 # Have we been here already? 873 # Have we been here already?
756 [ -d "${o}" ] && rm -f "${i}" 874 [ -d "${o}" ] && rm -f "${i}"
757 # Or maybe we haven't 875 # Or maybe we haven't
758 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}" 876 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}"
759 cp -ra "${WORKDIR}/${XTRADB_P}" "${i}" 877 cp -ral "${WORKDIR}/${XTRADB_P}" "${i}"
760 popd 878 popd >/dev/null
879 fi
880
881 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]] && use pbxt ; then
882 einfo "Adding storage engine: PBXT"
883 pushd "${S}"/storage >/dev/null
884 i='pbxt'
885 [ -d "${i}" ] && rm -rf "${i}"
886 cp -ral "${WORKDIR}/${PBXT_P}" "${i}"
887 popd >/dev/null
761 fi 888 fi
762 889
763 if mysql_version_is_at_least "5.1.12" ; then 890 if mysql_version_is_at_least "5.1.12" ; then
764 rebuilddirlist="." 891 rebuilddirlist="."
765 # This does not seem to be needed presently. robbat2 2010/02/23 892 # This does not seem to be needed presently. robbat2 2010/02/23
859 # TODO: Move this before autoreconf !!! 986 # TODO: Move this before autoreconf !!!
860 find . -type f -name Makefile -print0 \ 987 find . -type f -name Makefile -print0 \
861 | xargs -0 -n100 sed -i \ 988 | xargs -0 -n100 sed -i \
862 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 989 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
863 990
864 if [[ $EAPI == 2 ]]; then 991 if [[ $EAPI == 2 ]] && [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
865 pbxt_patch_available && use pbxt && pbxt_src_configure 992 pbxt_patch_available && use pbxt && pbxt_src_configure
866 fi 993 fi
867} 994}
868 995
869# @FUNCTION: mysql_src_compile 996# @FUNCTION: mysql_src_compile
876 0 | 1) mysql_src_configure ;; 1003 0 | 1) mysql_src_configure ;;
877 esac 1004 esac
878 1005
879 emake || die "emake failed" 1006 emake || die "emake failed"
880 1007
1008 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
881 pbxt_patch_available && use pbxt && pbxt_src_compile 1009 pbxt_patch_available && use pbxt && pbxt_src_compile
1010 fi
882} 1011}
883 1012
884# @FUNCTION: mysql_src_install 1013# @FUNCTION: mysql_src_install
885# @DESCRIPTION: 1014# @DESCRIPTION:
886# Install mysql. 1015# Install mysql.
892 DESTDIR="${D}" \ 1021 DESTDIR="${D}" \
893 benchdir_root="${MY_SHAREDSTATEDIR}" \ 1022 benchdir_root="${MY_SHAREDSTATEDIR}" \
894 testroot="${MY_SHAREDSTATEDIR}" \ 1023 testroot="${MY_SHAREDSTATEDIR}" \
895 || die "emake install failed" 1024 || die "emake install failed"
896 1025
1026 if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then
897 pbxt_patch_available && use pbxt && pbxt_src_install 1027 pbxt_patch_available && use pbxt && pbxt_src_install
1028 fi
898 1029
899 # Convenience links 1030 # Convenience links
900 einfo "Making Convenience links for mysqlcheck multi-call binary" 1031 einfo "Making Convenience links for mysqlcheck multi-call binary"
901 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 1032 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
902 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 1033 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
1168 # Figure out which options we need to disable to do the setup 1299 # Figure out which options we need to disable to do the setup
1169 helpfile="${TMPDIR}/mysqld-help" 1300 helpfile="${TMPDIR}/mysqld-help"
1170 ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null 1301 ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null
1171 for opt in grant-tables host-cache name-resolve networking slave-start bdb \ 1302 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 \ 1303 federated innodb ssl log-bin relay-log slow-query-log external-locking \
1304 ndbcluster \
1173 ; do 1305 ; do
1174 optexp="--(skip-)?${opt}" optfull="--skip-${opt}" 1306 optexp="--(skip-)?${opt}" optfull="--skip-${opt}"
1175 egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}" 1307 egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
1176 done 1308 done
1177 # But some options changed names 1309 # But some options changed names
1198 --user=mysql \ 1330 --user=mysql \
1199 --basedir=${ROOT}/usr \ 1331 --basedir=${ROOT}/usr \
1200 --datadir=${ROOT}/${MY_DATADIR} \ 1332 --datadir=${ROOT}/${MY_DATADIR} \
1201 --max_allowed_packet=8M \ 1333 --max_allowed_packet=8M \
1202 --net_buffer_length=16K \ 1334 --net_buffer_length=16K \
1335 --default-storage-engine=MyISAM \
1203 --socket=${socket} \ 1336 --socket=${socket} \
1204 --pid-file=${pidfile}" 1337 --pid-file=${pidfile}"
1205 #einfo "About to start mysqld: ${mysqld}" 1338 #einfo "About to start mysqld: ${mysqld}"
1206 ebegin "Starting mysqld" 1339 ebegin "Starting mysqld"
1207 ${mysqld} & 1340 ${mysqld} &

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

  ViewVC Help
Powered by ViewVC 1.1.20