From 9db1f65a7ded03e70d3f1e499609062a529230ec Mon Sep 17 00:00:00 2001 From: Stefan Fritsch Date: Sun, 22 Jan 2012 18:34:56 +0000 Subject: [PATCH] Merge r1234180, r1234297, r1234565: 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 | 7 +++++-- STATUS | 3 --- acinclude.m4 | 40 +++++++++++++++++++++++++++---------- modules/cache/config.m4 | 2 +- modules/cluster/config5.m4 | 2 +- modules/dav/fs/config6.m4 | 2 +- modules/dav/lock/config6.m4 | 2 +- modules/proxy/config.m4 | 18 ++++++++--------- modules/session/config.m4 | 6 +++--- 9 files changed, 50 insertions(+), 32 deletions(-) diff --git a/CHANGES b/CHANGES index 4b7341754b..85ff373283 100644 --- 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 b0d6fff85d..ea6c39d2fa 100644 --- 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 diff --git a/acinclude.m4 b/acinclude.m4 index b9d3fdf724..7126e74020 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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 diff --git a/modules/cache/config.m4 b/modules/cache/config.m4 index e0470fafda..2fe41e1a36 100644 --- a/modules/cache/config.m4 +++ b/modules/cache/config.m4 @@ -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 diff --git a/modules/cluster/config5.m4 b/modules/cluster/config5.m4 index a925f87205..8667316774 100644 --- a/modules/cluster/config5.m4 +++ b/modules/cluster/config5.m4 @@ -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 diff --git a/modules/dav/fs/config6.m4 b/modules/dav/fs/config6.m4 index 235d0d7fcd..dd26ec8bab 100644 --- a/modules/dav/fs/config6.m4 +++ b/modules/dav/fs/config6.m4 @@ -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 diff --git a/modules/dav/lock/config6.m4 b/modules/dav/lock/config6.m4 index 75f7c5bf24..02a05e5e18 100644 --- a/modules/dav/lock/config6.m4 +++ b/modules/dav/lock/config6.m4 @@ -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 diff --git a/modules/proxy/config.m4 b/modules/proxy/config.m4 index 8e05c3add0..e91cbf4c02 100644 --- a/modules/proxy/config.m4 +++ b/modules/proxy/config.m4 @@ -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 @@ -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]) diff --git a/modules/session/config.m4 b/modules/session/config.m4 index 373df4761a..719fe9152c 100644 --- a/modules/session/config.m4 +++ b/modules/session/config.m4 @@ -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]) -- 2.40.0