/[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.105
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.105 2009/02/11 11:28:16 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"
674 689
675 insinto "${MY_INCLUDEDIR}" 690 insinto "${MY_INCLUDEDIR}"
676 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 691 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
677 692
678 # Convenience links 693 # Convenience links
694 einfo "Making Convenience links for mysqlcheck multi-call binary"
679 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 695 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
680 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 696 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
681 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 697 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
682 698
683 # Various junk (my-*.cnf moved elsewhere) 699 # Various junk (my-*.cnf moved elsewhere)
700 einfo "Removing duplicate /usr/share/mysql files"
684 rm -Rf "${D}/usr/share/info" 701 rm -Rf "${D}/usr/share/info"
685 for removeme in "mysql-log-rotate" mysql.server* \ 702 for removeme in "mysql-log-rotate" mysql.server* \
686 binary-configure* my-*.cnf mi_test_all* 703 binary-configure* my-*.cnf mi_test_all*
687 do 704 do
688 rm -f "${D}"/usr/share/mysql/${removeme} 705 rm -f "${D}"/usr/share/mysql/${removeme}
689 done 706 done
690 707
691 # Clean up stuff for a minimal build 708 # Clean up stuff for a minimal build
692 if use minimal ; then 709 if use minimal ; then
710 einfo "Remove all extra content for minimal build"
693 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 711 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} 712 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" 713 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 714 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
697 fi 715 fi
700 if mysql_version_is_at_least "4.1" ; then 718 if mysql_version_is_at_least "4.1" ; then
701 mysql_mycnf_version="4.1" 719 mysql_mycnf_version="4.1"
702 else 720 else
703 mysql_mycnf_version="4.0" 721 mysql_mycnf_version="4.0"
704 fi 722 fi
723 einfo "Building default my.cnf"
705 insinto "${MY_SYSCONFDIR}" 724 insinto "${MY_SYSCONFDIR}"
706 doins scripts/mysqlaccess.conf 725 doins scripts/mysqlaccess.conf
707 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ 726 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
708 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 727 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
709 > "${TMPDIR}/my.cnf.ok" 728 > "${TMPDIR}/my.cnf.ok"
712 fi 731 fi
713 newins "${TMPDIR}/my.cnf.ok" my.cnf 732 newins "${TMPDIR}/my.cnf.ok" my.cnf
714 733
715 # Minimal builds don't have the MySQL server 734 # Minimal builds don't have the MySQL server
716 if ! use minimal ; then 735 if ! use minimal ; then
736 einfo "Creating initial directories"
717 # Empty directories ... 737 # Empty directories ...
718 diropts "-m0750" 738 diropts "-m0750"
719 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 739 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
720 dodir "${MY_DATADIR}" 740 dodir "${MY_DATADIR}"
721 keepdir "${MY_DATADIR}" 741 keepdir "${MY_DATADIR}"
729 chown -R mysql:mysql "${D}/${folder}" 749 chown -R mysql:mysql "${D}/${folder}"
730 done 750 done
731 fi 751 fi
732 752
733 # Docs 753 # Docs
754 einfo "Installing docs"
734 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 755 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
735 doinfo "${S}"/Docs/mysql.info 756 doinfo "${S}"/Docs/mysql.info
736 757
737 # Minimal builds don't have the MySQL server 758 # Minimal builds don't have the MySQL server
738 if ! use minimal ; then 759 if ! use minimal ; then
760 einfo "Including support files and sample configurations"
739 docinto "support-files" 761 docinto "support-files"
740 for script in \ 762 for script in \
741 "${S}"/support-files/my-*.cnf \ 763 "${S}"/support-files/my-*.cnf \
742 "${S}"/support-files/magic \ 764 "${S}"/support-files/magic \
743 "${S}"/support-files/ndb-config-2-node.ini 765 "${S}"/support-files/ndb-config-2-node.ini
833 ewarn "You have already a MySQL database in place." 855 ewarn "You have already a MySQL database in place."
834 ewarn "(${ROOT}/${MY_DATADIR}/*)" 856 ewarn "(${ROOT}/${MY_DATADIR}/*)"
835 ewarn "Please rename or delete it if you wish to replace it." 857 ewarn "Please rename or delete it if you wish to replace it."
836 die "MySQL database already exists!" 858 die "MySQL database already exists!"
837 fi 859 fi
860
861 # Bug #213475 - MySQL _will_ object strenously if your machine is named
862 # localhost. Also causes weird failures.
863 [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
838 864
839 einfo "Creating the mysql database and setting proper" 865 einfo "Creating the mysql database and setting proper"
840 einfo "permissions on it ..." 866 einfo "permissions on it ..."
841 867
842 einfo "Insert a password for the mysql 'root' user" 868 einfo "Insert a password for the mysql 'root' user"

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

  ViewVC Help
Powered by ViewVC 1.1.20