You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by ni...@apache.org on 2005/02/21 02:16:40 UTC

svn commit: r154597 - in apr/apr-util/trunk: INSTALL.MySQL build/dbd.m4 configure.in dbd/apr_dbd.c include/apr_dbd.h include/apu.h.in

Author: niq
Date: Sun Feb 20 17:16:38 2005
New Revision: 154597

URL: http://svn.apache.org/viewcvs?view=rev&rev=154597
Log:
Update autofoo to support MySQL build in principle (grotty hack),
and fix apr_dbd.c to work correctly with current autofoo that
builds drivers in statically regardless of DSO.

Added:
    apr/apr-util/trunk/INSTALL.MySQL
Modified:
    apr/apr-util/trunk/build/dbd.m4
    apr/apr-util/trunk/configure.in
    apr/apr-util/trunk/dbd/apr_dbd.c
    apr/apr-util/trunk/include/apr_dbd.h
    apr/apr-util/trunk/include/apu.h.in

Added: apr/apr-util/trunk/INSTALL.MySQL
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/INSTALL.MySQL?view=auto&rev=154597
==============================================================================
--- apr/apr-util/trunk/INSTALL.MySQL (added)
+++ apr/apr-util/trunk/INSTALL.MySQL Sun Feb 20 17:16:38 2005
@@ -0,0 +1,13 @@
+The MySQL driver is not distributed from apache.org due to licensing issues.
+
+If you wish to build the driver, download apr_dbd_mysql.c from
+http://apache.webthing.com/database/
+and copy it into the dbd directory before running configure.
+
+It is distributed under the GPL to conform with MySQL License terms
+This means it cannot be distributed from apache.org, as that would
+violate ASF policy.
+
+Using the driver with APR and Apache is of course allowed,
+and there is no problem with a third party bundling the driver,
+provided you respect both the ASF and GPL licenses.

Modified: apr/apr-util/trunk/build/dbd.m4
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/build/dbd.m4?view=diff&r1=154596&r2=154597
==============================================================================
--- apr/apr-util/trunk/build/dbd.m4 (original)
+++ apr/apr-util/trunk/build/dbd.m4 Sun Feb 20 17:16:38 2005
@@ -3,7 +3,7 @@
 dnl
 
 dnl
-dnl APU_CHECK_DBD: see what kind of DBD backend to use for apr_dbd.
+dnl APU_CHECK_DBD: compile backends for apr_dbd.
 dnl
 AC_DEFUN(APU_CHECK_DBD, [
   apu_have_pgsql=0
@@ -32,7 +32,6 @@
         APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
         APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include])
       fi
-
       if test "$apu_have_pgsql" != "1"; then
         AC_CHECK_HEADER(postgresql/libpq-fe.h, AC_CHECK_LIB(pq, PQconnectdb, [apu_have_pgsql=1]))
         if test "$apu_have_pgsql" != "0"; then
@@ -45,14 +44,63 @@
     apu_have_pgsql=0
     AC_CHECK_HEADER(libpq-fe.h, AC_CHECK_LIB(pq, PQconnectdb, [apu_have_pgsql=1]))
   ])
-
   AC_SUBST(apu_have_pgsql)
-
   dnl Since we have already done the AC_CHECK_LIB tests, if we have it, 
   dnl we know the library is there.
   if test "$apu_have_pgsql" = "1"; then
     APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lpq])
     APR_ADDTO(APRUTIL_LIBS,[-lpq])
