Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Feb 2007 19:58:22 GMT
From:      Robert Inder <robert@interactive.co.uk>
To:        freebsd-questions@freebsd.org
Subject:   Port upgrade/install problem: MySQL and Perl I/F
Message-ID:  <200702031958.l13JwMH9068140@auk.3lg.org>

Next in thread | Raw E-Mail | Index | Archive | Help
p5-DBD-mysql50 and mysql itself
Date: 03 Feb 2007 19:58:22 +0000
Message-ID: <f514pq3dndt.fsf@3lg.org>
Lines: 128
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii


I've upgraded Perl (via "portupgrade"), but the ports I need
to re-install to restore my perl-to-MySQL interface won't!

I'm working on a rather long-neglected server running 

     FreeBSD 5.2.1-RELEASE-p7 FreeBSD 5.2.1-RELEASE-p7 

It was running Perl 5.6, but I'm trying to install some code that
needs 5.8.  So I did "cvsup" and then

    portupgrade -o lang/perl5.8 perl

All went smoothly, and "perl-after-upgrade" gave me a list of
perl packages to re-install, and I did "portupgrade" on each of them.

Super!

EXCEPT for the Perl to MySQL interface package:  p5-DBD-mysql50

This is causing me two problems.

Currently, "mysql" is installed and working.

    # pkg_info -Ia | grep mysql
    mysql-client-5.0.0_2 Multithreaded SQL database (client)
    mysql-server-5.0.0_2 Multithreaded SQL database (server)

When I try to portupgrade the perl interface, it starts trying to
build mysql for itself, even without a "-R" option.  And it does the
same thing even if I change to the ports directory and type "make".

I don't understand why it is doing that.  I am guessing the installed
version of mysql is too old for the perl interface.  But I didn't
think upgrade (or a port "make") would recurse unless "told" to....
But here's what it says...

    ===>   p5-DBD-mysql50-4.0000 depends on file: /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm - found
    ===>   p5-DBD-mysql50-4.0000 depends on file: /usr/local/bin/perl5.8.8 - found
    ===>   p5-DBD-mysql50-4.0000 depends on shared library: mysqlclient.15 - not found
    ===>    Verifying install for mysqlclient.15 in /usr/ports/databases/mysql50-client
    ===>  Building for mysql-client-5.0.33

The second problem is that the mysql port won't actually compile.  It
announces that it is "Configuring for mysql-client-5.0.33", and then
proceeds to report a whole slew (hundreds) of "checking..." activities. 
About a dozen that start "pthread_", and some of them succeed.  Then
it starts compling, but this process finishes with....

    mkdir .libs
    cc -DDBUG_OFF -O -pipe -mcpu=pentiumpro -D_THREAD_SAFE -o factorial my_main.o factorial.o  libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a -lcrypt -lm
    ../mysys/libmysys.a(my_thr_init.o): In function `my_thread_global_end':
    my_thr_init.o(.text+0x1b7): undefined reference to `pthread_cond_timedwait'
    *** Error code 1

    Stop in /data/ports_build/usr/ports/databases/mysql50-client/work/mysql-5.0.33/dbug.
    *** Error code 1

    Stop in /data/ports_build/usr/ports/databases/mysql50-client/work/mysql-5.0.33.
    *** Error code 1

    Stop in /data/ports_build/usr/ports/databases/mysql50-client/work/mysql-5.0.33.
    *** Error code 1

    Stop in /usr/ports/databases/mysql50-client.
    *** Error code 1

    Stop in /usr/ports/databases/p5-DBD-mysql50.

I've tried googling for this, but although I've found a handful of
people with broadly similar problems, nobody has actually been offered
anything I recognise as an applicable solution! 

The upshot of this is that the previous Perl application is now broken
because it cannot access the MySQL database.

So I need to either...

    get the latest MySQL port to compile, or

    somehow get p5-DBD-mysql50 to work with the existing MySQL.

...but I'm not sure how to start on either.

Help?  Any advice welcome!

I have tried putting the p5-DBD-mysql50 package back the way it was
(albeit in a rather simple-minded way -- just copying
/usr/ports/databases/p5-DBD-mysql50 from its sister machine).  But
this didn't make any difference.  It still decides that even this
version (which was working) is incompatible with the existing mysql...

    boru/p5-DBD-mysql50# make   
    ===>  Vulnerability check disabled, database not found
    ===>  Extracting for p5-DBD-mysql50-2.9003
    => MD5 Checksum OK for DBD-mysql-2.9003.tar.gz.
    ===>   p5-DBD-mysql50-2.9003 depends on file: /usr/local/bin/perl5.8.8 - found
    ===>  Patching for p5-DBD-mysql50-2.9003
    ===>   p5-DBD-mysql50-2.9003 depends on file: /usr/local/bin/perl5.8.8 - found
    ===>   p5-DBD-mysql50-2.9003 depends on file: /usr/local/lib/perl5/site_perl/5.8.8/mach/DBI.pm - found
    ===>   p5-DBD-mysql50-2.9003 depends on file: /usr/local/bin/perl5.8.8 - found
    ===>   p5-DBD-mysql50-2.9003 depends on shared library: mysqlclient.15 - not found
    :
    :


Like the "current" version, this version claims it cannot find
mysqlclient.15.  And indeed, "locate" seems to confirm its absence...

    # locate mysqlclient
    /usr/local/lib/mysql/libmysqlclient.a
    /usr/local/lib/mysql/libmysqlclient.so
    /usr/local/lib/mysql/libmysqlclient.so.14
    /usr/local/lib/mysql/libmysqlclient_r.a
    /usr/local/lib/mysql/libmysqlclient_r.so
    /usr/local/lib/mysql/libmysqlclient_r.so.14

I don't understand why the p5-DBD-mysql50-2.9003 now says it needs
mysqlclient.15 when it used to run happily with what was there...

Robert.

--
Robert Inder            Tel: 0131 229 1052        Interactive Information Ltd,
Director                Mobile: 07808 492 213            3, Lauriston Gardens,
                                                           Edinburgh   EH3 9HH
Interactions speak louder than words                               SCOTLAND UK




Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?200702031958.l13JwMH9068140>