version bump
authorFrancesco Riosa <vivo@gentoo.org>
Sun, 4 Mar 2007 12:35:58 +0000 (12:35 +0000)
committerFrancesco Riosa <vivo@gentoo.org>
Sun, 4 Mar 2007 12:35:58 +0000 (12:35 +0000)
Package-Manager: portage-2.1.2-r9

dev-db/mysql-community/ChangeLog
dev-db/mysql-community/files/digest-mysql-community-5.1.15_beta [new file with mode: 0644]
dev-db/mysql-community/mysql-community-5.1.15_beta.ebuild [new file with mode: 0644]
dev-db/mysql/ChangeLog
dev-db/mysql/files/digest-mysql-5.0.34 [new file with mode: 0644]
dev-db/mysql/files/digest-mysql-5.0.34_alpha20070101-r61 [deleted file]
dev-db/mysql/mysql-5.0.34.ebuild [new file with mode: 0644]
dev-db/mysql/mysql-5.0.34_alpha20070101-r61.ebuild [deleted file]

index b4c52aef583b13774881de099c0910d303064dbe..b82163d307ebf4b10e488478bcb8b23bf0db9718 100644 (file)
@@ -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 (file)
index 0000000..ef5b37b
--- /dev/null
@@ -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 (file)
index 0000000..4a64aac
--- /dev/null
@@ -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
+}
index 059b4a20b06c4b97d6d5fe9d50d4907702f2c91d..23b1cb9d7258f73a72ed97107f5f77128e7b1b56 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for dev-db/mysql
 # Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/ChangeLog,v 1.387 2007/03/04 07:42:21 genone Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/ChangeLog,v 1.388 2007/03/04 12:31:49 vivo Exp $
+
+*mysql-5.0.34 (04 Mar 2007)
+
+  04 Mar 2007; Francesco Riosa <vivo@gentoo.org>
+  -mysql-5.0.34_alpha20070101-r61.ebuild, +mysql-5.0.34.ebuild:
+  version bump
 
   04 Mar 2007; Marius Mauch <genone@gentoo.org> mysql-3.23.58-r1.ebuild:
   Replacing einfo with elog
