]> granicus.if.org Git - apache/commitdiff
Merge r1234180, r1234297, r1234565:
authorStefan Fritsch <sf@apache.org>
Sun, 22 Jan 2012 18:34:56 +0000 (18:34 +0000)
committerStefan Fritsch <sf@apache.org>
Sun, 22 Jan 2012 18:34:56 +0000 (18:34 +0000)
Make APACHE_MODULE() accept an optional prerequisite module for configure.

Introduce the following configure time dependencies:
  mod_proxy_* (except proxy_html) require mod_proxy
  mod_dav_* require mod_dav
  mod_session_* require mod_session
  mod_cache_disk requires mod_cache
  mod_heartbeat requires mod_watchdog

PR: 52487

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1234570 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
acinclude.m4
modules/cache/config.m4
modules/cluster/config5.m4
modules/dav/fs/config6.m4
modules/dav/lock/config6.m4
modules/proxy/config.m4
modules/session/config.m4

diff --git a/CHANGES b/CHANGES
index 4b7341754b30bee5a77f4f27354dcf81633e2601..85ff373283bbcdb365d6628e9720628031673cbd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,8 +1,11 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.4.1
 
-  * Rewrite and proxy now decline what they don't support rather
-    than fail the request. [Joe Orton]
+  *) configure: Disable modules at configure time if a prerequisite module
+     is not enabled. PR 52487. [Stefan Fritsch]
+
+  *) Rewrite and proxy now decline what they don't support rather
+     than fail the request. [Joe Orton]
 
 Changes with Apache 2.4.0
 
diff --git a/STATUS b/STATUS
index b0d6fff85d84abc345f87f2e7788ea5a346755ea..ea6c39d2fa51aee10a6b8328972350ffa2455891 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -103,9 +103,6 @@ RELEASE SHOWSTOPPERS:
 
   * PR 52476: SSL failures on windows with AcceptFilter https none
 
-  * configure does not take module inter-dependencies into account (can cause
-    build failure with statically compiled modules).
-
   NEW ISSUES THAT WOULD BE NICE TO HAVE DONE IN 2.4 BUT ARE NOT BLOCKERS
 
   * mod_ssl's proxy support only allows one proxy client certificate per
index b9d3fdf72416dfba059f95a511e4f79e7f2f3df8..7126e74020ac345e58ea3fdff2b56f4832533cee 100644 (file)
@@ -265,7 +265,7 @@ EOF
 ])dnl
 
 dnl
-dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
+dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config[, prereq_module]]]]])
 dnl
 dnl default is one of:
 dnl   yes    -- enabled by default. user must explicitly disable.
@@ -282,6 +282,15 @@ dnl            setting. otherwise, fall under the "all" setting.
 dnl            explicit yes/no always overrides, except if the user selects
 dnl            "reallyall".
 dnl
