aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eclass/mysql-cmake-multilib.eclass67
-rw-r--r--eclass/mysql-v2.eclass113
2 files changed, 103 insertions, 77 deletions
diff --git a/eclass/mysql-cmake-multilib.eclass b/eclass/mysql-cmake-multilib.eclass
index 57f365b..3a05764 100644
--- a/eclass/mysql-cmake-multilib.eclass
+++ b/eclass/mysql-cmake-multilib.eclass
@@ -12,10 +12,10 @@
# @DESCRIPTION:
# The mysql-cmake-multilib.eclass provides the support to build the mysql
# ebuilds using the cmake build system. This eclass provides
-# the src_prepare, src_configure, src_compile and src_install
+# the src_prepare, src_configure, src_compile, and src_install
# phase hooks.
-inherit flag-o-matic multilib prefix mysql-cmake cmake-multilib
+inherit flag-o-matic multilib prefix eutils mysql-cmake cmake-multilib
#
# HELPER FUNCTIONS:
@@ -40,14 +40,8 @@ configure_cmake_minimal() {
mycmakeargs+=(
-DWITHOUT_SERVER=1
-DWITHOUT_EMBEDDED_SERVER=1
- -DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=none
-DINSTALL_SQLBENCHDIR=
- -DWITH_SSL=system
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
- -DWITH_READLINE=0
- -DWITH_LIBEDIT=0
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1
-DWITHOUT_CSV_STORAGE_ENGINE=1
@@ -59,6 +53,7 @@ configure_cmake_minimal() {
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITHOUT_INNOBASE_STORAGE_ENGINE=1
-DWITH_UNIT_TESTS=0
+ -DENABLE_DTRACE=0
)
}
@@ -69,13 +64,8 @@ configure_cmake_standard() {
debug-print-function ${FUNCNAME} "$@"
mycmakeargs+=(
- -DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DMYSQL_USER=mysql
- -DWITH_READLINE=0
- -DWITH_LIBEDIT=0
- -DWITH_ZLIB=system
- -DWITHOUT_LIBWRAP=1
)
mycmakeargs+=(
@@ -85,18 +75,13 @@ configure_cmake_standard() {
$(cmake-utils_use_with profiling)
$(cmake-utils_use_enable systemtap DTRACE)
$(cmake-utils_use_with test UNIT_TESTS)
+ $(cmake-utils_use_enable static-libs STATIC_LIBS)
)
if use static; then
mycmakeargs+=( -DWITH_PIC=1 )
fi
- if use ssl; then
- mycmakeargs+=( -DWITH_SSL=system )
- else
- mycmakeargs+=( -DWITH_SSL=bundled )
- fi
-
if use jemalloc; then
mycmakeargs+=( -DWITH_SAFEMALLOC=OFF )
fi
@@ -118,7 +103,7 @@ configure_cmake_standard() {
$(cmake-utils_use_with extraengine FEDERATED_STORAGE_ENGINE)
)
- if pbxt_available ; then
+ if in_iuse pbxt ; then
mycmakeargs+=( $(cmake-utils_use_with pbxt PBXT_STORAGE_ENGINE) )
fi
@@ -131,12 +116,6 @@ configure_cmake_standard() {
$(mysql-cmake_use_plugin pam AUTH_PAM)
)
- if use jemalloc ; then
- mycmakeargs+=( -DWITH_JEMALLOC="system" )
- else
- mycmakeargs+=( -DWITH_JEMALLOC=no )
- fi
-
if mysql_version_is_at_least 10.0.5 ; then
# CassandraSE needs Apache Thrift which is not in portage
# TODO: Add use and deps for Connect SE external deps
@@ -202,7 +181,8 @@ mysql-cmake-multilib_src_configure() {
-DINSTALL_DOCREADMEDIR=share/doc/${P}
-DINSTALL_INCLUDEDIR=include/mysql
-DINSTALL_INFODIR=share/info
- -DINSTALL_LIBDIR=@GET_LIBDIR@/mysql
+ -DINSTALL_LIBDIR=@GET_LIBDIR@
+ -DINSTALL_ELIBDIR=@GET_LIBDIR@/mysql
-DINSTALL_MANDIR=share/man
-DINSTALL_MYSQLDATADIR=${EPREFIX}/var/lib/mysql
-DINSTALL_MYSQLSHAREDIR=share/mysql
@@ -214,29 +194,54 @@ mysql-cmake-multilib_src_configure() {
-DINSTALL_SUPPORTFILESDIR=${EPREFIX}/usr/share/mysql
-DMYSQL_UNIX_ADDR=${EPREFIX}/var/run/mysqld/mysqld.sock
-DWITH_COMMENT="Gentoo Linux ${PF}"
+ -DWITH_READLINE=0
+ -DWITH_LIBEDIT=0
+ -DWITH_ZLIB=system
+ -DWITHOUT_LIBWRAP=1
+ -DENABLED_LOCAL_INFILE=1
)
+ if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && mysql_version_is_at_least "5.6.12" ; then
+ mycmakeargs+=( -DWITH_EDITLINE=system )
+ fi
+
+ if use ssl; then
+ mycmakeargs+=( -DWITH_SSL=system )
+ else
+ mycmakeargs+=( -DWITH_SSL=bundled )
+ fi
+
# Bug 412851
- # MariaDB requires this flag to compile with GPLv3 readline linked
+ # MariaDB requires this flag to compile with GPLv3 realine linked
# Adds a warning about redistribution to configure
if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
mycmakeargs+=( -DNOT_FOR_DISTRIBUTION=1 )
fi
+ if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
+ if use jemalloc ; then
+ mycmakeargs+=( -DWITH_JEMALLOC="system" )
+ else
+ mycmakeargs+=( -DWITH_JEMALLOC=no )
+ fi
+ # TODO: uncomment this when libpcre 8.35 is released to remove bundled library
+# mysql_version_is_at_least "10.0.9" mycmakeargs+=( -DWITH_PCRE=system )
+ fi
+
configure_cmake_locale
# Bug #114895, bug #110149
filter-flags "-O" "-O[01]"
CXXFLAGS="${CXXFLAGS} -fno-strict-aliasing"
- CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
+ CXXFLAGS="${CXXFLAGS} -felide-constructors"
# Causes linkage failures. Upstream bug #59607 removes it
if ! mysql_version_is_at_least "5.6" ; then
CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
fi
- # As of 5.7, exceptions are used!
+ # As of 5.7, exceptions and rtti are used!
if ! mysql_version_is_at_least "5.7" ; then
- CXXFLAGS="${CXXFLAGS} -fno-exceptions"
+ CXXFLAGS="${CXXFLAGS} -fno-exceptions -fno-rtti"
fi
export CXXFLAGS
diff --git a/eclass/mysql-v2.eclass b/eclass/mysql-v2.eclass
index ef7b4f4..57a5cf7 100644
--- a/eclass/mysql-v2.eclass
+++ b/eclass/mysql-v2.eclass
@@ -138,15 +138,17 @@ mysql_version_is_at_least "5.1.50" || die "This eclass should only be used with
if [[ -z ${SERVER_URI} ]]; then
[[ -z ${MY_PV} ]] && MY_PV="${PV//_/-}"
if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
- MARIA_FULL_PV=$(replace_version_separator 3 '-' ${MY_PV})
+ # Beginning with 5.5, MariaDB stopped putting beta, alpha or rc on their tarball names
+ mysql_version_is_at_least "5.5" && MARIA_FULL_PV=$(get_version_component_range 1-3) || \
+ MARIA_FULL_PV=$(replace_version_separator 3 '-' ${MY_PV})
MARIA_FULL_P="${PN}-${MARIA_FULL_PV}"
SERVER_URI="
http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
- http://ftp.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
- 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
- http://mirrors.fe.up.pt/pub/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
- http://ftp-stud.hs-esslingen.de/pub/Mirrors/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
+ http://mirror.jmu.edu/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
+ http://mirrors.coreix.net/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
+ http://mirrors.syringanetworks.net/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
+ http://mirrors.fe.up.pt/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
+ http://mirror2.hs-esslingen.de/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
"
if [[ ${PN} == "mariadb-galera" ]]; then
MY_SOURCEDIR="${PN%%-galera}-${MARIA_FULL_PV}"
@@ -211,28 +213,25 @@ case "${BUILD}" in
IUSE="big-tables debug embedded minimal +perl selinux ssl static test"
;;
cmake*)
- IUSE="debug embedded minimal +perl selinux ssl static test"
+ IUSE="debug embedded minimal +perl selinux ssl static static-libs test"
;;
esac
-IUSE="${IUSE} latin1"
-
-IUSE="${IUSE} extraengine"
-IUSE="${IUSE} cluster"
-
-IUSE="${IUSE} max-idx-128"
-IUSE="${IUSE} +community profiling"
+# Common IUSE
+IUSE="${IUSE} latin1 extraengine cluster max-idx-128 +community profiling"
if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
mysql_check_version_range "5.1.38 to 5.3.99" && IUSE="${IUSE} libevent"
- mysql_version_is_at_least "5.2" && IUSE="${IUSE} oqgraph"
- mysql_version_is_at_least "5.2.5" && IUSE="${IUSE} sphinx"
+ mysql_version_is_at_least "5.2" && IUSE="${IUSE} oqgraph" && \
+ REQUIRED_USE="${REQUIRED_USE} minimal? ( !oqgraph )"
+ mysql_version_is_at_least "5.2.5" && IUSE="${IUSE} sphinx" && \
+ REQUIRED_USE="${REQUIRED_USE} minimal? ( !sphinx )"
mysql_version_is_at_least "5.2.10" && IUSE="${IUSE} pam"
# 5.5.33 and 10.0.5 add TokuDB. Authors strongly recommend jemalloc or perfomance suffers
mysql_version_is_at_least "10.0.5" && IUSE="${IUSE} tokudb odbc xml" && \
- REQUIRED_USE="odbc? ( extraengine ) xml? ( extraengine ) tokudb? ( jemalloc )"
+ REQUIRED_USE="${REQUIRED_USE} odbc? ( extraengine ) xml? ( extraengine ) tokudb? ( jemalloc )"
mysql_check_version_range "5.5.33 to 5.5.99" && IUSE="${IUSE} tokudb" && \
- REQUIRED_USE="tokudb? ( jemalloc )"
+ REQUIRED_USE="${REQUIRED_USE} tokudb? ( jemalloc )"
fi
if mysql_version_is_at_least "5.5"; then
@@ -261,10 +260,17 @@ DEPEND="
kernel_linux? ( sys-process/procps )
>=sys-apps/sed-4
>=sys-apps/texinfo-4.7-r1
- >=sys-libs/readline-4.1${_mysql_v2_multilib_usedep}
>=sys-libs/zlib-1.2.3${_mysql_v2_multilib_usedep}
- !dev-db/mariadb-native-client[mysqlcompat]
"
+# TODO: add this as a dep if it is moved from the overlay
+# !dev-db/mariadb-native-client[mysqlcompat]
+
+# dev-db/mysql-5.6.12+ only works with dev-libs/libedit
+if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && mysql_version_is_at_least "5.6.12" ; then
+ DEPEND="${DEPEND} dev-libs/libedit${_mysql_v2_multilib_usedep}"
+else
+ DEPEND="${DEPEND} >=sys-libs/readline-4.1${_mysql_v2_multilib_usedep}"
+fi
if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
mysql_check_version_range "5.1.38 to 5.3.99" && \
@@ -277,6 +283,21 @@ if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
DEPEND="${DEPEND} !minimal? ( pam? ( virtual/pam${_mysql_v2_multilib_usedep} ) )"
# Bug 441700 MariaDB >=5.3 include custom mytop
mysql_version_is_at_least "5.3" && DEPEND="${DEPEND} perl? ( !dev-db/mytop )"
+ if mysql_version_is_at_least "10.0.5" ; then
+ DEPEND="${DEPEND}
+ odbc? ( dev-db/unixODBC${_mysql_v2_multilib_usedep} )
+ xml? ( dev-libs/libxml2${_mysql_v2_multilib_usedep} )
+ "
+ fi
+ mysql_version_is_at_least "10.0.7" && \
+ DEPEND="${DEPEND} oqgraph? ( dev-libs/judy${_mysql_v2_multilib_usedep} )"
+ # TODO: uncomment this when libpcre 8.35 is released to remove bundled library
+# if mysql_version_is_at_least "10.0.9" ; then
+# use embedded && \
+# DEPEND="${DEPEND}
+# >=dev-libs/libpcre-8.35[static-libs?${_mysql_v2_multilib_usedep_nobrackets}]" || \
+# DEPEND="${DEPEND} >=dev-libs/libpcre-8.35${_mysql_v2_multilib_usedep}"
+# fi
fi
# Having different flavours at the same time is not a good idea
@@ -285,14 +306,14 @@ for i in "mysql" "mariadb" "mariadb-galera" "percona-server" "mysql-cluster" ; d
DEPEND="${DEPEND} !dev-db/${i}"
done
-if mysql_version_is_at_least "5.5" ; then
- DEPEND="${DEPEND} jemalloc? ( dev-libs/jemalloc${_mysql_v2_multilib_usedep} )"
- DEPEND="${DEPEND} tcmalloc? ( dev-util/google-perftools${_mysql_v2_multilib_usedep} )"
-fi
-
if mysql_version_is_at_least "5.5.7" ; then
- DEPEND="${DEPEND} systemtap? ( >=dev-util/systemtap-1.3${_mysql_v2_multilib_usedep} )"
- DEPEND="${DEPEND} kernel_linux? ( dev-libs/libaio${_mysql_v2_multilib_usedep} )"
+ DEPEND="${DEPEND}
+ jemalloc? ( dev-libs/jemalloc[static-libs?${_mysql_v2_multilib_usedep_nobrackets}] )
+ tcmalloc? ( dev-util/google-perftools${_mysql_v2_multilib_usedep} )
+ >=sys-libs/zlib-1.2.3[static-libs?${_mysql_v2_multilib_usedep_nobrackets}]
+ ssl? ( >=dev-libs/openssl-0.9.6d[static-libs?${_mysql_v2_multilib_usedep_nobrackets}] )
+ systemtap? ( >=dev-util/systemtap-1.3${_mysql_v2_multilib_usedep} )
+ kernel_linux? ( dev-libs/libaio${_mysql_v2_multilib_usedep} )"
fi
if [[ ${PN} == "mysql-cluster" ]] ; then
@@ -317,13 +338,6 @@ if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
virtual/perl-Term-ANSIColor
virtual/perl-Time-HiRes ) "
fi
-
- if mysql_version_is_at_least "10.0.5" ; then
- RDEPEND="${RDEPEND}
- odbc? ( dev-db/unixODBC${_mysql_v2_multilib_usedep} )
- xml? ( dev-libs/libxml2${_mysql_v2_multilib_usedep} )
- "
- fi
fi
if [[ ${PN} == "mariadb-galera" ]] ; then
@@ -364,7 +378,7 @@ PDEPEND="${PDEPEND} =virtual/mysql-${MYSQL_PV_MAJOR}-r1${_mysql_v2_multilib_used
# External patches
#
-# MariaDB has integrated PBXT
+# MariaDB has integrated PBXT until it was dropped in version 5.5.33
# PBXT_VERSION means that we have a PBXT patch for this PV
# PBXT was only introduced after 5.1.12
pbxt_patch_available() {
@@ -373,7 +387,7 @@ pbxt_patch_available() {
}
pbxt_available() {
- pbxt_patch_available || ( [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] && mysql_check_version_range "5.1 to 5.5.32" )
+ pbxt_patch_available || [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] && mysql_check_version_range "5.1 to 5.5.32"
return $?
}
@@ -482,7 +496,7 @@ mysql-v2_pkg_setup() {
mysql_version_is_at_least "7.2.9" && java-pkg-opt-2_pkg_setup
fi
- if has tokudb ${IUSE} && use tokudb && [[ $(gcc-version) < 4.7 ]] ; then
+ if use_if_iuse tokudb && [[ $(gcc-version) < 4.7 ]] ; then
eerror "${PN} with tokudb needs to be built with gcc-4.7 or later."
eerror "Please use gcc-config to switch to gcc-4.7 or later version."
die
@@ -588,20 +602,13 @@ mysql-v2_pkg_postinst() {
done
if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
- if mysql_version_is_at_least "5.2.10" && use pam ; then
+ if use_if_iuse pam ; then
einfo
elog "This install includes the PAM authentication plugin."
elog "To activate and configure the PAM plugin, please read:"
elog "https://kb.askmonty.org/en/pam-authentication-plugin/"
einfo
fi
-
- if mysql_version_is_at_least "10.0.7" ; then
- einfo
- elog "In 10.0, XtraDB is no longer the default InnoDB implementation."
- elog "It is installed as a dynamic plugin and must be activated in my.cnf."
- einfo
- fi
fi
einfo
@@ -614,9 +621,19 @@ mysql-v2_pkg_postinst() {
elog "If you are upgrading major versions, you should run the"
elog "mysql_upgrade tool."
einfo
+
+ if [[ ${PN} == "mariadb-galera" ]] ; then
+ einfo
+ elog "Be sure to edit the my.cnf file to activate your cluster settings."
+ elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
+ elog "The first time the cluster is activated, you should add"
+ elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
+ elog "This option should then be removed for subsequent starts."
+ einfo
+ fi
fi
- if pbxt_available && use pbxt ; then
+ if use_if_iuse pbxt ; then
elog "Note: PBXT is now statically built when enabled."
elog ""
elog "If, you previously installed as a plugin and "
@@ -777,6 +794,10 @@ mysql-v2_pkg_config() {
use prefix || options="${options} --user=mysql"
+ # Fix bug 446200. Don't reference host my.cnf
+ use prefix && [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] \
+ && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'"
+
pushd "${TMPDIR}" &>/dev/null
#cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' '--basedir=${EPREFIX}/usr' ${options}"
cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db