summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Riosa <vivo@gentoo.org>2007-03-04 12:35:58 +0000
committerFrancesco Riosa <vivo@gentoo.org>2007-03-04 12:35:58 +0000
commit0cd9605f25c483d3af865614df4172450684c6b8 (patch)
treeb28e994898a405a680e710ecf0cfe0593fd4aa5d /dev-db/mysql-community
parentVersion bump (diff)
downloadhistorical-0cd9605f25c483d3af865614df4172450684c6b8.tar.gz
historical-0cd9605f25c483d3af865614df4172450684c6b8.tar.bz2
historical-0cd9605f25c483d3af865614df4172450684c6b8.zip
version bump
Package-Manager: portage-2.1.2-r9
Diffstat (limited to 'dev-db/mysql-community')
-rw-r--r--dev-db/mysql-community/ChangeLog8
-rw-r--r--dev-db/mysql-community/files/digest-mysql-community-5.1.15_beta9
-rw-r--r--dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild786
3 files changed, 802 insertions, 1 deletions
diff --git a/dev-db/mysql-community/ChangeLog b/dev-db/mysql-community/ChangeLog
index b4c52aef583b..b82163d307eb 100644
--- a/dev-db/mysql-community/ChangeLog
+++ b/dev-db/mysql-community/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-db/mysql-community
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql-community/ChangeLog,v 1.11 2007/01/12 18:10:16 chtekk Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql-community/ChangeLog,v 1.12 2007/03/04 12:35:58 vivo Exp $
+
+*mysql-community-5.1.15_beta (04 Mar 2007)
+
+ 04 Mar 2007; Francesco Riosa <vivo@gentoo.org>
+ +mysql-community-5.1.15_beta.ebuild:
+ version bump
12 Jan 2007; Luca Longinotti <chtekk@gentoo.org> -files/logrotate.mysql,
mysql-community-5.0.27-r1.ebuild, mysql-community-5.1.14_beta-r1.ebuild,
diff --git a/dev-db/mysql-community/files/digest-mysql-community-5.1.15_beta b/dev-db/mysql-community/files/digest-mysql-community-5.1.15_beta
new file mode 100644
index 000000000000..ef5b37b7c8a8
--- /dev/null
+++ b/dev-db/mysql-community/files/digest-mysql-community-5.1.15_beta
@@ -0,0 +1,9 @@
+MD5 8c4c114e0dbbdda6822c0c7d7eed4faf mysql-5.1.15-beta.tar.gz 22150362
+RMD160 a171efd3984db8033c5f7208193bcc93675f21e7 mysql-5.1.15-beta.tar.gz 22150362
+SHA256 8ff4f1054060329adb0584cef5c145fbb8ba62b573cb952381e4dc9a9b60ad66 mysql-5.1.15-beta.tar.gz 22150362
+MD5 70ebc7114fb25d93327b7bf475f8276e mysql-extras-20070217.tar.bz2 50155
+RMD160 fd8cb330772fcc77bc3ac501a899f8c704d0d798 mysql-extras-20070217.tar.bz2 50155
+SHA256 401a8fed36f87d81d53c5c392a017d85a3a27c1694e38350ba30d68732197ea0 mysql-extras-20070217.tar.bz2 50155
+MD5 a9397f7825d2a8d0fb021585e225984c pbxt-0.9.8-beta.tar.gz 2828272
+RMD160 c0d5f0a67cc7cddecce9e198afe0ef3521a52cb4 pbxt-0.9.8-beta.tar.gz 2828272
+SHA256 976cf0539f2756e6a3b81014161f5ae8b77261aee6455c46a7e5de1054708b37 pbxt-0.9.8-beta.tar.gz 2828272
diff --git a/dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild b/dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild
new file mode 100644
index 000000000000..4a64aacc9498
--- /dev/null
+++ b/dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild
@@ -0,0 +1,786 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild,v 1.1 2007/03/04 12:35:58 vivo Exp $
+
+MY_EXTRAS_VER="20070217"
+SERVER_URI="mirror://gentoo/MySQL-${PV%.*}/mysql-${PV//_/-}.tar.gz"
+PBXT_VERSION="0.9.8-beta"
+#SPHINX_VERSION="0.9.7-rc2"
+
+# REMEMBER: also update eclass/mysql*.eclass before committing!
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+
+WANT_AUTOCONF="latest"
+WANT_AUTOMAKE="latest"
+
+inherit eutils flag-o-matic gnuconfig autotools mysql_fx
+
+# Shorten the path because the socket path length must be shorter than 107 chars
+# and we will run a mysql server during test phase
+S="${WORKDIR}/mysql"
+
+# MYSQL_VERSION_ID will be:
+# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
+# This is an important part, because many of the choices the MySQL ebuild will do
+# depend on this variable.
+# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
+
+MYSQL_VERSION_ID=""
+tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
+for vatom in 0 1 2 3 ; do
+ # pad to length 2
+ tpv[${vatom}]="00${tpv[${vatom}]}"
+ MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
+done
+# strip leading "0" (otherwise it's considered an octal number by BASH)
+MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
+
+# Be warned, *DEPEND are version-dependant
+DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
+ userland_GNU? ( sys-process/procps )
+ >=sys-apps/sed-4
+ >=sys-apps/texinfo-4.7-r1
+ >=sys-libs/readline-4.1
+ >=sys-libs/zlib-1.2.3"
+
+# Having different flavours at the same time is not a good idea
+for i in "" "-community" ; do
+ [[ "${i}" == ${PN#mysql} ]] ||
+ DEPEND="${DEPEND} !dev-db/mysql${i}"
+done
+
+mysql_version_is_at_least "5.1" \
+|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
+
+mysql_version_is_at_least "5.1.12" \
+&& DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
+
+# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
+PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
+
+# Define correct SRC_URIs
+SRC_URI="${SERVER_URI}
+ http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
+mysql_version_is_at_least "5.1.12" \
+&& [[ -n "${PBXT_VERSION}" ]] \
+&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
+
+#mysql_version_is_at_least "5.1.15" \
+#&& [[ -n "${SPHINX_VERSION}" ]] \
+#&& SRC_URI="${SRC_URI} sphinx? ( http://www.sphinxsearch.com/downloads/sphinx-${SPHINX_VERSION}.tar.gz )"
+
+DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
+HOMEPAGE="http://www.mysql.com/"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="big-tables debug embedded minimal perl selinux ssl static"
+RESTRICT="confcache"
+
+mysql_version_is_at_least "4.1" \
+&& IUSE="${IUSE} latin1"
+
+mysql_version_is_at_least "4.1.3" \
+&& IUSE="${IUSE} cluster extraengine"
+
+mysql_version_is_at_least "5.0" \
+|| IUSE="${IUSE} raid"
+
+mysql_version_is_at_least "5.0.18" \
+&& IUSE="${IUSE} max-idx-128"
+
+mysql_version_is_at_least "5.1" \
+&& IUSE="${IUSE} innodb"
+
+mysql_version_is_at_least "5.1" \
+|| IUSE="${IUSE} berkdb"
+
+mysql_version_is_at_least "5.1.12" \
+&& IUSE="${IUSE} pbxt"
+
+#mysql_version_is_at_least "5.1.15" \
+#&& IUSE="${IUSE} sphinx"
+
+RDEPEND="${DEPEND}
+ !minimal? ( dev-db/mysql-init-scripts )
+ selinux? ( sec-policy/selinux-mysql )"
+
+#
+# HELPER FUNCTIONS:
+#
+
+mysql_disable_test() {
+ local testname="${1}" ; shift
+ local reason="${@}"
+ local mysql_disable_file="${S}/mysql-test/t/disabled.def"
+ echo ${testname} : ${reason} >> "${mysql_disable_file}"
+ ewarn "test '${testname}' disabled: '${reason}'"
+}
+
+# void mysql_init_vars()
+#
+# Initialize global variables
+# 2005-11-19 <vivo@gentoo.org>
+
+mysql_init_vars() {
+ MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
+ MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
+ MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
+ MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
+ MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
+ MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
+
+ if [[ -z "${DATADIR}" ]] ; then
+ DATADIR=""
+ if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
+ DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
+ | sed -ne '/datadir/s|^--datadir=||p' \
+ | tail -n1`
+ if [[ -z "${DATADIR}" ]] ; then
+ DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
+ | sed -e 's/.*=\s*//'`
+ fi
+ fi
+ if [[ -z "${DATADIR}" ]] ; then
+ DATADIR="${MY_LOCALSTATEDIR}"
+ einfo "Using default DATADIR"
+ fi
+ elog "MySQL DATADIR is ${DATADIR}"
+
+ if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
+ if [[ -e "${DATADIR}" ]] ; then
+ elog "Previous datadir found, it's YOUR job to change"
+ elog "ownership and take care of it"
+ PREVIOUS_DATADIR="yes"
+ else
+ PREVIOUS_DATADIR="no"
+ fi
+ export PREVIOUS_DATADIR
+ fi
+ fi
+
+ MY_SOURCEDIR=${SERVER_URI##*/}
+ MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
+
+ export MY_SHAREDSTATEDIR MY_SYSCONFDIR
+ export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
+ export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
+}
+
+configure_minimal() {
+ # These are things we exclude from a minimal build, please
+ # note that the server actually does get built and installed,
+ # but we then delete it before packaging.
+ local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication"
+
+ for i in ${minimal_exclude_list} ; do
+ myconf="${myconf} --without-${i}"
+ done
+ myconf="${myconf} --with-extra-charsets=none"
+ myconf="${myconf} --enable-local-infile"
+
+ if use static ; then
+ myconf="${myconf} --with-client-ldflags=-all-static"
+ myconf="${myconf} --disable-shared"
+ else
+ myconf="${myconf} --enable-shared --enable-static"
+ fi
+
+ if mysql_version_is_at_least "4.1" && ! use latin1 ; then
+ myconf="${myconf} --with-charset=utf8"
+ myconf="${myconf} --with-collation=utf8_general_ci"
+ else
+ myconf="${myconf} --with-charset=latin1"
+ myconf="${myconf} --with-collation=latin1_swedish_ci"
+ fi
+}
+
+configure_common() {
+ myconf="${myconf} $(use_with big-tables)"
+ myconf="${myconf} --enable-local-infile"
+ myconf="${myconf} --with-extra-charsets=all"
+ myconf="${myconf} --with-mysqld-user=mysql"
+ myconf="${myconf} --with-server"
+ myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
+ myconf="${myconf} --without-libwrap"
+
+ if use static ; then
+ myconf="${myconf} --with-mysqld-ldflags=-all-static"
+ myconf="${myconf} --with-client-ldflags=-all-static"
+ myconf="${myconf} --disable-shared"
+ else
+ myconf="${myconf} --enable-shared --enable-static"
+ fi
+
+ if use debug ; then
+ myconf="${myconf} --with-debug=full"
+ else
+ myconf="${myconf} --without-debug"
+ mysql_version_is_at_least "4.1.3" \
+ && use cluster \
+ && myconf="${myconf} --without-ndb-debug"
+ fi
+
+ if mysql_version_is_at_least "4.1" && ! use latin1 ; then
+ myconf="${myconf} --with-charset=utf8"
+ myconf="${myconf} --with-collation=utf8_general_ci"
+ else
+ myconf="${myconf} --with-charset=latin1"
+ myconf="${myconf} --with-collation=latin1_swedish_ci"
+ fi
+
+ if use embedded ; then
+ myconf="${myconf} --with-embedded-privilege-control"
+ myconf="${myconf} --with-embedded-server"
+ else
+ myconf="${myconf} --without-embedded-privilege-control"
+ myconf="${myconf} --without-embedded-server"
+ fi
+
+}
+
+configure_51() {
+ # TODO: !!!! readd --without-readline
+ # the failure depend upon config/ac-macros/readline.m4 checking into
+ # readline.h instead of history.h
+ myconf="${myconf} $(use_with ssl)"
+ myconf="${myconf} --enable-assembler"
+ myconf="${myconf} --with-geometry"
+ myconf="${myconf} --with-readline"
+ myconf="${myconf} --with-row-based-replication"
+ myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
+ myconf="${myconf} --without-pstack"
+ use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
+
+ # 5.1 introduces a new way to manage storage engines (plugins)
+ # like configuration=none
+ local plugins="csv,myisam,myisammrg,heap"
+ if use extraengine ; then
+ # like configuration=max-no-ndb, archive and example removed in 5.1.11
+ plugins="${plugins},archive,blackhole,example,federated,partition"
+
+ elog "Before using the Federated storage engine, please be sure to read"
+ elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
+ fi
+
+ if use innodb ; then
+ plugins="${plugins},innobase"
+ fi
+
+ # like configuration=max-no-ndb
+ if use cluster ; then
+ plugins="${plugins},ndbcluster"
+ myconf="${myconf} --with-ndb-binlog"
+ fi
+
+ if mysql_version_is_at_least "5.2" ; then
+ plugins="${plugins},falcon"
+ fi
+
+ #mysql_version_is_at_least "5.1.15" \
+ #&& use sphinx \
+ #&& plugins="${plugins},sphinx"
+
+ myconf="${myconf} --with-plugins=${plugins}"
+}
+
+sphinx_src_unpack() {
+ einfo "${WORKDIR}/sphinx-${SPHINX_VERSION}/mysqlse"
+ einfo "${WORKDIR}/mysql/storage/"
+ mv "${WORKDIR}/sphinx-${SPHINX_VERSION}/mysqlse" "${WORKDIR}/mysql/storage/"
+}
+
+pbxt_src_compile() {
+ mysql_init_vars
+
+ pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
+
+ einfo "Reconfiguring dir '${PWD}'"
+ AT_GNUCONF_UPDATE="yes" eautoreconf
+
+ local myconf=""
+ myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
+ use debug && myconf="${myconf} --with-debug=full"
+ # TODO: is it safe/needed to use econf here ?
+ ./configure ${myconf} || die "Problem configuring PBXT storage engine"
+ # TODO: is it safe/needed to use emake here ?
+ make || die "Problem making PBXT storage engine (${myconf})"
+
+ popd
+ # TODO: modify test suite for PBXT
+}
+
+pbxt_src_install() {
+ pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
+ make install || die "Failed to install PBXT"
+ popd
+}
+
+#
+# EBUILD FUNCTIONS
+#
+
+pkg_setup() {
+ enewgroup mysql 60 || die "problem adding 'mysql' group"
+ enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
+
+ # Check for USE flag problems in pkg_setup
+ if use static && use ssl ; then
+ eerror "MySQL does not support being built statically with SSL support enabled!"
+ die "MySQL does not support being built statically with SSL support enabled!"
+ fi
+
+ if ! mysql_version_is_at_least "5.0" \
+ && use raid \
+ && use static ; then
+ eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
+ eerror "with RAID support enabled."
+ die "USE flags 'raid' and 'static' conflict!"
+ fi
+
+ if mysql_version_is_at_least "4.1.3" \
+ && ( use cluster || use extraengine ) \
+ && use minimal ; then
+ eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
+ die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
+ fi
+
+ mysql_check_version_range "4.0 to 5.0.99.99" \
+ && use berkdb \
+ && elog "Berkeley DB support is deprecated and will be removed in future versions!"
+}
+
+src_unpack() {
+ # Initialize the proper variables first
+ mysql_init_vars
+
+ unpack ${A}
+ mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
+ cd "${S}"
+
+ # Apply the patches for this MySQL version
+ EPATCH_SUFFIX="patch"
+ mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
+ mysql_mv_patches
+ epatch
+
+ # Additional checks, remove bundled zlib
+ rm -f "${S}/zlib/"*.[ch]
+ sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
+ rm -f "scripts/mysqlbug"
+
+ # Make charsets install in the right place
+ find . -name 'Makefile.am' \
+ -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
+
+ if mysql_version_is_at_least "4.1" ; then
+ # Remove what needs to be recreated, so we're sure it's actually done
+ find . -name Makefile \
+ -o -name Makefile.in \
+ -o -name configure \
+ -exec rm -f {} \;
+ rm -f "ltmain.sh"
+ rm -f "scripts/mysqlbug"
+ fi
+
+ local rebuilddirlist d
+
+ if mysql_version_is_at_least "5.1.12" ; then
+ rebuilddirlist="."
+ # TODO: check this with a cmake expert
+ use innodb \
+ && cmake \
+ -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
+ -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
+ "storage/innobase"
+ else
+ rebuilddirlist=". innobase"
+ fi
+
+ for d in ${rebuilddirlist} ; do
+ einfo "Reconfiguring dir '${d}'"
+ pushd "${d}" &>/dev/null
+ AT_GNUCONF_UPDATE="yes" eautoreconf
+ popd &>/dev/null
+ done
+
+ if mysql_check_version_range "4.1 to 5.0.99.99" \
+ && use berkdb ; then
+ [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
+ pushd "bdb/dist" \
+ && sh s_all \
+ || die "Failed bdb reconfigure" \
+ &>/dev/null
+ popd &>/dev/null
+ fi
+
+ #mysql_version_is_at_least "5.1.15" \
+ #&& use sphinx \
+ #&& sphinx_src_unpack
+}
+
+src_compile() {
+ # Make sure the vars are correctly initialized
+ mysql_init_vars
+
+ # $myconf is modified by the configure_* functions
+ local myconf=""
+
+ if use minimal ; then
+ configure_minimal
+ else
+ configure_common
+ configure_51
+ fi
+
+ # Bug #114895, bug #110149
+ filter-flags "-O" "-O[01]"
+
+ # glib-2.3.2_pre fix, bug #16496
+ append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
+
+ CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-strict-aliasing"
+ CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
+ mysql_version_is_at_least "5.0" \
+ && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
+ export CXXFLAGS
+
+ econf \
+ --libexecdir="/usr/sbin" \
+ --sysconfdir="${MY_SYSCONFDIR}" \
+ --localstatedir="${MY_LOCALSTATEDIR}" \
+ --sharedstatedir="${MY_SHAREDSTATEDIR}" \
+ --libdir="${MY_LIBDIR}" \
+ --includedir="${MY_INCLUDEDIR}" \
+ --with-low-memory \
+ --with-client-ldflags=-lstdc++ \
+ --enable-thread-safe-client \
+ --with-comment="Gentoo Linux ${PF}" \
+ --without-docs \
+ ${myconf} || die "econf failed"
+
+ # TODO: Move this before autoreconf !!!
+ find . -type f -name Makefile -print0 \
+ | xargs -0 -n100 sed -i \
+ -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
+
+ emake || die "emake failed"
+
+ mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
+}
+
+src_install() {
+ # Make sure the vars are correctly initialized
+ mysql_init_vars
+
+ emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
+
+ mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
+
+ insinto "${MY_INCLUDEDIR}"
+ doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
+
+ # Convenience links
+ dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
+ dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
+ dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
+
+ # Various junk (my-*.cnf moved elsewhere)
+ rm -Rf "${D}/usr/share/info"
+ for removeme in "mysql-log-rotate" mysql.server* \
+ binary-configure* my-*.cnf mi_test_all*
+ do
+ rm -f "${D}"/usr/share/mysql/${removeme}
+ done
+
+ # Clean up stuff for a minimal build
+ if use minimal ; then
+ rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
+ rm -f "${D}"/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam}
+ rm -f "${D}/usr/sbin/mysqld"
+ rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
+ fi
+
+ # Configuration stuff
+ if mysql_version_is_at_least "4.1" ; then
+ mysql_mycnf_version="4.1"
+ else
+ mysql_mycnf_version="4.0"
+ fi
+ insinto "${MY_SYSCONFDIR}"
+ doins scripts/mysqlaccess.conf
+ sed -e "s!@DATADIR@!${DATADIR}!g" \
+ "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
+ > "${TMPDIR}/my.cnf.ok"
+ if mysql_version_is_at_least "4.1" && use latin1 ; then
+ sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
+ fi
+ newins "${TMPDIR}/my.cnf.ok" my.cnf
+
+ # Minimal builds don't have the MySQL server
+ if ! use minimal ; then
+ # Empty directories ...
+ diropts "-m0750"
+ if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
+ dodir "${DATADIR}"
+ keepdir "${DATADIR}"
+ chown -R mysql:mysql "${D}/${DATADIR}"
+ fi
+
+ diropts "-m0755"
+ for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
+ dodir "${folder}"
+ keepdir "${folder}"
+ chown -R mysql:mysql "${D}/${folder}"
+ done
+ fi
+
+ # Docs
+ dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
+
+ # Minimal builds don't have the MySQL server
+ if ! use minimal ; then
+ docinto "support-files"
+ for script in \
+ support-files/my-*.cnf \
+ support-files/magic \
+ support-files/ndb-config-2-node.ini
+ do
+ dodoc "${script}"
+ done
+
+ docinto "scripts"
+ for script in scripts/mysql* ; do
+ [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
+ done
+ fi
+
+ mysql_lib_symlinks "${D}"
+}
+
+pkg_preinst() {
+ enewgroup mysql 60 || die "problem adding 'mysql' group"
+ enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
+}
+
+pkg_postinst() {
+ # Make sure the vars are correctly initialized
+ mysql_init_vars
+
+ # Check FEATURES="collision-protect" before removing this
+ [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
+
+ # Secure the logfiles
+ touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
+ chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
+ chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
+
+ # Minimal builds don't have the MySQL server
+ if ! use minimal ; then
+ docinto "support-files"
+ for script in \
+ support-files/my-*.cnf \
+ support-files/magic \
+ support-files/ndb-config-2-node.ini
+ do
+ dodoc "${script}"
+ done
+
+ docinto "scripts"
+ for script in scripts/mysql* ; do
+ [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
+ done
+
+ einfo
+ elog "You might want to run:"
+ elog "\"emerge --config =${CATEGORY}/${PF}\""
+ elog "if this is a new install."
+ einfo
+ fi
+
+ if mysql_version_is_at_least "5.1.12" && use pbxt ; then
+ # TODO: explain it better
+ elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
+ elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
+ elog "if, after that, you cannot start the MySQL server,"
+ elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
+ elog "use the MySQL upgrade script to restore the table"
+ elog "or execute the following SQL command:"
+ elog " CREATE TABLE IF NOT EXISTS plugin ("
+ elog " name char(64) binary DEFAULT '' NOT NULL,"
+ elog " dl char(128) DEFAULT '' NOT NULL,"
+ elog " PRIMARY KEY (name)"
+ elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
+ fi
+
+ mysql_check_version_range "4.0 to 5.0.99.99" \
+ && use berkdb \
+ && elog "Berkeley DB support is deprecated and will be removed in future versions!"
+}
+
+pkg_config() {
+ # Make sure the vars are correctly initialized
+ mysql_init_vars
+
+ [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR"
+
+ if built_with_use ${CATEGORY}/${PN} minimal ; then
+ die "Minimal builds do NOT include the MySQL server"
+ fi
+
+ local pwd1="a"
+ local pwd2="b"
+ local maxtry=5
+
+ if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then
+ ewarn "You have already a MySQL database in place."
+ ewarn "(${ROOT}/${DATADIR}/*)"
+ ewarn "Please rename or delete it if you wish to replace it."
+ die "MySQL database already exists!"
+ fi
+
+ einfo "Creating the mysql database and setting proper"
+ einfo "permissions on it ..."
+
+ einfo "Insert a password for the mysql 'root' user"
+ ewarn "Avoid [\"'\\_%] characters in the password"
+ read -rsp " >" pwd1 ; echo
+
+ einfo "Retype the password"
+ read -rsp " >" pwd2 ; echo
+
+ if [[ "x$pwd1" != "x$pwd2" ]] ; then
+ die "Passwords are not the same"
+ fi
+
+ local options=""
+ local sqltmp="$(emktemp)"
+
+ local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
+ [[ -r "${help_tables}" ]] \
+ && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
+ || touch "${TMPDIR}/fill_help_tables.sql"
+ help_tables="${TMPDIR}/fill_help_tables.sql"
+
+ pushd "${TMPDIR}" &>/dev/null
+ "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
+ popd &>/dev/null
+ [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \
+ || die "MySQL databases not installed"
+ chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null
+ chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null
+
+ if mysql_version_is_at_least "4.1.3" ; then
+ options="--skip-ndbcluster"
+
+ # Filling timezones, see
+ # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
+ "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
+
+ if [[ -r "${help_tables}" ]] ; then
+ cat "${help_tables}" >> "${sqltmp}"
+ fi
+ fi
+
+ local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
+ local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
+ local mysqld="${ROOT}/usr/sbin/mysqld \
+ ${options} \
+ --user=mysql \
+ --skip-grant-tables \
+ --basedir=${ROOT}/usr \
+ --datadir=${ROOT}/${DATADIR} \
+ --skip-innodb \
+ --skip-bdb \
+ --skip-networking \
+ --max_allowed_packet=8M \
+ --net_buffer_length=16K \
+ --socket=${socket} \
+ --pid-file=${pidfile}"
+ ${mysqld} &
+ while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
+ maxtry=$((${maxtry}-1))
+ echo -n "."
+ sleep 1
+ done
+
+ # Do this from memory, as we don't want clear text passwords in temp files
+ local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
+ "${ROOT}/usr/bin/mysql" \
+ --socket=${socket} \
+ -hlocalhost \
+ -e "${sql}"
+
+ einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
+
+ "${ROOT}/usr/bin/mysql" \
+ --socket=${socket} \
+ -hlocalhost \
+ -uroot \
+ -p"${pwd1}" \
+ mysql < "${sqltmp}"
+
+ # Stop the server and cleanup
+ kill $(< "${pidfile}" )
+ rm -f "${sqltmp}"
+ einfo "Stopping the server ..."
+ wait %1
+ einfo "Done"
+}
+
+pkg_postrm() {
+ : # mysql_lib_symlinks "${D}"
+}
+
+
+
+
+
+
+
+src_test() {
+ make check || die "make check failed"
+ if ! use "minimal" ; then
+ cd "${S}/mysql-test"
+ einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
+ local retstatus
+ local t
+ local testopts="--force"
+
+ # sandbox make ndbd zombie
+ hasq "sandbox" ${FEATURES} && testopts="${testopts} --skip-ndb"
+
+ addpredict /this-dir-does-not-exist/t9.MYI
+
+ # mysqladmin start before dir creation
+ mkdir ${S}/mysql-test/var{,/log}
+
+ if [[ ${UID} -eq 0 ]] ; then
+ mysql_disable_test "im_cmd_line" "fail as root"
+ mysql_disable_test "im_daemon_life_cycle" "fail as root"
+ mysql_disable_test "im_instance_conf" "fail as root"
+ mysql_disable_test "im_life_cycle" "fail as root"
+ mysql_disable_test "im_options" "fail as root"
+ mysql_disable_test "im_utils" "fail as root"
+ mysql_disable_test "trigger" "fail as root"
+ fi
+
+ use "extraengine" && mysql_disable_test "federated" "fail with extraengine"
+
+ mysql_disable_test "view" "Already fixed: fail because now we are in year 2007"
+
+ # from Makefile.am:
+ retstatus=1
+ ./mysql-test-run.pl ${testopts} --mysqld=--binlog-format=mixed \
+ && ./mysql-test-run.pl ${testopts} --ps-protocol --mysqld=--binlog-format=row \
+ && ./mysql-test-run.pl ${testopts} --ps-protocol --mysqld=--binlog-format=mixed \
+ && ./mysql-test-run.pl ${testopts} --mysqld=--binlog-format=row \
+ && retstatus=0
+
+ # Just to be sure ;)
+ pkill -9 -f "${S}/ndb" 2>/dev/null
+ pkill -9 -f "${S}/sql" 2>/dev/null
+ [[ $retstatus -eq 0 ]] || die "make test failed"
+ else
+ einfo "Skipping server tests due to minimal build."
+ fi
+}