| 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.94 2008/05/29 05:33:49 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.104 2009/02/11 11:27:13 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 | |
| 10 | WANT_AUTOCONF="latest" |
10 | WANT_AUTOCONF="latest" |
| 11 | WANT_AUTOMAKE="latest" |
11 | WANT_AUTOMAKE="latest" |
| 12 | |
12 | |
| 13 | inherit eutils flag-o-matic gnuconfig autotools mysql_fx |
13 | inherit 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 |
| 17 | S="${WORKDIR}/mysql" |
17 | S="${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 |
| 84 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
84 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
|
|
85 | |
|
|
86 | # For other stuff to bring us in |
|
|
87 | PDEPEND="${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 |
| 87 | if [ -z "${SERVER_URI}" ]; then |
90 | if [ -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 |
| … | |
… | |
| 240 | fi |
243 | fi |
| 241 | elog "MySQL MY_DATADIR is ${MY_DATADIR}" |
244 | elog "MySQL MY_DATADIR is ${MY_DATADIR}" |
| 242 | |
245 | |
| 243 | if [[ -z "${PREVIOUS_DATADIR}" ]] ; then |
246 | if [[ -z "${PREVIOUS_DATADIR}" ]] ; then |
| 244 | if [[ -e "${MY_DATADIR}" ]] ; then |
247 | if [[ -e "${MY_DATADIR}" ]] ; then |
| 245 | elog "Previous datadir found, it's YOUR job to change" |
248 | # If you get this and you're wondering about it, see bug #207636 |
| 246 | elog "ownership and take care of it" |
249 | elog "MySQL datadir found in ${MY_DATADIR}" |
|
|
250 | elog "A new one will not be created." |
| 247 | PREVIOUS_DATADIR="yes" |
251 | PREVIOUS_DATADIR="yes" |
| 248 | else |
252 | else |
| 249 | PREVIOUS_DATADIR="no" |
253 | PREVIOUS_DATADIR="no" |
| 250 | fi |
254 | fi |
| 251 | export PREVIOUS_DATADIR |
255 | export PREVIOUS_DATADIR |
| … | |
… | |
| 312 | mysql_version_is_at_least "4.1.3" \ |
316 | mysql_version_is_at_least "4.1.3" \ |
| 313 | && use cluster \ |
317 | && use cluster \ |
| 314 | && myconf="${myconf} --without-ndb-debug" |
318 | && myconf="${myconf} --without-ndb-debug" |
| 315 | fi |
319 | fi |
| 316 | |
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}" |
| 317 | if mysql_version_is_at_least "4.1" && ! use latin1 ; then |
327 | elif mysql_version_is_at_least "4.1" && ! use latin1 ; then |
| 318 | myconf="${myconf} --with-charset=utf8" |
328 | myconf="${myconf} --with-charset=utf8" |
| 319 | myconf="${myconf} --with-collation=utf8_general_ci" |
329 | myconf="${myconf} --with-collation=utf8_general_ci" |
| 320 | else |
330 | else |
| 321 | myconf="${myconf} --with-charset=latin1" |
331 | myconf="${myconf} --with-charset=latin1" |
| 322 | myconf="${myconf} --with-collation=latin1_swedish_ci" |
332 | myconf="${myconf} --with-collation=latin1_swedish_ci" |
| 323 | fi |
333 | fi |
| 324 | |
334 | |
| 325 | if use embedded ; then |
335 | if use embedded ; then |
| 326 | myconf="${myconf} --with-embedded-privilege-control" |
336 | myconf="${myconf} --with-embedded-privilege-control" |
| 327 | myconf="${myconf} --with-embedded-server" |
337 | myconf="${myconf} --with-embedded-server" |
| … | |
… | |
| 350 | myconf="${myconf} $(use_with ssl)" |
360 | myconf="${myconf} $(use_with ssl)" |
| 351 | else |
361 | else |
| 352 | myconf="${myconf} $(use_with ssl openssl)" |
362 | myconf="${myconf} $(use_with ssl openssl)" |
| 353 | fi |
363 | fi |
| 354 | |
364 | |
|
|
365 | if mysql_version_is_at_least "5.0.60" ; then |
| 355 | if use berkdb ; then |
366 | if use berkdb ; then |
|
|
367 | elog "Berkeley DB support was disabled due to build failures" |
|
|
368 | elog "on multiple arches, go to a version earlier than 5.0.60" |
|
|
369 | elog "if you want it again. Gentoo bug #224067." |
|
|
370 | fi |
|
|
371 | myconf="${myconf} --without-berkeley-db" |
|
|
372 | elif use berkdb ; then |
| 356 | # The following fix is due to a bug with bdb on SPARC's. See: |
373 | # The following fix is due to a bug with bdb on SPARC's. See: |
| 357 | # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 |
374 | # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 |
| 358 | # It comes down to non-64-bit safety problems. |
375 | # It comes down to non-64-bit safety problems. |
| 359 | if use alpha || use amd64 || use hppa || use mips || use sparc ; then |
376 | if use alpha || use amd64 || use hppa || use mips || use sparc ; then |
| 360 | elog "Berkeley DB support was disabled due to compatibility issues on this arch" |
377 | elog "Berkeley DB support was disabled due to compatibility issues on this arch" |
| … | |
… | |
| 387 | if mysql_version_is_at_least "5.0.3" ; then |
404 | if mysql_version_is_at_least "5.0.3" ; then |
| 388 | elog "Before using the Federated storage engine, please be sure to read" |
405 | elog "Before using the Federated storage engine, please be sure to read" |
| 389 | elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html" |
406 | elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html" |
| 390 | myconf="${myconf} --with-federated-storage-engine" |
407 | myconf="${myconf} --with-federated-storage-engine" |
| 391 | fi |
408 | fi |
|
|
409 | fi |
|
|
410 | |
|
|
411 | if [ "${PN}" == "mysql-community" ]; then |
|
|
412 | myconf="${myconf} --enable-community-features" |
| 392 | fi |
413 | fi |
| 393 | |
414 | |
| 394 | mysql_version_is_at_least "5.0.18" \ |
415 | mysql_version_is_at_least "5.0.18" \ |
| 395 | && use max-idx-128 \ |
416 | && use max-idx-128 \ |
| 396 | && myconf="${myconf} --with-max-indexes=128" |
417 | && myconf="${myconf} --with-max-indexes=128" |
| … | |
… | |
| 468 | # |
489 | # |
| 469 | mysql_pkg_setup() { |
490 | mysql_pkg_setup() { |
| 470 | if hasq test ${FEATURES} ; then |
491 | if hasq test ${FEATURES} ; then |
| 471 | if ! use minimal ; then |
492 | if ! use minimal ; then |
| 472 | if [[ $UID -eq 0 ]]; then |
493 | if [[ $UID -eq 0 ]]; then |
| 473 | die "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." |
| 474 | fi |
495 | fi |
| 475 | fi |
496 | fi |
| 476 | fi |
497 | fi |
| 477 | |
|
|
| 478 | # Bug #213475 - MySQL _will_ object strenously if your machine is named |
|
|
| 479 | # localhost. Also causes weird failures. |
|
|
| 480 | [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" |
|
|
| 481 | |
498 | |
| 482 | # Check for USE flag problems in pkg_setup |
499 | # Check for USE flag problems in pkg_setup |
| 483 | if use static && use ssl ; then |
500 | if use static && use ssl ; then |
| 484 | 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!" |
| 485 | 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!" |
| … | |
… | |
| 497 | && ( use cluster || use extraengine ) \ |
514 | && ( use cluster || use extraengine ) \ |
| 498 | && use minimal ; then |
515 | && use minimal ; then |
| 499 | eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" |
516 | eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" |
| 500 | die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" |
517 | die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" |
| 501 | fi |
518 | fi |
| 502 | |
519 | |
| 503 | # This should come after all of the die statements |
520 | # This should come after all of the die statements |
| 504 | enewgroup mysql 60 || die "problem adding 'mysql' group" |
521 | enewgroup mysql 60 || die "problem adding 'mysql' group" |
| 505 | 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" |
| 506 | |
523 | |
| 507 | mysql_check_version_range "4.0 to 5.0.99.99" \ |
524 | mysql_check_version_range "4.0 to 5.0.99.99" \ |
| … | |
… | |
| 586 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
603 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
| 587 | && use berkdb ; then |
604 | && use berkdb ; then |
| 588 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
605 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
| 589 | cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
606 | cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
| 590 | || die "Could not copy libtool.m4 to bdb/dist/" |
607 | || die "Could not copy libtool.m4 to bdb/dist/" |
|
|
608 | #These files exist only with libtool-2*, and need to be included. |
|
|
609 | if [ -f '/usr/share/aclocal/ltsugar.m4' ]; then |
|
|
610 | cat "/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
611 | cat "/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
612 | cat "/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
613 | cat "/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
614 | fi |
| 591 | pushd "bdb/dist" &>/dev/null |
615 | pushd "bdb/dist" &>/dev/null |
| 592 | sh s_all \ |
616 | sh s_all \ |
| 593 | || die "Failed bdb reconfigure" |
617 | || die "Failed bdb reconfigure" |
| 594 | popd &>/dev/null |
618 | popd &>/dev/null |
| 595 | fi |
619 | fi |
| … | |
… | |
| 616 | # Bug #114895, bug #110149 |
640 | # Bug #114895, bug #110149 |
| 617 | filter-flags "-O" "-O[01]" |
641 | filter-flags "-O" "-O[01]" |
| 618 | |
642 | |
| 619 | # glib-2.3.2_pre fix, bug #16496 |
643 | # glib-2.3.2_pre fix, bug #16496 |
| 620 | 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 |
| 621 | |
651 | |
| 622 | CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing" |
652 | CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing" |
| 623 | CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti" |
653 | CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti" |
| 624 | mysql_version_is_at_least "5.0" \ |
654 | mysql_version_is_at_least "5.0" \ |
| 625 | && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" |
655 | && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" |
| … | |
… | |
| 818 | ewarn "You have already a MySQL database in place." |
848 | ewarn "You have already a MySQL database in place." |
| 819 | ewarn "(${ROOT}/${MY_DATADIR}/*)" |
849 | ewarn "(${ROOT}/${MY_DATADIR}/*)" |
| 820 | ewarn "Please rename or delete it if you wish to replace it." |
850 | ewarn "Please rename or delete it if you wish to replace it." |
| 821 | die "MySQL database already exists!" |
851 | die "MySQL database already exists!" |
| 822 | fi |
852 | fi |
|
|
853 | |
|
|
854 | # Bug #213475 - MySQL _will_ object strenously if your machine is named |
|
|
855 | # localhost. Also causes weird failures. |
|
|
856 | [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" |
| 823 | |
857 | |
| 824 | einfo "Creating the mysql database and setting proper" |
858 | einfo "Creating the mysql database and setting proper" |
| 825 | einfo "permissions on it ..." |
859 | einfo "permissions on it ..." |
| 826 | |
860 | |
| 827 | einfo "Insert a password for the mysql 'root' user" |
861 | einfo "Insert a password for the mysql 'root' user" |