You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2016/06/24 05:31:13 UTC

svn commit: r1750043 - /httpd/httpd/trunk/modules/proxy/config.m4

Author: wrowe
Date: Fri Jun 24 05:31:13 2016
New Revision: 1750043

URL: http://svn.apache.org/viewvc?rev=1750043&view=rev
Log:
Replace the proxy_mods_enable logic, with its hazardous 'yes' value that
aborts the build on missing dependencies, with a local override of the
module_selection as 'most', and module_default of the same shared|static
model that was requested through --enable-proxy.

[For trunk, we need to reevaluate the 'most' condition of some of the more
esoteric modules, and simply drop the module_default override; where a user
wants to enable -only- mod_proxy, plus one proxy mechanism, the legacy 2.4.x
behavior retained by this patch is nuts. For one example,
  --enable-modules=few --enable-proxy-yes --enable-proxy_http
is a completely specific and legitimate syntax --- adding 10 other proxy
providers in response to this syntax is absurd.]


Modified:
    httpd/httpd/trunk/modules/proxy/config.m4

Modified: httpd/httpd/trunk/modules/proxy/config.m4
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/config.m4?rev=1750043&r1=1750042&r2=1750043&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/config.m4 (original)
+++ httpd/httpd/trunk/modules/proxy/config.m4 Fri Jun 24 05:31:13 2016
@@ -2,16 +2,22 @@ dnl modules enabled in this directory by
 
 APACHE_MODPATH_INIT(proxy)
 
-if test "$enable_proxy" = "shared"; then
-  proxy_mods_enable=shared
-elif test "$enable_proxy" = "yes"; then
-  proxy_mods_enable=yes
-else
-  proxy_mods_enable=most
-fi
-
 proxy_objs="mod_proxy.lo proxy_util.lo"
-APACHE_MODULE(proxy, Apache proxy module, $proxy_objs, , $proxy_mods_enable)
+APACHE_MODULE(proxy, Apache proxy module, $proxy_objs, , most)
+
+dnl set aside module selections and default, and set the module default to the
+dnl same scope (shared|static) as selected for mod proxy, along with setting
+dnl the default selection to "most" for remaining proxy modules, mirroring the
+dnl behavior of 2.4.1 and later, but failing ./configure only if an explicitly
+dnl enabled module is missing its prereqs
+save_module_selection=$module_selection
+save_module_default=$module_default
+if test "x$enable_proxy" != "xno"; then
+    module_selection=most
+    if test "$enable_proxy" = "shared" -o "$enable_proxy" = "static"; then
+        module_default=$enable_proxy
+    fi
+fi
 
 proxy_connect_objs="mod_proxy_connect.lo"
 proxy_ftp_objs="mod_proxy_ftp.lo"
@@ -39,11 +45,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,, 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_connect, Apache proxy CONNECT module.  Requires --enable-proxy., $proxy_connect_objs, , most, , proxy)
+APACHE_MODULE(proxy_ftp, Apache proxy FTP module.  Requires --enable-proxy., $proxy_ftp_objs, , most, , proxy)
+APACHE_MODULE(proxy_http, Apache proxy HTTP module.  Requires --enable-proxy., $proxy_http_objs, , most, , proxy)
+APACHE_MODULE(proxy_fcgi, Apache proxy FastCGI module.  Requires --enable-proxy., $proxy_fcgi_objs, , most, , proxy)
+APACHE_MODULE(proxy_scgi, Apache proxy SCGI module.  Requires --enable-proxy., $proxy_scgi_objs, , most, , 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>
@@ -54,9 +60,9 @@ APACHE_MODULE(proxy_fdpass, Apache proxy
     enable_proxy_fdpass=no
   fi
 ],proxy)