+  fi
+])
+dnl
+AC_DEFUN(APU_CHECK_DBD_MYSQL, [
+  apu_have_mysql=0
+
+  AC_ARG_WITH([mysql], [
+  --with-mysql=DIR          **** SEE INSTALL.MySQL ****
+  ], [
+    apu_have_mysql=0
+    if test "$withval" = "yes"; then
+      AC_CHECK_HEADER(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1]))
+      if test "$apu_have_mysql" == "0"; then
+        AC_CHECK_HEADER(mysql/mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1]))
+        if test "$apu_have_mysql" != "0"; then
+          APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include/myql])
+        fi
+      fi
+    elif test "$withval" = "no"; then
+      apu_have_mysql=0
+    else
+      CPPFLAGS="-I$withval/include"
+      LIBS="-L$withval/lib "
+
+      AC_MSG_NOTICE(checking for mysql in $withval)
+      AC_CHECK_HEADER(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1]))
+      if test "$apu_have_mysql" != "0"; then
+        APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
+        APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include])
+      fi
+
+      if test "$apu_have_mysql" != "1"; then
+        AC_CHECK_HEADER(mysql/mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1]))
+        if test "$apu_have_mysql" != "0"; then
+          APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include/mysql])
+          APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
+        fi
+      fi
+    fi
+  ], [
+    apu_have_mysql=0
+    AC_CHECK_HEADER(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1]))
+  ])
+
+  AC_SUBST(apu_have_mysql)
+
+  dnl Since we have already done the AC_CHECK_LIB tests, if we have it, 
+  dnl we know the library is there.
+  if test "$apu_have_mysql" = "1"; then
+    APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lmysqlclient_r])
+    APR_ADDTO(APRUTIL_LIBS,[-lmysqlclient_r])
   fi
 ])
 

Modified: apr/apr-util/trunk/configure.in
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/configure.in?view=diff&r1=154596&r2=154597
==============================================================================
--- apr/apr-util/trunk/configure.in (original)
+++ apr/apr-util/trunk/configure.in Sun Feb 20 17:16:38 2005
@@ -119,6 +119,7 @@
 APU_FIND_LDAP
 APU_CHECK_DBM
 APU_CHECK_DBD
+APU_CHECK_DBD_MYSQL
 APU_FIND_EXPAT
 APU_FIND_ICONV
 

Modified: apr/apr-util/trunk/dbd/apr_dbd.c
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/dbd/apr_dbd.c?view=diff&r1=154596&r2=154597
==============================================================================
--- apr/apr-util/trunk/dbd/apr_dbd.c (original)
+++ apr/apr-util/trunk/dbd/apr_dbd.c Sun Feb 20 17:16:38 2005
@@ -27,17 +27,21 @@
 static apr_hash_t *drivers = NULL;
 
 
-#if APR_HAS_DSO
+/* Once the autofoo supports building it for dynamic load, we can use
+ * #define APR_DSO_BUILD APR_HAS_DSO
+ */
+
+#if APR_DSO_BUILD
 #if APR_HAS_THREADS
 static apr_thread_mutex_t* mutex = NULL;
 #endif
 #else
 #define DRIVER_LOAD(name,driver,pool) \
     {   \
-        extern apr_dbd_driver_t *driver; \
-        apr_hash_set(drivers,name,APR_HASH_KEY_STRING,driver); \
-        if (driver->init) {     \
-            driver->init(pool); \
+        extern apr_dbd_driver_t driver; \
+        apr_hash_set(drivers,name,APR_HASH_KEY_STRING,&driver); \
+        if (driver.init) {     \
+            driver.init(pool); \
         }  \
     }
 #endif
@@ -47,7 +51,7 @@
     apr_status_t ret;
     drivers = apr_hash_make(pool);
 
-#if APR_HAS_DSO
+#if APR_DSO_BUILD
 
 #if APR_HAS_THREADS
     ret = apr_thread_mutex_create(&mutex, APR_THREAD_MUTEX_DEFAULT, pool);
@@ -62,23 +66,8 @@
 #if APU_HAVE_PGSQL
     DRIVER_LOAD("pgsql", apr_dbd_pgsql_driver, pool);
 #endif
-#if APU_HAVE_FIREBIRD
-    DRIVER_LOAD("firebird", apr_dbd_firebird_driver, pool);
-#endif
-#if APU_HAVE_MSQL
-    DRIVER_LOAD("msql", apr_dbd_msql_driver, pool);
-#endif
-#if APU_HAVE_DB2
-    DRIVER_LOAD("db2", apr_dbd_db2_driver, pool);
-#endif
-#if APU_HAVE_ODBC
-    DRIVER_LOAD("odbc", apr_dbd_odbc_driver, pool);
-#endif
-#if APU_HAVE_ORACLE
-    DRIVER_LOAD("oracle", apr_dbd_oracle_driver, pool);
-#endif
-#if APU_HAVE_MSSQL
-    DRIVER_LOAD("mssql", apr_dbd_mssql_driver, pool);
+#if APU_HAVE_SOME_OTHER_BACKEND
+    DRIVER_LOAD("firebird", apr_dbd_other_driver, pool);
 #endif
 #endif
     return ret;
@@ -86,7 +75,7 @@
 APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name,
                                              apr_dbd_driver_t **driver)
 {
-#if APR_HAS_DSO
+#if APR_DSO_BUILD
     char path[80];
     apr_dso_handle_t *dlhandle = NULL;
 #endif
@@ -97,7 +86,7 @@
         return APR_SUCCESS;
     }
 
