Tom Donovan wrote:
APR 1.3 will require a code change in Windows modules which launch FastCGI programs using apr_proc_create. They will need to use the new APR_NO_FILE attribute. This doesn't affect any other platforms AFAIK.

The trouble is that there are other side effects of using apr-1.2, but if
needed it does exist at http://www.apache.org/dist/apr/binaries/win32/.

Here's my proposed solution to Makefile.win changes that Tom and I have
both observed (not affecting sln/dsp builds, but affecting mak file builds),
plus the problem with apr.hw's invalid default of IPV6 true, and additional
commentary about the binary connectors.

The two files below are part of the httpd-2.2.9-win32-src.zip file package,
which has been uploaded to httpd.apache.org/dev/dist/ (and should show up
sometime shortly when the server syncs).  The README-win32.txt will also
be added to the binary distribution (msi) for dbd driver instructions.

We would also place this .patch in patches/apply-to-2.2.9/ for clarity.

Objections or other feedback?

Bill
New version of APR
------------------

Note that the included APR is now version 1.3.0, which adds several
subtle changes in the behavior of file handling, pipes and process
creation.  Most importantly, there is finer control over the handles
inherited by processes, so the mod_fastcgi or mod_fcgid modules must 
be updated for httpd-2.2.9 to run correctly on Windows.

Most other third party modules are unaffected by this change.


Source corrections applied
--------------------------

The -win32-src.zip package includes corrections to the Makefile.win
build file so that .mak based builds work.  The package also corrects
the default to disable IPV6 support.  These patches are summarized in
the httpd-2.2.9-win32-src.applied.patch file.


Connecting to databases
-----------------------

With APR-util 1.3.0, the MySQL and FreeTDS drivers do not compile
on Windows.  There is no Microsoft SQL Server client or ODBC client
at the present time.

Three driver connectors are provided in the binary distribution, for
SQLite3, PostgreSQL and Oracle.  They require you to install the actual 
corresponding client drivers.

The sqlitedll.zip binary file can be obtained from;

http://www.sqlite.org/download.html

note that this binary was built with version 3.5.9 (earlier and
later version 3.5 driver .dll's may work.)

The Oracle Instant Client - Basic driver can be obtained from

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

and note that this binary was built against version 11.1.0.6.0,
other version 11.1 drivers may work.

The PostgreSQL binaries may be obtained from

http://www.postgresql.org/ftp/binary/v8.3.1/win32/

and note that this binary was built against version 8.3.1-1, and
again it may work with other 8.1 version .dll's.

For whichever database backend you configure, the corresponding driver
.dll's must be in your PATH (and in the systemwide path if used for 
a service such as Apache httpd).

Index: Makefile.win
===================================================================
--- Makefile.win	(revision 666274)
+++ Makefile.win	(working copy)
@@ -134,11 +134,10 @@
 
 _trydbd:
 !IF $(USEMAK) == 1
-        cd srclib\apr-util\dbd & \
-	  for %d in ($(DBD_LIST)) do \
-	    $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - $(LONG)" RECURSE=0 $(CTARGET)
-        cd ..
-
+	cd srclib\apr-util\dbd
+	for %d in ($(DBD_LIST)) do \
+	  $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak CFG="apr_dbd_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+	cd ..\..\..
 !ELSEIF $(USESLN) == 1
 	for %d in ($(DBD_LIST)) do \
 	  devenv Apache.sln /useenv $(CTARGET) $(LONG) /project apr_dbd_%d
@@ -265,9 +264,16 @@
 	cd ..\..\..
 	 $(MAKE) $(MAKEOPT) -f aprutil.mak         CFG="aprutil - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 	 $(MAKE) $(MAKEOPT) -f libaprutil.mak      CFG="libaprutil - Win32 $(LONG)" RECURSE=0 $(CTARGET)
-        cd ldap
-	 $(MAKE) $(MAKEOPT) -f apr_ldap.mak    CFG="apr_ldap - $(ARCH)" RECURSE=0 $(CTARGET)
-        cd ..\..\..
+	cd ldap
+	 $(MAKE) $(MAKEOPT) -f apr_ldap.mak        CFG="apr_ldap - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+	cd ..
+!IFDEF DBD_LIST
+	cd dbd
+	  for %d in ($(DBD_LIST)) do \
+	    $(MAKE) $(MAKEOPT) -f apr_dbd_%d.mak   CFG="apr_dbd_%d - Win32 $(LONG)" RECURSE=0 $(CTARGET)
+	cd ..
+!ENDIF
+	cd ..\..
 	cd srclib\pcre
 	 $(MAKE) $(MAKEOPT) -f dftables.mak        CFG="dftables - Win32 $(LONG)" RECURSE=0 $(CTARGET)
 	 $(MAKE) $(MAKEOPT) -f pcre.mak            CFG="pcre - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -484,7 +491,7 @@
 	copy srclib\apr-util\ldap\$(LONG)\apr_ldap-1.$(src_dll) "$(inst_dll)" <.y
 !IFDEF DBD_LIST
 	for %d in ($(DBD_LIST)) do ( \
-	  copy srclib\apr-util\dbd\$(LONG)\apr_dbd_%d-1.$(src_dll) "$(inst_dll)" <.y && \
+	  copy srclib\apr-util\dbd\$(LONG)\apr_dbd_%d-1.$(src_dll) "$(inst_dll)" <.y \
 	)
 !ENDIF
 !IF EXIST("srclib\zlib\zlib1.$(src_dll)")
Index: srclib/apr/include/apr.hw
===================================================================
--- srclib/apr/include/apr.hw	(revision 661875)
+++ srclib/apr/include/apr.hw	(working copy)
@@ -229,9 +229,6 @@
 #if APR_HAVE_PROCESS_H
 #include <process.h>
 #endif
-#if APR_HAVE_IPV6
-#include <ws2tcpip.h>
-#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -280,7 +277,7 @@
 #define APR_HAVE_IN_ADDR        1
 #define APR_HAVE_INET_ADDR      1
 #define APR_HAVE_INET_NETWORK   0
-#define APR_HAVE_IPV6           1
+#define APR_HAVE_IPV6           0
 #define APR_HAVE_MEMMOVE        1
 #define APR_HAVE_SETRLIMIT      0
 #define APR_HAVE_SIGACTION      0
@@ -611,6 +608,7 @@
 #define STDERR_FILENO 2
 
 #if APR_HAVE_IPV6
+#include <ws2tcpip.h>
 
 /* Appears in later flavors, not the originals. */
 #ifndef in_addr6

Reply via email to