-APACHE_MODULE(proxy_wstunnel, Apache proxy Websocket Tunnel module.  Requires and is enabled by --enable-proxy., $proxy_wstunnel_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_wstunnel, Apache proxy Websocket Tunnel module.  Requires --enable-proxy., $proxy_wstunnel_objs, , most, , proxy)
+APACHE_MODULE(proxy_ajp, Apache proxy AJP module.  Requires --enable-proxy., $proxy_ajp_objs, , most, , proxy)
+APACHE_MODULE(proxy_balancer, Apache proxy BALANCER module.  Requires --enable-proxy., $proxy_balancer_objs, , most, , proxy)
 
 APACHE_MODULE(serf, [Reverse proxy module using Serf], , , no, [
     APACHE_CHECK_SERF
@@ -67,10 +73,13 @@ APACHE_MODULE(serf, [Reverse proxy modul
     fi
 ])
 
-APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires --enable-proxy., , , $proxy_mods_enable,, proxy)
-APACHE_MODULE(proxy_hcheck, [reverse-proxy health-check module. Requires --enable-proxy and --enable-watchdog.], , , $proxy_mods_enable,, [proxy,watchdog])
+APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires --enable-proxy., , , most, , proxy)
+APACHE_MODULE(proxy_hcheck, [reverse-proxy health-check module. Requires --enable-proxy and --enable-watchdog.], , , most, , [proxy,watchdog])
 
 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])
 
+module_selection=$save_module_selection
+module_default=$save_module_default
+
 APACHE_MODPATH_FINISH
 



Re: svn commit: r1750043 - /httpd/httpd/trunk/modules/proxy/config.m4

Posted by William A Rowe Jr <wr...@rowe-clan.net>.
On Fri, Jun 24, 2016 at 1:10 AM, William A Rowe Jr <wr...@rowe-clan.net>
wrote:

> Once we are happy shipping httpd-2.4.23, I'm planning to change
> the behavior of trunk by eliminating this whole mess...
>

One bit of historical perspective by readers who are confused why
we came to this point in the first place...

httpd-2.2.2 behavior;

./configure
checking whether to enable mod_proxy... no
checking whether to enable mod_proxy_connect... no
checking whether to enable mod_proxy_ftp... no
checking whether to enable mod_proxy_http... no
checking whether to enable mod_proxy_ajp... no
checking whether to enable mod_proxy_balancer... no

./configure --enable-mods-shared=most
checking whether to enable mod_proxy... no
checking whether to enable mod_proxy_connect... no
checking whether to enable mod_proxy_ftp... no
checking whether to enable mod_proxy_http... no
checking whether to enable mod_proxy_ajp... no
checking whether to enable mod_proxy_balancer... no

./configure --enable-mods-shared=most --enable-proxy
checking whether to enable mod_proxy... shared (most)
checking whether to enable mod_proxy_connect... shared (most)
checking whether to enable mod_proxy_ftp... shared (most)
checking whether to enable mod_proxy_http... shared (most)
checking whether to enable mod_proxy_ajp... shared (most)
checking whether to enable mod_proxy_balancer... shared (most)

httpd-2.4.1 behavior;

./configure
checking whether to enable mod_proxy... shared (most)
checking whether to enable mod_proxy_connect... checking dependencies
checking whether to enable mod_proxy_connect... shared (most)
checking whether to enable mod_proxy_ftp... checking dependencies
checking whether to enable mod_proxy_ftp... shared (most)
checking whether to enable mod_proxy_http... checking dependencies
checking whether to enable mod_proxy_http... shared (most)
checking whether to enable mod_proxy_fcgi... checking dependencies
checking whether to enable mod_proxy_fcgi... shared (most)
checking whether to enable mod_proxy_scgi... checking dependencies
checking whether to enable mod_proxy_scgi... shared (most)
checking whether to enable mod_proxy_fdpass... no
checking whether to enable mod_proxy_ajp... checking dependencies
checking whether to enable mod_proxy_ajp... shared (most)
checking whether to enable mod_proxy_balancer... checking dependencies
checking whether to enable mod_proxy_balancer... shared (most)
checking whether to enable mod_proxy_express... checking dependencies
checking whether to enable mod_proxy_express... shared (most)

Earlier in the 2.x development schema, the proxy module had just
been re-factored and re-introduced, and carried the baggage of only
five subordinate modules.

By 2.4 we recognized the refactored mod_proxy as stable enough
to promote to the default 'most' configuration, with 9 subordinate
proxy modules.

In 2.4.21+ we are up to 11 subordinate modules.

