| Bug #18776 | icc library dependencies in ia64 mysql RPMs | ||
|---|---|---|---|
| Submitted: | 4 Apr 2006 16:44 | Modified: | 4 Jul 2007 1:31 |
| Reporter: | Hartmut Holzgraefe | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S2 (Serious) |
| Version: | 4.1.18, 5.0.30, 5.0.32 | OS: | Linux (linux) |
| Assigned to: | Kent Boortz | CPU Architecture: | Any |
| Tags: | bfsm_2007_02_01, bfsm_2007_04_05, bfsm_2007_05_31 | ||
[4 Apr 2006 16:44]
Hartmut Holzgraefe
[25 Sep 2006 9:08]
Valeriy Kravchuk
Bug #22637 was marked as a duplicate of this one. Is it for IA64 only, or fall all build that use ICC?
[5 Jun 2007 15:55]
Heinz Bast
The Intel compiler for all platforms ( that is including IA64) offers a switch -i_static to link in statically all objects from libraries provided by Intel while all the rest is linked dynamically. The name of the switch is being renamed to -static-intel in the coming (June 2007) 10.0 release but -i-static will be continue to be accepted for some time.
Using -i_static will prevent to have any dependencies to Intel libraries. For MySQL this includes the mysqld-daemon, the clients and even the libraries like libmysqlclient.so. Thus this will 100% solve the issue described here and there is nothing left to be done regarding a compiler change.
However: MySQL is using 'libtool' for all linking steps. This tools 'swallows' the -i-static switch and thus some care has to be taken to make sure, the switch is passed to all link-steps. I tested successfully two workarounds:
1. Use -i-static as part of the compiler name.s That is :
CC="icc -i-static" \
CFLAGS="-O2 -g" \
CXX="icpc -i-static" \
CXXFLAGS="-O2 -g" \
./configure --prefix=xxx \
--enable-thread-safe-client ... ( etc - as usual)
2. Change 'libtool' to not remove this option. MySQL 'configure' generates the 'libtool' command from file ltmain.sh. In this step, the change should be integrated. For release 1.5.22 ( part of MySQL 5.0.41) the diff looks like:
1602a1603,1609
> -static-intel|-i_static)
> compile_command="$compile_command $arg"
> compiler_flags="$compiler_flags $arg"
> finalize_command="$finalize_command $arg"
> continue
> ;;
In this case, the configure call can use LDFLAGS similar to:
CC="icc" \
CFLAGS="-O2 -g" \
CXX="icpc" \
CXXFLAGS="-O2 -g" \
LDFLAGS="-i-static" \
./configure ....
Even better would be to get this permanently changed in the next libtool distributions.
Anyway - I think one of the workarounds can easily be used in particular for the official distributions of MySQL. This will avoid the problems described above. In this context, I don't see anything left to be done from Intel's side.
[6 Jun 2007 18:45]
Joerg Bruehe
This issue is solved. The dependency on the Intel runtime libraries existed in the "shared-*" RPMs for the ia64 CPU of some versions of MySQL 4.1 (4.1.16, 4.1.20, and 4.1.22). From there, it had propagated into the ia64 "shared-compat" RPMs of MySQL versions 5.0.30sp1 and 5.0.32. By now, this has been fixed, and the upcoming 4.1.23 RPMs for ia64 will not have this dependency.
[4 Jul 2007 1:31]
Paul DuBois
Noted in 4.1.23 changelog. A dependency on the Intel runtime libraries existed in the shared-xxx RPMs for the IA-64 CPU of some versions of MySQL 4.1 (4.1.16, 4.1.20, and 4.1.22). This has been resolved.
