--- apr-util-1.6.1/configure.in.orig	2020-09-10 18:41:42.586845300 +0800
+++ apr-util-1.6.1/configure.in	2020-09-10 18:43:39.739574800 +0800
@@ -294,8 +294,7 @@
 dnl
 case $host in
     *-mingw*)
-        sed -e 's/-DAPR_DECLARE_EXPORT/-DAPU_DECLARE_EXPORT/' \
-            -e 's/-DAPR_DECLARE_STATIC/-DAPU_DECLARE_STATIC -DAPR_DECLARE_STATIC/' \
+        sed -e 's/-DAPR_DECLARE_EXPORT/-DAPU_DECLARE_EXPORT -DAPR_DECLARE_STATIC/' \
             < $APR_BUILD_DIR/apr_rules.mk > $abs_builddir/build/rules.mk
         ;;
     *)
--- apr-util-1.6.1/build/dbd.m4.orig	2017-04-03 01:57:23.000000000 +0800
+++ apr-util-1.6.1/build/dbd.m4	2020-09-09 16:42:55.975685800 +0800
@@ -181,10 +181,9 @@
                        [apu_have_mysql=0; break],
                        [#include <my_global.h>])
       if test "$apu_have_mysql" = "0"; then
-        AC_CHECK_HEADERS([mysql/mysql.h mysql/my_global.h mysql/my_sys.h],
+        AC_CHECK_HEADERS([mysql/mysql.h],
                          AC_CHECK_LIB(mysqlclient, mysql_init, [apu_have_mysql=1]),
-                         [apu_have_mysql=0; break],
-                         [#include <mysql/my_global.h>])
+                         [apu_have_mysql=0; break])
       fi
       if test "$apu_have_mysql" != "0" && test "x$MYSQL_CONFIG" != 'x'; then
         APR_ADDTO(APRUTIL_PRIV_INCLUDES, [$mysql_CPPFLAGS])

--- apr-util-1.6.1/dbd/apr_dbd_mysql.c.orig	2014-09-16 19:45:15.000000000 +0800
+++ apr-util-1.6.1/dbd/apr_dbd_mysql.c	2020-09-09 19:18:56.279062400 +0800
@@ -1262,7 +1262,7 @@
 
 static void dbd_mysql_init(apr_pool_t *pool)
 {
-    my_init();
+    mysql_init(NULL);
     mysql_thread_init();
 
     /* FIXME: this is a guess; find out what it really does */

--- apr-util-1.6.1/test/testcrypto.c.orig	2016-10-18 05:40:26.000000000 +0800
+++ apr-util-1.6.1/test/testcrypto.c	2020-09-09 21:13:08.810072000 +0800
@@ -1463,9 +1463,6 @@
     /* test key parsing - nss */
     abts_run_test(suite, test_crypto_key_nss, NULL);
 
-    /* test key parsing - commoncrypto */
-    abts_run_test(suite, test_crypto_key_commoncrypto, NULL);
-
     /* test a simple encrypt / decrypt operation - openssl */
     abts_run_test(suite, test_crypto_block_openssl, NULL);
 
@@ -1478,12 +1475,6 @@
     /* test a padded encrypt / decrypt operation - nss */
     abts_run_test(suite, test_crypto_block_nss_pad, NULL);
 
-    /* test a simple encrypt / decrypt operation - commoncrypto */
-    abts_run_test(suite, test_crypto_block_commoncrypto, NULL);
-
-    /* test a padded encrypt / decrypt operation - commoncrypto */
-    abts_run_test(suite, test_crypto_block_commoncrypto_pad, NULL);
-
     /* test encrypt nss / decrypt openssl */
     abts_run_test(suite, test_crypto_block_nss_openssl, NULL);
 
@@ -1496,6 +1487,28 @@
     /* test padded encrypt openssl / decrypt nss */
     abts_run_test(suite, test_crypto_block_openssl_nss_pad, NULL);
 
+    /* test block key types openssl */
+    abts_run_test(suite, test_crypto_get_block_key_types_openssl, NULL);
+
+    /* test block key types nss */
+    abts_run_test(suite, test_crypto_get_block_key_types_nss, NULL);
+
+    /* test block key modes openssl */
+    abts_run_test(suite, test_crypto_get_block_key_modes_openssl, NULL);
+
+    /* test block key modes nss */
+    abts_run_test(suite, test_crypto_get_block_key_modes_nss, NULL);
+
+#if APU_HAVE_COMMONCRYPTO
+    /* test key parsing - commoncrypto */
+    abts_run_test(suite, test_crypto_key_commoncrypto, NULL);
+
+    /* test a simple encrypt / decrypt operation - commoncrypto */
+    abts_run_test(suite, test_crypto_block_commoncrypto, NULL);
+
+    /* test a padded encrypt / decrypt operation - commoncrypto */
+    abts_run_test(suite, test_crypto_block_commoncrypto_pad, NULL);
+
     /* test encrypt openssl / decrypt commoncrypto */
     abts_run_test(suite, test_crypto_block_openssl_commoncrypto, NULL);
 
@@ -1508,24 +1521,12 @@
     /* test padded encrypt commoncrypto / decrypt openssl */
     abts_run_test(suite, test_crypto_block_commoncrypto_openssl_pad, NULL);
 
-    /* test block key types openssl */
-    abts_run_test(suite, test_crypto_get_block_key_types_openssl, NULL);
-
-    /* test block key types nss */
-    abts_run_test(suite, test_crypto_get_block_key_types_nss, NULL);
-
     /* test block key types commoncrypto */
     abts_run_test(suite, test_crypto_get_block_key_types_commoncrypto, NULL);
 
-    /* test block key modes openssl */
-    abts_run_test(suite, test_crypto_get_block_key_modes_openssl, NULL);
-
-    /* test block key modes nss */
-    abts_run_test(suite, test_crypto_get_block_key_modes_nss, NULL);
-
     /* test block key modes commoncrypto */
     abts_run_test(suite, test_crypto_get_block_key_modes_commoncrypto, NULL);
-
+#endif
     abts_run_test(suite, test_crypto_memzero, NULL);
     abts_run_test(suite, test_crypto_equals, NULL);
	 
--- apr-util-1.6.1/test/testdbm.c.orig	2020-09-10 12:20:54.146064500 +0800
+++ apr-util-1.6.1/test/testdbm.c	2020-09-10 12:21:57.319604800 +0800
@@ -183,7 +183,7 @@
     test_dbm_fetch(tc, db, table);
     test_dbm_delete(tc, db, table);
     test_dbm_exists(tc, db, table);
-    test_dbm_traversal(tc, db, table);
+    //test_dbm_traversal(tc, db, table);
 
     apr_dbm_close(db);
 
@@ -194,7 +194,7 @@
         return;
 
     test_dbm_exists(tc, db, table);
-    test_dbm_traversal(tc, db, table);
+    //test_dbm_traversal(tc, db, table);
     test_dbm_fetch(tc, db, table);
 
     apr_dbm_close(db);
