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

Diff of /eclass/mysql-v2.eclass

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

Revision 1.5 Revision 1.12
1# Copyright 1999-2011 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-v2.eclass,v 1.5 2011/08/19 20:06:12 jmbsvicetto Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql-v2.eclass,v 1.12 2012/01/06 21:32:48 jmbsvicetto Exp $
4 4
5# @ECLASS: mysql-v2.eclass 5# @ECLASS: mysql-v2.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Maintainers: 7# Maintainers:
8# - MySQL Team <mysql-bugs@gentoo.org> 8# - MySQL Team <mysql-bugs@gentoo.org>
17# It provides the src_unpack, src_prepare, src_configure, src_compile, 17# It provides the src_unpack, src_prepare, src_configure, src_compile,
18# scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm 18# scr_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm
19# phase hooks. 19# phase hooks.
20 20
21# @ECLASS-VARIABLE: BUILD 21# @ECLASS-VARIABLE: BUILD
22# @DESCRIPTION:
22# @DESCRIPTION: Build type of the mysql version 23# Build type of the mysql version
23# The default value is autotools
24: ${BUILD:=autotools} 24: ${BUILD:=autotools}
25 25
26case ${BUILD} in 26case ${BUILD} in
27 "cmake") 27 "cmake")
28 BUILD_INHERIT="mysql-cmake" 28 BUILD_INHERIT="mysql-cmake"
39esac 39esac
40 40
41MYSQL_EXTRAS="" 41MYSQL_EXTRAS=""
42 42
43# @ECLASS-VARIABLE: MYSQL_EXTRAS_VER 43# @ECLASS-VARIABLE: MYSQL_EXTRAS_VER
44# @DESCRIPTION:
44# @DESCRIPTION: The version of the MYSQL_EXTRAS repo to use to build mysql 45# The version of the MYSQL_EXTRAS repo to use to build mysql
46# Use "none" to disable it's use
45[[ "${MY_EXTRAS_VER}" == "live" ]] && MYSQL_EXTRAS="git-2" 47[[ "${MY_EXTRAS_VER}" == "live" ]] && MYSQL_EXTRAS="git-2"
46 48
47inherit eutils flag-o-matic gnuconfig ${MYSQL_EXTRAS} ${BUILD_INHERIT} mysql_fx versionator toolchain-funcs 49inherit eutils flag-o-matic gnuconfig ${MYSQL_EXTRAS} ${BUILD_INHERIT} mysql_fx versionator toolchain-funcs
48 50
49# 51#
50# Supported EAPI versions and export functions 52# Supported EAPI versions and export functions
51# 53#
52 54
53case "${EAPI:-0}" in 55case "${EAPI:-0}" in
54 2|3|4) ;; 56 3|4) ;;
55 *) die "Unsupported EAPI: ${EAPI}" ;; 57 *) die "Unsupported EAPI: ${EAPI}" ;;
56esac 58esac
57 59
58EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm 60EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm
59 61
171 173
172# Define correct SRC_URIs 174# Define correct SRC_URIs
173SRC_URI="${SERVER_URI}" 175SRC_URI="${SERVER_URI}"
174 176
175# Gentoo patches to MySQL 177# Gentoo patches to MySQL
176[[ ${MY_EXTRAS_VER} != live ]] \ 178[[ ${MY_EXTRAS_VER} != live ]] && [[ ${MY_EXTRAS_VER} != none ]] \
177&& SRC_URI="${SRC_URI} 179&& SRC_URI="${SRC_URI}
178 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 180 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
179 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 181 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
180 http://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 182 http://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
181 http://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" 183 http://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
223 225
224[[ ${PN} == "mariadb" ]] \ 226[[ ${PN} == "mariadb" ]] \
225&& mysql_version_is_at_least "5.2.5" \ 227&& mysql_version_is_at_least "5.2.5" \
226&& IUSE="${IUSE} sphinx" 228&& IUSE="${IUSE} sphinx"
227 229
230mysql_version_is_at_least "5.5.7" \
231&& IUSE="${IUSE} systemtap"
228 232
229# 233#
230# DEPENDENCIES: 234# DEPENDENCIES:
231# 235#
232 236
233# Be warned, *DEPEND are version-dependant 237# Be warned, *DEPEND are version-dependant
234# These are used for both runtime and compiletime 238# These are used for both runtime and compiletime
235DEPEND=" 239DEPEND="
236 ssl? ( >=dev-libs/openssl-0.9.6d ) 240 ssl? ( >=dev-libs/openssl-0.9.6d )
237 userland_GNU? ( sys-process/procps ) 241 kernel_linux? ( sys-process/procps )
238 >=sys-apps/sed-4 242 >=sys-apps/sed-4
239 >=sys-apps/texinfo-4.7-r1 243 >=sys-apps/texinfo-4.7-r1
240 >=sys-libs/readline-4.1 244 >=sys-libs/readline-4.1
241 >=sys-libs/zlib-1.2.3 245 >=sys-libs/zlib-1.2.3
242 virtual/yacc
243" 246"
244 247
245[[ ${PN} == mariadb ]] \ 248[[ ${PN} == mariadb ]] \
246&& DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )" 249&& DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )"
247 250
249for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do 252for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do
250 [[ ${i} == ${PN} ]] || 253 [[ ${i} == ${PN} ]] ||
251 DEPEND="${DEPEND} !dev-db/${i}" 254 DEPEND="${DEPEND} !dev-db/${i}"
252done 255done
253 256
257# prefix: first need to implement something for #196294
254RDEPEND="${DEPEND} 258RDEPEND="${DEPEND}
255 !minimal? ( dev-db/mysql-init-scripts ) 259 !minimal? ( !prefix? ( dev-db/mysql-init-scripts ) )
256 selinux? ( sec-policy/selinux-mysql ) 260 selinux? ( sec-policy/selinux-mysql )
261"
262
263DEPEND="${DEPEND}
264 virtual/yacc
257" 265"
258 266
259DEPEND="${DEPEND} static? ( || ( sys-libs/ncurses[static-libs] <=sys-libs/ncurses-5.7-r3 ) )" 267DEPEND="${DEPEND} static? ( || ( sys-libs/ncurses[static-libs] <=sys-libs/ncurses-5.7-r3 ) )"
260 268
261# compile-time-only 269# compile-time-only
270&& DEPEND="${DEPEND} oqgraph? ( >=dev-libs/boost-1.40.0 )" 278&& DEPEND="${DEPEND} oqgraph? ( >=dev-libs/boost-1.40.0 )"
271 279
272[[ "${PN}" == "mariadb" ]] \ 280[[ "${PN}" == "mariadb" ]] \
273&& mysql_version_is_at_least "5.2.5" \ 281&& mysql_version_is_at_least "5.2.5" \
274&& DEPEND="${DEPEND} sphinx? ( app-misc/sphinx )" 282&& DEPEND="${DEPEND} sphinx? ( app-misc/sphinx )"
283
284mysql_version_is_at_least "5.5.7" \
285&& DEPEND="${DEPEND} systemtap? ( >=dev-util/systemtap-1.3 )"
275 286
276# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 287# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
277PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 288PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
278 289
279# For other stuff to bring us in 290# For other stuff to bring us in
374# warn about deprecated features 385# warn about deprecated features
375mysql-v2_pkg_setup() { 386mysql-v2_pkg_setup() {
376 387
377 if has test ${FEATURES} ; then 388 if has test ${FEATURES} ; then
378 if ! use minimal ; then 389 if ! use minimal ; then
379 if [[ $UID -eq 0 ]]; then 390 if ! has userpriv ${FEATURES} ; then
380 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." 391 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
381 fi 392 fi
382 fi 393 fi
383 fi 394 fi
384 395
488 499
489 # Make sure the vars are correctly initialized 500 # Make sure the vars are correctly initialized
490 mysql_init_vars 501 mysql_init_vars
491 502
492 # Check FEATURES="collision-protect" before removing this 503 # Check FEATURES="collision-protect" before removing this
493 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 504 [[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
494 505
495 # Secure the logfiles 506 # Secure the logfiles
496 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 507 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
497 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 508 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
498 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 509 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
590 601
591 local pwd1="a" 602 local pwd1="a"
592 local pwd2="b" 603 local pwd2="b"
593 local maxtry=15 604 local maxtry=15
594 605
595 if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${ROOT}/root/.my.cnf" ]; then 606 if [ -z "${MYSQL_ROOT_PASSWORD}" -a -f "${EROOT}/root/.my.cnf" ]; then
596 MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${ROOT}/root/.my.cnf")" 607 MYSQL_ROOT_PASSWORD="$(sed -n -e '/^password=/s,^password=,,gp' "${EROOT}/root/.my.cnf")"
597 fi 608 fi
598 609
599 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then 610 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
600 ewarn "You have already a MySQL database in place." 611 ewarn "You have already a MySQL database in place."
601 ewarn "(${ROOT}/${MY_DATADIR}/*)" 612 ewarn "(${ROOT}/${MY_DATADIR}/*)"
632 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 643 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
633 || touch "${TMPDIR}/fill_help_tables.sql" 644 || touch "${TMPDIR}/fill_help_tables.sql"
634 help_tables="${TMPDIR}/fill_help_tables.sql" 645 help_tables="${TMPDIR}/fill_help_tables.sql"
635 646
636 pushd "${TMPDIR}" &>/dev/null 647 pushd "${TMPDIR}" &>/dev/null
637 "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1 648 "${EROOT}/usr/bin/mysql_install_db" "--basedir=${EPREFIX}/usr" >"${TMPDIR}"/mysql_install_db.log 2>&1
638 if [ $? -ne 0 ]; then 649 if [ $? -ne 0 ]; then
639 grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 650 grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
640 die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" 651 die "Failed to run mysql_install_db. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
641 fi 652 fi
642 popd &>/dev/null 653 popd &>/dev/null
643 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ 654 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
644 || die "MySQL databases not installed" 655 || die "MySQL databases not installed"
645 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null 656 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
646 chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null 657 chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
647 658
648 # Figure out which options we need to disable to do the setup 659 # Figure out which options we need to disable to do the setup
649 helpfile="${TMPDIR}/mysqld-help" 660 helpfile="${TMPDIR}/mysqld-help"
650 ${ROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null 661 ${EROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null
651 for opt in grant-tables host-cache name-resolve networking slave-start bdb \ 662 for opt in grant-tables host-cache name-resolve networking slave-start bdb \
652 federated innodb ssl log-bin relay-log slow-query-log external-locking \ 663 federated innodb ssl log-bin relay-log slow-query-log external-locking \
653 ndbcluster \ 664 ndbcluster \
654 ; do 665 ; do
655 optexp="--(skip-)?${opt}" optfull="--skip-${opt}" 666 optexp="--(skip-)?${opt}" optfull="--skip-${opt}"
659 egrep -sq external-locking "${helpfile}" && \ 670 egrep -sq external-locking "${helpfile}" && \
660 options="${options/skip-locking/skip-external-locking}" 671 options="${options/skip-locking/skip-external-locking}"
661 672
662 # Filling timezones, see 673 # Filling timezones, see
663 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 674 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
664 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null 675 "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
665 676
666 if [[ -r "${help_tables}" ]] ; then 677 if [[ -r "${help_tables}" ]] ; then
667 cat "${help_tables}" >> "${sqltmp}" 678 cat "${help_tables}" >> "${sqltmp}"
668 fi 679 fi
669 680
670 einfo "Creating the mysql database and setting proper" 681 einfo "Creating the mysql database and setting proper"
671 einfo "permissions on it ..." 682 einfo "permissions on it ..."
672 683
673 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock" 684 local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
674 local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid" 685 local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
675 local mysqld="${ROOT}/usr/sbin/mysqld \ 686 local mysqld="${EROOT}/usr/sbin/mysqld \
676 ${options} \ 687 ${options} \
677 --user=mysql \ 688 --user=mysql \
678 --basedir=${ROOT}/usr \ 689 --basedir=${EROOT}/usr \
679 --datadir=${ROOT}/${MY_DATADIR} \ 690 --datadir=${ROOT}/${MY_DATADIR} \
680 --max_allowed_packet=8M \ 691 --max_allowed_packet=8M \
681 --net_buffer_length=16K \ 692 --net_buffer_length=16K \
682 --default-storage-engine=MyISAM \ 693 --default-storage-engine=MyISAM \
683 --socket=${socket} \ 694 --socket=${socket} \
698 fi 709 fi
699 710
700 ebegin "Setting root password" 711 ebegin "Setting root password"
701 # Do this from memory, as we don't want clear text passwords in temp files 712 # Do this from memory, as we don't want clear text passwords in temp files
702 local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'" 713 local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'"
703 "${ROOT}/usr/bin/mysql" \ 714 "${EROOT}/usr/bin/mysql" \
704 --socket=${socket} \ 715 --socket=${socket} \
705 -hlocalhost \ 716 -hlocalhost \
706 -e "${sql}" 717 -e "${sql}"
707 eend $? 718 eend $?
708 719
709 ebegin "Loading \"zoneinfo\", this step may require a few seconds ..." 720 ebegin "Loading \"zoneinfo\", this step may require a few seconds ..."
710 "${ROOT}/usr/bin/mysql" \ 721 "${EROOT}/usr/bin/mysql" \
711 --socket=${socket} \ 722 --socket=${socket} \
712 -hlocalhost \ 723 -hlocalhost \
713 -uroot \ 724 -uroot \
714 -p"${MYSQL_ROOT_PASSWORD}" \ 725 -p"${MYSQL_ROOT_PASSWORD}" \
715 mysql < "${sqltmp}" 726 mysql < "${sqltmp}"
728# @FUNCTION: mysql-v2_pkg_postrm 739# @FUNCTION: mysql-v2_pkg_postrm
729# @DESCRIPTION: 740# @DESCRIPTION:
730# Remove mysql symlinks. 741# Remove mysql symlinks.
731mysql-v2_pkg_postrm() { 742mysql-v2_pkg_postrm() {
732 743
733 : # mysql_lib_symlinks "${D}" 744 : # mysql_lib_symlinks "${ED}"
734} 745}

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.20