diff --git a/dev-db/mysql/files/digest-mysql-5.0.34 b/dev-db/mysql/files/digest-mysql-5.0.34
new file mode 100644 (file)
index 0000000..eaeb486
--- /dev/null
@@ -0,0 +1,6 @@
+MD5 043c8cb8820b6d1fb67d679e54daba5d mysql-5.0.34.tar.gz 23015439
+RMD160 5294b76edb004162247e9e032929fe728887202b mysql-5.0.34.tar.gz 23015439
+SHA256 45ccd88a33964c58027cbd3cf5c5223ae04f9cfefd0ad15ca0ee6dbda3eff0b4 mysql-5.0.34.tar.gz 23015439
+MD5 70ebc7114fb25d93327b7bf475f8276e mysql-extras-20070217.tar.bz2 50155
+RMD160 fd8cb330772fcc77bc3ac501a899f8c704d0d798 mysql-extras-20070217.tar.bz2 50155
+SHA256 401a8fed36f87d81d53c5c392a017d85a3a27c1694e38350ba30d68732197ea0 mysql-extras-20070217.tar.bz2 50155
diff --git a/dev-db/mysql/files/digest-mysql-5.0.34_alpha20070101-r61 b/dev-db/mysql/files/digest-mysql-5.0.34_alpha20070101-r61
deleted file mode 100644 (file)
index 5a802e6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MD5 37b3967f2b54bdb8eee00c3c65adf69b mysql-5.0.34-bk-20070101.tar.bz2 14431547
-RMD160 aab9ce10073c7a70585d041e475b575185e77fb6 mysql-5.0.34-bk-20070101.tar.bz2 14431547
-SHA256 c81687985203537acee8ccfbb4be4cd1dd764c1ac67ebdbb46b3ef00931b243b mysql-5.0.34-bk-20070101.tar.bz2 14431547
-MD5 e1e6e89f424529605fb7529f0b9a4b07 mysql-extras-20070108.tar.bz2 49996
-RMD160 eb7459e2390c4d877f4c4d5cf9bb3d14c39c4212 mysql-extras-20070108.tar.bz2 49996
-SHA256 55d46ac681036cda8f95d5f169d494cd3c6a25fbc7ec327a949518adf64a8ba8 mysql-extras-20070108.tar.bz2 49996
diff --git a/dev-db/mysql/mysql-5.0.34.ebuild b/dev-db/mysql/mysql-5.0.34.ebuild
new file mode 100644 (file)
index 0000000..f82cff8
--- /dev/null
@@ -0,0 +1,709 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/mysql-5.0.34.ebuild,v 1.1 2007/03/04 12:31:49 vivo Exp $
+
+MY_EXTRAS_VER="20070217"
+SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${PV//_/-}.tar.gz"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+
+
+# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too!
+# Note that MYSQL_VERSION_ID must be empty!
+
+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.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"
+
+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"
+
+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_40_41_50() {
+       myconf="${myconf} $(use_with perl bench)"
+       myconf="${myconf} --enable-assembler"
+       myconf="${myconf} --with-extra-tools"
+       myconf="${myconf} --with-innodb"
+       myconf="${myconf} --without-readline"
+       mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
+
+       # --with-vio is not needed anymore, it's on by default and
+       # has been removed from configure
+       if use ssl ; then
+                mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
+       fi
+
+       myconf="${myconf} $(use_with ssl openssl)"
+
+       # The following fix is due to a bug with bdb on SPARC's. See:
+       # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
+       # It comes down to non-64-bit safety problems.
+       if use alpha || use amd64 || use hppa || use mips || use sparc ; then
+               elog "Berkeley DB support was disabled due to incompatible arch"
+               myconf="${myconf} --without-berkeley-db"
+       else
+               if use berkdb ; then
+                       myconf="${myconf} --with-berkeley-db=./bdb"
+               else
+                       myconf="${myconf} --without-berkeley-db"
+               fi
+       fi
+
+       if mysql_version_is_at_least "4.1.3" ; then
+               myconf="${myconf} --with-geometry"
+               myconf="${myconf} $(use_with cluster ndbcluster)"
+       fi
+
+       if mysql_version_is_at_least "4.1.3" && use extraengine ; then
+               # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
+               myconf="${myconf} --with-archive-storage-engine"
+
+               # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
+               myconf="${myconf} --with-csv-storage-engine"
+
+               # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
+               myconf="${myconf} --with-blackhole-storage-engine"
+
+               # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
+               # http://dev.mysql.com/doc/mysql/en/federated-description.html
+               # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
+               if mysql_version_is_at_least "5.0.3" ; then
+                       elog "Before using the Federated storage engine, please be sure to read"
+                       elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
+                       myconf="${myconf} --with-federated-storage-engine"
+               fi
+       fi
+
+       mysql_version_is_at_least "5.0.18" \
+       && use max-idx-128 \
+       && myconf="${myconf} --with-max-indexes=128"
+}
+
+#
+# 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
+
+       rebuilddirlist=". innobase"
+
+       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
+}
+
+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_40_41_50
+       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"
+}
+
+src_install() {
+       # Make sure the vars are correctly initialized
+       mysql_init_vars
+
+       emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
+
+       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
+
+       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}"
+               einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
+               local retstatus
+               local t
+               addpredict /this-dir-does-not-exist/t9.MYI
+
+               # mysqladmin start before dir creation
+               mkdir -p "${S}"/mysql-test/var{,/log}
+
+               if ! hasq "userpriv" ${FEATURES} ; then
+                       mysql_disable_test      "im_daemon_life_cycle"  "fails as root"
+                       mysql_disable_test      "im_life_cycle"                 "fails as root"
+                       mysql_disable_test      "im_options_set"                "fails as root"
+                       mysql_disable_test      "im_options_unset"              "fails as root"
+                       mysql_disable_test      "im_utils"                              "fails as root"
+               fi
+
+               for t in \
+               loaddata_autocom_ndb \
+               ndb_{alter_table{,2},autodiscover{,2,3},basic,bitfield,blob} \
+               ndb_{cache{,2},cache_multi{,2},charset,condition_pushdown,config} \
+               ndb_{database,gis,index,index_ordered,index_unique,insert,limit} \
+               ndb_{loaddatalocal,lock,minmax,multi,read_multi_range,rename,replace} \
+               ndb_{restore,subquery,transaction,trigger,truncate,types,update} \
+               ps_7ndb rpl_ndb_innodb_trans strict_autoinc_5ndb \
+               mysql_upgrade
+               do
+                       mysql_disable_test      "${t}"  "fails with sandbox enabled"
+               done
+
+               use "extraengine" && mysql_disable_test "federated" "fails with extraengine USE"
+               use "ssl" && mysql_disable_test "ssl_des" "fails requiring PEM passphrase"
+
+               make test-force
+               retstatus=$?
+
+               # 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
+}
diff --git a/dev-db/mysql/mysql-5.0.34_alpha20070101-r61.ebuild b/dev-db/mysql/mysql-5.0.34_alpha20070101-r61.ebuild
deleted file mode 100644 (file)
index 010819d..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/mysql-5.0.34_alpha20070101-r61.ebuild,v 1.2 2007/01/12 17:58:32 chtekk Exp $
-
-MY_EXTRAS_VER="latest"
-SERVER_URI="mirror://gentoo/MySQL-${PV%.*}/mysql-${PV//_alpha/-bk-}.tar.bz2"
-
-inherit mysql
-
-# REMEMBER: also update eclass/mysql*.eclass before committing!
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
-
-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 makes ndbd zombie
-               hasq "sandbox" ${FEATURES} && testopts="${testopts} --skip-ndb"
-
-               addpredict /this-dir-does-not-exist/t9.MYI
-
-               # mysqladmin starts before directory creation
-               mkdir -p "${S}"/mysql-test/var{,/log}
-
-               if ! hasq "userpriv" ${FEATURES} ; then
-                       mysql_disable_test      "im_cmd_line"                   "fails as root"
-                       mysql_disable_test      "im_daemon_life_cycle"  "fails as root"
-                       mysql_disable_test      "im_instance_conf"              "fails as root"
-                       mysql_disable_test      "im_life_cycle"                 "fails as root"
-                       mysql_disable_test      "im_options"                    "fails as root"
-                       mysql_disable_test      "im_options_set"                "fails as root"
-                       mysql_disable_test      "im_options_unset"              "fails as root"
-                       mysql_disable_test      "im_utils"                              "fails as root"
-                       mysql_disable_test      "trigger"                               "fails as root"
-               fi
-
-               for t in \
-               loaddata_autocom_ndb \
-               ndb_{alter_table{,2},autodiscover{,2,3},basic,bitfield,blob} \
-               ndb_{cache{,2},cache_multi{,2},charset,condition_pushdown,config} \
-               ndb_{database,gis,index,index_ordered,index_unique,insert,limit} \
-               ndb_{loaddatalocal,lock,minmax,multi,read_multi_range,rename,replace} \
-               ndb_{restore,subquery,transaction,trigger,truncate,types,update} \
-               ps_7ndb rpl_ndb_innodb_trans strict_autoinc_5ndb
-               do
-                       mysql_disable_test      "${t}"  "fails with sandbox enabled"
-               done
-
-               use "extraengine" && mysql_disable_test "federated" "fails with extraengine USE"
-
-               mysql_disable_test "view" "Already fixed: fails because we're in year 2007 now"
-
-               for t in \
-               myisam mysql_upgrade query_cache_notembedded rpl000015 rpl000017
-               do
-                       mysql_disable_test      "${t}"  "FIXME: I'm not supposed to fail"
-               done
-
-               make test-force
-               retstatus=$?
-
-               # 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
-}