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

Diff of /eclass/mysql.eclass

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

Revision 1.109 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.109 2009/02/28 10:51:57 robbat2 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
22
23case "${EAPI:-0}" in
24 2)
25 EXPORT_FUNCTIONS pkg_setup \
26 src_unpack src_prepare \
27 src_configure src_compile \
28 src_install \
29 pkg_preinst pkg_postinst \
30 pkg_config pkg_postrm
31 IUSE_DEFAULT_ON='+'
32 ;;
33 0 | 1)
34 EXPORT_FUNCTIONS pkg_setup \
35 src_unpack \
36 src_compile \
37 src_install \
38 pkg_preinst pkg_postinst \
39 pkg_config pkg_postrm
40 ;;
41 *)
42 die "Unsupported EAPI: ${EAPI}" ;;
43esac
14 44
15# 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
16# and we will run a mysql server during test phase 46# and we will run a mysql server during test phase
17S="${WORKDIR}/mysql" 47S="${WORKDIR}/mysql"
18 48
21 EGIT_PROJECT=mysql-extras 51 EGIT_PROJECT=mysql-extras
22 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"
23 inherit git 53 inherit git
24fi 54fi
25 55
56# @ECLASS-VARIABLE: MYSQL_VERSION_ID
57# @DESCRIPTION:
26# MYSQL_VERSION_ID will be: 58# MYSQL_VERSION_ID will be:
27# 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]
28# 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
29# depend on this variable. 61# depend on this variable.
30# 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"
39 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 71 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
40done 72done
41# 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)
42MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 74MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
43 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).
80# Community features are available in mysql-community
81# AND in the re-merged mysql-5.0.82 and newer
82if [ "${PN}" == "mysql-community" ]; then
83 MYSQL_COMMUNITY_FEATURES=1
84elif [ "${PV#5.0}" != "${PV}" ] && mysql_version_is_at_least "5.0.82"; then
85 MYSQL_COMMUNITY_FEATURES=1
86elif [ "${PV#5.1}" != "${PV}" ] && mysql_version_is_at_least "5.1.28"; then
87 MYSQL_COMMUNITY_FEATURES=1
88elif [ "${PV#5.4}" != "${PV}" ]; then
89 MYSQL_COMMUNITY_FEATURES=1
90else
91 MYSQL_COMMUNITY_FEATURES=0
92fi
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
44# Be warned, *DEPEND are version-dependant 104# Be warned, *DEPEND are version-dependant
45# These are used for both runtime and compiletime 105# These are used for both runtime and compiletime
46DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) 106DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
47 userland_GNU? ( sys-process/procps ) 107 userland_GNU? ( sys-process/procps )
48 >=sys-apps/sed-4 108 >=sys-apps/sed-4
75PDEPEND="${PDEPEND} =virtual/mysql-$(get_version_component_range 1-2 ${PV})" 135PDEPEND="${PDEPEND} =virtual/mysql-$(get_version_component_range 1-2 ${PV})"
76 136
77# Work out the default SERVER_URI correctly 137# Work out the default SERVER_URI correctly
78if [ -z "${SERVER_URI}" ]; then 138if [ -z "${SERVER_URI}" ]; then
79 # The community build is on the mirrors 139 # The community build is on the mirrors
80 if [ "${PN}" == "mysql-community" ]; then 140 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
81 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${PV//_/-}.tar.gz" 141 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${PV//_/-}.tar.gz"
82 # The enterprise source is on the primary site only 142 # The (old) enterprise source is on the primary site only
83 elif [ "${PN}" == "mysql" ]; then 143 elif [ "${PN}" == "mysql" ]; then
84 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${PV//_/-}.tar.gz" 144 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${PV//_/-}.tar.gz"
85 fi 145 fi
86fi 146fi
87 147
89SRC_URI="${SERVER_URI}" 149SRC_URI="${SERVER_URI}"
90 150
91[[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI} 151[[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI}
92 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 152 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
93 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"
94mysql_version_is_at_least "5.1.12" \ 155mysql_version_is_at_least "5.1.12" \
95&& [[ -n "${PBXT_VERSION}" ]] \ 156&& [[ -n "${PBXT_VERSION}" ]] \
96&& 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} )"
97 164
98DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 165DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
99HOMEPAGE="http://www.mysql.com/" 166HOMEPAGE="http://www.mysql.com/"
100LICENSE="GPL-2" 167LICENSE="GPL-2"
101SLOT="0" 168SLOT="0"
102IUSE="big-tables debug embedded minimal perl selinux ssl static" 169IUSE="big-tables debug embedded minimal ${IUSE_DEFAULT_ON}perl selinux ssl static"
103 170
104mysql_version_is_at_least "4.1" \ 171mysql_version_is_at_least "4.1" \
105&& IUSE="${IUSE} latin1" 172&& IUSE="${IUSE} latin1"
106 173
107mysql_version_is_at_least "4.1.3" \ 174mysql_version_is_at_least "4.1.3" \
117|| IUSE="${IUSE} berkdb" 184|| IUSE="${IUSE} berkdb"
118 185
119mysql_version_is_at_least "5.1.12" \ 186mysql_version_is_at_least "5.1.12" \
120&& IUSE="${IUSE} pbxt" 187&& IUSE="${IUSE} pbxt"
121 188
122EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 189mysql_version_is_at_least "5.1.26" \
123 pkg_postinst pkg_config pkg_postrm 190&& IUSE="${IUSE} xtradb"
191
192[ "${MYSQL_COMMUNITY_FEATURES}" == "1" ] \
193&& IUSE="${IUSE} ${IUSE_DEFAULT_ON}community profiling"
124 194
125# 195#
126# HELPER FUNCTIONS: 196# HELPER FUNCTIONS:
127# 197#
128 198
199# @FUNCTION: mysql_disable_test
200# @DESCRIPTION:
201# Helper function to disable specific tests.
129mysql_disable_test() { 202mysql_disable_test() {
130 local testname="${1}" ; shift 203 local testname="${1}" ; shift
131 local reason="${@}" 204 local reason="${@}"
132 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 205 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
133 echo ${testname} : ${reason} >> "${mysql_disable_file}" 206 echo ${testname} : ${reason} >> "${mysql_disable_file}"
134 ewarn "test '${testname}' disabled: '${reason}'" 207 ewarn "test '${testname}' disabled: '${reason}'"
135} 208}
136 209
210# @FUNCTION: mysql_init_vars
211# @DESCRIPTION:
137# void mysql_init_vars() 212# void mysql_init_vars()
138#
139# Initialize global variables 213# Initialize global variables
140# 2005-11-19 <vivo@gentoo.org> 214# 2005-11-19 <vivo@gentoo.org>
141
142mysql_init_vars() { 215mysql_init_vars() {
143 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} 216 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
144 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 217 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
145 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 218 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
146 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 219 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
173 PREVIOUS_DATADIR="yes" 246 PREVIOUS_DATADIR="yes"
174 else 247 else
175 PREVIOUS_DATADIR="no" 248 PREVIOUS_DATADIR="no"
176 fi 249 fi
177 export PREVIOUS_DATADIR 250 export PREVIOUS_DATADIR
251 fi
252 else
253 if [[ ${EBUILD_PHASE} == "config" ]]; then
254 local new_MY_DATADIR
255 new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
256 | sed -ne '/datadir/s|^--datadir=||p' \
257 | tail -n1`
258
259 if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
260 ewarn "MySQL MY_DATADIR has changed"
261 ewarn "from ${MY_DATADIR}"
262 ewarn "to ${new_MY_DATADIR}"
263 MY_DATADIR="${new_MY_DATADIR}"
264 fi
178 fi 265 fi
179 fi 266 fi
180 267
181 MY_SOURCEDIR=${SERVER_URI##*/} 268 MY_SOURCEDIR=${SERVER_URI##*/}
182 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 269 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
328 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html" 415 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
329 myconf="${myconf} --with-federated-storage-engine" 416 myconf="${myconf} --with-federated-storage-engine"
330 fi 417 fi
331 fi 418 fi
332 419
333 if [ "${PN}" == "mysql-community" ]; then 420 if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then
334 myconf="${myconf} --enable-community-features" 421 myconf="${myconf} `use_enable community community-features`"
422 if use community; then
423 myconf="${myconf} `use_enable profiling`"
424 else
425 myconf="${myconf} --disable-profiling"
426 fi
335 fi 427 fi
336 428
337 mysql_version_is_at_least "5.0.18" \ 429 mysql_version_is_at_least "5.0.18" \
338 && use max-idx-128 \ 430 && use max-idx-128 \
339 && myconf="${myconf} --with-max-indexes=128" 431 && myconf="${myconf} --with-max-indexes=128"
377 fi 469 fi
378 470
379 myconf="${myconf} --with-plugins=${plugins}" 471 myconf="${myconf} --with-plugins=${plugins}"
380} 472}
381 473
382pbxt_src_compile() { 474pbxt_src_configure() {
383 mysql_init_vars 475 mysql_init_vars
384 476
385 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 477 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
386 478
387 einfo "Reconfiguring dir '${PWD}'" 479 einfo "Reconfiguring dir '${PWD}'"
390 local myconf="" 482 local myconf=""
391 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}" 483 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
392 use debug && myconf="${myconf} --with-debug=full" 484 use debug && myconf="${myconf} --with-debug=full"
393 # TODO: is it safe/needed to use econf here ? 485 # TODO: is it safe/needed to use econf here ?
394 ./configure ${myconf} || die "Problem configuring PBXT storage engine" 486 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
487}
488
489pbxt_src_compile() {
490 # Be backwards compatible for now
491 if [[ $EAPI != 2 ]]; then
492 pbxt_src_configure
493 fi
395 # TODO: is it safe/needed to use emake here ? 494 # TODO: is it safe/needed to use emake here ?
396 make || die "Problem making PBXT storage engine (${myconf})" 495 make || die "Problem making PBXT storage engine (${myconf})"
397 496
398 popd 497 popd
399 # TODO: modify test suite for PBXT 498 # TODO: modify test suite for PBXT
406} 505}
407 506
408# 507#
409# EBUILD FUNCTIONS 508# EBUILD FUNCTIONS
410# 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
411mysql_pkg_setup() { 517mysql_pkg_setup() {
412 if hasq test ${FEATURES} ; then 518 if hasq test ${FEATURES} ; then
413 if ! use minimal ; then 519 if ! use minimal ; then
414 if [[ $UID -eq 0 ]]; then 520 if [[ $UID -eq 0 ]]; then
415 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."
445 mysql_check_version_range "4.0 to 5.0.99.99" \ 551 mysql_check_version_range "4.0 to 5.0.99.99" \
446 && use berkdb \ 552 && use berkdb \
447 && 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!"
448} 554}
449 555
556# @FUNCTION: mysql_src_unpack
557# @DESCRIPTION:
558# Unpack the source code and call mysql_src_prepare for EAPI < 2.
450mysql_src_unpack() { 559mysql_src_unpack() {
451 # Initialize the proper variables first 560 # Initialize the proper variables first
452 mysql_init_vars 561 mysql_init_vars
453 562
454 unpack ${A} 563 unpack ${A}
455 # Grab the patches 564 # Grab the patches
456 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack 565 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
457 566
458 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 567 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
568
569 # Be backwards compatible for now
570 case ${EAPI:-0} in
571 2) : ;;
572 0 | 1) mysql_src_prepare ;;
573 esac
574}
575
576# @FUNCTION: mysql_src_prepare
577# @DESCRIPTION:
578# Apply patches to the source code and remove unneeded bundled libs.
579mysql_src_prepare() {
459 cd "${S}" 580 cd "${S}"
460 581
461 # Apply the patches for this MySQL version 582 # Apply the patches for this MySQL version
462 EPATCH_SUFFIX="patch" 583 EPATCH_SUFFIX="patch"
463 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory" 584 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
524 || die "Failed bdb reconfigure" 645 || die "Failed bdb reconfigure"
525 popd &>/dev/null 646 popd &>/dev/null
526 fi 647 fi
527} 648}
528 649
650# @FUNCTION: mysql_src_configure
651# @DESCRIPTION:
652# Configure mysql to build the code for Gentoo respecting the use flags.
529mysql_src_compile() { 653mysql_src_configure() {
530 # Make sure the vars are correctly initialized 654 # Make sure the vars are correctly initialized
531 mysql_init_vars 655 mysql_init_vars
532 656
533 # $myconf is modified by the configure_* functions 657 # $myconf is modified by the configure_* functions
534 local myconf="" 658 local myconf=""
559 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing" 683 CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
560 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti" 684 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
561 mysql_version_is_at_least "5.0" \ 685 mysql_version_is_at_least "5.0" \
562 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 686 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
563 export CXXFLAGS 687 export CXXFLAGS
688
689 # bug #283926, with GCC4.4, this is required to get correct behavior.
690 append-flags -fno-strict-aliasing
564 691
565 econf \ 692 econf \
566 --libexecdir="/usr/sbin" \ 693 --libexecdir="/usr/sbin" \
567 --sysconfdir="${MY_SYSCONFDIR}" \ 694 --sysconfdir="${MY_SYSCONFDIR}" \
568 --localstatedir="${MY_LOCALSTATEDIR}" \ 695 --localstatedir="${MY_LOCALSTATEDIR}" \
579 # TODO: Move this before autoreconf !!! 706 # TODO: Move this before autoreconf !!!
580 find . -type f -name Makefile -print0 \ 707 find . -type f -name Makefile -print0 \
581 | xargs -0 -n100 sed -i \ 708 | xargs -0 -n100 sed -i \
582 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 709 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
583 710
711 if [[ $EAPI == 2 ]]; then
712 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_configure
713 fi
714}
715
716# @FUNCTION: mysql_src_compile
717# @DESCRIPTION:
718# Compile the mysql code.
719mysql_src_compile() {
720 # Be backwards compatible for now
721 case ${EAPI:-0} in
722 2) : ;;
723 0 | 1) mysql_src_configure ;;
724 esac
725
584 emake || die "emake failed" 726 emake || die "emake failed"
585 727
586 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
587} 729}
588 730
731# @FUNCTION: mysql_src_install
732# @DESCRIPTION:
733# Install mysql.
589mysql_src_install() { 734mysql_src_install() {
590 # Make sure the vars are correctly initialized 735 # Make sure the vars are correctly initialized
591 mysql_init_vars 736 mysql_init_vars
592 737
593 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"
679 fi 824 fi
680 825
681 mysql_lib_symlinks "${D}" 826 mysql_lib_symlinks "${D}"
682} 827}
683 828
829# @FUNCTION: mysql_pkg_preinst
830# @DESCRIPTION:
831# Create the user and groups for mysql - die if that fails.
684mysql_pkg_preinst() { 832mysql_pkg_preinst() {
685 enewgroup mysql 60 || die "problem adding 'mysql' group" 833 enewgroup mysql 60 || die "problem adding 'mysql' group"
686 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"
687} 835}
688 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
689mysql_pkg_postinst() { 845mysql_pkg_postinst() {
690 # Make sure the vars are correctly initialized 846 # Make sure the vars are correctly initialized
691 mysql_init_vars 847 mysql_init_vars
692 848
693 # Check FEATURES="collision-protect" before removing this 849 # Check FEATURES="collision-protect" before removing this
739 mysql_check_version_range "4.0 to 5.0.99.99" \ 895 mysql_check_version_range "4.0 to 5.0.99.99" \
740 && use berkdb \ 896 && use berkdb \
741 && 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!"
742} 898}
743 899
900# @FUNCTION: mysql_pkg_config
901# @DESCRIPTION:
902# Configure mysql environment.
744mysql_pkg_config() { 903mysql_pkg_config() {
904 local old_MY_DATADIR="${MY_DATADIR}"
905
745 # Make sure the vars are correctly initialized 906 # Make sure the vars are correctly initialized
746 mysql_init_vars 907 mysql_init_vars
747 908
748 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR" 909 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
749 910
750 if built_with_use ${CATEGORY}/${PN} minimal ; then 911 if built_with_use ${CATEGORY}/${PN} minimal ; then
751 die "Minimal builds do NOT include the MySQL server" 912 die "Minimal builds do NOT include the MySQL server"
913 fi
914
915 if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
916 local MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${MY_DATADIR})"
917 local old_MY_DATADIR_s="$(strip_duplicate_slashes ${ROOT}/${old_MY_DATADIR})"
918
919 if [[ -d "${old_MY_DATADIR_s}" ]]; then
920 if [[ -d "${MY_DATADIR_s}" ]]; then
921 ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
922 ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
923 else
924 elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
925 mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
926 || die "Moving MY_DATADIR failed"
927 fi
928 else
929 ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
930 if [[ -d "${MY_DATADIR_s}" ]]; then
931 ewarn "Attempting to use ${MY_DATADIR_s}"
932 else
933 eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
934 die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
935 fi
936 fi
752 fi 937 fi
753 938
754 local pwd1="a" 939 local pwd1="a"
755 local pwd2="b" 940 local pwd2="b"
756 local maxtry=5 941 local maxtry=5
857 einfo "Stopping the server ..." 1042 einfo "Stopping the server ..."
858 wait %1 1043 wait %1
859 einfo "Done" 1044 einfo "Done"
860} 1045}
861 1046
1047# @FUNCTION: mysql_pkg_postrm
1048# @DESCRIPTION:
1049# Remove mysql symlinks.
862mysql_pkg_postrm() { 1050mysql_pkg_postrm() {
863 : # mysql_lib_symlinks "${D}" 1051 : # mysql_lib_symlinks "${D}"
864} 1052}

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

  ViewVC Help
Powered by ViewVC 1.1.20