mod_wsgi icon indicating copy to clipboard operation
mod_wsgi copied to clipboard

compile error with trunk of apache httpd

Open speedkraken opened this issue 2 years ago • 3 comments

Compile error due to some change in httpd scoreboard, see this line:

In file included from /usr/include/httpd/scoreboard.h:35,

Same error using pip installation method with mod_wsgi 4.9.4, as well as compiling the trunk/master of mod_wsgi (output shown below).

[root@40ae5eef0a23 mod_wsgi]# make
/usr/bin/apxs -c -I/usr/include/python3.11 -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE  -Wc,-g -Wc,-O2  src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib64 -L/usr/lib64/python3.11/config  -lpython3.11 -ldl -lm
/usr/local/apr/build-2/libtool --silent --mode=compile gcc -prefer-pic -fpic -march=native -mtune=native -O3 -pipe  -DLINUX -D_REENTRANT -D_GNU_SOURCE  -I/usr/include/httpd  -I/usr/local/apr/include/apr-2   -g -O2 -I/usr/include/python3.11 -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE  -c -o src/server/mod_wsgi.lo src/server/mod_wsgi.c && touch src/server/mod_wsgi.slo
src/server/mod_wsgi.c: In function ‘wsgi_process_socket’:
src/server/mod_wsgi.c:8684:5: error: unknown type name ‘core_net_rec’
 8684 |     core_net_rec *net;
      |     ^~~~~~~~~~~~
src/server/mod_wsgi.c:8746:38: error: ‘core_net_rec’ undeclared (first use in this function)
 8746 |     net = apr_palloc(c->pool, sizeof(core_net_rec));
      |                                      ^~~~~~~~~~~~
src/server/mod_wsgi.c:8746:38: note: each undeclared identifier is reported only once for each function it appears in
src/server/mod_wsgi.c:8759:8: error: request for member ‘c’ in something not a structure or union
 8759 |     net->c = c;
      |        ^~
src/server/mod_wsgi.c:8760:8: error: request for member ‘in_ctx’ in something not a structure or union
 8760 |     net->in_ctx = NULL;
      |        ^~
src/server/mod_wsgi.c:8761:8: error: request for member ‘out_ctx’ in something not a structure or union
 8761 |     net->out_ctx = NULL;
      |        ^~
src/server/mod_wsgi.c:8762:8: error: request for member ‘client_socket’ in something not a structure or union
 8762 |     net->client_socket = sock;
      |        ^~
In file included from /usr/include/httpd/scoreboard.h:35,
                 from /usr/include/httpd/ap_mpm.h:31,
                 from src/server/wsgi_apache.h:69,
                 from src/server/mod_wsgi.c:21:
src/server/mod_wsgi.c:8764:29: error: request for member ‘c’ in something not a structure or union
 8764 |     ap_set_module_config(net->c->conn_config, &core_module, sock);
      |                             ^~
/usr/include/httpd/http_config.h:556:18: note: in definition of macro ‘ap_set_module_config’
  556 |     ((((void **)(v))[(m)->module_index]) = (val))
      |                  ^
src/server/mod_wsgi.c:8766:46: error: request for member ‘c’ in something not a structure or union
 8766 |                                net, NULL, net->c);
      |                                              ^~
src/server/mod_wsgi.c:8768:47: error: request for member ‘c’ in something not a structure or union
 8768 |                                 net, NULL, net->c);
      |                                               ^~
apxs:Error: Command failed with rc=65536
.
make: *** [Makefile:31: src/server/mod_wsgi.la] Error 1

speedkraken avatar Jun 21 '23 00:06 speedkraken

The 'develop' branch of mod_wsgi is more recent. Tried that branch with the same compile error.

speedkraken avatar Jun 21 '23 00:06 speedkraken

Sorry, there is possibly no simple fix for this. If they have made connection construction completely private that may prevent mod_wsgi even being able to do what it needs to do. This is because mod_wsgi had to replicate the steps to avoid some of the stuff that Apache did internally around adding filters to the connection. So this will likely take some time to investigate and may require a major rewrite of mod_wsgi daemon mode, which given the amount of effort involved and declining number of mod_wsgi users may not be worth the effort. So for now there is a chance will not be able to support Apache httpd 2.5+.

GrahamDumpleton avatar Jun 21 '23 00:06 GrahamDumpleton

That's really unfortunate. Thanks for the quick and informative reply.

speedkraken avatar Jun 21 '23 00:06 speedkraken