What was once a quick-solution in httpd 2.2 proxy/modules/config.m4
has outlived its usefulness, and the ./configure defaults in trunk/ make
that whole overloaded --enable-proxy unnecessary in any 2.next release.
That's why I suggest we keep this cleaned-up logic for the lifespan of
the 2.4 branch (not breaking anyone's expected ./configure syntax),
and axe it on trunk next week.

Re: svn commit: r1750043 - /httpd/httpd/trunk/modules/proxy/config.m4

Posted by William A Rowe Jr <wr...@rowe-clan.net>.
Once we are happy shipping httpd-2.4.23, I'm planning to change
the behavior of trunk by eliminating this whole mess... e.g...


--- modules/proxy/config.m4 (revision 1750043)
+++ modules/proxy/config.m4 (working copy)
@@ -5,20 +5,6 @@
 proxy_objs="mod_proxy.lo proxy_util.lo"
 APACHE_MODULE(proxy, Apache proxy module, $proxy_objs, , most)

-dnl set aside module selections and default, and set the module default to
the
-dnl same scope (shared|static) as selected for mod proxy, along with
setting
-dnl the default selection to "most" for remaining proxy modules, mirroring
the
-dnl behavior of 2.4.1 and later, but failing ./configure only if an
explicitly
-dnl enabled module is missing its prereqs
-save_module_selection=$module_selection
-save_module_default=$module_default
-if test "x$enable_proxy" != "xno"; then
-    module_selection=most
-    if test "$enable_proxy" = "shared" -o "$enable_proxy" = "static"; then
-        module_default=$enable_proxy
-    fi
-fi
-
 proxy_connect_objs="mod_proxy_connect.lo"
 proxy_ftp_objs="mod_proxy_ftp.lo"
 proxy_http_objs="mod_proxy_http.lo"
@@ -78,8 +64,5 @@

 APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])

-module_selection=$save_module_selection
-module_default=$save_module_default
-
 APACHE_MODPATH_FINISH


This will get us to the point that --enable-modules=most will just work,
while a user can be specific and clever if that is what they want to do...
--enable-modules=few --enable-proxy=static --enable-proxy-http=yes
--enable-proxy-http2=yes --enable-proxy-balancer=yes
aught to give us only a compiled-in proxy core, and restrict the list
to only loadable http, http2 and balancer modules. But that is such
a change to ./configure that we can't consider it for backport to 2.4.

If we want a new --enable-all-proxy or similar switch, I'd be happy
to support such a patch (following some sort of pattern similar to
the above)... but we must quit overloading a single module's enable
or disable state with all other modules in that family. It's as horrid
as Tomcat connector's choice to overload --with-maintainer-mode!
(which is an automake switch, and it is an automake project.)



On Fri, Jun 24, 2016 at 12:31 AM, <wr...@apache.org> wrote:

