Good afternoon,
I'm having trouble installing DBD::mysql on OS X Leopard, and I
can't get any answers from Google that help.
I've got a fresh Leopard install so there shouldn't be any
legacy issues. I've tried compiling DBD::mysql against package
version of mySQL
(mysql-max-4.1.22-apple-darwin8.6.0-powerpc-64bit) as well as
against mySQL compiled from source. I was getting errors caused
by architecture mis-match which I fixed by setting
ARCHFLAGS='-arch i386 -arch ppc -arch ppc64 -arch x86_64' before
running perl Makefile.PL. I also tried setting it as
ARCHFLAGS='-arch ppc64'.
I get a few warnings during make, such as:
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI
-arch i386 -arch ppc -arch ppc64 -arch x86_64
-I/usr/local/mysql/include -Os -fno-common
-DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch i386 -arch ppc -arch
ppc64 -arch x86_64 -g -pipe -fno-common -DPERL_DARWIN
-no-cpp-precomp -fno-strict-aliasing
-Wdeclaration-after-statement -I/usr/local/include -O3
-DVERSION=\"4.006\" -DXS_VERSION=\"4.006\"
"-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" dbdimp.c
dbdimp.c: In function ‘alloc_param’:
dbdimp.c:112: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_bind’:
dbdimp.c:130: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_fbind’:
dbdimp.c:146: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_fbuffer’:
dbdimp.c:161: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3252: warning: assignment from incompatible pointer type
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3252: warning: assignment from incompatible pointer type
dbdimp.c: In function ‘alloc_param’:
dbdimp.c:112: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_bind’:
dbdimp.c:130: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_fbind’:
dbdimp.c:146: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘alloc_fbuffer’:
dbdimp.c:161: warning: comparison is always false due to limited
range of data type
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3252: warning: assignment from incompatible pointer type
dbdimp.c: In function ‘mysql_describe’:
dbdimp.c:3252: warning: assignment from incompatible pointer type
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI
-arch i386 -arch ppc -arch ppc64 -arch x86_64
-I/usr/local/mysql/include -Os -fno-common
-DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch i386 -arch ppc -arch
ppc64 -arch x86_64 -g -pipe -fno-common -DPERL_DARWIN
-no-cpp-precomp -fno-strict-aliasing
-Wdeclaration-after-statement -I/usr/local/include -O3
-DVERSION=\"4.006\" -DXS_VERSION=\"4.006\"
"-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" mysql.c
mysql.xs: In function ‘XS_DBD__mysql__db_do’:
mysql.xs:315: warning: comparison is always false due to limited
range of data type
mysql.xs:316: warning: comparison is always false due to limited
range of data type
mysql.xs: In function ‘XS_DBD__mysql__db_do’:
mysql.xs:315: warning: comparison is always false due to limited
range of data type
mysql.xs:316: warning: comparison is always false due to limited
range of data type
I think those are just warnings though and not related the
problems I'm having.
The show-stopper is the make test stage when I get errors such as:
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00base................1/5 install_driver(mysql) failed: Can't
load
'/Users/charlie/.cpan/build/DBD-mysql-4.006-Pcd0BT/blib/arch/auto/DBD/mysql/mysql.bundle'
for module DBD::mysql:
dlopen(/Users/charlie/.cpan/build/DBD-mysql-4.006-Pcd0BT/blib/arch/auto/DBD/mysql/mysql.bundle,
2): Symbol not found: _is_prefix
Referenced from: /Users/charlie/.cpan/build/DBD-mysql-4.006-Pcd0BT/blib/arch/auto/DBD/mysql/mysql.bundle
Expected in: dynamic lookup
at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.
Perhaps a required shared library or dll isn't installed where expected
at t/00base.t line 38
t/00base................ Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/5 subtests
I am wanting to go with 64-bit installs of perl modules based on
comments I've read about compatibility issues with the default
32-bit module installs and the 64-bit apache (& mod_perl) that
comes with Leopard. I'm happy to roll my own
perl/mod_perl/apache if needed. But I'd prefer to use the OS
versions if possible.
Suggestions on getting a successful install of DBD::mysql on
Leopard would be much appreciated.
Thanks,
Charlie

Signature
Charlie Garrison <garrison@zeta.org.au>
PO Box 141, Windsor, NSW 2756, Australia
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
http://www.ietf.org/rfc/rfc1855.txt
David Watts - 09 Jan 2008 22:55 GMT
Hi Charlie,
I had the same problem on both Tiger and Leopard. It seems that the
newer mysql builds have moved
some of the libraries and the config files haven't caught up.
The article/blog that helped me is:
http://jayallen.org/journey/2006/04/dbd-mysql-build-problems-on-mac-book-pro
The simplest solution for me is towards the end in the comments
mentioning creating links
from where it thinks it should be to the new location, the solution
that I used.
ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
ln -s /usr/local/mysql/include /usr/local/mysql/include/mysql
(use sudo as needed)
Your mileage may vary so read all the comments, there are several
different
solutions that you could also use at compile time.
Good Luck
> Good afternoon,
>
[quoted text clipped - 104 lines]
> Thanks,
> Charlie