I'm using sys-apps/portage-2.2_rc63 and just updated dev-db/mysql from 5.0*[embedded] to 5.1.44. As expected, I had to run emerge @preserved-rebuild afterwards. But even after running that repeatedly, there are still a large number of preserved libs due to sci-geosciences/grass-6.4.0_rc5[mysql]: !!! existing preserved libs: >>> package: dev-db/mysql-5.1.44 * - /usr/lib64/libmysqld.so * - /usr/lib64/libmysqld.so.0 * - /usr/lib64/libmysqld.so.0.0 * - /usr/lib64/libmysqld.so.0.0.0 * - /usr/lib64/mysql/libmysqld.so.0.0.0 * used by /usr/grass64/driver/db/mesql (sci-geosciences/grass-6.4.0_rc5) * - /usr/lib64/libvio.so * - /usr/lib64/libvio.so.0 * - /usr/lib64/libvio.so.0.0 * - /usr/lib64/libvio.so.0.0.0 * - /usr/lib64/mysql/libvio.so * - /usr/lib64/mysql/libvio.so.0 * - /usr/lib64/mysql/libvio.so.0.0.0 * - /usr/lib64/libheap.so * - /usr/lib64/libheap.so.0 * - /usr/lib64/libheap.so.0.0 * - /usr/lib64/libheap.so.0.0.0 * - /usr/lib64/mysql/libheap.so * - /usr/lib64/mysql/libheap.so.0 * - /usr/lib64/mysql/libheap.so.0.0.0 * - /usr/lib64/libmysys.so * - /usr/lib64/libmysys.so.0 * - /usr/lib64/libmysys.so.0.0 * - /usr/lib64/libmysys.so.0.0.0 * - /usr/lib64/mysql/libmysys.so * - /usr/lib64/mysql/libmysys.so.0 * - /usr/lib64/mysql/libmysys.so.0.0.0 * - /usr/lib64/libinnobase.so * - /usr/lib64/libinnobase.so.0 * - /usr/lib64/libinnobase.so.0.0 * - /usr/lib64/libinnobase.so.0.0.0 * - /usr/lib64/mysql/ib/libinnobase.so * - /usr/lib64/mysql/ib/libinnobase.so.0 * - /usr/lib64/mysql/ib/libinnobase.so.0.0.0 Use emerge @preserved-rebuild to rebuild packages using these libraries On the mysql side, this is bug #306315 about mysql 5.1.44 not installing libmysqld.so. On the grass side it seems to me that grass automagically detects and uses the embedded mysql server if available. There should be a USE flag for it. Quoting from the grass configure output: checking whether to use MySQL... yes checking for location of MySQL includes... /usr/include/mysql checking for mysql.h... yes checking for location of MySQL library... /usr/lib64/mysql checking for mysql_query in -lmysqlclient... yes checking for mysql_config... /usr/bin/mysql_config checking for mysql_server_init... yes Looking at configure.in, it seems that grass doesn't deliberately provide a switch to disable embedded mysql. It will emit a warning if mysql_server_init isn't found. It looks as if db/drivers/mysql/Makefile were designed to deal with missing MYSQLDLIB, though, so it should be possible to pass MYSQLDLIB= on the emake command line in order to disable embedded mysql. I tried it via "ebuild ... install" and verified that the /usr/grass64/driver/db/mesql executable isn't installed in that setup. Haven't merged the modified package yet, so I could run additional tests on the broken setup if you want me to. Once you have introduced a suitable USE flag, dependencies can ensure proper USE flags on the mysql package as well, and blockers can be put into place to block versions of mysql affected by bug #306315 if embedded mode is enabled.
Created attachment 220993 [details, diff] Introduce embedded USE flag to grass-6.4.0_rc5.ebuild This patch adds an embedded USE flag. If it is enabled, mysql has to be built with embedded support as well, and furthermore mysql has to be a version before 5.1. An unset embedded use flag results in MYSQLDLIB= being passed to make in src_compile, which prevents building the mysql embedded driver. In cases like this I wonder whether the "embedded" use flag should in general be renamed to something like "embedmysql" or "mysqld" or similar, as the meaning of "embedded" for packages other than mysql itself is far from obvious. Different issue, though, and should be changed consistently if at all.
I changed it in rc6 to always require non embedded driver. I guess it should be enough since most people dont want to use embedded one. Please open new feature request or reopen this bug if you think otherwise.