> Author: wrowe
> Date: Fri Jun 24 05:31:13 2016
> New Revision: 1750043
>
> URL: http://svn.apache.org/viewvc?rev=1750043&view=rev
> Log:
> Replace the proxy_mods_enable logic, with its hazardous 'yes' value that
> aborts the build on missing dependencies, with a local override of the
> module_selection as 'most', and module_default of the same shared|static
> model that was requested through --enable-proxy.
>
> [For trunk, we need to reevaluate the 'most' condition of some of the more
> esoteric modules, and simply drop the module_default override; where a user
> wants to enable -only- mod_proxy, plus one proxy mechanism, the legacy
> 2.4.x
> behavior retained by this patch is nuts. For one example,
>   --enable-modules=few --enable-proxy-yes --enable-proxy_http
> is a completely specific and legitimate syntax --- adding 10 other proxy
> providers in response to this syntax is absurd.]
>
>
> Modified:
>     httpd/httpd/trunk/modules/proxy/config.m4
>
> Modified: httpd/httpd/trunk/modules/proxy/config.m4
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/config.m4?rev=1750043&r1=1750042&r2=1750043&view=diff
>
> ==============================================================================
> --- httpd/httpd/trunk/modules/proxy/config.m4 (original)
> +++ httpd/httpd/trunk/modules/proxy/config.m4 Fri Jun 24 05:31:13 2016
> @@ -2,16 +2,22 @@ dnl modules enabled in this directory by
>
>  APACHE_MODPATH_INIT(proxy)
>
> -if test "$enable_proxy" = "shared"; then
> -  proxy_mods_enable=shared
> -elif test "$enable_proxy" = "yes"; then
> -  proxy_mods_enable=yes
> -else
> -  proxy_mods_enable=most
> -fi
> -
>  proxy_objs="mod_proxy.lo proxy_util.lo"
> -APACHE_MODULE(proxy, Apache proxy module, $proxy_objs, ,
> $proxy_mods_enable)
> +APACHE_MODULE(proxy, Apache proxy module, $proxy_objs, , most)
> +
> +dnl set aside module selections and default, and set the module default
> to the
> +dnl same scope (shared|static) as selected for mod proxy, along with
> setting
> +dnl the default selection to "most" for remaining proxy modules,
> mirroring the
> +dnl behavior of 2.4.1 and later, but failing ./configure only if an
> explicitly
> +dnl enabled module is missing its prereqs
> +save_module_selection=$module_selection
> +save_module_default=$module_default
> +if test "x$enable_proxy" != "xno"; then
> +    module_selection=most
> +    if test "$enable_proxy" = "shared" -o "$enable_proxy" = "static"; then
> +        module_default=$enable_proxy
> +    fi
> +fi
>
>  proxy_connect_objs="mod_proxy_connect.lo"
>  proxy_ftp_objs="mod_proxy_ftp.lo"
> @@ -39,11 +45,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,,
> 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_connect, Apache proxy CONNECT module.  Requires
> --enable-proxy., $proxy_connect_objs, , most, , proxy)
> +APACHE_MODULE(proxy_ftp, Apache proxy FTP module.  Requires
> --enable-proxy., $proxy_ftp_objs, , most, , proxy)
> +APACHE_MODULE(proxy_http, Apache proxy HTTP module.  Requires
> --enable-proxy., $proxy_http_objs, , most, , proxy)
> +APACHE_MODULE(proxy_fcgi, Apache proxy FastCGI module.  Requires
> --enable-proxy., $proxy_fcgi_objs, , most, , proxy)
> +APACHE_MODULE(proxy_scgi, Apache proxy SCGI module.  Requires
> --enable-proxy., $proxy_scgi_objs, , most, , 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>
> @@ -54,9 +60,9 @@ APACHE_MODULE(proxy_fdpass, Apache proxy
>      enable_proxy_fdpass=no
>    fi
>  ],proxy)
> -APACHE_MODULE(proxy_wstunnel, Apache proxy Websocket Tunnel module.
> Requires and is enabled by --enable-proxy., $proxy_wstunnel_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_wstunnel, Apache proxy Websocket Tunnel module.
> Requires --enable-proxy., $proxy_wstunnel_objs, , most, , proxy)
> +APACHE_MODULE(proxy_ajp, Apache proxy AJP module.  Requires
> --enable-proxy., $proxy_ajp_objs, , most, , proxy)
> +APACHE_MODULE(proxy_balancer, Apache proxy BALANCER module.  Requires
> --enable-proxy., $proxy_balancer_objs, , most, , proxy)
>
>  APACHE_MODULE(serf, [Reverse proxy module using Serf], , , no, [
>      APACHE_CHECK_SERF
> @@ -67,10 +73,13 @@ APACHE_MODULE(serf, [Reverse proxy modul
>      fi
>  ])
>
> -APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires
> --enable-proxy., , , $proxy_mods_enable,, proxy)
> -APACHE_MODULE(proxy_hcheck, [reverse-proxy health-check module. Requires
> --enable-proxy and --enable-watchdog.], , , $proxy_mods_enable,,
> [proxy,watchdog])
> +APACHE_MODULE(proxy_express, mass reverse-proxy module. Requires
> --enable-proxy., , , most, , proxy)
> +APACHE_MODULE(proxy_hcheck, [reverse-proxy health-check module. Requires
> --enable-proxy and --enable-watchdog.], , , most, , [proxy,watchdog])
>
>  APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current])
>
> +module_selection=$save_module_selection
> +module_default=$save_module_default
> +
>  APACHE_MODPATH_FINISH
>
>
>
>