-#if APR_HAS_DSO
+#if APR_DSO_BUILD
 
 #if APR_HAS_THREADS
     rv = apr_thread_mutex_lock(mutex);
@@ -131,7 +120,7 @@
     apr_thread_mutex_unlock(mutex);
 #endif
 
-#else	/* APR_HAS_DSO - so if it wasn't already loaded, it's NOTIMPL */
+#else	/* APR_DSO_BUILD - so if it wasn't already loaded, it's NOTIMPL */
     rv = APR_ENOTIMPL;
 #endif
 

Modified: apr/apr-util/trunk/include/apr_dbd.h
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/include/apr_dbd.h?view=diff&r1=154596&r2=154597
==============================================================================
--- apr/apr-util/trunk/include/apr_dbd.h (original)
+++ apr/apr-util/trunk/include/apr_dbd.h Sun Feb 20 17:16:38 2005
@@ -25,15 +25,6 @@
 extern "C" {
 #endif
 
-/** Patch required to build against APR/0.9 and HTTPD/2.0
- *  Invalidate a resource in the pool - e.g. a database connection
- *  that returns a "lost connection" error and can't be restored.
- *  Use this instead of apr_reslist_release if the resource is bad.
- */
-#if APR_HAS_THREADS
-#include "apr_reslist.h"
-#endif
-
 /* These are opaque structs.  Instantiation is up to each backend */
 #ifndef APR_DBD_INTERNAL
 typedef struct apr_dbd_t apr_dbd_t;

Modified: apr/apr-util/trunk/include/apu.h.in
URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/include/apu.h.in?view=diff&r1=154596&r2=154597
==============================================================================
--- apr/apr-util/trunk/include/apu.h.in (original)
+++ apr/apr-util/trunk/include/apu.h.in Sun Feb 20 17:16:38 2005
@@ -78,6 +78,7 @@
 #endif /* APU_HAVE_DB */
 
 #define APU_HAVE_PGSQL         @apu_have_pgsql@
+#define APU_HAVE_MYSQL         @apu_have_mysql@
 
 #define APU_HAVE_APR_ICONV     @have_apr_iconv@
 #define APU_HAVE_ICONV         @have_iconv@



Re: svn commit: r154597 - in apr/apr-util/trunk: INSTALL.MySQL build/dbd.m4 configure.in dbd/apr_dbd.c include/apr_dbd.h include/apu.h.in

Posted by Justin Erenkrantz <ju...@erenkrantz.com>.
On Mon, Feb 21, 2005 at 01:16:40AM -0000, niq@apache.org wrote:
> Added: apr/apr-util/trunk/INSTALL.MySQL
> URL: http://svn.apache.org/viewcvs/apr/apr-util/trunk/INSTALL.MySQL?view=auto&rev=154597
> ==============================================================================
> --- apr/apr-util/trunk/INSTALL.MySQL (added)
> +++ apr/apr-util/trunk/INSTALL.MySQL Sun Feb 20 17:16:38 2005
> @@ -0,0 +1,13 @@
> +The MySQL driver is not distributed from apache.org due to licensing issues.
> +
> +If you wish to build the driver, download apr_dbd_mysql.c from
> +http://apache.webthing.com/database/
> +and copy it into the dbd directory before running configure.
> +
> +It is distributed under the GPL to conform with MySQL License terms
> +This means it cannot be distributed from apache.org, as that would
> +violate ASF policy.
> +
> +Using the driver with APR and Apache is of course allowed,
> +and there is no problem with a third party bundling the driver,
> +provided you respect both the ASF and GPL licenses.

I would prefer us to be clearer - in that, if you bundle the MySQL driver for
apr_dbd, you then have to follow GPL for the entire work as the GPL is more
restrictive than ALv2.  Hence, any derivative works (i.e. any application
using APR-util with the MySQL driver) must be GPLed as well.  -- justin