+dnl prereq_module is a module (without the "mod_" prefix) that must be enabled
+dnl   if the current module is enabled.  If the current module is built
+dnl   statically, prereq_module must be built statically, too.  If these
+dnl   conditions are not fulfilled, configure will abort if the current module
+dnl   has been enabled explicitly. Otherwise, configure will disable the
+dnl   current module.
+dnl   prereq_module's APACHE_MODULE() statement must have been processed
+dnl   before the current APACHE_MODULE() statement.
+dnl
 AC_DEFUN(APACHE_MODULE,[
   AC_MSG_CHECKING(whether to enable mod_$1)
   define([optname],[--]ifelse($5,yes,disable,enable)[-]translit($1,_,-))dnl
@@ -334,16 +343,25 @@ AC_DEFUN(APACHE_MODULE,[
   if test "$enable_$1" != "no"; then
     dnl If we plan to enable it, allow the module to run some autoconf magic
     dnl that may disable it because of missing dependencies.
-    ifelse([$6],,:,[AC_MSG_RESULT([checking dependencies])
-                    $6
-                    AC_MSG_CHECKING(whether to enable mod_$1)
-                    if test "$enable_$1" = "no"; then
-                      if test "$_apmod_required" = "no"; then
-                        _apmod_extra_msg=" (disabled)"
-                      else
-                        AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
-                      fi
-                    fi])
+    ifelse([$6$7],,:,
+           [AC_MSG_RESULT([checking dependencies])
+            ifelse([$7],,:,[if test "$enable_$7" = "no" ; then
+                              enable_$1=no
+                              AC_MSG_WARN("mod_$7 is disabled but required for mod_$1")
+                            elif test "$enable_$1" = "static" && test "$enable_$7" != "static" ; then
+                              enable_$1=no
+                              AC_MSG_WARN("cannot build mod_$1 statically if mod_$7 is built shared")
+                            else])
+            ifelse([$6],,:,[  $6])
+            ifelse([$7],,:,[fi])
+            AC_MSG_CHECKING(whether to enable mod_$1)
+            if test "$enable_$1" = "no"; then
+              if test "$_apmod_required" = "no"; then
+                _apmod_extra_msg=" (disabled)"
+              else
+                AC_MSG_ERROR([mod_$1 has been requested but can not be built due to prerequisite failures])
+              fi
+            fi])
   fi
   AC_MSG_RESULT($enable_$1$_apmod_extra_msg)
   if test "$enable_$1" != "no"; then
index e0470fafda1c5f6f434a3b987d8c06c7fd06e982..2fe41e1a3670e90a1f78094951010053ffb52c05 100644 (file)
@@ -23,7 +23,7 @@ case "$host" in
 esac
 
 APACHE_MODULE(cache, dynamic file caching.  At least one storage management module (e.g. mod_cache_disk) is also necessary., $cache_objs, , most)
-APACHE_MODULE(cache_disk, disk caching module, $cache_disk_objs, , most)
+APACHE_MODULE(cache_disk, disk caching module, $cache_disk_objs, , most, , cache)
 
 dnl
 dnl APACHE_CHECK_DISTCACHE
index a925f872059aee2799e024c3d93f8013dda51c06..866731677425cc2a25e8cf4891d11edfd413455f 100644 (file)
@@ -11,7 +11,7 @@ case "$host" in
     ;;
 esac
 
-APACHE_MODULE(heartbeat, Generates Heartbeats, $heartbeat_objects, , )
+APACHE_MODULE(heartbeat, Generates Heartbeats, $heartbeat_objects, , , , watchdog)
 APACHE_MODULE(heartmonitor, Collects Heartbeats, , , )
 
 APACHE_MODPATH_FINISH
index 235d0d7fcd407e6fd607a038e4fddb3cd48b3ef8..dd26ec8bab960a60ad038d81b776d62e9d7b4dee 100644 (file)
@@ -18,6 +18,6 @@ case "$host" in
     ;;
 esac
 
-APACHE_MODULE(dav_fs, DAV provider for the filesystem.  --enable-dav also enables mod_dav_fs., $dav_fs_objects, , $dav_fs_enable)
+APACHE_MODULE(dav_fs, DAV provider for the filesystem.  --enable-dav also enables mod_dav_fs., $dav_fs_objects, , $dav_fs_enable,,dav)
 
 APACHE_MODPATH_FINISH
index 75f7c5bf24d6b96108577e749f8e61ad0e515f4e..02a05e5e18c1d4beefafc095e9092ac525536df9 100644 (file)
@@ -12,6 +12,6 @@ case "$host" in
     ;;
 esac
 
-APACHE_MODULE(dav_lock, DAV provider for generic locking - requires --enable-dav, $dav_lock_objects, , )
+APACHE_MODULE(dav_lock, DAV provider for generic locking, $dav_lock_objects, ,,,dav)
 
 APACHE_MODPATH_FINISH
index 8e05c3add022c5b593ab014aebfe4eb4519f2ab7..e91cbf4c02623e6e426382495a5b722388278818 100644 (file)
@@ -37,11 +37,11 @@ case "$host" in
     ;;
 esac
 
-APACHE_MODULE(proxy_connect, Apache proxy CONNECT module.  Requires and is enabled by --enable-proxy., $proxy_connect_objs, , $proxy_mods_enable)
-APACHE_MODULE(proxy_ftp, Apache proxy FTP module.  Requires and is enabled by --enable-proxy., $proxy_ftp_objs, , $proxy_mods_enable)
-APACHE_MODULE(proxy_http, Apache proxy HTTP module.  Requires and is enabled by --enable-proxy., $proxy_http_objs, , $proxy_mods_enable)
-APACHE_MODULE(proxy_fcgi, Apache proxy FastCGI module.  Requires and is enabled by --enable-proxy., $proxy_fcgi_objs, , $proxy_mods_enable)
-APACHE_MODULE(proxy_scgi, Apache proxy SCGI module.  Requires and is enabled by --enable-proxy., $proxy_scgi_objs, , $proxy_mods_enable)
+APACHE_MODULE(proxy_connect, Apache proxy CONNECT module.  Requires and is enabled by --enable-proxy., $proxy_connect_objs, , $proxy_mods_enable,, proxy)
+APACHE_MODULE(proxy_ftp, Apache proxy FTP module.  Requires and is enabled by --enable-proxy., $proxy_ftp_objs, , $proxy_mods_enable,, proxy)
+APACHE_MODULE(proxy_http, Apache proxy HTTP module.  Requires and is enabled by --enable-proxy., $proxy_http_objs, , $proxy_mods_enable,, proxy)
+APACHE_MODULE(proxy_fcgi, Apache proxy FastCGI module.  Requires and is enabled by --enable-proxy., $proxy_fcgi_objs, , $proxy_mods_enable,, proxy)
+APACHE_MODULE(proxy_scgi, Apache proxy SCGI module.  Requires and is enabled by --enable-proxy., $proxy_scgi_objs, , $proxy_mods_enable,, proxy)
 APACHE_MODULE(proxy_fdpass, Apache proxy to Unix Daemon Socket module.  Requires --enable-proxy., $proxy_fdpass_objs, , , [
   AC_CHECK_DECL(CMSG_DATA,,, [
     #include <sys/types.h>
@@ -51,11 +51,11 @@ APACHE_MODULE(proxy_fdpass, Apache proxy to Unix Daemon Socket module.  Requires
     AC_MSG_WARN([Your system does not support CMSG_DATA.])
     enable_proxy_fdpass=no
   fi
-])
-APACHE_MODULE(proxy_ajp, Apache proxy AJP module.  Requires and is enabled by --enable-proxy., $proxy_ajp_objs, , $proxy_mods_enable)
-APACHE_MODULE(proxy_balancer, Apache proxy BALANCER module.  Requires and is enabled by --enable-proxy., $proxy_balancer_objs, , $proxy_mods_enable)
+],proxy)
+APACHE_MODULE(proxy_ajp, Apache proxy AJP module.  Requires and is enabled by --enable-proxy., $proxy_ajp_objs, , $proxy_mods_enable,, proxy)
+APACHE_MODULE(proxy_balancer, Apache proxy BALANCER module.  Requires and is enabled by --enable-proxy., $proxy_balancer_objs, , $proxy_mods_enable,, proxy)
 
-APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires --enable-proxy., , , $proxy_mods_enable)
+APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires --enable-proxy., , , $proxy_mods_enable,, proxy)
 
 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])
 
index 373df4761a647a884e6c68656f2716987133cbe2..719fe9152ce83dfcbb90bf4aaf5ae0c39e015574 100644 (file)
@@ -30,7 +30,7 @@ case "$host" in
 esac
 
 APACHE_MODULE(session, session module, , , most)
-APACHE_MODULE(session_cookie, session cookie module, $session_cookie_objects, , $session_mods_enable)
+APACHE_MODULE(session_cookie, session cookie module, $session_cookie_objects, , $session_mods_enable,,session)
 
 if test "$enable_session_crypto" != ""; then
   session_mods_enable_crypto=$enable_session_crypto
@@ -58,9 +58,9 @@ APACHE_MODULE(session_crypto, session crypto module, $session_crypto_objects, ,
 if test "$session_mods_enable_crypto" = "no" ; then
   enable_session_crypto=no
 fi
-])
+],session)
 
-APACHE_MODULE(session_dbd, session dbd module, $session_dbd_objects, , $session_mods_enable)
+APACHE_MODULE(session_dbd, session dbd module, $session_dbd_objects, , $session_mods_enable,,session)
 
 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])