--- /usr/portage/eclass/mysql.eclass 2010-05-14 06:06:11.000000000 +1000 +++ /usr/local/portage-overlays/layman/paprikka/eclass/mysql.eclass 2010-08-08 22:51:30.000000000 +1000 @@ -126,7 +126,7 @@ && DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )" # Having different flavours at the same time is not a good idea -for i in "mysql" "mysql-community" "mariadb" ; do +for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do [[ "${i}" == ${PN} ]] || DEPEND="${DEPEND} !dev-db/${i}" done @@ -147,6 +147,7 @@ PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" # For other stuff to bring us in +[[ "${PN}" == "mysql-cluster" ]] || PDEPEND="${PDEPEND} =virtual/mysql-${MYSQL_PV_MAJOR}" # Work out the default SERVER_URI correctly @@ -160,9 +161,16 @@ http://maria.llarian.net/download/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz " - # The community build is on the mirrors - elif [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then - SERVER_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/mysql-${MY_PV}.tar.gz" + # The community and cluster builds are on the mirrors + elif [[ "${MYSQL_COMMUNITY_FEATURES}" == "1" || ${PN} == "mysql-cluster" ]] ; then + if [[ "${PN}" == "mysql-cluster" ]] ; then + URI_DIR="MySQL-Cluster" + URI_FILE="mysql-cluster-gpl" + else + URI_DIR="MySQL" + URI_FILE="mysql" + fi + SERVER_URI="mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_FILE}-${MY_PV}.tar.gz" # The (old) enterprise source is on the primary site only elif [ "${PN}" == "mysql" ]; then SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz" @@ -195,8 +203,14 @@ mysql_version_is_at_least "4.1" \ && IUSE="${IUSE} latin1" -mysql_version_is_at_least "4.1.3" \ -&& IUSE="${IUSE} cluster extraengine" +if [[ "${PN}" == "mysql-cluster" ]] ; then + IUSE="${IUSE} extraengine" +else + + if mysql_version_is_at_least "4.1.3"; then + IUSE="${IUSE} cluster extraengine" + fi +fi mysql_version_is_at_least "5.0" \ || IUSE="${IUSE} raid" @@ -425,7 +439,7 @@ else myconf="${myconf} --without-debug" mysql_version_is_at_least "4.1.3" \ - && use cluster \ + && ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) \ && myconf="${myconf} --without-ndb-debug" fi @@ -492,7 +506,9 @@ if mysql_version_is_at_least "4.1.3" ; then myconf="${myconf} --with-geometry" - myconf="${myconf} $(use_with cluster ndbcluster)" + if [[ "${PN}" != "mysql-cluster" ]] ; then + myconf="${myconf} $(use_with cluster ndbcluster)" + fi fi if mysql_version_is_at_least "4.1.3" && use extraengine ; then @@ -613,13 +629,18 @@ done # like configuration=max-no-ndb - if use cluster ; then + if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) ; then plugins_sta="${plugins_sta} ndbcluster partition" plugins_dis="${plugins_dis//partition}" myconf="${myconf} --with-ndb-binlog" else plugins_dis="${plugins_dis} ndbcluster" fi + + # No falcon in MySQL Cluster + if ( mysql_version_is_at_least "5.2" && [[ "${PN}" != "mysql-cluster" ]] ) ; then + plugins="${plugins},falcon" + fi if [[ "${PN}" == "mariadb" ]] ; then # In MariaDB, InnoDB is packaged in the xtradb directory, so it's not @@ -811,9 +832,12 @@ i="${S}"/storage/innodb_plugin/plug.in [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}" - # Additional checks, remove bundled zlib - rm -f "${S}/zlib/"*.[ch] - sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" + # Additional checks, remove bundled zlib (Cluster needs this, for static + # memory management in zlib, leave available for Cluster) + if [[ "${PN}" != "mysql-cluster" ]] ; then + rm -f "${S}/zlib/"*.[ch] + sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" + fi rm -f "scripts/mysqlbug" # Make charsets install in the right place @@ -1278,6 +1302,8 @@ options="${options/skip-locking/skip-external-locking}" 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