Due icu updates requiring a lot of time for revdep-rebuild to finish recompiling anything broken, would be really nice if affected apps wouldn't be completely broken for this time. For that, please try to use preserve_old_lib feature from eutils.eclass as I don't think portage-2.2 will go to stable anytime soon (I am suffering this with icu for a long time thinking that portage-2.2 will be someday unmasked but...) Thanks Reproducible: Always
*** Bug 376581 has been marked as a duplicate of this bug. ***
Some users even reported that revdep-rebuild didn't help (e.g. bug 416657)
Even after revdep-rebuild a lot packages are broken: gimp, firefox, okular, dolphin, speedcrunch, stellarium, celestia. I did not find any gtk+ or qt4 app starting without such error: Unable to load library icui18n "Cannot load library icui18n: (libicui18n.so.48: cannot open shared object file: No such file or directory)" Seems revdep-rebuild does not detect problem because dlopen is used.
That is bug 413541 I think
Pacho, rebuilding qt-core solved my problem, thank you!
As talked with Samuli, using preserve_libs for icu has the problem of needing to take care of a lot of libs and, then, needing to show a proper revdep-rebuild --library command (to not need to run it a lot of times for each lib) and to track new libs on each major version bump. He told me that this would be maintainance burden and, then, I offer myself to co-maintain icu to keep this preserve_libs stuff working (specially after my father suffering usual breakage after icu update until revdep-rebuild ends, this even having USE="-icu" in most packages) Before manually checking each new lib provided by icu, I have tried to find some "automated" way to get icu provided libs and pass them to revdep-rebuild: I have been working on how to generate a command to rebuild all needed stuff after icu update now that I know the proper syntax expected by revdep-rebuild: https://bugs.gentoo.org/show_bug.cgi?id=416707#c1 It's: revdep-rebuild.sh --library '/usr/lib64/libicu(data|io).so.48' This is what I have reached: SUFF=$(for f in $( ls /usr/lib64/libicu*.so.* ); do echo ${f##*icu}; done) revdep-rebuild --library /usr/lib64/libicu'('$(echo $SUFF | sed 's/ /|/g')')' And it looks to pass the following to revdep-rebuild: * Configuring search environment for revdep-rebuild * Checking reverse dependencies * Packages containing binaries and libraries using /usr/lib64/libicu(data.so.49|data.so.49.1.1|i18n.so.49| i18n.so.49.1.1|io.so.49|io.so.49.1.1|le.so.49|le.so.49.1.1|lx.so.49| lx.so.49.1.1|test.so.49|test.so.49.1.1|tu.so.49|tu.so.49.1.1|uc.so.49| uc.so.49.1.1) * will be emerged. That looks to respect syntax pointed in above bug report :-/, but probably this can be done in a cleaner way that I am failing to see, do you know how could that be simplified? Also, calling revdep-rebuild --library will cause revdep-rebuild to want to rebuild icu itself, not sure if that is normal when using --library parameter :| Thanks a lot for your help
Well, I would use some "find" command to get new icu installed libs, that "ls" way is only for testing purposes with already installed icu
preserve_old_lib_notify() will print a different message anyway.
(In reply to comment #8) > preserve_old_lib_notify() will print a different message anyway. Well, the idea is only use preserve_old_lib to get needed libs and then show a proper message "manually" (without using eclass for notification)
Icu now provides subslots for anyone to use. So this bug is fixed on icu side, open bugreports on packages depending on it to use the subslot feature where needed.