Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 306317 - sci-geosciences/grass-6.4.0_rc5[mysql] should provide IUSE=embedded to configure use of libmysqld
Summary: sci-geosciences/grass-6.4.0_rc5[mysql] should provide IUSE=embedded to config...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Steve Arnold
URL:
Whiteboard:
Keywords: InVCS
Depends on: 306315
Blocks:
  Show dependency tree
 
Reported: 2010-02-22 10:04 UTC by Martin von Gagern
Modified: 2010-06-17 07:32 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Introduce embedded USE flag to grass-6.4.0_rc5.ebuild (gentoo306317.patch,1.06 KB, patch)
2010-02-24 15:54 UTC, Martin von Gagern
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Martin von Gagern 2010-02-22 10:04:13 UTC
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.
Comment 1 Martin von Gagern 2010-02-24 15:54:38 UTC
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.
Comment 2 Tomáš Chvátal (RETIRED) gentoo-dev 2010-06-17 07:32:53 UTC
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.