we are trying to compile mod_qos for an apache 2.0.61, but il fails to compile saying it can't find ap_regex_t. The documentation says that it is compatible with apache 2.0.x
This seems to be normal, as it appeared after 2.1.x, but what I don't understand is that in mod_qos.c there are parts that take care of this problem with an ifdef, for example :
/usr/local/apache/bin/apxs -i -c mod_qos.c
/usr/local/apache/build/libtool --silent --mode=compile gcc -prefer-pic -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include -I/usr/local/apache/include -I/usr/local/apache/include -c -o mod_qos.lo mod_qos.c && touch mod_qos.slo
mod_qos.c:6466:1: directives may not be used inside a macro argument
mod_qos.c:6465:21: unterminated argument list invoking macro "AP_INIT_TAKE3"
mod_qos.c:6469: `AP_INIT_TAKE3' undeclared here (not in a function)
mod_qos.c:6469: initializer element is not constant
mod_qos.c:6469: (near initialization for `qos_config_cmds[44]')
mod_qos.c:6469: syntax error before string constant
mod_qos.c:6472: initializer element is not constant
mod_qos.c:6472: (near initialization for `qos_config_cmds[45].func')
mod_qos.c:6472: initializer element is not constant
mod_qos.c:6472: (near initialization for `qos_config_cmds[45]')
mod_qos.c:6478: initializer element is not constant
mod_qos.c:6478: (near initialization for `qos_config_cmds[46].func')
mod_qos.c:6478: initializer element is not constant
mod_qos.c:6478: (near initialization for `qos_config_cmds[46]')
mod_qos.c:6483:1: directives may not be used inside a macro argument
mod_qos.c:6482:63: unterminated argument list invoking macro "AP_INIT_NO_ARGS"
mod_qos.c:6484: `AP_INIT_NO_ARGS' undeclared here (not in a function)
mod_qos.c:6484: initializer element is not constant
mod_qos.c:6484: (near initialization for `qos_config_cmds[47]')
mod_qos.c:6484: syntax error before numeric constant
mod_qos.c:6493: warning: initialization from incompatible pointer type
mod_qos.c:6493: extra brace group at end of initializer
mod_qos.c:6493: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: initializer element is not constant
mod_qos.c:6493: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6500: warning: braces around scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: braces around scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: field name not in record or union initializer
mod_qos.c:6500: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6506: warning: braces around scalar initializer
mod_qos.c:6506: warning: (near initialization for `qos_config_cmds[48].req_override')
mod_qos.c:6506: warning: initialization makes integer from pointer without a cast
mod_qos.c:6507: initializer element is not constant
mod_qos.c:6507: (near initialization for `qos_config_cmds[48]')
apxs:Error: Command failed with rc=65536
It seems like it doesn't like a macro which doesn't end inside the ifdef where it began, strange.
An idea ?
Thanks,
Pascal
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
we are trying to compile mod_qos for an apache 2.0.61, but il fails to compile saying it can't find ap_regex_t. The documentation says that it is compatible with apache 2.0.x
This seems to be normal, as it appeared after 2.1.x, but what I don't understand is that in mod_qos.c there are parts that take care of this problem with an ifdef, for example :
typedef struct qs_acentry_st {
303 int id;
304 /** pointer to lock of the actable */
305 apr_global_mutex_t *lock;
306 /** location rules */
307 char *url;
308 int url_len;
309 char *event;
310 #ifdef AP_REGEX_H
311 ap_regex_t *regex;
312 ap_regex_t *regex_var;
313 ap_regex_t *condition;
314 #else
315 regex_t *regex;
316 regex_t *regex_var;
317 regex_t *condition;
318 #endif
My question is : is there a good reason that would explain that the same pattern is not applied to the following lines :
214 typedef struct {
215 ap_regex_t *preg;
216 char *name;
217 char *value;
218 } qos_setenvifquery_t;
219
220 typedef struct {
221 pcre *preg;
222 ap_regex_t *pregx;
223 char *name;
224 char *value;
225 } qos_setenvifparpbody_t;
226
Thanks
Pascal
Ups... I just oversight that. Actually, I don't test every mod_qos release against Apache 2.0.
It's fixed in release 8.10.
Regards, Pascal
Thanks for being so reactive
Regards.
Pascal
Hi Pascal,
well it still doesn't compile on out platform !
the traces are :
/usr/local/apache/bin/apxs -i -c mod_qos.c
/usr/local/apache/build/libtool --silent --mode=compile gcc -prefer-pic -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include -I/usr/local/apache/include -I/usr/local/apache/include -c -o mod_qos.lo mod_qos.c && touch mod_qos.slo
mod_qos.c:6466:1: directives may not be used inside a macro argument
mod_qos.c:6465:21: unterminated argument list invoking macro "AP_INIT_TAKE3"
mod_qos.c:6469: `AP_INIT_TAKE3' undeclared here (not in a function)
mod_qos.c:6469: initializer element is not constant
mod_qos.c:6469: (near initialization for `qos_config_cmds[44]')
mod_qos.c:6469: syntax error before string constant
mod_qos.c:6472: initializer element is not constant
mod_qos.c:6472: (near initialization for `qos_config_cmds[45].func')
mod_qos.c:6472: initializer element is not constant
mod_qos.c:6472: (near initialization for `qos_config_cmds[45]')
mod_qos.c:6478: initializer element is not constant
mod_qos.c:6478: (near initialization for `qos_config_cmds[46].func')
mod_qos.c:6478: initializer element is not constant
mod_qos.c:6478: (near initialization for `qos_config_cmds[46]')
mod_qos.c:6483:1: directives may not be used inside a macro argument
mod_qos.c:6482:63: unterminated argument list invoking macro "AP_INIT_NO_ARGS"
mod_qos.c:6484: `AP_INIT_NO_ARGS' undeclared here (not in a function)
mod_qos.c:6484: initializer element is not constant
mod_qos.c:6484: (near initialization for `qos_config_cmds[47]')
mod_qos.c:6484: syntax error before numeric constant
mod_qos.c:6493: warning: initialization from incompatible pointer type
mod_qos.c:6493: extra brace group at end of initializer
mod_qos.c:6493: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: warning: excess elements in union initializer
mod_qos.c:6493: warning: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6493: initializer element is not constant
mod_qos.c:6493: (near initialization for `qos_config_cmds[48].func')
mod_qos.c:6500: warning: braces around scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: braces around scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: field name not in record or union initializer
mod_qos.c:6500: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6500: warning: excess elements in scalar initializer
mod_qos.c:6500: warning: (near initialization for `qos_config_cmds[48].cmd_data')
mod_qos.c:6506: warning: braces around scalar initializer
mod_qos.c:6506: warning: (near initialization for `qos_config_cmds[48].req_override')
mod_qos.c:6506: warning: initialization makes integer from pointer without a cast
mod_qos.c:6507: initializer element is not constant
mod_qos.c:6507: (near initialization for `qos_config_cmds[48]')
apxs:Error: Command failed with rc=65536
It seems like it doesn't like a macro which doesn't end inside the ifdef where it began, strange.
An idea ?
Thanks,
Pascal
Could you please try once the most recent version from the cvs repository?
http://mod-qos.cvs.sourceforge.net/viewvc/\*checkout*/mod-qos/src/httpd_src/modules/qos/mod_qos.c?revision=5.159
I'm going to build a new release as soon as I now if these changes solve the problem.
Cheers, Pascal
Hi Pascal,
Now it compiles !
We'll try it tomorrow.
Thanks a lot
Pascal