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
 }

Reply via email to