| 1 | # Copyright 1999-2009 Gentoo Foundation |
1 | # Copyright 1999-2012 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.159 2011/04/21 12:15:19 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.172 2012/07/23 10:57:15 jmbsvicetto Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: mysql.eclass |
5 | # @ECLASS: mysql.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Author: Francesco Riosa (Retired) <vivo@gentoo.org> |
|
|
| 8 | # Maintainers: MySQL Team <mysql-bugs@gentoo.org> |
7 | # MySQL Team <mysql-bugs@gentoo.org> |
| 9 | # - Luca Longinotti <chtekk@gentoo.org> |
8 | # Luca Longinotti <chtekk@gentoo.org> |
| 10 | # - Robin H. Johnson <robbat2@gentoo.org> |
9 | # Robin H. Johnson <robbat2@gentoo.org> |
|
|
10 | # @AUTHOR: |
|
|
11 | # Francesco Riosa (Retired) <vivo@gentoo.org> |
| 11 | # @BLURB: This eclass provides most of the functions for mysql ebuilds |
12 | # @BLURB: This eclass provides most of the functions for mysql ebuilds |
| 12 | # @DESCRIPTION: |
13 | # @DESCRIPTION: |
| 13 | # The mysql.eclass provides almost all the code to build the mysql ebuilds |
14 | # The mysql.eclass provides almost all the code to build the mysql ebuilds |
| 14 | # including the src_unpack, src_prepare, src_configure, src_compile, |
15 | # including the src_unpack, src_prepare, src_configure, src_compile, |
| 15 | # scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm |
16 | # scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm |
| 16 | # phase hooks. |
17 | # phase hooks. |
| 17 | |
18 | |
| 18 | WANT_AUTOCONF="latest" |
19 | WANT_AUTOCONF="latest" |
| 19 | WANT_AUTOMAKE="latest" |
20 | WANT_AUTOMAKE="latest" |
| 20 | |
21 | |
| 21 | inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator toolchain-funcs |
22 | inherit eutils flag-o-matic gnuconfig autotools multilib mysql_fx versionator toolchain-funcs |
| 22 | |
23 | |
| 23 | # Shorten the path because the socket path length must be shorter than 107 chars |
24 | # Shorten the path because the socket path length must be shorter than 107 chars |
| 24 | # and we will run a mysql server during test phase |
25 | # and we will run a mysql server during test phase |
| 25 | S="${WORKDIR}/mysql" |
26 | S="${WORKDIR}/mysql" |
| 26 | |
27 | |
| 27 | [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20090228-0714Z" |
28 | [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20090228-0714Z" |
| 28 | if [[ "${MY_EXTRAS_VER}" == "live" ]]; then |
29 | if [[ "${MY_EXTRAS_VER}" == "live" ]]; then |
| 29 | EGIT_PROJECT=mysql-extras |
30 | EGIT_PROJECT=mysql-extras |
| 30 | EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git" |
31 | EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git" |
| 31 | inherit git |
32 | inherit git-2 |
| 32 | fi |
33 | fi |
| 33 | |
34 | |
| 34 | case "${EAPI:-0}" in |
35 | case "${EAPI:-0}" in |
| 35 | 2) |
36 | 2 | 3 | 4) |
| 36 | EXPORT_FUNCTIONS pkg_setup \ |
37 | EXPORT_FUNCTIONS pkg_setup \ |
| 37 | src_unpack src_prepare \ |
38 | src_unpack src_prepare \ |
| 38 | src_configure src_compile \ |
39 | src_configure src_compile \ |
| 39 | src_install \ |
40 | src_install \ |
| 40 | pkg_preinst pkg_postinst \ |
41 | pkg_preinst pkg_postinst \ |
| … | |
… | |
| 124 | PERCONA_VER="${PERCONA_VER}" |
125 | PERCONA_VER="${PERCONA_VER}" |
| 125 | |
126 | |
| 126 | # Be warned, *DEPEND are version-dependant |
127 | # Be warned, *DEPEND are version-dependant |
| 127 | # These are used for both runtime and compiletime |
128 | # These are used for both runtime and compiletime |
| 128 | DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) |
129 | DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) |
| 129 | userland_GNU? ( sys-process/procps ) |
130 | kernel_linux? ( sys-process/procps ) |
| 130 | >=sys-apps/sed-4 |
131 | >=sys-apps/sed-4 |
| 131 | >=sys-apps/texinfo-4.7-r1 |
132 | >=sys-apps/texinfo-4.7-r1 |
| 132 | >=sys-libs/readline-4.1 |
133 | >=sys-libs/readline-4.1 |
| 133 | >=sys-libs/zlib-1.2.3" |
134 | >=sys-libs/zlib-1.2.3" |
| 134 | |
135 | |
| … | |
… | |
| 139 | for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do |
140 | for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do |
| 140 | [[ "${i}" == ${PN} ]] || |
141 | [[ "${i}" == ${PN} ]] || |
| 141 | DEPEND="${DEPEND} !dev-db/${i}" |
142 | DEPEND="${DEPEND} !dev-db/${i}" |
| 142 | done |
143 | done |
| 143 | |
144 | |
|
|
145 | # prefix: first need to implement something for #196294 |
| 144 | RDEPEND="${DEPEND} |
146 | RDEPEND="${DEPEND} |
| 145 | !minimal? ( dev-db/mysql-init-scripts ) |
147 | !minimal? ( !prefix? ( dev-db/mysql-init-scripts ) ) |
| 146 | selinux? ( sec-policy/selinux-mysql )" |
148 | selinux? ( sec-policy/selinux-mysql )" |
| 147 | |
149 | |
|
|
150 | DEPEND="${DEPEND} |
|
|
151 | virtual/yacc" |
|
|
152 | |
| 148 | if [ "${EAPI:-0}" = "2" ]; then |
153 | if [ "${EAPI:-0}" = "2" ]; then |
| 149 | DEPEND="${DEPEND} static? ( || ( sys-libs/ncurses[static-libs] <=sys-libs/ncurses-5.7-r3 ) )" |
154 | DEPEND="${DEPEND} static? ( sys-libs/ncurses[static-libs] )" |
| 150 | fi |
155 | fi |
| 151 | |
156 | |
| 152 | # compile-time-only |
157 | # compile-time-only |
| 153 | mysql_version_is_at_least "5.1" \ |
158 | mysql_version_is_at_least "5.1" \ |
| 154 | || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" |
159 | || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" |
| … | |
… | |
| 357 | # @DESCRIPTION: |
362 | # @DESCRIPTION: |
| 358 | # void mysql_init_vars() |
363 | # void mysql_init_vars() |
| 359 | # Initialize global variables |
364 | # Initialize global variables |
| 360 | # 2005-11-19 <vivo@gentoo.org> |
365 | # 2005-11-19 <vivo@gentoo.org> |
| 361 | mysql_init_vars() { |
366 | mysql_init_vars() { |
| 362 | MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} |
367 | MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"} |
| 363 | MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} |
368 | MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} |
| 364 | MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} |
369 | MY_LIBDIR=${MY_LIBDIR="${EPREFIX}/usr/$(get_libdir)/mysql"} |
| 365 | MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} |
370 | MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} |
| 366 | MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"} |
371 | MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"} |
| 367 | MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"} |
372 | MY_INCLUDEDIR=${MY_INCLUDEDIR="${EPREFIX}/usr/include/mysql"} |
| 368 | |
373 | |
| 369 | if [[ -z "${MY_DATADIR}" ]] ; then |
374 | if [[ -z "${MY_DATADIR}" ]] ; then |
| 370 | MY_DATADIR="" |
375 | MY_DATADIR="" |
| 371 | if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then |
376 | if [[ -f ${MY_SYSCONFDIR}/my.cnf ]] ; then |
| 372 | MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ |
377 | MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ |
| 373 | | sed -ne '/datadir/s|^--datadir=||p' \ |
378 | | sed -ne '/datadir/s|^--datadir=||p' \ |
| 374 | | tail -n1` |
379 | | tail -n1` |
| 375 | if [[ -z "${MY_DATADIR}" ]] ; then |
380 | if [[ -z "${MY_DATADIR}" ]] ; then |
| 376 | MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ |
381 | MY_DATADIR=`grep ^datadir ${MY_SYSCONFDIR}/my.cnf \ |
| 377 | | sed -e 's/.*=\s*//' \ |
382 | | sed -e 's/.*=\s*//' \ |
| 378 | | tail -n1` |
383 | | tail -n1` |
| 379 | fi |
384 | fi |
| 380 | fi |
385 | fi |
| 381 | if [[ -z "${MY_DATADIR}" ]] ; then |
386 | if [[ -z "${MY_DATADIR}" ]] ; then |
| … | |
… | |
| 453 | myconf="${myconf} $(use_with big-tables)" |
458 | myconf="${myconf} $(use_with big-tables)" |
| 454 | myconf="${myconf} --enable-local-infile" |
459 | myconf="${myconf} --enable-local-infile" |
| 455 | myconf="${myconf} --with-extra-charsets=all" |
460 | myconf="${myconf} --with-extra-charsets=all" |
| 456 | myconf="${myconf} --with-mysqld-user=mysql" |
461 | myconf="${myconf} --with-mysqld-user=mysql" |
| 457 | myconf="${myconf} --with-server" |
462 | myconf="${myconf} --with-server" |
| 458 | myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" |
463 | myconf="${myconf} --with-unix-socket-path=${EPREFIX}/var/run/mysqld/mysqld.sock" |
| 459 | myconf="${myconf} --without-libwrap" |
464 | myconf="${myconf} --without-libwrap" |
| 460 | |
465 | |
| 461 | if use static ; then |
466 | if use static ; then |
| 462 | myconf="${myconf} --with-mysqld-ldflags=-all-static" |
467 | myconf="${myconf} --with-mysqld-ldflags=-all-static" |
| 463 | myconf="${myconf} --with-client-ldflags=-all-static" |
468 | myconf="${myconf} --with-client-ldflags=-all-static" |
| … | |
… | |
| 498 | fi |
503 | fi |
| 499 | |
504 | |
| 500 | } |
505 | } |
| 501 | |
506 | |
| 502 | configure_40_41_50() { |
507 | configure_40_41_50() { |
|
|
508 | myconf="${myconf} --with-zlib-dir=${EPREFIX}/usr" |
| 503 | myconf="${myconf} $(use_with perl bench)" |
509 | myconf="${myconf} $(use_with perl bench)" |
| 504 | myconf="${myconf} --enable-assembler" |
510 | myconf="${myconf} --enable-assembler" |
| 505 | myconf="${myconf} --with-extra-tools" |
511 | myconf="${myconf} --with-extra-tools" |
| 506 | myconf="${myconf} --with-innodb" |
512 | myconf="${myconf} --with-innodb" |
| 507 | myconf="${myconf} --without-readline" |
513 | myconf="${myconf} --without-readline" |
| 508 | myconf="${myconf} $(use_with ssl openssl)" |
514 | myconf="${myconf} $(use_with ssl openssl "${EPREFIX}/usr")" |
| 509 | mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" |
515 | mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" |
| 510 | |
516 | |
| 511 | # --with-vio is not needed anymore, it's on by default and |
517 | # --with-vio is not needed anymore, it's on by default and |
| 512 | # has been removed from configure |
518 | # has been removed from configure |
| 513 | # Apply to 4.x and 5.0.[0-3] |
519 | # Apply to 4.x and 5.0.[0-3] |
| … | |
… | |
| 579 | |
585 | |
| 580 | configure_51() { |
586 | configure_51() { |
| 581 | # TODO: !!!! readd --without-readline |
587 | # TODO: !!!! readd --without-readline |
| 582 | # the failure depend upon config/ac-macros/readline.m4 checking into |
588 | # the failure depend upon config/ac-macros/readline.m4 checking into |
| 583 | # readline.h instead of history.h |
589 | # readline.h instead of history.h |
| 584 | myconf="${myconf} $(use_with ssl ssl /usr)" |
590 | myconf="${myconf} $(use_with ssl ssl "${EPREFIX}"/usr)" |
| 585 | myconf="${myconf} --enable-assembler" |
591 | myconf="${myconf} --enable-assembler" |
| 586 | myconf="${myconf} --with-geometry" |
592 | myconf="${myconf} --with-geometry" |
| 587 | myconf="${myconf} --with-readline" |
593 | myconf="${myconf} --with-readline" |
| 588 | myconf="${myconf} --with-zlib-dir=/usr/" |
594 | myconf="${myconf} --with-zlib-dir=${EPREFIX}/usr/" |
| 589 | myconf="${myconf} --without-pstack" |
595 | myconf="${myconf} --without-pstack" |
| 590 | myconf="${myconf} --with-plugindir=/usr/$(get_libdir)/mysql/plugin" |
596 | myconf="${myconf} --with-plugindir=${EPREFIX}/usr/$(get_libdir)/mysql/plugin" |
| 591 | |
597 | |
| 592 | # This is an explict die here, because if we just forcibly disable it, then the |
598 | # This is an explict die here, because if we just forcibly disable it, then the |
| 593 | # user's data is not accessible. |
599 | # user's data is not accessible. |
| 594 | use max-idx-128 && die "Bug #336027: upstream has a corruption issue with max-idx-128 presently" |
600 | use max-idx-128 && die "Bug #336027: upstream has a corruption issue with max-idx-128 presently" |
| 595 | #use max-idx-128 && myconf="${myconf} --with-max-indexes=128" |
601 | #use max-idx-128 && myconf="${myconf} --with-max-indexes=128" |
| … | |
… | |
| 613 | \) \ |
619 | \) \ |
| 614 | -print0 \ |
620 | -print0 \ |
| 615 | | xargs -0 sed -r -n \ |
621 | | xargs -0 sed -r -n \ |
| 616 | -e '/^MYSQL_STORAGE_ENGINE/{ |
622 | -e '/^MYSQL_STORAGE_ENGINE/{ |
| 617 | s~MYSQL_STORAGE_ENGINE\([[:space:]]*\[?([-_a-z0-9]+)\]?.*,~\1 ~g ; |
623 | s~MYSQL_STORAGE_ENGINE\([[:space:]]*\[?([-_a-z0-9]+)\]?.*,~\1 ~g ; |
| 618 | s~^([^ ]+).*~\1~gp; |
624 | s~^([^ ]+).*~\1~gp; |
| 619 | }' \ |
625 | }' \ |
| 620 | | tr -s '\n' ' ' |
626 | | tr -s '\n' ' ' |
| 621 | )" |
627 | )" |
| 622 | |
628 | |
| 623 | # 5.1 introduces a new way to manage storage engines (plugins) |
629 | # 5.1 introduces a new way to manage storage engines (plugins) |
| … | |
… | |
| 736 | |
742 | |
| 737 | einfo "Reconfiguring dir '${PWD}'" |
743 | einfo "Reconfiguring dir '${PWD}'" |
| 738 | eautoreconf |
744 | eautoreconf |
| 739 | |
745 | |
| 740 | local myconf="" |
746 | local myconf="" |
| 741 | myconf="${myconf} --with-mysql=${S} --libdir=/usr/$(get_libdir)" |
747 | myconf="${myconf} --with-mysql=${S} --libdir=${EPREFIX}/usr/$(get_libdir)" |
| 742 | use debug && myconf="${myconf} --with-debug=full" |
748 | use debug && myconf="${myconf} --with-debug=full" |
| 743 | econf ${myconf} || die "Problem configuring PBXT storage engine" |
749 | econf ${myconf} || die "Problem configuring PBXT storage engine" |
| 744 | } |
750 | } |
| 745 | |
751 | |
| 746 | pbxt_src_compile() { |
752 | pbxt_src_compile() { |
| … | |
… | |
| 771 | # die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv" |
777 | # die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv" |
| 772 | # check for conflicting use flags |
778 | # check for conflicting use flags |
| 773 | # create new user and group for mysql |
779 | # create new user and group for mysql |
| 774 | # warn about deprecated features |
780 | # warn about deprecated features |
| 775 | mysql_pkg_setup() { |
781 | mysql_pkg_setup() { |
| 776 | if hasq test ${FEATURES} ; then |
782 | if has test ${FEATURES} ; then |
| 777 | if ! use minimal ; then |
783 | if ! use minimal ; then |
| 778 | if [[ $UID -eq 0 ]]; then |
784 | if [[ $UID -eq 0 ]]; then |
| 779 | eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." |
785 | eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." |
| 780 | fi |
786 | fi |
| 781 | fi |
787 | fi |
| … | |
… | |
| 832 | # Bug #290570, 284946, 307251 |
838 | # Bug #290570, 284946, 307251 |
| 833 | # Upstream changes made us need a fairly new GCC4. |
839 | # Upstream changes made us need a fairly new GCC4. |
| 834 | # But only for 5.0.8[3-6]! |
840 | # But only for 5.0.8[3-6]! |
| 835 | if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then |
841 | if mysql_version_is_at_least "5.0.83" && ! mysql_version_is_at_least 5.0.87 ; then |
| 836 | GCC_VER=$(gcc-version) |
842 | GCC_VER=$(gcc-version) |
| 837 | case ${GCC_VER} in |
843 | case ${CHOST}:${GCC_VER} in |
|
|
844 | *-darwin*:4.*) : ;; # bug #310615 |
| 838 | 2*|3*|4.0|4.1|4.2) |
845 | *:2*|*:3*|*:4.0|*:4.1|*:4.2) |
| 839 | eerror "Some releases of MySQL required a very new GCC, and then" |
846 | eerror "Some releases of MySQL required a very new GCC, and then" |
| 840 | eerror "later release relaxed that requirement again. Either pick a" |
847 | eerror "later release relaxed that requirement again. Either pick a" |
| 841 | eerror "MySQL >=5.0.87, or use a newer GCC." |
848 | eerror "MySQL >=5.0.87, or use a newer GCC." |
| 842 | die "Active GCC too old!" ;; |
849 | die "Active GCC too old!" ;; |
| 843 | esac |
850 | esac |
| … | |
… | |
| 971 | |
978 | |
| 972 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
979 | if mysql_check_version_range "4.1 to 5.0.99.99" \ |
| 973 | && use berkdb ; then |
980 | && use berkdb ; then |
| 974 | einfo "Fixing up berkdb buildsystem" |
981 | einfo "Fixing up berkdb buildsystem" |
| 975 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
982 | [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" |
| 976 | cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
983 | cp -f "${EPREFIX}/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \ |
| 977 | || die "Could not copy libtool.m4 to bdb/dist/" |
984 | || die "Could not copy libtool.m4 to bdb/dist/" |
| 978 | #These files exist only with libtool-2*, and need to be included. |
985 | #These files exist only with libtool-2*, and need to be included. |
| 979 | if [ -f '/usr/share/aclocal/ltsugar.m4' ]; then |
986 | if [ -f ${EPREFIX}'/usr/share/aclocal/ltsugar.m4' ]; then |
| 980 | cat "/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac" |
987 | cat "${EPREFIX}/usr/share/aclocal/ltsugar.m4" >> "bdb/dist/aclocal/libtool.ac" |
| 981 | cat "/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac" |
988 | cat "${EPREFIX}/usr/share/aclocal/ltversion.m4" >> "bdb/dist/aclocal/libtool.ac" |
| 982 | cat "/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac" |
989 | cat "${EPREFIX}/usr/share/aclocal/lt~obsolete.m4" >> "bdb/dist/aclocal/libtool.ac" |
| 983 | cat "/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac" |
990 | cat "${EPREFIX}/usr/share/aclocal/ltoptions.m4" >> "bdb/dist/aclocal/libtool.ac" |
| 984 | fi |
991 | fi |
| 985 | pushd "bdb/dist" &>/dev/null |
992 | pushd "bdb/dist" &>/dev/null |
| 986 | sh s_all \ |
993 | sh s_all \ |
| 987 | || die "Failed bdb reconfigure" |
994 | || die "Failed bdb reconfigure" |
| 988 | popd &>/dev/null |
995 | popd &>/dev/null |
| … | |
… | |
| 1039 | use x86 && version_is_at_least "4.3.3" "$(gcc-fullversion)" && \ |
1046 | use x86 && version_is_at_least "4.3.3" "$(gcc-fullversion)" && \ |
| 1040 | append-flags -fno-omit-frame-pointer && \ |
1047 | append-flags -fno-omit-frame-pointer && \ |
| 1041 | filter-flags -fomit-frame-pointer |
1048 | filter-flags -fomit-frame-pointer |
| 1042 | |
1049 | |
| 1043 | econf \ |
1050 | econf \ |
| 1044 | --libexecdir="/usr/sbin" \ |
1051 | --libexecdir="${EPREFIX}"/usr/sbin \ |
| 1045 | --sysconfdir="${MY_SYSCONFDIR}" \ |
1052 | --sysconfdir=${MY_SYSCONFDIR} \ |
| 1046 | --localstatedir="${MY_LOCALSTATEDIR}" \ |
1053 | --localstatedir=${MY_LOCALSTATEDIR} \ |
| 1047 | --sharedstatedir="${MY_SHAREDSTATEDIR}" \ |
1054 | --sharedstatedir=${MY_SHAREDSTATEDIR} \ |
| 1048 | --libdir="${MY_LIBDIR}" \ |
1055 | --libdir=${MY_LIBDIR} \ |
| 1049 | --includedir="${MY_INCLUDEDIR}" \ |
1056 | --includedir=${MY_INCLUDEDIR} \ |
| 1050 | --with-low-memory \ |
1057 | --with-low-memory \ |
| 1051 | --with-client-ldflags=-lstdc++ \ |
1058 | --with-client-ldflags=-lstdc++ \ |
| 1052 | --enable-thread-safe-client \ |
1059 | --enable-thread-safe-client \ |
| 1053 | --with-comment="Gentoo Linux ${PF}" \ |
1060 | --with-comment="Gentoo Linux ${PF}" \ |
| 1054 | --without-docs \ |
1061 | --without-docs \ |
| … | |
… | |
| 1089 | # Make sure the vars are correctly initialized |
1096 | # Make sure the vars are correctly initialized |
| 1090 | mysql_init_vars |
1097 | mysql_init_vars |
| 1091 | |
1098 | |
| 1092 | emake install \ |
1099 | emake install \ |
| 1093 | DESTDIR="${D}" \ |
1100 | DESTDIR="${D}" \ |
| 1094 | benchdir_root="${MY_SHAREDSTATEDIR}" \ |
1101 | benchdir_root=${MY_SHAREDSTATEDIR} \ |
| 1095 | testroot="${MY_SHAREDSTATEDIR}" \ |
1102 | testroot="${MY_SHAREDSTATEDIR}" \ |
| 1096 | || die "emake install failed" |
1103 | || die "emake install failed" |
| 1097 | |
1104 | |
| 1098 | if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then |
1105 | if [[ "${PBXT_NEWSTYLE}" != "1" ]]; then |
| 1099 | pbxt_patch_available && use pbxt && pbxt_src_install |
1106 | pbxt_patch_available && use pbxt && pbxt_src_install |
| … | |
… | |
| 1105 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" |
1112 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" |
| 1106 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" |
1113 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" |
| 1107 | |
1114 | |
| 1108 | # Various junk (my-*.cnf moved elsewhere) |
1115 | # Various junk (my-*.cnf moved elsewhere) |
| 1109 | einfo "Removing duplicate /usr/share/mysql files" |
1116 | einfo "Removing duplicate /usr/share/mysql files" |
| 1110 | rm -Rf "${D}/usr/share/info" |
1117 | rm -Rf "${ED}/usr/share/info" |
| 1111 | for removeme in "mysql-log-rotate" mysql.server* \ |
1118 | for removeme in "mysql-log-rotate" mysql.server* \ |
| 1112 | binary-configure* my-*.cnf mi_test_all* |
1119 | binary-configure* my-*.cnf mi_test_all* |
| 1113 | do |
1120 | do |
| 1114 | rm -f "${D}"/${MY_SHAREDSTATEDIR}/${removeme} |
1121 | rm -f "${D}"/${MY_SHAREDSTATEDIR}/${removeme} |
| 1115 | done |
1122 | done |
| 1116 | |
1123 | |
| 1117 | # Clean up stuff for a minimal build |
1124 | # Clean up stuff for a minimal build |
| 1118 | if use minimal ; then |
1125 | if use minimal ; then |
| 1119 | einfo "Remove all extra content for minimal build" |
1126 | einfo "Remove all extra content for minimal build" |
| 1120 | rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} |
1127 | rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} |
| 1121 | 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} |
1128 | rm -f "${ED}"/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} |
| 1122 | rm -f "${D}/usr/sbin/mysqld" |
1129 | rm -f "${ED}/usr/sbin/mysqld" |
| 1123 | rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a |
1130 | rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a |
| 1124 | fi |
1131 | fi |
| 1125 | |
1132 | |
| 1126 | # Unless they explicitly specific USE=test, then do not install the |
1133 | # Unless they explicitly specific USE=test, then do not install the |
| 1127 | # testsuite. It DOES have a use to be installed, esp. when you want to do a |
1134 | # testsuite. It DOES have a use to be installed, esp. when you want to do a |
| … | |
… | |
| 1135 | 3*|4.0) mysql_mycnf_version="4.0" ;; |
1142 | 3*|4.0) mysql_mycnf_version="4.0" ;; |
| 1136 | 4.[1-9]|5.0) mysql_mycnf_version="4.1" ;; |
1143 | 4.[1-9]|5.0) mysql_mycnf_version="4.1" ;; |
| 1137 | 5.[1-9]|6*|7*) mysql_mycnf_version="5.1" ;; |
1144 | 5.[1-9]|6*|7*) mysql_mycnf_version="5.1" ;; |
| 1138 | esac |
1145 | esac |
| 1139 | einfo "Building default my.cnf (${mysql_mycnf_version})" |
1146 | einfo "Building default my.cnf (${mysql_mycnf_version})" |
| 1140 | insinto "${MY_SYSCONFDIR}" |
1147 | insinto "${MY_SYSCONFDIR#${EPREFIX}}" |
| 1141 | doins scripts/mysqlaccess.conf |
1148 | doins scripts/mysqlaccess.conf |
| 1142 | mycnf_src="my.cnf-${mysql_mycnf_version}" |
1149 | mycnf_src="my.cnf-${mysql_mycnf_version}" |
| 1143 | sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ |
1150 | sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ |
|
|
1151 | -e "s!/tmp!${EPREFIX}/tmp!" \ |
|
|
1152 | -e "s!/usr!${EPREFIX}/usr!" \ |
|
|
1153 | -e "s!= /var!= ${EPREFIX}/var!" \ |
| 1144 | "${FILESDIR}/${mycnf_src}" \ |
1154 | "${FILESDIR}/${mycnf_src}" \ |
| 1145 | > "${TMPDIR}/my.cnf.ok" |
1155 | > "${TMPDIR}/my.cnf.ok" |
|
|
1156 | use prefix && sed -i -e '/^user[ ]*= mysql$/d' "${TMPDIR}/my.cnf.ok" |
| 1146 | if use latin1 ; then |
1157 | if use latin1 ; then |
| 1147 | sed -i \ |
1158 | sed -i \ |
| 1148 | -e "/character-set/s|utf8|latin1|g" \ |
1159 | -e "/character-set/s|utf8|latin1|g" \ |
| 1149 | "${TMPDIR}/my.cnf.ok" |
1160 | "${TMPDIR}/my.cnf.ok" |
| 1150 | fi |
1161 | fi |
| … | |
… | |
| 1154 | if ! use minimal ; then |
1165 | if ! use minimal ; then |
| 1155 | einfo "Creating initial directories" |
1166 | einfo "Creating initial directories" |
| 1156 | # Empty directories ... |
1167 | # Empty directories ... |
| 1157 | diropts "-m0750" |
1168 | diropts "-m0750" |
| 1158 | if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then |
1169 | if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then |
| 1159 | dodir "${MY_DATADIR}" |
1170 | dodir "${MY_DATADIR#${EPREFIX}}" |
| 1160 | keepdir "${MY_DATADIR}" |
1171 | keepdir "${MY_DATADIR#${EPREFIX}}" |
| 1161 | chown -R mysql:mysql "${D}/${MY_DATADIR}" |
1172 | chown -R mysql:mysql "${D}/${MY_DATADIR}" |
| 1162 | fi |
1173 | fi |
| 1163 | |
1174 | |
| 1164 | diropts "-m0755" |
1175 | diropts "-m0755" |
| 1165 | for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do |
1176 | for folder in "${MY_LOGDIR#${EPREFIX}}" "/var/run/mysqld" ; do |
| 1166 | dodir "${folder}" |
1177 | dodir "${folder}" |
| 1167 | keepdir "${folder}" |
1178 | keepdir "${folder}" |
| 1168 | chown -R mysql:mysql "${D}/${folder}" |
1179 | chown -R mysql:mysql "${ED}/${folder}" |
| 1169 | done |
1180 | done |
| 1170 | fi |
1181 | fi |
| 1171 | |
1182 | |
| 1172 | # Docs |
1183 | # Docs |
| 1173 | einfo "Installing docs" |
1184 | einfo "Installing docs" |
| 1174 | dodoc README ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE |
1185 | for i in README ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE ; do |
|
|
1186 | [[ -f "$i" ]] && dodoc "$i" |
|
|
1187 | done |
| 1175 | doinfo "${S}"/Docs/mysql.info |
1188 | doinfo "${S}"/Docs/mysql.info |
| 1176 | |
1189 | |
| 1177 | # Minimal builds don't have the MySQL server |
1190 | # Minimal builds don't have the MySQL server |
| 1178 | if ! use minimal ; then |
1191 | if ! use minimal ; then |
| 1179 | einfo "Including support files and sample configurations" |
1192 | einfo "Including support files and sample configurations" |
| … | |
… | |
| 1191 | [[ -f "$script" ]] && [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
1204 | [[ -f "$script" ]] && [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
| 1192 | done |
1205 | done |
| 1193 | |
1206 | |
| 1194 | fi |
1207 | fi |
| 1195 | |
1208 | |
| 1196 | mysql_lib_symlinks "${D}" |
1209 | mysql_lib_symlinks "${ED}" |
| 1197 | } |
1210 | } |
| 1198 | |
1211 | |
| 1199 | # @FUNCTION: mysql_pkg_preinst |
1212 | # @FUNCTION: mysql_pkg_preinst |
| 1200 | # @DESCRIPTION: |
1213 | # @DESCRIPTION: |
| 1201 | # Create the user and groups for mysql - die if that fails. |
1214 | # Create the user and groups for mysql - die if that fails. |
| … | |
… | |
| 1215 | mysql_pkg_postinst() { |
1228 | mysql_pkg_postinst() { |
| 1216 | # Make sure the vars are correctly initialized |
1229 | # Make sure the vars are correctly initialized |
| 1217 | mysql_init_vars |
1230 | mysql_init_vars |
| 1218 | |
1231 | |
| 1219 | # Check FEATURES="collision-protect" before removing this |
1232 | # Check FEATURES="collision-protect" before removing this |
| 1220 | [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" |
1233 | [[ -d "${EROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" |
| 1221 | |
1234 | |
| 1222 | # Secure the logfiles |
1235 | # Secure the logfiles |
| 1223 | touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} |
1236 | touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} |
| 1224 | chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* |
1237 | chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* |
| 1225 | chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* |
1238 | chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* |
| … | |
… | |
| 1316 | |
1329 | |
| 1317 | local pwd1="a" |
1330 | local pwd1="a" |
| 1318 | local pwd2="b" |
1331 | local pwd2="b" |
| 1319 | local maxtry=15 |
1332 | local maxtry=15 |
| 1320 | |
1333 | |
| 1321 | if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${ROOT}/root/.my.cnf" ]; then |
1334 | if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${EROOT}/root/.my.cnf" ]; then |
| 1322 | MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${ROOT}/root/.my.cnf")" |
1335 | MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${EROOT}/root/.my.cnf")" |
| 1323 | fi |
1336 | fi |
| 1324 | |
1337 | |
| 1325 | if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then |
1338 | if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then |
| 1326 | ewarn "You have already a MySQL database in place." |
1339 | ewarn "You have already a MySQL database in place." |
| 1327 | ewarn "(${ROOT}/${MY_DATADIR}/*)" |
1340 | ewarn "(${ROOT}/${MY_DATADIR}/*)" |
| … | |
… | |
| 1358 | && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ |
1371 | && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ |
| 1359 | || touch "${TMPDIR}/fill_help_tables.sql" |
1372 | || touch "${TMPDIR}/fill_help_tables.sql" |
| 1360 | help_tables="${TMPDIR}/fill_help_tables.sql" |
1373 | help_tables="${TMPDIR}/fill_help_tables.sql" |
| 1361 | |
1374 | |
| 1362 | pushd "${TMPDIR}" &>/dev/null |
1375 | pushd "${TMPDIR}" &>/dev/null |
| 1363 | "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1 |
1376 | "${EROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1 |
| 1364 | if [ $? -ne 0 ]; then |
1377 | if [ $? -ne 0 ]; then |
| 1365 | grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 |
1378 | grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 |
| 1366 | die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
1379 | die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" |
| 1367 | fi |
1380 | fi |
| 1368 | popd &>/dev/null |
1381 | popd &>/dev/null |
| … | |
… | |
| 1371 | chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
1384 | chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null |
| 1372 | chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
1385 | chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null |
| 1373 | |
1386 | |
| 1374 | # Figure out which options we need to disable to do the setup |
1387 | # Figure out which options we need to disable to do the setup |
| 1375 | helpfile="${TMPDIR}/mysqld-help" |
1388 | helpfile="${TMPDIR}/mysqld-help" |
| 1376 | ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null |
1389 | ${EROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null |
| 1377 | for opt in grant-tables host-cache name-resolve networking slave-start bdb \ |
1390 | for opt in grant-tables host-cache name-resolve networking slave-start bdb \ |
| 1378 | federated innodb ssl log-bin relay-log slow-query-log external-locking \ |
1391 | federated innodb ssl log-bin relay-log slow-query-log external-locking \ |
| 1379 | ndbcluster \ |
1392 | ndbcluster \ |
| 1380 | ; do |
1393 | ; do |
| 1381 | optexp="--(skip-)?${opt}" optfull="--skip-${opt}" |
1394 | optexp="--(skip-)?${opt}" optfull="--skip-${opt}" |
| … | |
… | |
| 1386 | options="${options/skip-locking/skip-external-locking}" |
1399 | options="${options/skip-locking/skip-external-locking}" |
| 1387 | |
1400 | |
| 1388 | if mysql_version_is_at_least "4.1.3" ; then |
1401 | if mysql_version_is_at_least "4.1.3" ; then |
| 1389 | # Filling timezones, see |
1402 | # Filling timezones, see |
| 1390 | # http://dev.mysql.com/doc/mysql/en/time-zone-support.html |
1403 | # http://dev.mysql.com/doc/mysql/en/time-zone-support.html |
| 1391 | "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null |
1404 | "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null |
| 1392 | |
1405 | |
| 1393 | if [[ -r "${help_tables}" ]] ; then |
1406 | if [[ -r "${help_tables}" ]] ; then |
| 1394 | cat "${help_tables}" >> "${sqltmp}" |
1407 | cat "${help_tables}" >> "${sqltmp}" |
| 1395 | fi |
1408 | fi |
| 1396 | fi |
1409 | fi |
| 1397 | |
1410 | |
| 1398 | einfo "Creating the mysql database and setting proper" |
1411 | einfo "Creating the mysql database and setting proper" |
| 1399 | einfo "permissions on it ..." |
1412 | einfo "permissions on it ..." |
| 1400 | |
1413 | |
|
|
1414 | use prefix || options="${options} --user=mysql" |
|
|
1415 | |
| 1401 | local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock" |
1416 | local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock" |
| 1402 | local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid" |
1417 | local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid" |
| 1403 | local mysqld="${ROOT}/usr/sbin/mysqld \ |
1418 | local mysqld="${EROOT}/usr/sbin/mysqld \ |
| 1404 | ${options} \ |
1419 | ${options} \ |
| 1405 | --user=mysql \ |
1420 | --user=mysql \ |
| 1406 | --basedir=${ROOT}/usr \ |
1421 | --basedir=${EROOT}/usr \ |
| 1407 | --datadir=${ROOT}/${MY_DATADIR} \ |
1422 | --datadir=${ROOT}/${MY_DATADIR} \ |
| 1408 | --max_allowed_packet=8M \ |
1423 | --max_allowed_packet=8M \ |
| 1409 | --net_buffer_length=16K \ |
1424 | --net_buffer_length=16K \ |
| 1410 | --default-storage-engine=MyISAM \ |
1425 | --default-storage-engine=MyISAM \ |
| 1411 | --socket=${socket} \ |
1426 | --socket=${socket} \ |
| … | |
… | |
| 1426 | fi |
1441 | fi |
| 1427 | |
1442 | |
| 1428 | ebegin "Setting root password" |
1443 | ebegin "Setting root password" |
| 1429 | # Do this from memory, as we don't want clear text passwords in temp files |
1444 | # Do this from memory, as we don't want clear text passwords in temp files |
| 1430 | local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'" |
1445 | local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'" |
| 1431 | "${ROOT}/usr/bin/mysql" \ |
1446 | "${EROOT}/usr/bin/mysql" \ |
| 1432 | --socket=${socket} \ |
1447 | --socket=${socket} \ |
| 1433 | -hlocalhost \ |
1448 | -hlocalhost \ |
| 1434 | -e "${sql}" |
1449 | -e "${sql}" |
| 1435 | eend $? |
1450 | eend $? |
| 1436 | |
1451 | |
| 1437 | ebegin "Loading \"zoneinfo\", this step may require a few seconds ..." |
1452 | ebegin "Loading \"zoneinfo\", this step may require a few seconds ..." |
| 1438 | "${ROOT}/usr/bin/mysql" \ |
1453 | "${EROOT}/usr/bin/mysql" \ |
| 1439 | --socket=${socket} \ |
1454 | --socket=${socket} \ |
| 1440 | -hlocalhost \ |
1455 | -hlocalhost \ |
| 1441 | -uroot \ |
1456 | -uroot \ |
| 1442 | -p"${MYSQL_ROOT_PASSWORD}" \ |
1457 | -p"${MYSQL_ROOT_PASSWORD}" \ |
| 1443 | mysql < "${sqltmp}" |
1458 | mysql < "${sqltmp}" |
| … | |
… | |
| 1455 | |
1470 | |
| 1456 | # @FUNCTION: mysql_pkg_postrm |
1471 | # @FUNCTION: mysql_pkg_postrm |
| 1457 | # @DESCRIPTION: |
1472 | # @DESCRIPTION: |
| 1458 | # Remove mysql symlinks. |
1473 | # Remove mysql symlinks. |
| 1459 | mysql_pkg_postrm() { |
1474 | mysql_pkg_postrm() { |
| 1460 | : # mysql_lib_symlinks "${D}" |
1475 | : # mysql_lib_symlinks "${ED}" |
| 1461 | } |
1476 | } |