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