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

Diff of /eclass/mysql.eclass

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

Revision 1.118 Revision 1.120
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2009 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.118 2009/11/19 20:59:38 hanno Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.120 2009/12/09 18:46:53 robbat2 Exp $
4 4
5# @ECLASS: mysql.eclass
6# @MAINTAINER:
5# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 7# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
6# Maintainer: MySQL Team <mysql-bugs@gentoo.org> 8# Maintainers: MySQL Team <mysql-bugs@gentoo.org>
7# - Luca Longinotti <chtekk@gentoo.org> 9# - Luca Longinotti <chtekk@gentoo.org>
8# - Robin H. Johnson <robbat2@gentoo.org> 10# - Robin H. Johnson <robbat2@gentoo.org>
11# @BLURB: This eclass provides most of the functions for mysql ebuilds
12# @DESCRIPTION:
13# 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# scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm
16# phase hooks.
9 17
10WANT_AUTOCONF="latest" 18WANT_AUTOCONF="latest"
11WANT_AUTOMAKE="latest" 19WANT_AUTOMAKE="latest"
12 20
13inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator 21inherit eutils flag-o-matic gnuconfig autotools mysql_fx versionator
20 src_install \ 28 src_install \
21 pkg_preinst pkg_postinst \ 29 pkg_preinst pkg_postinst \
22 pkg_config pkg_postrm 30 pkg_config pkg_postrm
23 IUSE_DEFAULT_ON='+' 31 IUSE_DEFAULT_ON='+'
24 ;; 32 ;;
25 *) 33 0 | 1)
26 EXPORT_FUNCTIONS pkg_setup \ 34 EXPORT_FUNCTIONS pkg_setup \
27 src_unpack \ 35 src_unpack \
28 src_compile \ 36 src_compile \
29 src_install \ 37 src_install \
30 pkg_preinst pkg_postinst \ 38 pkg_preinst pkg_postinst \
31 pkg_config pkg_postrm 39 pkg_config pkg_postrm
32 ;; 40 ;;
41 *)
42 die "Unsupported EAPI: ${EAPI}" ;;
33esac 43esac
34 44
35# Shorten the path because the socket path length must be shorter than 107 chars 45# Shorten the path because the socket path length must be shorter than 107 chars
36# and we will run a mysql server during test phase 46# and we will run a mysql server during test phase
37S="${WORKDIR}/mysql" 47S="${WORKDIR}/mysql"
41 EGIT_PROJECT=mysql-extras 51 EGIT_PROJECT=mysql-extras
42 EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git" 52 EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git"
43 inherit git 53 inherit git
44fi 54fi
45 55
56# @ECLASS-VARIABLE: MYSQL_VERSION_ID
57# @DESCRIPTION:
46# MYSQL_VERSION_ID will be: 58# MYSQL_VERSION_ID will be:
47# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 59# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
48# This is an important part, because many of the choices the MySQL ebuild will do 60# This is an important part, because many of the choices the MySQL ebuild will do
49# depend on this variable. 61# depend on this variable.
50# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 62# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
59 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 71 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
60done 72done
61# strip leading "0" (otherwise it's considered an octal number by BASH) 73# strip leading "0" (otherwise it's considered an octal number by BASH)
62MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 74MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
63 75
76# @ECLASS-VARIABLE: MYSQL_COMMUNITY_FEATURES
77# @DESCRIPTION:
78# Specifiy if community features are available. Possible values are 1 (yes)
79# and 0 (no).
64# Community features are available in mysql-community 80# Community features are available in mysql-community
65# AND in the re-merged mysql-5.0.82 and newer 81# AND in the re-merged mysql-5.0.82 and newer
66if [ "${PN}" == "mysql-community" ]; then 82if [ "${PN}" == "mysql-community" ]; then
67 MYSQL_COMMUNITY_FEATURES=1 83 MYSQL_COMMUNITY_FEATURES=1
68elif [ "${PV#5.0}" != "${PV}" ] && mysql_version_is_at_least "5.0.82"; then 84elif [ "${PV#5.0}" != "${PV}" ] && mysql_version_is_at_least "5.0.82"; then
73 MYSQL_COMMUNITY_FEATURES=1 89 MYSQL_COMMUNITY_FEATURES=1
74else 90else
75 MYSQL_COMMUNITY_FEATURES=0 91 MYSQL_COMMUNITY_FEATURES=0
76fi 92fi
77 93
94# @ECLASS-VARIABLE: XTRADB_VER
95# @DESCRIPTION:
96# Version of the XTRADB storage engine
97XTRADB_VER="${XTRADB_VER}"
98
99# @ECLASS-VARIABLE: PERCONA_VER
100# @DESCRIPTION:
101# Designation by PERCONA for a MySQL version to apply an XTRADB release
102PERCONA_VER="${PERCONA_VER}"
103
78# Be warned, *DEPEND are version-dependant 104# Be warned, *DEPEND are version-dependant
79# These are used for both runtime and compiletime 105# These are used for both runtime and compiletime
80DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) 106DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
81 userland_GNU? ( sys-process/procps ) 107 userland_GNU? ( sys-process/procps )
82 >=sys-apps/sed-4 108 >=sys-apps/sed-4
123SRC_URI="${SERVER_URI}" 149SRC_URI="${SERVER_URI}"
124 150
125[[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI} 151[[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI}
126 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 152 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
127 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" 153 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
154PBXT_SRC_URI="mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz"
128mysql_version_is_at_least "5.1.12" \ 155mysql_version_is_at_least "5.1.12" \
129&& [[ -n "${PBXT_VERSION}" ]] \ 156&& [[ -n "${PBXT_VERSION}" ]] \
130&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 157&& SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URIPBXT_SRC_URI} )"
158
159# Get the percona tarball if XTRADB_VER and PERCONA_VER are both set
160XTRADB_SRC_URI="http://www.percona.com/${PN}/xtradb/${PERCONA_VER}/source/percona-xtradb-${XTRADB_VER}.tar.gz"
161mysql_version_is_at_least "5.1.26" \
162&& [[ -n ${XTRADB_VER} && -n ${PERCONA_VER} ]] \
163&& SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI} )"
131 164
132DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 165DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
133HOMEPAGE="http://www.mysql.com/" 166HOMEPAGE="http://www.mysql.com/"
134LICENSE="GPL-2" 167LICENSE="GPL-2"
135SLOT="0" 168SLOT="0"
151|| IUSE="${IUSE} berkdb" 184|| IUSE="${IUSE} berkdb"
152 185
153mysql_version_is_at_least "5.1.12" \ 186mysql_version_is_at_least "5.1.12" \
154&& IUSE="${IUSE} pbxt" 187&& IUSE="${IUSE} pbxt"
155 188
189mysql_version_is_at_least "5.1.26" \
190&& IUSE="${IUSE} xtradb"
191
156[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \ 192[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
157&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling" 193&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling"
158 194
159# 195#
160# HELPER FUNCTIONS: 196# HELPER FUNCTIONS:
161# 197#
162 198
199# @FUNCTION: mysql_disable_test
200# @DESCRIPTION:
201# Helper function to disable specific tests.
163mysql_disable_test() { 202mysql_disable_test() {
164 local testname="${1}" ; shift 203 local testname="${1}" ; shift
165 local reason="${@}" 204 local reason="${@}"
166 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 205 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
167 echo ${testname} : ${reason} >> "${mysql_disable_file}" 206 echo ${testname} : ${reason} >> "${mysql_disable_file}"
168 ewarn "test '${testname}' disabled: '${reason}'" 207 ewarn "test '${testname}' disabled: '${reason}'"
169} 208}
170 209
210# @FUNCTION: mysql_init_vars
211# @DESCRIPTION:
171# void mysql_init_vars() 212# void mysql_init_vars()
172#
173# Initialize global variables 213# Initialize global variables
174# 2005-11-19 <vivo@gentoo.org> 214# 2005-11-19 <vivo@gentoo.org>
175
176mysql_init_vars() { 215mysql_init_vars() {
177 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} 216 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
178 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 217 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
179 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 218 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
180 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 219 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
466} 505}
467 506
468# 507#
469# EBUILD FUNCTIONS 508# EBUILD FUNCTIONS
470# 509#
510# @FUNCTION: mysql_pkg_setup
511# @DESCRIPTION:
512# Perform some basic tests and tasks during pkg_setup phase:
513# die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv"
514# check for conflicting use flags
515# create new user and group for mysql
516# warn about deprecated features
471mysql_pkg_setup() { 517mysql_pkg_setup() {
472 if hasq test ${FEATURES} ; then 518 if hasq test ${FEATURES} ; then
473 if ! use minimal ; then 519 if ! use minimal ; then
474 if [[ $UID -eq 0 ]]; then 520 if [[ $UID -eq 0 ]]; then
475 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." 521 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
505 mysql_check_version_range "4.0 to 5.0.99.99" \ 551 mysql_check_version_range "4.0 to 5.0.99.99" \
506 && use berkdb \ 552 && use berkdb \
507 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 553 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
508} 554}
509 555
556# @FUNCTION: mysql_src_unpack
557# @DESCRIPTION:
558# Unpack the source code and call mysql_src_prepare for EAPI < 2.
510mysql_src_unpack() { 559mysql_src_unpack() {
511 # Initialize the proper variables first 560 # Initialize the proper variables first
512 mysql_init_vars 561 mysql_init_vars
513 562
514 unpack ${A} 563 unpack ${A}
516 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack 565 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
517 566
518 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 567 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
519 568
520 # Be backwards compatible for now 569 # Be backwards compatible for now
521 if [[ $EAPI != 2 ]]; then 570 case ${EAPI:-0} in
522 mysql_src_prepare 571 2) : ;;
523 fi 572 0 | 1) mysql_src_prepare ;;
573 esac
524} 574}
525 575
576# @FUNCTION: mysql_src_prepare
577# @DESCRIPTION:
578# Apply patches to the source code and remove unneeded bundled libs.
526mysql_src_prepare() { 579mysql_src_prepare() {
527 cd "${S}" 580 cd "${S}"
528 581
529 # Apply the patches for this MySQL version 582 # Apply the patches for this MySQL version
530 EPATCH_SUFFIX="patch" 583 EPATCH_SUFFIX="patch"
592 || die "Failed bdb reconfigure" 645 || die "Failed bdb reconfigure"
593 popd &>/dev/null 646 popd &>/dev/null
594 fi 647 fi
595} 648}
596 649
650# @FUNCTION: mysql_src_configure
651# @DESCRIPTION:
652# Configure mysql to build the code for Gentoo respecting the use flags.
597mysql_src_configure() { 653mysql_src_configure() {
598 # Make sure the vars are correctly initialized 654 # Make sure the vars are correctly initialized
599 mysql_init_vars 655 mysql_init_vars
600 656
601 # $myconf is modified by the configure_* functions 657 # $myconf is modified by the configure_* functions
655 if [[ $EAPI == 2 ]]; then 711 if [[ $EAPI == 2 ]]; then
656 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure 712 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure
657 fi 713 fi
658} 714}
659 715
716# @FUNCTION: mysql_src_compile
717# @DESCRIPTION:
718# Compile the mysql code.
660mysql_src_compile() { 719mysql_src_compile() {
661 # Be backwards compatible for now 720 # Be backwards compatible for now
662 if [[ $EAPI != 2 ]]; then 721 case ${EAPI:-0} in
663 mysql_src_configure 722 2) : ;;
664 fi 723 0 | 1) mysql_src_configure ;;
724 esac
665 725
666 emake || die "emake failed" 726 emake || die "emake failed"
667 727
668 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile 728 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
669} 729}
670 730
731# @FUNCTION: mysql_src_install
732# @DESCRIPTION:
733# Install mysql.
671mysql_src_install() { 734mysql_src_install() {
672 # Make sure the vars are correctly initialized 735 # Make sure the vars are correctly initialized
673 mysql_init_vars 736 mysql_init_vars
674 737
675 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" 738 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
761 fi 824 fi
762 825
763 mysql_lib_symlinks "${D}" 826 mysql_lib_symlinks "${D}"
764} 827}
765 828
829# @FUNCTION: mysql_pkg_preinst
830# @DESCRIPTION:
831# Create the user and groups for mysql - die if that fails.
766mysql_pkg_preinst() { 832mysql_pkg_preinst() {
767 enewgroup mysql 60 || die "problem adding 'mysql' group" 833 enewgroup mysql 60 || die "problem adding 'mysql' group"
768 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 834 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
769} 835}
770 836
837# @FUNCTION: mysql_pkg_postinst
838# @DESCRIPTION:
839# Run post-installation tasks:
840# create the dir for logfiles if non-existant
841# touch the logfiles and secure them
842# install scripts
843# issue required steps for optional features
844# issue deprecation warnings
771mysql_pkg_postinst() { 845mysql_pkg_postinst() {
772 # Make sure the vars are correctly initialized 846 # Make sure the vars are correctly initialized
773 mysql_init_vars 847 mysql_init_vars
774 848
775 # Check FEATURES="collision-protect" before removing this 849 # Check FEATURES="collision-protect" before removing this
821 mysql_check_version_range "4.0 to 5.0.99.99" \ 895 mysql_check_version_range "4.0 to 5.0.99.99" \
822 && use berkdb \ 896 && use berkdb \
823 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 897 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
824} 898}
825 899
900# @FUNCTION: mysql_pkg_config
901# @DESCRIPTION:
902# Configure mysql environment.
826mysql_pkg_config() { 903mysql_pkg_config() {
827 local old_MY_DATADIR="${MY_DATADIR}" 904 local old_MY_DATADIR="${MY_DATADIR}"
828 905
829 # Make sure the vars are correctly initialized 906 # Make sure the vars are correctly initialized
830 mysql_init_vars 907 mysql_init_vars
965 einfo "Stopping the server ..." 1042 einfo "Stopping the server ..."
966 wait %1 1043 wait %1
967 einfo "Done" 1044 einfo "Done"
968} 1045}
969 1046
1047# @FUNCTION: mysql_pkg_postrm
1048# @DESCRIPTION:
1049# Remove mysql symlinks.
970mysql_pkg_postrm() { 1050mysql_pkg_postrm() {
971 : # mysql_lib_symlinks "${D}" 1051 : # mysql_lib_symlinks "${D}"
972} 1052}

Legend:
Removed from v.1.118  
changed lines
  Added in v.1.120

  ViewVC Help
Powered by ViewVC 1.1.20