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

Diff of /eclass/mysql.eclass

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

Revision 1.78 Revision 1.86
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2007 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.78 2007/05/11 08:25:11 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.86 2008/03/09 21:13:22 robbat2 Exp $
4 4
5# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 5# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
6# Maintainer: MySQL Team <mysql-bugs@gentoo.org>
6# Maintainer: Luca Longinotti <chtekk@gentoo.org> 7# - Luca Longinotti <chtekk@gentoo.org>
7 8# - Robin H. Johnson <robbat2@gentoo.org>
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too!
9# Note that MYSQL_VERSION_ID must be empty!
10 9
11WANT_AUTOCONF="latest" 10WANT_AUTOCONF="latest"
12WANT_AUTOMAKE="latest" 11WANT_AUTOMAKE="latest"
13 12
14inherit eutils flag-o-matic gnuconfig autotools mysql_fx 13inherit eutils flag-o-matic gnuconfig autotools mysql_fx
16# Shorten the path because the socket path length must be shorter than 107 chars 15# Shorten the path because the socket path length must be shorter than 107 chars
17# and we will run a mysql server during test phase 16# and we will run a mysql server during test phase
18S="${WORKDIR}/mysql" 17S="${WORKDIR}/mysql"
19 18
20[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108" 19[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108"
20if [[ "${MY_EXTRAS_VER}" == "live" ]]; then
21 EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git"
22 inherit git
23fi
21 24
22if [[ ${PR#r} -lt 60 ]] ; then 25if [[ ${PR#r} -lt 60 ]] ; then
23 IS_BITKEEPER=0 26 IS_BITKEEPER=0
24elif [[ ${PR#r} -lt 90 ]] ; then 27elif [[ ${PR#r} -lt 90 ]] ; then
25 IS_BITKEEPER=60 28 IS_BITKEEPER=60
67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 70PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
68 71
69# BitKeeper dependency, compile-time only 72# BitKeeper dependency, compile-time only
70[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" 73[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
71 74
75# Work out the default SERVER_URI correctly
76if [ -z "${SERVER_URI}" ]; then
77 # The community build is on the mirrors
78 if [ "${PN}" == "mysql-community" ]; then
79 SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${PV//_/-}.tar.gz"
80 # The enterprise source is on the primary site only
81 elif [ "${PN}" == "mysql" ]; then
82 SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${PV//_/-}.tar.gz"
83 fi
84fi
85
72# Define correct SRC_URIs 86# Define correct SRC_URIs
73SRC_URI="${SERVER_URI} 87SRC_URI="${SERVER_URI}"
88
89[[ ${MY_EXTRAS_VER} != live ]] && SRC_URI="${SRC_URI}
74 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 90 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
75 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" 91 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
76mysql_version_is_at_least "5.1.12" \ 92mysql_version_is_at_least "5.1.12" \
77&& [[ -n "${PBXT_VERSION}" ]] \ 93&& [[ -n "${PBXT_VERSION}" ]] \
78&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 94&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
80DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 96DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
81HOMEPAGE="http://www.mysql.com/" 97HOMEPAGE="http://www.mysql.com/"
82LICENSE="GPL-2" 98LICENSE="GPL-2"
83SLOT="0" 99SLOT="0"
84IUSE="big-tables debug embedded minimal perl selinux ssl static" 100IUSE="big-tables debug embedded minimal perl selinux ssl static"
85RESTRICT="confcache"
86 101
87mysql_version_is_at_least "4.1" \ 102mysql_version_is_at_least "4.1" \
88&& IUSE="${IUSE} latin1" 103&& IUSE="${IUSE} latin1"
89 104
90mysql_version_is_at_least "4.1.3" \ 105mysql_version_is_at_least "4.1.3" \
239 254
240configure_minimal() { 255configure_minimal() {
241 # These are things we exclude from a minimal build, please 256 # These are things we exclude from a minimal build, please
242 # note that the server actually does get built and installed, 257 # note that the server actually does get built and installed,
243 # but we then delete it before packaging. 258 # but we then delete it before packaging.
244 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication" 259 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication readline"
245 260
246 for i in ${minimal_exclude_list} ; do 261 for i in ${minimal_exclude_list} ; do
247 myconf="${myconf} --without-${i}" 262 myconf="${myconf} --without-${i}"
248 done 263 done
249 myconf="${myconf} --with-extra-charsets=none" 264 myconf="${myconf} --with-extra-charsets=none"
250 myconf="${myconf} --enable-local-infile" 265 myconf="${myconf} --enable-local-infile"
251 266
252 if use static ; then 267 if use static ; then
253 myconf="${myconf} --with-client-ldflags=-all-static" 268 myconf="${myconf} --with-client-ldflags=-all-static"
254 myconf="${myconf} --disable-shared" 269 myconf="${myconf} --disable-shared --with-pic"
255 else 270 else
256 myconf="${myconf} --enable-shared --enable-static" 271 myconf="${myconf} --enable-shared --enable-static"
257 fi 272 fi
258 273
259 if mysql_version_is_at_least "4.1" && ! use latin1 ; then 274 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
275 myconf="${myconf} --without-libwrap" 290 myconf="${myconf} --without-libwrap"
276 291
277 if use static ; then 292 if use static ; then
278 myconf="${myconf} --with-mysqld-ldflags=-all-static" 293 myconf="${myconf} --with-mysqld-ldflags=-all-static"
279 myconf="${myconf} --with-client-ldflags=-all-static" 294 myconf="${myconf} --with-client-ldflags=-all-static"
280 myconf="${myconf} --disable-shared" 295 myconf="${myconf} --disable-shared --with-pic"
281 else 296 else
282 myconf="${myconf} --enable-shared --enable-static" 297 myconf="${myconf} --enable-shared --enable-static"
283 fi 298 fi
284 299
285 if use debug ; then 300 if use debug ; then
441} 456}
442 457
443# 458#
444# EBUILD FUNCTIONS 459# EBUILD FUNCTIONS
445# 460#
446
447mysql_pkg_setup() { 461mysql_pkg_setup() {
448 enewgroup mysql 60 || die "problem adding 'mysql' group" 462 if hasq test ${FEATURES} ; then
449 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 463 if ! use minimal ; then
464 if ! hasq userpriv ${FEATURES} ; then
465 die "Testing with FEATURES=-userpriv is no longer supported by upstream"
466 fi
467 fi
468 fi
450 469
451 # Check for USE flag problems in pkg_setup 470 # Check for USE flag problems in pkg_setup
452 if use static && use ssl ; then 471 if use static && use ssl ; then
453 eerror "MySQL does not support being built statically with SSL support enabled!" 472 eerror "MySQL does not support being built statically with SSL support enabled!"
454 die "MySQL does not support being built statically with SSL support enabled!" 473 die "MySQL does not support being built statically with SSL support enabled!"
466 && ( use cluster || use extraengine ) \ 485 && ( use cluster || use extraengine ) \
467 && use minimal ; then 486 && use minimal ; then
468 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 487 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
469 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 488 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
470 fi 489 fi
490
491 # This should come after all of the die statements
492 enewgroup mysql 60 || die "problem adding 'mysql' group"
493 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
471 494
472 mysql_check_version_range "4.0 to 5.0.99.99" \ 495 mysql_check_version_range "4.0 to 5.0.99.99" \
473 && use berkdb \ 496 && use berkdb \
474 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 497 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
475} 498}
477mysql_src_unpack() { 500mysql_src_unpack() {
478 # Initialize the proper variables first 501 # Initialize the proper variables first
479 mysql_init_vars 502 mysql_init_vars
480 503
481 unpack ${A} 504 unpack ${A}
505 # Grab the patches
506 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git_src_unpack
507 # Bitkeeper checkout support
482 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 508 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
483 if mysql_check_version_range "5.1 to 5.1.99" ; then 509 if mysql_check_version_range "5.1 to 5.1.99" ; then
484 bitkeeper_fetch "mysql-5.1-ndb" 510 bitkeeper_fetch "mysql-5.1-ndb"
485 elif mysql_check_version_range "5.2 to 5.2.99" ; then 511 elif mysql_check_version_range "5.2 to 5.2.99" ; then
486 bitkeeper_fetch "mysql-5.2-falcon" 512 bitkeeper_fetch "mysql-5.2-falcon"
496 fi 522 fi
497 523
498 # Apply the patches for this MySQL version 524 # Apply the patches for this MySQL version
499 EPATCH_SUFFIX="patch" 525 EPATCH_SUFFIX="patch"
500 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory" 526 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
527 # Clean out old items
528 rm -f "${EPATCH_SOURCE}"/*
529 # Now link in right patches
501 mysql_mv_patches 530 mysql_mv_patches
531 # And apply
502 epatch 532 epatch
503 533
504 # Additional checks, remove bundled zlib 534 # Additional checks, remove bundled zlib
505 rm -f "${S}/zlib/"*.[ch] 535 rm -f "${S}/zlib/"*.[ch]
506 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 536 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
526 rebuilddirlist="." 556 rebuilddirlist="."
527 # TODO: check this with a cmake expert 557 # TODO: check this with a cmake expert
528 use innodb \ 558 use innodb \
529 && cmake \ 559 && cmake \
530 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \ 560 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
531 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \ 561 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX)) \
532 "storage/innobase" 562 "storage/innobase"
533 else 563 else
534 rebuilddirlist=". innobase" 564 rebuilddirlist=". innobase"
535 fi 565 fi
536 566
801 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 831 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
802 || touch "${TMPDIR}/fill_help_tables.sql" 832 || touch "${TMPDIR}/fill_help_tables.sql"
803 help_tables="${TMPDIR}/fill_help_tables.sql" 833 help_tables="${TMPDIR}/fill_help_tables.sql"
804 834
805 pushd "${TMPDIR}" &>/dev/null 835 pushd "${TMPDIR}" &>/dev/null
806 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR" 836 "${ROOT}/usr/bin/mysql_install_db" >"${TMPDIR}"/mysql_install_db.log 2>&1
837 if [ $? -ne 0 ]; then
838 grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
839 die "Failed to run mysql_install_db. Please review /var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
840 fi
807 popd &>/dev/null 841 popd &>/dev/null
808 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ 842 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
809 || die "MySQL databases not installed" 843 || die "MySQL databases not installed"
810 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null 844 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null
811 chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null 845 chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null

Legend:
Removed from v.1.78  
changed lines
  Added in v.1.86

  ViewVC Help
Powered by ViewVC 1.1.20