Mantis - mysql5client
Viewing Issue Advanced Details
4098 packaging major always 2009-12-24 09:34 2010-01-06 01:49
edika  
maciej  
normal  
closed  
fixed  
none    
none  
0004098: libmysqlclient.so ISA-specific path wrong
Package Version 5.0.87,REV=2009.12.22 installs ISA-specific path as /opt/csw/mysql5/lib/sparc9/mysql istead of /opt/csw/mysql5/lib/mysql/sparcv9.
.../lib/package/$ISALIST seems to be usual path, as used eg. by /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so:
--------------------------------
ldd -s /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so

   find object=libmysqlclient.so.15; required by /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so
    search path=/opt/csw/mysql5/lib/mysql/$ISALIST:/opt/csw/lib/$ISALIST (RPATH from file /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so)
[...]
Issue History
2009-12-24 09:35 edika New Issue
2009-12-24 09:35 edika Issue Monitored: edika
2009-12-24 10:26 maciej Note Added: 0007120
2009-12-24 10:26 maciej Assigned To => maciej
2009-12-24 10:26 maciej Status new => acknowledged
2009-12-24 15:25 edika Note Added: 0007125
2009-12-24 15:46 edika Note Added: 0007126
2009-12-30 12:31 maciej Note Added: 0007155
2009-12-30 12:31 maciej Status acknowledged => feedback
2009-12-31 11:37 edika Note Added: 0007156
2010-01-05 12:36 maciej Note Added: 0007174
2010-01-05 12:36 maciej Status feedback => assigned
2010-01-06 01:49 maciej Note Added: 0007183
2010-01-06 01:49 maciej Status assigned => closed
2010-01-06 01:49 maciej Resolution open => fixed

Notes
(0007120)
maciej   
2009-12-24 10:26   
Thanks for the report. I'll provide backward-compatible symlinks.

I have a question about /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so: I istalled CSWpmdbdmysql from current and ran ldd on this shared object. The result was:

netra lib # ldd /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so
        libmysqlclient.so.15 => /opt/csw/mysql5/lib/mysql/sparcv9/libmysqlclient.so.15 - wrong ELF class: ELFCLASS64

Interestingly, it finds the library, but since its RPATH is /opt/csw/mysql5/lib/mysql/$ISALIST:/opt/csw/lib/$ISALIST, it finds the 64-bit library and fails, because it's a 32-bit library itself:

netra lib # file /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so
/opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, stripped

How did it work in the previous version of the mysql5 package?
(0007125)
edika   
2009-12-24 15:25   
On the old version, it looks for and finds the 32bit file:
--------------------
$ ldd -s /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so|head -30

   find object=libmysqlclient.so.15; required by /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so
[...]
    search path=/opt/csw/mysql5/lib/mysql/$ISALIST:/opt/csw/lib/$ISALIST (RPATH from file /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so)
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9+vis2/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9+vis/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv8plus+vis/libmysqlclient.so.15
        libmysqlclient.so.15 => /opt/csw/mysql5/lib/mysql/sparcv8plus+vis/libmysqlclient.so.15
--------------------
$ file /opt/csw/mysql5/lib/mysql/*/libmysqlclient.so.15
/opt/csw/mysql5/lib/mysql/sparcv8/libmysqlclient.so.15: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, stripped
/opt/csw/mysql5/lib/mysql/sparcv8plus+vis/libmysqlclient.so.15: ELF 32-bit MSB dynamic lib SPARC32PLUS Version 1, V8+ Required, UltraSPARC1 Extensions Required, dynamically linked, not stripped
/opt/csw/mysql5/lib/mysql/sparcv9/libmysqlclient.so.15: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped
(0007126)
edika   
2009-12-24 15:46   
BTW: I now created 2 symlinks. On the first try I wasn't aware of the 32/64bit issue an made the wrong links.

$ ls -l /opt/csw/mysql5/lib/mysql/sparc*
[...] /opt/csw/mysql5/lib/mysql/sparcv8 -> .
[...] /opt/csw/mysql5/lib/mysql/sparcv9 -> ../sparcv9/mysql

$ ldd -s /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so

   find object=libmysqlclient.so.15; required by /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so
    search path=/opt/csw/mysql5/lib/mysql/$ISALIST:/opt/csw/lib/$ISALIST (RPATH from file /opt/csw/lib/perl/csw/auto/DBD/mysql/mysql.so)
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9+vis2/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9+vis/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv9/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv8plus+vis2/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv8plus+vis/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv8plus/libmysqlclient.so.15
    trying path=/opt/csw/mysql5/lib/mysql/sparcv8/libmysqlclient.so.15
        libmysqlclient.so.15 => /opt/csw/mysql5/lib/mysql/sparcv8/libmysqlclient.so.15
(0007155)
maciej   
2009-12-30 12:31   
Updated packages are in testing, please try.
(0007156)
edika   
2009-12-31 11:37   
Yeah, looks great! Sorry for indicating the wrong package (mysql5client instead of mysql5rt).
Happy new year and thanks for the invaluable work!
(0007174)
maciej   
2010-01-05 12:36   
Cool, thanks for checking. I'm sending updated packages for release.
(0007183)
maciej   
2010-01-06 01:49   
The updated package has been released. Enjoy!