[OmniOS-discuss] trouble building DBD::mysql (perl)

Natxo Asenjo natxo.asenjo at gmail.com
Mon Jun 16 17:39:42 UTC 2014


hi,

I have installed built perl 5.20 using perlbrew and gcc-4.8.1.

# perl -v

This is perl 5, version 20, subversion 0 (v5.20.0) built for
i86pc-solaris-thread-multi-
64int

I am using database/mysql-56 from the uulm.mawi repository, which keeps its
libraries/include files in /usr/local/mysql/5.6/{lib/include} .

For an application (RT) I want to use the mysql driver and I tried
installing it throuch cpanm.

Then cpanm failed because it could not find the path to mysql_config. No
problem, I can set it:

=============================================
# perl Makefile.PL --mysql_config=/usr/local/mysql/5.6/bin/mysql_config
--cflags="-m32"


PLEASE NOTE:

For 'make test' to run properly, you must ensure that the
database user '' can connect to your MySQL server
and has the proper privileges that these tests require such
as 'drop table', 'create table', 'drop procedure', 'create procedure'
as well as others.

mysql> grant all privileges on test.* to ''@'localhost' identified by
's3kr1t';

You can also optionally set the user to run 'make test' with:

perl Makefile.PL --testuser=username

I will use the following settings for compiling and testing:

  cflags        (User's choice) = -m32
  embedded      (mysql_config ) =
  ldflags       (mysql_config ) = -R/usr/local/mysql/5.6/lib
  libs          (mysql_config ) = -L/usr/local/mysql/5.6/lib -lmysqlclient
-lsocket -lnsl -lm -lssl -lcrypto
  mysql_config  (Users choice ) = /usr/local/mysql/5.6/bin/mysql_config
  nocatchstderr (default      ) = 0
  nofoundrows   (default      ) = 0
  ssl           (guessed      ) = 1
  testdb        (default      ) = test
  testhost      (default      ) =
  testpassword  (default      ) =
  testport      (default      ) =
  testsocket    (default      ) =
  testuser      (guessed      ) =

To change these settings, see 'perl Makefile.PL --help' and
'perldoc DBD::mysql::INSTALL'.

Using DBI 1.631 (for perl 5.020000 on i86pc-solaris-thread-multi-64int)
installed in
/opt/perl5//perls/perl-5.20.0/lib/site_perl/5.20.0/i86pc-solaris-thread-multi-64int/auto/DBI/
Generating a Unix-style Makefile
Writing Makefile for DBD::mysql
Writing MYMETA.yml and MYMETA.json

=========================================================================================

But then make fails:

===========================================================
# make
Skip blib/lib/DBD/mysql/INSTALL.pod (unchanged)
Skip blib/lib/DBD/mysql.pm (unchanged)
Skip blib/lib/Bundle/DBD/mysql.pm (unchanged)
Skip blib/lib/DBD/README.pod (unchanged)
Skip blib/lib/DBD/mysql/GetInfo.pm (unchanged)
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
gcc -c
-I/opt/perl5/perls/perl-5.20.0/lib/site_perl/5.20.0/i86pc-solaris-thread-multi-64int/auto/DBI
-m32 -DDBD_MYSQL_WITH_SSL -DDBD_MYSQL_INSERT_ID_IS_GOOD -g  -D_REENTRANT
-DPTR_IS_LONG -fno-stack-protector -fwrapv -fno-strict-aliasing -pipe
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -O
-DVERSION=\"4.027\" -DXS_VERSION=\"4.027\" -fPIC
"-I/opt/perl5/perls/perl-5.20.0/lib/5.20.0/i86pc-solaris-thread-multi-64int/CORE"
dbdimp.c
In file included from dbdimp.c:20:0:
dbdimp.h:21:49: fatal error: mysql.h: No such file or directory
 #include <mysql.h>  /* Comes with MySQL-devel */
                                                 ^
compilation terminated.
make: *** [dbdimp.o] Error 1

=====================================================================================================

so it cannot find the header. But it is there, this is what mysql_config
tells me:

# ./mysql_config
Usage: ./mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/local/mysql/5.6/
include  -m64  -fPIC -g -fabi-version=2 -fno-omit-frame-pointer
-fno-strict-aliasing]
        --cxxflags       [-I/usr/local/mysql/5.6/include  -m64  -fPIC -g
-fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing]
        --include        [-I/usr/local/mysql/5.6/include]
        --libs           [-L/usr/local/mysql/5.6/lib
-R/usr/local/mysql/5.6/lib -lmysqlclient -lsocket -lnsl -lm -lssl -lcrypto]
        --libs_r         [-L/usr/local/mysql/5.6/lib
-R/usr/local/mysql/5.6/lib -lmysqlclient_r -lsocket -lnsl -lm -lssl
-lcrypto]
        --plugindir      [/usr/local/mysql/5.6/lib/plugin]
        --socket         [/var/mysql/5.6/run/mysqld.socket]
        --port           [0]
        --version        [5.6.17]
        --libmysqld-libs [-L/usr/local/mysql/5.6/lib
-R/usr/local/mysql/5.6/lib -lmysqld -lnsl -lm -lssl -lcrypto -lsocket]
        --variable=VAR   VAR is one of:
                pkgincludedir [/usr/local/mysql/5.6/include]
                pkglibdir     [/usr/local/mysql/5.6/lib]
                plugindir     [/usr/local/mysql/5.6/lib/plugin]

And if I look in the include dir, sure there it is:

root at zone1:/usr/local/mysql/5.6/bin# ls -l ../include/mysql.h
-rw-r--r-- 1 root bin 29058 Jun 15 16:56 ../include/mysql.h

Not really sure how to build this. Any tips greatly appreciated.

Thanks.
--
Groeten,
natxo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://omniosce.org/ml-archive/attachments/20140616/2492810c/attachment.html>


More information about the OmniOS-discuss mailing list