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

Diff of /eclass/mysql.eclass

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

Revision 1.155 Revision 1.159
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.155 2010/11/02 20:27:41 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.159 2011/04/21 12:15:19 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>
143 143
144RDEPEND="${DEPEND} 144RDEPEND="${DEPEND}
145 !minimal? ( dev-db/mysql-init-scripts ) 145 !minimal? ( dev-db/mysql-init-scripts )
146 selinux? ( sec-policy/selinux-mysql )" 146 selinux? ( sec-policy/selinux-mysql )"
147 147
148if [ "${EAPI:-0}" = "2" ]; then
149 DEPEND="${DEPEND} static? ( || ( sys-libs/ncurses[static-libs] <=sys-libs/ncurses-5.7-r3 ) )"
150fi
151
148# compile-time-only 152# compile-time-only
149mysql_version_is_at_least "5.1" \ 153mysql_version_is_at_least "5.1" \
150|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" 154|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
151 155
152# compile-time-only 156# compile-time-only
153mysql_version_is_at_least "5.1.12" \ 157mysql_version_is_at_least "5.1.12" \
154&& DEPEND="${DEPEND} >=dev-util/cmake-2.4.3" 158&& DEPEND="${DEPEND} >=dev-util/cmake-2.4.3"
159
160[[ "${PN}" == "mariadb" ]] \
161&& mysql_version_is_at_least "5.2" \
162&& DEPEND="${DEPEND} oqgraph? ( >=dev-libs/boost-1.40.0 )"
163#SphinxSE is included but is not available in 5.2.4 due to a missing plug.in file
164# sphinx? ( app-misc/sphinx )"
155 165
156# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 166# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
157PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 167PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
158 168
159# For other stuff to bring us in 169# For other stuff to bring us in
238[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \ 248[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
239&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling" 249&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling"
240 250
241[[ "${PN}" == "mariadb" ]] \ 251[[ "${PN}" == "mariadb" ]] \
242&& IUSE="${IUSE} libevent" 252&& IUSE="${IUSE} libevent"
253
254[[ "${PN}" == "mariadb" ]] \
255&& mysql_version_is_at_least "5.2" \
256&& IUSE="${IUSE} oqgraph"
257#SphinxSE is included but is not available in 5.2.4 due to a missing plug.in file
258#&& IUSE="${IUSE} oqgraph sphinx"
243 259
244# MariaDB has integrated PBXT 260# MariaDB has integrated PBXT
245# PBXT_VERSION means that we have a PBXT patch for this PV 261# PBXT_VERSION means that we have a PBXT patch for this PV
246# PBXT was only introduced after 5.1.12 262# PBXT was only introduced after 5.1.12
247pbxt_patch_available() { 263pbxt_patch_available() {
620 fi 636 fi
621 # Now the extras 637 # Now the extras
622 if use extraengine ; then 638 if use extraengine ; then
623 # like configuration=max-no-ndb, archive and example removed in 5.1.11 639 # like configuration=max-no-ndb, archive and example removed in 5.1.11
624 # not added yet: ibmdb2i 640 # not added yet: ibmdb2i
625 # Not supporting as examples: example,daemon_example,ftexample 641 # Not supporting as examples: example,daemon_example,ftexample
626 plugins_sta="${plugins_sta} partition" 642 plugins_sta="${plugins_sta} partition"
627 plugins_dyn="${plugins_sta} federated"
628 643
629 if [[ "${PN}" != "mariadb" ]] ; then 644 if [[ "${PN}" != "mariadb" ]] ; then
630 elog "Before using the Federated storage engine, please be sure to read" 645 elog "Before using the Federated storage engine, please be sure to read"
631 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" 646 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
647 plugins_dyn="${plugins_sta} federated"
632 else 648 else
633 elog "MariaDB includes the FederatedX engine. Be sure to read" 649 elog "MariaDB includes the FederatedX engine. Be sure to read"
634 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine" 650 elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine"
651 plugins_dyn="${plugins_sta} federatedx"
635 fi 652 fi
636 else 653 else
637 plugins_dis="${plugins_dis} partition federated" 654 plugins_dis="${plugins_dis} partition federated"
638 fi 655 fi
639 656
657 fi 674 fi
658 675
659 if [[ "${PN}" == "mariadb" ]] ; then 676 if [[ "${PN}" == "mariadb" ]] ; then
660 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not 677 # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not
661 # caught above. 678 # caught above.
679 # This is not optional, without it several upstream testcases fail.
680 # Also strongly recommended by upstream.
681 if [[ "${PV}" < "5.2.0" ]] ; then
682 myconf="${myconf} --with-maria-tmp-tables"
662 plugins_sta="${plugins_sta} maria" 683 plugins_sta="${plugins_sta} maria"
684 else
685 myconf="${myconf} --with-aria-tmp-tables"
686 plugins_sta="${plugins_sta} aria"
687 fi
663 688
664 [ -e "${S}"/storage/innobase ] || [ -e "${S}"/storage/xtradb ] || 689 [ -e "${S}"/storage/innobase ] || [ -e "${S}"/storage/xtradb ] ||
665 die "The ${P} package doesn't provide innobase nor xtradb" 690 die "The ${P} package doesn't provide innobase nor xtradb"
666 691
667 for i in innobase xtradb ; do 692 for i in innobase xtradb ; do
668 [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}" 693 [ -e "${S}"/storage/${i} ] && plugins_sta="${plugins_sta} ${i}"
669 done 694 done
670 695
671 myconf="${myconf} $(use_with libevent)" 696 myconf="${myconf} $(use_with libevent)"
672 # This is not optional, without it several upstream testcases fail. 697
673 # Also strongly recommended by upstream. 698 if mysql_version_is_at_least "5.2" ; then
674 myconf="${myconf} --with-maria-tmp-tables" 699 #This should include sphinx, but the 5.2.4 archive forgot the plug.in file
700 #for i in oqgraph sphinx ; do
701 for i in oqgraph ; do
702 use ${i} \
703 && plugins_dyn="${plugins_dyn} ${i}" \
704 || plugins_dis="${plugins_dis} ${i}"
705 done
706 fi
675 fi 707 fi
676 708
677 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then 709 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then
678 use pbxt \ 710 use pbxt \
679 && plugins_dyn="${plugins_dyn} pbxt" \ 711 && plugins_dyn="${plugins_dyn} pbxt" \
747 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." 779 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
748 fi 780 fi
749 fi 781 fi
750 fi 782 fi
751 783
784 # bug 350844
785 case "${EAPI:-0}" in
786 0 | 1)
787 if use static && !built_with_use sys-libs/ncurses static-libs; then
788 die "To build MySQL statically you need to enable static-libs for sys-libs/ncurses"
789 fi
790 ;;
791 esac
792
752 # Check for USE flag problems in pkg_setup 793 # Check for USE flag problems in pkg_setup
753 if use static && use ssl ; then 794 if use static && use ssl ; then
754 M="MySQL does not support being built statically with SSL support enabled!" 795 M="MySQL does not support being built statically with SSL support enabled!"
755 eerror "${M}" 796 eerror "${M}"
756 die "${M}" 797 die "${M}"
798 fi
799
800 if mysql_version_is_at_least "5.1.51" \
801 && ! mysql_version_is_at_least "5.2" \
802 && use debug ; then
803 # Also in package.use.mask
804 die "Bug #344885: Upstream has broken USE=debug for 5.1 series >=5.1.51"
757 fi 805 fi
758 806
759 if ! mysql_version_is_at_least "5.0" \ 807 if ! mysql_version_is_at_least "5.0" \
760 && use raid \ 808 && use raid \
761 && use static ; then 809 && use static ; then
785 # Upstream changes made us need a fairly new GCC4. 833 # Upstream changes made us need a fairly new GCC4.
786 # But only for 5.0.8[3-6]! 834 # But only for 5.0.8[3-6]!
787 if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then 835 if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then
788 GCC_VER=$(gcc-version) 836 GCC_VER=$(gcc-version)
789 case ${GCC_VER} in 837 case ${GCC_VER} in
790 2*|3*|4.0|4.1|4.2) 838 2*|3*|4.0|4.1|4.2)
791 eerror "Some releases of MySQL required a very new GCC, and then" 839 eerror "Some releases of MySQL required a very new GCC, and then"
792 eerror "later release relaxed that requirement again. Either pick a" 840 eerror "later release relaxed that requirement again. Either pick a"
793 eerror "MySQL >=5.0.87, or use a newer GCC." 841 eerror "MySQL >=5.0.87, or use a newer GCC."
794 die "Active GCC too old!" ;; 842 die "Active GCC too old!" ;;
795 esac 843 esac
890 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}" 938 [ -d "${i}" -a ! -d "${o}" ] && mv "${i}" "${o}"
891 cp -ral "${WORKDIR}/${XTRADB_P}" "${i}" 939 cp -ral "${WORKDIR}/${XTRADB_P}" "${i}"
892 popd >/dev/null 940 popd >/dev/null
893 fi 941 fi
894 942
895 if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]] && use pbxt ; then 943 if pbxt_patch_available && [[ "${PBXT_NEWSTYLE}" == "1" ]] && use pbxt ; then
896 einfo "Adding storage engine: PBXT" 944 einfo "Adding storage engine: PBXT"
897 pushd "${S}"/storage >/dev/null 945 pushd "${S}"/storage >/dev/null
898 i='pbxt' 946 i='pbxt'
899 [ -d "${i}" ] && rm -rf "${i}" 947 [ -d "${i}" ] && rm -rf "${i}"
900 cp -ral "${WORKDIR}/${PBXT_P}" "${i}" 948 cp -ral "${WORKDIR}/${PBXT_P}" "${i}"
980 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 1028 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
981 export CXXFLAGS 1029 export CXXFLAGS
982 1030
983 # bug #283926, with GCC4.4, this is required to get correct behavior. 1031 # bug #283926, with GCC4.4, this is required to get correct behavior.
984 append-flags -fno-strict-aliasing 1032 append-flags -fno-strict-aliasing
985 1033
986 # bug #335185, #335995, with >= GCC4.3.3 on x86 only, omit-frame-pointer 1034 # bug #335185, #335995, with >= GCC4.3.3 on x86 only, omit-frame-pointer
987 # causes a mis-compile. 1035 # causes a mis-compile.
988 # Upstream bugs: 1036 # Upstream bugs:
989 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38562 1037 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38562
990 # http://bugs.mysql.com/bug.php?id=45205 1038 # http://bugs.mysql.com/bug.php?id=45205
1002 --with-low-memory \ 1050 --with-low-memory \
1003 --with-client-ldflags=-lstdc++ \ 1051 --with-client-ldflags=-lstdc++ \
1004 --enable-thread-safe-client \ 1052 --enable-thread-safe-client \
1005 --with-comment="Gentoo Linux ${PF}" \ 1053 --with-comment="Gentoo Linux ${PF}" \
1006 --without-docs \ 1054 --without-docs \
1055 --with-LIBDIR="$(get_libdir)" \
1007 ${myconf} || die "econf failed" 1056 ${myconf} || die "econf failed"
1008 1057
1009 # TODO: Move this before autoreconf !!! 1058 # TODO: Move this before autoreconf !!!
1010 find . -type f -name Makefile -print0 \ 1059 find . -type f -name Makefile -print0 \
1011 | xargs -0 -n100 sed -i \ 1060 | xargs -0 -n100 sed -i \
1265 fi 1314 fi
1266 fi 1315 fi
1267 1316
1268 local pwd1="a" 1317 local pwd1="a"
1269 local pwd2="b" 1318 local pwd2="b"
1270 local MYSQL_ROOT_PASSWORD=''
1271 local maxtry=15 1319 local maxtry=15
1272 1320
1273 if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${ROOT}/root/.my.cnf" ]; then 1321 if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${ROOT}/root/.my.cnf" ]; then
1274 MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${ROOT}/root/.my.cnf")" 1322 MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${ROOT}/root/.my.cnf")"
1275 fi 1323 fi
1285 # localhost. Also causes weird failures. 1333 # localhost. Also causes weird failures.
1286 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" 1334 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
1287 1335
1288 if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then 1336 if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
1289 1337
1290 einfo "Please provide a password for the mysql 'root' user now," 1338 einfo "Please provide a password for the mysql 'root' user now, in the"
1291 einfo "or in the MYSQL_ROOT_PASSWORD env var." 1339 einfo "MYSQL_ROOT_PASSWORD env var or through the /root/.my.cnf file."
1292 ewarn "Avoid [\"'\\_%] characters in the password" 1340 ewarn "Avoid [\"'\\_%] characters in the password"
1293 read -rsp " >" pwd1 ; echo 1341 read -rsp " >" pwd1 ; echo
1294 1342
1295 einfo "Retype the password" 1343 einfo "Retype the password"
1296 read -rsp " >" pwd2 ; echo 1344 read -rsp " >" pwd2 ; echo

Legend:
Removed from v.1.155  
changed lines
  Added in v.1.159

  ViewVC Help
Powered by ViewVC 1.1.20