commit: 6e2be137829438864279bd17f959b443235dcedc Author: Brian Evans <grknight <AT> gentoo <DOT> org> AuthorDate: Thu Sep 17 01:41:41 2015 +0000 Commit: Brian Evans <grknight <AT> gentoo <DOT> org> CommitDate: Thu Sep 17 01:41:41 2015 +0000 URL: https://gitweb.gentoo.org/proj/mysql.git/commit/?id=6e2be137
mysql-multilib eclass: Update when to show the ABI rebuild message Signed-off-by: Brian Evans <grknight <AT> gentoo.org> eclass/mysql-multilib.eclass | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/eclass/mysql-multilib.eclass b/eclass/mysql-multilib.eclass index 74c47bf..d880267 100644 --- a/eclass/mysql-multilib.eclass +++ b/eclass/mysql-multilib.eclass @@ -190,7 +190,7 @@ if [[ ${PN} == "percona-server" ]]; then DESCRIPTION="An enhanced, drop-in replacement for MySQL from the Percona team" fi LICENSE="GPL-2" -SLOT="0/${SUBSLOT:=0}" +SLOT="0/${SUBSLOT:-0}" IUSE="+community cluster debug embedded extraengine jemalloc latin1 +perl profiling selinux ssl systemtap static static-libs tcmalloc test" @@ -785,14 +785,25 @@ mysql-multilib_pkg_preinst() { if [[ ${PN} == "mysql-cluster" ]] ; then mysql_version_is_at_least "7.2.9" && java-pkg-opt-2_pkg_preinst fi - local CHECK_REPLACING + # Here we need to see if the implementation switched client libraries + # First, we check if this is a new instance of the package and a client library already exists + # Then, we check if this package is rebuilt but the previous instance did not + # have the client-libs USE set. + # Instances which do not have a client-libs USE can only be replaced by a different provider + local SHOW_ABI_MESSAGE if ! in_iuse client-libs || use_if_iuse client-libs ; then - CHECK_REPLACING=1 + if [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then + SHOW_ABI_MESSAGE=1 + elif [[ ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] && \ + in_iuse client-libs && ! built_with_use ${CATEGORY}/${PN} client-libs ; then + SHOW_ABI_MESSAGE=1 + fi + fi - if [[ ${CHECK_REPLACING} && -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then + if [[ ${SHOW_ABI_MESSAGE} ]] ; then elog "Due to ABI changes when switching between different client libraries," elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient." - elog "Please run: revdep-rebuild --library libmysqlclient.so.${SUBSLOT}" + elog "Please run: revdep-rebuild --library libmysqlclient.so.${SUBSLOT:-18}" ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries" fi }