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/Attic/mysql.eclass,v 1.87 2008/03/09 21:19:14 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/Attic/mysql.eclass,v 1.98 2008/11/14 01:46:24 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> |
… | |
… | |
34 | # MYSQL_VERSION_ID will be: |
34 | # MYSQL_VERSION_ID will be: |
35 | # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] |
35 | # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] |
36 | # This is an important part, because many of the choices the MySQL ebuild will do |
36 | # This is an important part, because many of the choices the MySQL ebuild will do |
37 | # depend on this variable. |
37 | # depend on this variable. |
38 | # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" |
38 | # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" |
|
|
39 | # We also strip off upstream's trailing letter that they use to respin tarballs |
39 | |
40 | |
40 | MYSQL_VERSION_ID="" |
41 | MYSQL_VERSION_ID="" |
|
|
42 | tpv="${PV%[a-z]}" |
41 | tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" |
43 | tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" |
42 | for vatom in 0 1 2 3 ; do |
44 | for vatom in 0 1 2 3 ; do |
43 | # pad to length 2 |
45 | # pad to length 2 |
44 | tpv[${vatom}]="00${tpv[${vatom}]}" |
46 | tpv[${vatom}]="00${tpv[${vatom}]}" |
45 | MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" |
47 | MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" |
46 | done |
48 | done |
47 | # strip leading "0" (otherwise it's considered an octal number by BASH) |
49 | # strip leading "0" (otherwise it's considered an octal number by BASH) |
48 | MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} |
50 | MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} |
49 | |
51 | |
50 | # Be warned, *DEPEND are version-dependant |
52 | # Be warned, *DEPEND are version-dependant |
|
|
53 | # These are used for both runtime and compiletime |
51 | DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) |
54 | DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) |
52 | userland_GNU? ( sys-process/procps ) |
55 | userland_GNU? ( sys-process/procps ) |
53 | >=sys-apps/sed-4 |
56 | >=sys-apps/sed-4 |
54 | >=sys-apps/texinfo-4.7-r1 |
57 | >=sys-apps/texinfo-4.7-r1 |
55 | >=sys-libs/readline-4.1 |
58 | >=sys-libs/readline-4.1 |
… | |
… | |
59 | for i in "" "-community" ; do |
62 | for i in "" "-community" ; do |
60 | [[ "${i}" == ${PN#mysql} ]] || |
63 | [[ "${i}" == ${PN#mysql} ]] || |
61 | DEPEND="${DEPEND} !dev-db/mysql${i}" |
64 | DEPEND="${DEPEND} !dev-db/mysql${i}" |
62 | done |
65 | done |
63 | |
66 | |
|
|
67 | RDEPEND="${DEPEND} |
|
|
68 | !minimal? ( dev-db/mysql-init-scripts ) |
|
|
69 | selinux? ( sec-policy/selinux-mysql )" |
|
|
70 | |
|
|
71 | # compile-time-only |
64 | mysql_version_is_at_least "5.1" \ |
72 | mysql_version_is_at_least "5.1" \ |
65 | || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" |
73 | || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" |
66 | |
74 | |
|
|
75 | # compile-time-only |
67 | mysql_version_is_at_least "5.1.12" \ |
76 | mysql_version_is_at_least "5.1.12" \ |
68 | && DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )" |
77 | && DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )" |
69 | |
78 | |
|
|
79 | # BitKeeper dependency, compile-time only |
|
|
80 | [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" |
|
|
81 | |
|
|
82 | |
70 | # 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 |
71 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
84 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
72 | |
|
|
73 | # BitKeeper dependency, compile-time only |
|
|
74 | [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" |
|
|
75 | |
85 | |
76 | # Work out the default SERVER_URI correctly |
86 | # Work out the default SERVER_URI correctly |
77 | if [ -z "${SERVER_URI}" ]; then |
87 | if [ -z "${SERVER_URI}" ]; then |
78 | # The community build is on the mirrors |
88 | # The community build is on the mirrors |
79 | if [ "${PN}" == "mysql-community" ]; then |
89 | if [ "${PN}" == "mysql-community" ]; then |
… | |
… | |
118 | mysql_version_is_at_least "5.1" \ |
128 | mysql_version_is_at_least "5.1" \ |
119 | || IUSE="${IUSE} berkdb" |
129 | || IUSE="${IUSE} berkdb" |
120 | |
130 | |
121 | mysql_version_is_at_least "5.1.12" \ |
131 | mysql_version_is_at_least "5.1.12" \ |
122 | && IUSE="${IUSE} pbxt" |
132 | && IUSE="${IUSE} pbxt" |
123 | |
|
|
124 | RDEPEND="${DEPEND} |
|
|
125 | !minimal? ( dev-db/mysql-init-scripts ) |
|
|
126 | selinux? ( sec-policy/selinux-mysql )" |
|
|
127 | |
133 | |
128 | EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ |
134 | EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ |
129 | pkg_postinst pkg_config pkg_postrm |
135 | pkg_postinst pkg_config pkg_postrm |
130 | |
136 | |
131 | # |
137 | # |
… | |
… | |
222 | MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ |
228 | MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ |
223 | | sed -ne '/datadir/s|^--datadir=||p' \ |
229 | | sed -ne '/datadir/s|^--datadir=||p' \ |
224 | | tail -n1` |
230 | | tail -n1` |
225 | if [[ -z "${MY_DATADIR}" ]] ; then |
231 | if [[ -z "${MY_DATADIR}" ]] ; then |
226 | MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ |
232 | MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ |
227 | | sed -e 's/.*=\s*//'` |
233 | | sed -e 's/.*=\s*//' \ |
|
|
234 | | tail -n1` |
228 | fi |
235 | fi |
229 | fi |
236 | fi |
230 | if [[ -z "${MY_DATADIR}" ]] ; then |
237 | if [[ -z "${MY_DATADIR}" ]] ; then |
231 | MY_DATADIR="${MY_LOCALSTATEDIR}" |
238 | MY_DATADIR="${MY_LOCALSTATEDIR}" |
232 | einfo "Using default MY_DATADIR" |
239 | einfo "Using default MY_DATADIR" |
233 | fi |
240 | fi |
234 | elog "MySQL MY_DATADIR is ${MY_DATADIR}" |
241 | elog "MySQL MY_DATADIR is ${MY_DATADIR}" |
235 | |
242 | |
236 | if [[ -z "${PREVIOUS_DATADIR}" ]] ; then |
243 | if [[ -z "${PREVIOUS_DATADIR}" ]] ; then |
237 | if [[ -e "${MY_DATADIR}" ]] ; then |
244 | if [[ -e "${MY_DATADIR}" ]] ; then |
238 | elog "Previous datadir found, it's YOUR job to change" |
245 | # If you get this and you're wondering about it, see bug #207636 |
239 | elog "ownership and take care of it" |
246 | elog "MySQL datadir found in ${MY_DATADIR}" |
|
|
247 | elog "A new one will not be created." |
240 | PREVIOUS_DATADIR="yes" |
248 | PREVIOUS_DATADIR="yes" |
241 | else |
249 | else |
242 | PREVIOUS_DATADIR="no" |
250 | PREVIOUS_DATADIR="no" |
243 | fi |
251 | fi |
244 | export PREVIOUS_DATADIR |
252 | export PREVIOUS_DATADIR |
… | |
… | |
342 | if mysql_version_is_at_least "5.1.11" ; then |
350 | if mysql_version_is_at_least "5.1.11" ; then |
343 | myconf="${myconf} $(use_with ssl)" |
351 | myconf="${myconf} $(use_with ssl)" |
344 | else |
352 | else |
345 | myconf="${myconf} $(use_with ssl openssl)" |
353 | myconf="${myconf} $(use_with ssl openssl)" |
346 | fi |
354 | fi |
347 | |
355 | |
|
|
356 | if mysql_version_is_at_least "5.0.60" ; then |
348 | if use berkdb ; then |
357 | if use berkdb ; then |
|
|
358 | elog "Berkeley DB support was disabled due to build failures" |
|
|
359 | elog "on multiple arches, go to a version earlier than 5.0.60" |
|
|
360 | elog "if you want it again. Gentoo bug #224067." |
|
|
361 | fi |
|
|
362 | myconf="${myconf} --without-berkeley-db" |
|
|
363 | elif use berkdb ; then |
349 | # The following fix is due to a bug with bdb on SPARC's. See: |
364 | # The following fix is due to a bug with bdb on SPARC's. See: |
350 | # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 |
365 | # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 |
351 | # It comes down to non-64-bit safety problems. |
366 | # It comes down to non-64-bit safety problems. |
352 | if use alpha || use amd64 || use hppa || use mips || use sparc ; then |
367 | if use alpha || use amd64 || use hppa || use mips || use sparc ; then |
353 | elog "Berkeley DB support was disabled due to compatibility issues on this arch" |
368 | elog "Berkeley DB support was disabled due to compatibility issues on this arch" |
… | |
… | |
460 | # EBUILD FUNCTIONS |
475 | # EBUILD FUNCTIONS |
461 | # |
476 | # |
462 | mysql_pkg_setup() { |
477 | mysql_pkg_setup() { |
463 | if hasq test ${FEATURES} ; then |
478 | if hasq test ${FEATURES} ; then |
464 | if ! use minimal ; then |
479 | if ! use minimal ; then |
465 | if ! hasq userpriv ${FEATURES} ; then |
480 | if [[ $UID -eq 0 ]]; then |
466 | die "Testing with FEATURES=-userpriv is no longer supported by upstream" |
481 | eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." |
467 | fi |
482 | fi |
468 | fi |
483 | fi |
469 | fi |
484 | fi |
|
|
485 | |
|
|
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" |
470 | |
489 | |
471 | # Check for USE flag problems in pkg_setup |
490 | # Check for USE flag problems in pkg_setup |
472 | if use static && use ssl ; then |
491 | if use static && use ssl ; then |
473 | eerror "MySQL does not support being built statically with SSL support enabled!" |
492 | eerror "MySQL does not support being built statically with SSL support enabled!" |
474 | die "MySQL does not support being built statically with SSL support enabled!" |
493 | die "MySQL does not support being built statically with SSL support enabled!" |
… | |
… | |
575 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
594 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
576 | && use berkdb ; then |
595 | && use berkdb ; then |
577 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
596 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
578 | cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
597 | cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
579 | || die "Could not copy libtool.m4 to bdb/dist/" |
598 | || die "Could not copy libtool.m4 to bdb/dist/" |
|
|
599 | #These files exist only with libtool-2*, and need to be included. |
|
|
600 | if [ -f '/usr/share/aclocal/ltsugar.m4' ]; then |
|
|
601 | cat "/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
602 | cat "/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
603 | cat "/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
604 | cat "/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac" |
|
|
605 | fi |
580 | pushd "bdb/dist" &>/dev/null |
606 | pushd "bdb/dist" &>/dev/null |
581 | sh s_all \ |
607 | sh s_all \ |
582 | || die "Failed bdb reconfigure" |
608 | || die "Failed bdb reconfigure" |
583 | popd &>/dev/null |
609 | popd &>/dev/null |
584 | fi |
610 | fi |
… | |
… | |
704 | done |
730 | done |
705 | fi |
731 | fi |
706 | |
732 | |
707 | # Docs |
733 | # Docs |
708 | dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE |
734 | dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE |
709 | doinfo ${S}/Docs/mysql.info |
735 | doinfo "${S}"/Docs/mysql.info |
710 | |
736 | |
711 | # Minimal builds don't have the MySQL server |
737 | # Minimal builds don't have the MySQL server |
712 | if ! use minimal ; then |
738 | if ! use minimal ; then |
713 | docinto "support-files" |
739 | docinto "support-files" |
714 | for script in \ |
740 | for script in \ |
715 | support-files/my-*.cnf \ |
741 | "${S}"/support-files/my-*.cnf \ |
716 | support-files/magic \ |
742 | "${S}"/support-files/magic \ |
717 | support-files/ndb-config-2-node.ini |
743 | "${S}"/support-files/ndb-config-2-node.ini |
718 | do |
744 | do |
719 | dodoc "${script}" |
745 | dodoc "${script}" |
720 | done |
746 | done |
721 | |
747 | |
722 | docinto "scripts" |
748 | docinto "scripts" |
723 | for script in scripts/mysql* ; do |
749 | for script in "${S}"/scripts/mysql* ; do |
724 | [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
750 | [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
725 | done |
751 | done |
726 | |
752 | |
727 | fi |
753 | fi |
728 | |
754 | |
… | |
… | |
840 | die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
866 | die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
841 | fi |
867 | fi |
842 | popd &>/dev/null |
868 | popd &>/dev/null |
843 | [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ |
869 | [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ |
844 | || die "MySQL databases not installed" |
870 | || die "MySQL databases not installed" |
845 | chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null |
871 | chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
846 | chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null |
872 | chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
847 | |
873 | |
848 | if mysql_version_is_at_least "4.1.3" ; then |
874 | if mysql_version_is_at_least "4.1.3" ; then |
849 | options="--skip-ndbcluster" |
875 | options="--skip-ndbcluster" |
850 | |
876 | |
851 | # Filling timezones, see |
877 | # Filling timezones, see |