- From: Vic Bancroft <bancroft@america.net>
- Date: Sat, 18 Nov 2006 08:02:29 -0500
- To: www-lib@w3.org
- CC: Sam Varshavchik <mrsam@courier-mta.com>
Wow, this was sent from an address that the listserv doesn't like.
After waiting some period of time, I decided to resend. The hope would
be that someone could check this patch with some alternative mysql
installations and operating systems before I commit it . . .
BTW, thanks to all the folks for the prompt followup replies !
more,
l8r,
v
Vic Bancroft wrote:
> Sam Varshavchik wrote:
>
>> Well, there's your problem right there. I do not see the "-I
>> /opt/mysql/include" option anywhere.
>
>
> Yup, without the include directive the compiler will not find the
> appropriate definitions. This is odd, since the last time I used the
> mysql feature with mysql built out in /usr/local everythi9ng worked . . .
>
>> John Coppens writes:
>
>
>>> Please help...
>>
>>
> Okay, I decide to give libwww and mysql a a go on my freshly installed
> FC6. Checking my version of mysql using the rpm command, I see that
> is is hopelessly last week (egads, last quarter even),
>
> [bancroft@orca ~]$ rpm -qi mysql
> Name : mysql Relocations: (not
> relocatable)
> Version : 5.0.22 Vendor: Red Hat, Inc.
> Release : 2.1 Build Date: Fri 14 Jul
> 2006 10:15:32 AM EDT
> Install Date: Thu 09 Nov 2006 10:34:46 AM EST Build Host:
> hs20-bc2-2.build.redhat.com
> Group : Applications/Databases Source RPM:
> mysql-5.0.22-2.1.src.rpm
> Size : 5749284 License: GPL
> Signature : DSA/SHA1, Tue 03 Oct 2006 10:53:06 PM EDT, Key ID
> b44269d04f2a6fd2
> Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
> URL : http://www.mysql.com
> Summary : MySQL client programs and shared libraries.
>
> For the most recent binary and source code bundles one might check,
>
> http://dev.mysql.com/downloads/mysql/5.0.html#downloads
>
> Since perhaps my customized x86_64 platform does not quite fit the
> pattern of any precompiled version, I will select the source code
> distribution in a nice retro tar.gz format . . .
>
> Source downloads
>
> For maximum stability and performance, we recommend that you use the
> binaries we provide.
> Tarball (in 5.1 both Unix & Windows, tar.gz) 5.0.27
> 24.7M Pick a mirror
> MD5: 584d423440a9d9c859678e3d4f2690b3 | Signature
>
> Consider that I would _really_ like to try a particular set of
> features for my development environment, (including a refix location
> someone posted on a listserv I monitor;),
>
> ./configure --prefix=/opt/mysql \
> --enable-dependency-tracking \
> --enable-thread-safe-client \
> --enable-assembler \
> --with-comment \
> --with-mysqlmanager \
> --without-bench \
> --with-yassl \
> --with-big-tables \
> --with-example-storage-engine \
> --with-archive-storage-engine \
> --with-csv-storage-engine \
> --with-blackhole-storage-engine \
> --with-ndbcluster \
> --with-ndb-docs \
> --with-ndb-port \
> --with-ndb-port-base \
> --with-federated-storage-engine
> After the obligatory
>
> $ make; sudo make install
> ...
> make[1]: Leaving directory `/usr/local/src/mysql-5.0.27'
>
> real 12m33.322s
> user 10m3.674s
> sys 2m13.588s
>
> $ sudo make install
> ...
>
> After what seems like an eternity, I can get down to what I really
> enjoy, which is to bootstrap a copy of libwww from the libwww site,
>
> http://www.w3.org/Library/cvs.html
>
> Since the libwww maintainers can't get together long enough to make a
> release, I always have to check out the HEAD from cvs (I use the ssh
> method, but the pserver one should work for anyone), and do the
> bootstrap steps,
>
> $ cd libwww
> $ perl config/winConfigure.pl
> assuming global: PUBLIC FILE *WWWTrace = NULL;
> assuming global: PUBLIC unsigned int WWW_TraceFlag = 0; /*
> Global trace flag for ALL W3 code */
> assuming global: PUBLIC int ParseDebug = 0; /* For use with
> LablPars and RatPars */
> $ aclocal; autoheader; automake; autoconf
>
> For some reason I do not recall seeing the global assumption, however,
> I continue on with the
> ./configure \
> --prefix=/opt/mysql \
> --with-x \
> --with-regex \
> --with-mysql=/opt/mysql \
> --with-expat \
> --with-md5 \
> --with-dav
> The make runs for some time and then we have,
>
> gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I/usr/local/include
> -I../../modules/md5 -I../../modules/expat/lib
> -DW3C_ICONS=\"/usr/local/share/w3c-libwww\" -g -O2 -Wall -MT HTSQL.lo
> -MD -MP -MF .deps/HTSQL.Tpo -c HTSQL.c -o HTSQL.o
> In file included from HTSQL.c:19:
> HTSQL.h:34:25: error: mysql/mysql.h: No such file or directory
> In file included from HTSQL.c:19:
> HTSQL.h:101: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before '*' token
> HTSQL.h:171: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before '*' token
> HTSQL.h:178: error: expected ')' before '*' token
>
> Bingo ! I have replicated your error !
>
> It turns out that the mysql installation is assumed by configure.ac to
> be in /usr/local !
>
> What we really need it to use more current methods like,
>
> $ /opt/mysql/bin/mysql_config --cflags
> -I/opt/mysql/include/mysql
> $ /opt/mysql/bin/mysql_config --libs_r
> -L/opt/mysql/lib/mysql -lmysqlclient_r -lz -lpthread -lcrypt -lnsl
> -lm -lpthread
>
> Since this is done in configure.ac, I decided to try,
>
> AC_MSG_CHECKING("$withval")
> mysql_dir="$withval/bin"
> # Try to find the mysql_config program
> AC_PATH_PROG(MYSQL_CONFIG, mysql_config, no, $mysql_dir $PATH )
> if test "$MYSQL_CONFIG" = no ; then
> AC_MSG_ERROR([cannot find mysql_config])
> fi
> MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
> AC_SUBST(MYSQL_CFLAGS)
> MYSQL_LIBS=$($MYSQL_CONFIG --libs_r)
> AC_SUBST(MYSQL_LIBS)
>
> This seemed to produce the appropriate macros which could be put into
> play by a slight modification to the Library/src/Makefile.am by adding
> the produced values as,
>
> libwwwsql_la_LDFLAGS = -rpath $(libdir) $(MYSQL_LIBS)
>
> INCLUDES = \
> -I/usr/local/include \
> -I${top_srcdir}/modules/md5 \
> -I${top_srcdir}/modules/expat/lib \
> $(MYSQL_CFLAGS)
>
> However, this does change the assumption about where the include file
> is relative to the directive, so the header files and source files
> need the simplified definition,
>
> #include <mysql.h>
>
> This same sort of modification is required for all the directories
> that make use of the library. However, that is so tedious and boring
> as to be left to any one that would rather read the cvs diffs . . .
>
> Of course now folks who followed Sam's advise and just used the
> packages, or that happen to have installed mysql in /usr/local as
> folks often do when the package is not available require that those
> locations be fixed up as well. Rather than set up appropriate test
> environments or further break an already fragile config script, I will
> just attach a diff to this already painfully long email.
>
> more,
> l8r,
> v
>
> BTW, Upon inspection, it appears that openssl has the same issue . . .
> anyone want to replicate this kind of patch ?
>
>
>
>
>------------------------------------------------------------------------
>
>diff -Naur libwww/configure.ac libwww-mysql/configure.ac
>--- libwww/configure.ac 2006-03-13 23:44:46.000000000 -0500
>+++ libwww-mysql/configure.ac 2006-11-14 00:43:29.000000000 -0500
>@@ -504,14 +504,45 @@
> AC_MSG_RESULT(yes)
> if test "x$withval" = "xyes"; then
> if test -f '/usr/local/lib/mysql/libmysqlclient.a'; then
>- AC_ADDLIB("/usr/local/lib/mysql/libmysqlclient.a")
>+ # AC_ADDLIB("/usr/local/lib/mysql/libmysqlclient.a")
>+ mysql_dir="/usr/local/bin"
>+ # Try to find the mysql_config program
>+ AC_PATH_PROG(MYSQL_CONFIG, mysql_config, no, $mysql_dir $PATH )
>+ if test "$MYSQL_CONFIG" = no ; then
>+ AC_MSG_ERROR([cannot find mysql_config])
>+ fi
>+ MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
>+ AC_SUBST(MYSQL_CFLAGS)
>+ MYSQL_LIBS=$($MYSQL_CONFIG --libs_r)
>+ AC_SUBST(MYSQL_LIBS)
> elif test -f '/usr/lib/mysql/libmysqlclient.a'; then
>- AC_ADDLIB("/usr/lib/mysql/libmysqlclient.a")
>+ # AC_ADDLIB("/usr/lib/mysql/libmysqlclient.a")
>+ mysql_dir="/usr/bin"
>+ # Try to find the mysql_config program
>+ AC_PATH_PROG(MYSQL_CONFIG, mysql_config, no, $mysql_dir $PATH )
>+ if test "$MYSQL_CONFIG" = no ; then
>+ AC_MSG_ERROR([cannot find mysql_config])
>+ fi
>+ MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
>+ AC_SUBST(MYSQL_CFLAGS)
>+ MYSQL_LIBS=$($MYSQL_CONFIG --libs_r)
>+ AC_SUBST(MYSQL_LIBS)
> else
> AC_MSG_ERROR(Could not find the mysql client library.)
> fi
> else
>- AC_ADDLIB($withval)
>+ # AC_ADDLIB($withval)
>+ AC_MSG_CHECKING("$withval")
>+ mysql_dir="$withval/bin"
>+ # Try to find the mysql_config program
>+ AC_PATH_PROG(MYSQL_CONFIG, mysql_config, no, $mysql_dir $PATH )
>+ if test "$MYSQL_CONFIG" = no ; then
>+ AC_MSG_ERROR([cannot find mysql_config])
>+ fi
>+ MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags`
>+ AC_SUBST(MYSQL_CFLAGS)
>+ MYSQL_LIBS=$($MYSQL_CONFIG --libs_r)
>+ AC_SUBST(MYSQL_LIBS)
> fi
> AC_DEFINE(HT_MYSQL, 1, [Define to enable mysql access.])
> HTSQL="HTSQL.lo"
>diff -Naur libwww/Library/cvs2sql/Makefile.am libwww-mysql/Library/cvs2sql/Makefile.am
>--- libwww/Library/cvs2sql/Makefile.am 1999-04-12 19:57:10.000000000 -0500
>+++ libwww-mysql/Library/cvs2sql/Makefile.am 2006-11-14 00:33:35.000000000 -0500
>@@ -21,7 +21,9 @@
> ../src/libwwwtrans.la \
> ../src/libwwwcore.la \
> ../src/libwwwutils.la \
>- -lm @LIBWWWZIP@ @LIBWWWWAIS@ @LIBWWWSQL@ @LIBWWWMD5@
>+ -lm @LIBWWWZIP@ @LIBWWWWAIS@ @LIBWWWSQL@ @LIBWWWMD5@ \
>+ $(MYSQL_LIBS)
>
> INCLUDES = \
>- -I$(srcdir)/../../Library/src
>+ -I$(srcdir)/../../Library/src \
>+ $(MYSQL_CFLAGS)
>diff -Naur libwww/Library/src/HTSQL.c libwww-mysql/Library/src/HTSQL.c
>--- libwww/Library/src/HTSQL.c 2005-07-25 18:05:36.000000000 -0400
>+++ libwww-mysql/Library/src/HTSQL.c 2006-11-14 00:20:27.000000000 -0500
>@@ -18,8 +18,8 @@
> #include "WWWLib.h"
> #include "HTSQL.h" /* Implemented here */
>
>-#include <mysql/mysql.h>
>-#include <mysql/errmsg.h>
>+#include <mysql.h>
>+#include <errmsg.h>
>
> /* updates for to remove deprecated mysql functions */
> #define mysql_connect(m,h,u,p) mysql_real_connect((m),(h),(u),(p),NULL,0,NULL,0)
>diff -Naur libwww/Library/src/HTSQL.html libwww-mysql/Library/src/HTSQL.html
>--- libwww/Library/src/HTSQL.html 2005-11-11 09:03:16.000000000 -0500
>+++ libwww-mysql/Library/src/HTSQL.html 2006-11-14 00:18:58.000000000 -0500
>@@ -28,7 +28,7 @@
> #ifndef HTSQL_H
> #define HTSQL_H
>
>-#include <mysql/mysql.h>
>+#include <mysql.h>
>
> #ifdef __cplusplus
> extern "C" {
>diff -Naur libwww/Library/src/HTSQLLog.c libwww-mysql/Library/src/HTSQLLog.c
>--- libwww/Library/src/HTSQLLog.c 1999-02-22 16:10:12.000000000 -0600
>+++ libwww-mysql/Library/src/HTSQLLog.c 2006-11-14 00:20:47.000000000 -0500
>@@ -17,7 +17,7 @@
> #include "HTSQL.h"
> #include "HTSQLLog.h" /* Implemented here */
>
>-#include <mysql/mysql.h>
>+#include <mysql.h>
>
> struct _HTSQLLog {
> HTSQL * sql;
>diff -Naur libwww/Library/src/Makefile.am libwww-mysql/Library/src/Makefile.am
>--- libwww/Library/src/Makefile.am 2003-03-21 05:15:44.000000000 -0500
>+++ libwww-mysql/Library/src/Makefile.am 2006-11-14 00:15:24.000000000 -0500
>@@ -383,12 +383,13 @@
> HTSQLLog.h \
> HTSQLLog.c
>
>-libwwwsql_la_LDFLAGS = -rpath $(libdir)
>+libwwwsql_la_LDFLAGS = -rpath $(libdir) $(MYSQL_LIBS)
>
>-INCLUDES = \
>+INCLUDES = \
> -I/usr/local/include \
> -I${top_srcdir}/modules/md5 \
>- -I${top_srcdir}/modules/expat/lib
>+ -I${top_srcdir}/modules/expat/lib \
>+ $(MYSQL_CFLAGS)
>
> BUILT_SOURCES = \
> wwwsys.h \
>diff -Naur libwww/Robot/src/Makefile.am libwww-mysql/Robot/src/Makefile.am
>--- libwww/Robot/src/Makefile.am 2005-02-27 17:52:38.000000000 -0500
>+++ libwww-mysql/Robot/src/Makefile.am 2006-11-14 00:35:21.000000000 -0500
>@@ -21,14 +21,16 @@
> $(top_builddir)/Library/src/libwwwcore.la \
> $(top_builddir)/Library/src/libwwwutils.la \
> -lm @LIBWWWXML@ @LIBWWWZIP@ @LIBWWWWAIS@ \
>- @LIBWWWSQL@ @LIBWWWMD5@ @LIBWWWSSL@
>+ @LIBWWWSQL@ @LIBWWWMD5@ @LIBWWWSSL@ \
>+ $(MYSQL_LIBS)
>
> SUBDIRS = windows
>
> INCLUDES = \
>- -I$(srcdir)/../../Library/src \
>+ -I$(srcdir)/../../Library/src \
> -I$(srcdir)/../../Library/src/SSL \
>- -I$(top_srcdir)/modules/expat/lib
>+ -I$(top_srcdir)/modules/expat/lib \
>+ $(MYSQL_CFLAGS)
>
> # .h files are distributed but originally are made from the
> # self-documenting hypertext files.
>
>
--
"The future is here. It's just not evenly distributed yet."
-- William Gibson, quoted by Whitfield Diffie
Received on Saturday, 18 November 2006 13:03:08 UTC