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