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

Diff of /eclass/mysql.eclass

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

Revision 1.98 Revision 1.106
1# Copyright 1999-2007 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.98 2008/11/14 01:46:24 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.106 2009/02/11 11:29:48 robbat2 Exp $
4 4
5# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 5# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
6# Maintainer: MySQL Team <mysql-bugs@gentoo.org> 6# Maintainer: MySQL Team <mysql-bugs@gentoo.org>
7# - Luca Longinotti <chtekk@gentoo.org> 7# - Luca Longinotti <chtekk@gentoo.org>
8# - Robin H. Johnson <robbat2@gentoo.org> 8# - Robin H. Johnson <robbat2@gentoo.org>
9 9
10WANT_AUTOCONF="latest" 10WANT_AUTOCONF="latest"
11WANT_AUTOMAKE="latest" 11WANT_AUTOMAKE="latest"
12 12
13inherit eutils flag-o-matic gnuconfig autotools mysql_fx 13inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator
14 14
15# Shorten the path because the socket path length must be shorter than 107 chars 15# Shorten the path because the socket path length must be shorter than 107 chars
16# and we will run a mysql server during test phase 16# and we will run a mysql server during test phase
17S="${WORKDIR}/mysql" 17S="${WORKDIR}/mysql"
18 18
80[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" 80[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
81 81
82 82
83# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 83# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
84PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 84PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
85
86# For other stuff to bring us in
87PDEPEND="${PDEPEND} =virtual/mysql-$(get_version_component_range 1-2 ${PV})"
85 88
86# Work out the default SERVER_URI correctly 89# Work out the default SERVER_URI correctly
87if [ -z "${SERVER_URI}" ]; then 90if [ -z "${SERVER_URI}" ]; then
88 # The community build is on the mirrors 91 # The community build is on the mirrors
89 if [ "${PN}" == "mysql-community" ]; then 92 if [ "${PN}" == "mysql-community" ]; then
313 mysql_version_is_at_least "4.1.3" \ 316 mysql_version_is_at_least "4.1.3" \
314 && use cluster \ 317 && use cluster \
315 && myconf="${myconf} --without-ndb-debug" 318 && myconf="${myconf} --without-ndb-debug"
316 fi 319 fi
317 320
321 if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then
322 ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
323 ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
324 ewarn "You MUST file bugs without these variables set."
325 myconf="${myconf} --with-charset=${MYSQL_DEFAULT_CHARSET}"
326 myconf="${myconf} --with-collation=${MYSQL_DEFAULT_COLLATION}"
318 if mysql_version_is_at_least "4.1" && ! use latin1 ; then 327 elif mysql_version_is_at_least "4.1" && ! use latin1 ; then
319 myconf="${myconf} --with-charset=utf8" 328 myconf="${myconf} --with-charset=utf8"
320 myconf="${myconf} --with-collation=utf8_general_ci" 329 myconf="${myconf} --with-collation=utf8_general_ci"
321 else 330 else
322 myconf="${myconf} --with-charset=latin1" 331 myconf="${myconf} --with-charset=latin1"
323 myconf="${myconf} --with-collation=latin1_swedish_ci" 332 myconf="${myconf} --with-collation=latin1_swedish_ci"
324 fi 333 fi
325 334
326 if use embedded ; then 335 if use embedded ; then
327 myconf="${myconf} --with-embedded-privilege-control" 336 myconf="${myconf} --with-embedded-privilege-control"
328 myconf="${myconf} --with-embedded-server" 337 myconf="${myconf} --with-embedded-server"
350 if mysql_version_is_at_least "5.1.11" ; then 359 if mysql_version_is_at_least "5.1.11" ; then
351 myconf="${myconf} $(use_with ssl)" 360 myconf="${myconf} $(use_with ssl)"
352 else 361 else
353 myconf="${myconf} $(use_with ssl openssl)" 362 myconf="${myconf} $(use_with ssl openssl)"
354 fi 363 fi
355 364
356 if mysql_version_is_at_least "5.0.60" ; then 365 if mysql_version_is_at_least "5.0.60" ; then
357 if use berkdb ; then 366 if use berkdb ; then
358 elog "Berkeley DB support was disabled due to build failures" 367 elog "Berkeley DB support was disabled due to build failures"
359 elog "on multiple arches, go to a version earlier than 5.0.60" 368 elog "on multiple arches, go to a version earlier than 5.0.60"
360 elog "if you want it again. Gentoo bug #224067." 369 elog "if you want it again. Gentoo bug #224067."
397 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html" 406 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
398 myconf="${myconf} --with-federated-storage-engine" 407 myconf="${myconf} --with-federated-storage-engine"
399 fi 408 fi
400 fi 409 fi
401 410
411 if [ "${PN}" == "mysql-community" ]; then
412 myconf="${myconf} --enable-community-features"
413 fi
414
402 mysql_version_is_at_least "5.0.18" \ 415 mysql_version_is_at_least "5.0.18" \
403 && use max-idx-128 \ 416 && use max-idx-128 \
404 && myconf="${myconf} --with-max-indexes=128" 417 && myconf="${myconf} --with-max-indexes=128"
405} 418}
406 419
481 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." 494 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
482 fi 495 fi
483 fi 496 fi
484 fi 497 fi
485 498
486 # Bug #213475 - MySQL _will_ object strenously if your machine is named
487 # localhost. Also causes weird failures.
488 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
489
490 # Check for USE flag problems in pkg_setup 499 # Check for USE flag problems in pkg_setup
491 if use static && use ssl ; then 500 if use static && use ssl ; then
492 eerror "MySQL does not support being built statically with SSL support enabled!" 501 eerror "MySQL does not support being built statically with SSL support enabled!"
493 die "MySQL does not support being built statically with SSL support enabled!" 502 die "MySQL does not support being built statically with SSL support enabled!"
494 fi 503 fi
505 && ( use cluster || use extraengine ) \ 514 && ( use cluster || use extraengine ) \
506 && use minimal ; then 515 && use minimal ; then
507 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 516 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
508 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 517 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
509 fi 518 fi
510 519
511 # This should come after all of the die statements 520 # This should come after all of the die statements
512 enewgroup mysql 60 || die "problem adding 'mysql' group" 521 enewgroup mysql 60 || die "problem adding 'mysql' group"
513 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 522 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
514 523
515 mysql_check_version_range "4.0 to 5.0.99.99" \ 524 mysql_check_version_range "4.0 to 5.0.99.99" \
631 # Bug #114895, bug #110149 640 # Bug #114895, bug #110149
632 filter-flags "-O" "-O[01]" 641 filter-flags "-O" "-O[01]"
633 642
634 # glib-2.3.2_pre fix, bug #16496 643 # glib-2.3.2_pre fix, bug #16496
635 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 644 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
645
646 # As discovered by bug #246652, doing a double-level of SSP causes NDB to
647 # fail badly during cluster startup.
648 if [[ $(gcc-major-version) -lt 4 ]]; then
649 filter-flags "-fstack-protector-all"
650 fi
636 651
637 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing" 652 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
638 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti" 653 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
639 mysql_version_is_at_least "5.0" \ 654 mysql_version_is_at_least "5.0" \
640 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 655 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
670 685
671 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" 686 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
672 687
673 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install 688 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
674 689
675 insinto "${MY_INCLUDEDIR}"
676 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
677
678 # Convenience links 690 # Convenience links
691 einfo "Making Convenience links for mysqlcheck multi-call binary"
679 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 692 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
680 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 693 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
681 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 694 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
682 695
683 # Various junk (my-*.cnf moved elsewhere) 696 # Various junk (my-*.cnf moved elsewhere)
697 einfo "Removing duplicate /usr/share/mysql files"
684 rm -Rf "${D}/usr/share/info" 698 rm -Rf "${D}/usr/share/info"
685 for removeme in "mysql-log-rotate" mysql.server* \ 699 for removeme in "mysql-log-rotate" mysql.server* \
686 binary-configure* my-*.cnf mi_test_all* 700 binary-configure* my-*.cnf mi_test_all*
687 do 701 do
688 rm -f "${D}"/usr/share/mysql/${removeme} 702 rm -f "${D}"/usr/share/mysql/${removeme}
689 done 703 done
690 704
691 # Clean up stuff for a minimal build 705 # Clean up stuff for a minimal build
692 if use minimal ; then 706 if use minimal ; then
707 einfo "Remove all extra content for minimal build"
693 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 708 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
694 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} 709 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}
695 rm -f "${D}/usr/sbin/mysqld" 710 rm -f "${D}/usr/sbin/mysqld"
696 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 711 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
697 fi 712 fi
700 if mysql_version_is_at_least "4.1" ; then 715 if mysql_version_is_at_least "4.1" ; then
701 mysql_mycnf_version="4.1" 716 mysql_mycnf_version="4.1"
702 else 717 else
703 mysql_mycnf_version="4.0" 718 mysql_mycnf_version="4.0"
704 fi 719 fi
720 einfo "Building default my.cnf"
705 insinto "${MY_SYSCONFDIR}" 721 insinto "${MY_SYSCONFDIR}"
706 doins scripts/mysqlaccess.conf 722 doins scripts/mysqlaccess.conf
707 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ 723 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
708 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 724 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
709 > "${TMPDIR}/my.cnf.ok" 725 > "${TMPDIR}/my.cnf.ok"
712 fi 728 fi
713 newins "${TMPDIR}/my.cnf.ok" my.cnf 729 newins "${TMPDIR}/my.cnf.ok" my.cnf
714 730
715 # Minimal builds don't have the MySQL server 731 # Minimal builds don't have the MySQL server
716 if ! use minimal ; then 732 if ! use minimal ; then
733 einfo "Creating initial directories"
717 # Empty directories ... 734 # Empty directories ...
718 diropts "-m0750" 735 diropts "-m0750"
719 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 736 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
720 dodir "${MY_DATADIR}" 737 dodir "${MY_DATADIR}"
721 keepdir "${MY_DATADIR}" 738 keepdir "${MY_DATADIR}"
729 chown -R mysql:mysql "${D}/${folder}" 746 chown -R mysql:mysql "${D}/${folder}"
730 done 747 done
731 fi 748 fi
732 749
733 # Docs 750 # Docs
751 einfo "Installing docs"
734 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 752 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
735 doinfo "${S}"/Docs/mysql.info 753 doinfo "${S}"/Docs/mysql.info
736 754
737 # Minimal builds don't have the MySQL server 755 # Minimal builds don't have the MySQL server
738 if ! use minimal ; then 756 if ! use minimal ; then
757 einfo "Including support files and sample configurations"
739 docinto "support-files" 758 docinto "support-files"
740 for script in \ 759 for script in \
741 "${S}"/support-files/my-*.cnf \ 760 "${S}"/support-files/my-*.cnf \
742 "${S}"/support-files/magic \ 761 "${S}"/support-files/magic \
743 "${S}"/support-files/ndb-config-2-node.ini 762 "${S}"/support-files/ndb-config-2-node.ini
833 ewarn "You have already a MySQL database in place." 852 ewarn "You have already a MySQL database in place."
834 ewarn "(${ROOT}/${MY_DATADIR}/*)" 853 ewarn "(${ROOT}/${MY_DATADIR}/*)"
835 ewarn "Please rename or delete it if you wish to replace it." 854 ewarn "Please rename or delete it if you wish to replace it."
836 die "MySQL database already exists!" 855 die "MySQL database already exists!"
837 fi 856 fi
857
858 # Bug #213475 - MySQL _will_ object strenously if your machine is named
859 # localhost. Also causes weird failures.
860 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
838 861
839 einfo "Creating the mysql database and setting proper" 862 einfo "Creating the mysql database and setting proper"
840 einfo "permissions on it ..." 863 einfo "permissions on it ..."
841 864
842 einfo "Insert a password for the mysql 'root' user" 865 einfo "Insert a password for the mysql 'root' user"

Legend:
Removed from v.1.98  
changed lines
  Added in v.1.106

  ViewVC Help
Powered by ViewVC 1.1.20