/[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.119
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/Attic/mysql.eclass,v 1.118 2009/11/19 20:59:38 hanno Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/mysql.eclass,v 1.119 2009/12/09 18:45:46 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
154&& IUSE="${IUSE} pbxt" 170&& IUSE="${IUSE} pbxt"
155 171
156[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \ 172[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
157&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling" 173&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling"
158 174
175
159# 176#
160# HELPER FUNCTIONS: 177# HELPER FUNCTIONS:
161# 178#
162 179
180# @FUNCTION: mysql_disable_test
181# @DESCRIPTION:
182# Helper function to disable specific tests.
163mysql_disable_test() { 183mysql_disable_test() {
164 local testname="${1}" ; shift 184 local testname="${1}" ; shift
165 local reason="${@}" 185 local reason="${@}"
166 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 186 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
167 echo ${testname} : ${reason} >> "${mysql_disable_file}" 187 echo ${testname} : ${reason} >> "${mysql_disable_file}"
168 ewarn "test '${testname}' disabled: '${reason}'" 188 ewarn "test '${testname}' disabled: '${reason}'"
169} 189}
170 190
191# @FUNCTION: mysql_init_vars
192# @DESCRIPTION:
171# void mysql_init_vars() 193# void mysql_init_vars()
172#
173# Initialize global variables 194# Initialize global variables
174# 2005-11-19 <vivo@gentoo.org> 195# 2005-11-19 <vivo@gentoo.org>
175
176mysql_init_vars() { 196mysql_init_vars() {
177 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} 197 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
178 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 198 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
179 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 199 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
180 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 200 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
466} 486}
467 487
468# 488#
469# EBUILD FUNCTIONS 489# EBUILD FUNCTIONS
470# 490#
491# @FUNCTION: mysql_pkg_setup
492# @DESCRIPTION:
493# Perform some basic tests and tasks during pkg_setup phase:
494# die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv"
495# check for conflicting use flags
496# create new user and group for mysql
497# warn about deprecated features
471mysql_pkg_setup() { 498mysql_pkg_setup() {
472 if hasq test ${FEATURES} ; then 499 if hasq test ${FEATURES} ; then
473 if ! use minimal ; then 500 if ! use minimal ; then
474 if [[ $UID -eq 0 ]]; then 501 if [[ $UID -eq 0 ]]; then
475 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." 502 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" \ 532 mysql_check_version_range "4.0 to 5.0.99.99" \
506 && use berkdb \ 533 && use berkdb \
507 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 534 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
508} 535}
509 536
537# @FUNCTION: mysql_src_unpack
538# @DESCRIPTION:
539# Unpack the source code and call mysql_src_prepare for EAPI < 2.
510mysql_src_unpack() { 540mysql_src_unpack() {
511 # Initialize the proper variables first 541 # Initialize the proper variables first
512 mysql_init_vars 542 mysql_init_vars
513 543
514 unpack ${A} 544 unpack ${A}
516 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack 546 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
517 547
518 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 548 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
519 549
520 # Be backwards compatible for now 550 # Be backwards compatible for now
521 if [[ $EAPI != 2 ]]; then 551 case ${EAPI:-0} in
522 mysql_src_prepare 552 2) : ;;
523 fi 553 0 | 1) mysql_src_prepare ;;
554 esac
524} 555}
525 556
557# @FUNCTION: mysql_src_prepare
558# @DESCRIPTION:
559# Apply patches to the source code and remove unneeded bundled libs.
526mysql_src_prepare() { 560mysql_src_prepare() {
527 cd "${S}" 561 cd "${S}"
528 562
529 # Apply the patches for this MySQL version 563 # Apply the patches for this MySQL version
530 EPATCH_SUFFIX="patch" 564 EPATCH_SUFFIX="patch"
592 || die "Failed bdb reconfigure" 626 || die "Failed bdb reconfigure"
593 popd &>/dev/null 627 popd &>/dev/null
594 fi 628 fi
595} 629}
596 630
631# @FUNCTION: mysql_src_configure
632# @DESCRIPTION:
633# Configure mysql to build the code for Gentoo respecting the use flags.
597mysql_src_configure() { 634mysql_src_configure() {
598 # Make sure the vars are correctly initialized 635 # Make sure the vars are correctly initialized
599 mysql_init_vars 636 mysql_init_vars
600 637
601 # $myconf is modified by the configure_* functions 638 # $myconf is modified by the configure_* functions
655 if [[ $EAPI == 2 ]]; then 692 if [[ $EAPI == 2 ]]; then
656 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure 693 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure
657 fi 694 fi
658} 695}
659 696
697# @FUNCTION: mysql_src_compile
698# @DESCRIPTION:
699# Compile the mysql code.
660mysql_src_compile() { 700mysql_src_compile() {
661 # Be backwards compatible for now 701 # Be backwards compatible for now
662 if [[ $EAPI != 2 ]]; then 702 case ${EAPI:-0} in
663 mysql_src_configure 703 2) : ;;
664 fi 704 0 | 1) mysql_src_configure ;;
705 esac
665 706
666 emake || die "emake failed" 707 emake || die "emake failed"
667 708
668 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile 709 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
669} 710}
670 711
712# @FUNCTION: mysql_src_install
713# @DESCRIPTION:
714# Install mysql.
671mysql_src_install() { 715mysql_src_install() {
672 # Make sure the vars are correctly initialized 716 # Make sure the vars are correctly initialized
673 mysql_init_vars 717 mysql_init_vars
674 718
675 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" 719 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
761 fi 805 fi
762 806
763 mysql_lib_symlinks "${D}" 807 mysql_lib_symlinks "${D}"
764} 808}
765 809
810# @FUNCTION: mysql_pkg_preinst
811# @DESCRIPTION:
812# Create the user and groups for mysql - die if that fails.
766mysql_pkg_preinst() { 813mysql_pkg_preinst() {
767 enewgroup mysql 60 || die "problem adding 'mysql' group" 814 enewgroup mysql 60 || die "problem adding 'mysql' group"
768 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 815 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
769} 816}
770 817
818# @FUNCTION: mysql_pkg_postinst
819# @DESCRIPTION:
820# Run post-installation tasks:
821# create the dir for logfiles if non-existant
822# touch the logfiles and secure them
823# install scripts
824# issue required steps for optional features
825# issue deprecation warnings
771mysql_pkg_postinst() { 826mysql_pkg_postinst() {
772 # Make sure the vars are correctly initialized 827 # Make sure the vars are correctly initialized
773 mysql_init_vars 828 mysql_init_vars
774 829
775 # Check FEATURES="collision-protect" before removing this 830 # Check FEATURES="collision-protect" before removing this
821 mysql_check_version_range "4.0 to 5.0.99.99" \ 876 mysql_check_version_range "4.0 to 5.0.99.99" \
822 && use berkdb \ 877 && use berkdb \
823 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 878 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
824} 879}
825 880
881# @FUNCTION: mysql_pkg_config
882# @DESCRIPTION:
883# Configure mysql environment.
826mysql_pkg_config() { 884mysql_pkg_config() {
827 local old_MY_DATADIR="${MY_DATADIR}" 885 local old_MY_DATADIR="${MY_DATADIR}"
828 886
829 # Make sure the vars are correctly initialized 887 # Make sure the vars are correctly initialized
830 mysql_init_vars 888 mysql_init_vars
965 einfo "Stopping the server ..." 1023 einfo "Stopping the server ..."
966 wait %1 1024 wait %1
967 einfo "Done" 1025 einfo "Done"
968} 1026}
969 1027
1028# @FUNCTION: mysql_pkg_postrm
1029# @DESCRIPTION:
1030# Remove mysql symlinks.
970mysql_pkg_postrm() { 1031mysql_pkg_postrm() {
971 : # mysql_lib_symlinks "${D}" 1032 : # mysql_lib_symlinks "${D}"
972} 1033}

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

  ViewVC Help
Powered by ViewVC 1.1.20