Opened 10 months ago
Last modified 10 months ago
#2599 closed defect
Nginx 1.24 building from source with pcre2 on Ubuntu leading to issues — at Version 1
Reported by: | Umar Noor | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | documentation | Version: | 1.25.x |
Keywords: | Cc: | ||
uname -a: | Linux anadev001 6.5.0-15-generic #15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 12 18:54:30 UTC 2 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: | nginx-1.24.0.tar.gz |
Description (last modified by )
Ubuntu Version: Linux anadev001 6.5.0-15-generic #15~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 12 18:54:30 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
make version: GNU Make 4.3
Nginx version: nginx-1.24.0.tar.gz
PCRE2 Version: pcre2-10.42.tar.gz
gcc version: gcc version 11.4.0
Getting the below compilation issues using the above configuration:
make -f objs/Makefile gcc -c -fPIC -I/home/umarsam/projectwork/nginx/../pcre/src/include -I/home/umarsam/projectwork/nginx/../zlib/prod/include -I/home/umarsam/projectwork/nginx/../gd/prod/include -I/home/umarsam/projectwork/nginx/../openssl/prod/include -I. -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/umarsam/projectwork/nginx/../pcre/prod/include -I /home/umarsam/projectwork/nginx/../openssl/prod/include -I /home/umarsam/projectwork/nginx/../zlib/prod/include -I /home/umarsam/projectwork/gd/prod/include -I objs -I src/http -I src/http/modules -I src/http/v2 \ -o objs/src/http/modules/ngx_http_rewrite_module.o \ src/http/modules/ngx_http_rewrite_module.c src/http/modules/ngx_http_rewrite_module.c: In function ‘ngx_http_rewrite’: src/http/modules/ngx_http_rewrite_module.c:309:5: error: unknown type name ‘ngx_http_script_regex_code_t’; did you mean ‘ngx_http_script_file_code_t’? 309 | ngx_http_script_regex_code_t *regex; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_file_code_t src/http/modules/ngx_http_rewrite_module.c:310:5: error: unknown type name ‘ngx_http_script_regex_end_code_t’; did you mean ‘ngx_http_script_return_code_t’? 310 | ngx_http_script_regex_end_code_t *regex_end; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_return_code_t src/http/modules/ngx_http_rewrite_module.c:314:47: error: ‘ngx_http_script_regex_code_t’ undeclared (first use in this function); did you mean ‘ngx_http_script_file_code_t’? 314 | sizeof(ngx_http_script_regex_code_t)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_file_code_t src/http/modules/ngx_http_rewrite_module.c:314:47: note: each undeclared identifier is reported only once for each function it appears in src/http/modules/ngx_http_rewrite_module.c:336:10: error: request for member ‘regex’ in something not a structure or union 336 | regex->regex = ngx_http_regex_compile(cf, &rc); | ^~ src/http/modules/ngx_http_rewrite_module.c:336:20: warning: implicit declaration of function ‘ngx_http_regex_compile’; did you mean ‘ngx_regex_compile’? [-Wimplicit-function-declaration] 336 | regex->regex = ngx_http_regex_compile(cf, &rc); | ^~~~~~~~~~~~~~~~~~~~~~ | ngx_regex_compile src/http/modules/ngx_http_rewrite_module.c:337:14: error: request for member ‘regex’ in something not a structure or union 337 | if (regex->regex == NULL) { | ^~ src/http/modules/ngx_http_rewrite_module.c:341:10: error: request for member ‘code’ in something not a structure or union 341 | regex->code = ngx_http_script_regex_start_code; | ^~ src/http/modules/ngx_http_rewrite_module.c:341:19: error: ‘ngx_http_script_regex_start_code’ undeclared (first use in this function); did you mean ‘ngx_http_script_start_code’? 341 | regex->code = ngx_http_script_regex_start_code; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_start_code src/http/modules/ngx_http_rewrite_module.c:342:10: error: request for member ‘uri’ in something not a structure or union 342 | regex->uri = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:343:10: error: request for member ‘name’ in something not a structure or union 343 | regex->name = value[1]; | ^~ src/http/modules/ngx_http_rewrite_module.c:351:14: error: request for member ‘add_args’ in something not a structure or union 351 | regex->add_args = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:360:14: error: request for member ‘status’ in something not a structure or union 360 | regex->status = NGX_HTTP_MOVED_TEMPORARILY; | ^~ src/http/modules/ngx_http_rewrite_module.c:361:14: error: request for member ‘redirect’ in something not a structure or union 361 | regex->redirect = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:370:18: error: request for member ‘break_cycle’ in something not a structure or union 370 | regex->break_cycle = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:374:18: error: request for member ‘status’ in something not a structure or union 374 | regex->status = NGX_HTTP_MOVED_TEMPORARILY; | ^~ src/http/modules/ngx_http_rewrite_module.c:375:18: error: request for member ‘redirect’ in something not a structure or union 375 | regex->redirect = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:379:18: error: request for member ‘status’ in something not a structure or union 379 | regex->status = NGX_HTTP_MOVED_PERMANENTLY; | ^~ src/http/modules/ngx_http_rewrite_module.c:380:18: error: request for member ‘redirect’ in something not a structure or union 380 | regex->redirect = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:394:24: error: request for member ‘lengths’ in something not a structure or union 394 | sc.lengths = ®ex->lengths; | ^~ src/http/modules/ngx_http_rewrite_module.c:399:29: error: request for member ‘redirect’ in something not a structure or union 399 | sc.compile_args = !regex->redirect; | ^~ src/http/modules/ngx_http_rewrite_module.c:407:10: error: request for member ‘size’ in something not a structure or union 407 | regex->size = sc.size; | ^~ src/http/modules/ngx_http_rewrite_module.c:408:10: error: request for member ‘args’ in something not a structure or union 408 | regex->args = sc.args; | ^~ src/http/modules/ngx_http_rewrite_module.c:411:14: error: request for member ‘lengths’ in something not a structure or union 411 | regex->lengths = NULL; | ^~ src/http/modules/ngx_http_rewrite_module.c:415:46: error: ‘ngx_http_script_regex_end_code_t’ undeclared (first use in this function); did you mean ‘ngx_http_script_return_code_t’? 415 | sizeof(ngx_http_script_regex_end_code_t), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_return_code_t src/http/modules/ngx_http_rewrite_module.c:421:14: error: request for member ‘code’ in something not a structure or union 421 | regex_end->code = ngx_http_script_regex_end_code; | ^~ src/http/modules/ngx_http_rewrite_module.c:421:23: error: ‘ngx_http_script_regex_end_code’ undeclared (first use in this function); did you mean ‘ngx_http_script_return_code’? 421 | regex_end->code = ngx_http_script_regex_end_code; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_return_code src/http/modules/ngx_http_rewrite_module.c:422:14: error: request for member ‘uri’ in something not a structure or union 422 | regex_end->uri = regex->uri; | ^~ src/http/modules/ngx_http_rewrite_module.c:422:27: error: request for member ‘uri’ in something not a structure or union 422 | regex_end->uri = regex->uri; | ^~ src/http/modules/ngx_http_rewrite_module.c:423:14: error: request for member ‘args’ in something not a structure or union 423 | regex_end->args = regex->args; | ^~ src/http/modules/ngx_http_rewrite_module.c:423:28: error: request for member ‘args’ in something not a structure or union 423 | regex_end->args = regex->args; | ^~ src/http/modules/ngx_http_rewrite_module.c:424:14: error: request for member ‘add_args’ in something not a structure or union 424 | regex_end->add_args = regex->add_args; | ^~ src/http/modules/ngx_http_rewrite_module.c:424:32: error: request for member ‘add_args’ in something not a structure or union 424 | regex_end->add_args = regex->add_args; | ^~ src/http/modules/ngx_http_rewrite_module.c:425:14: error: request for member ‘redirect’ in something not a structure or union 425 | regex_end->redirect = regex->redirect; | ^~ src/http/modules/ngx_http_rewrite_module.c:425:32: error: request for member ‘redirect’ in something not a structure or union 425 | regex_end->redirect = regex->redirect; | ^~ src/http/modules/ngx_http_rewrite_module.c:436:10: error: request for member ‘next’ in something not a structure or union 436 | regex->next = (u_char *) lcf->codes->elts + lcf->codes->nelts | ^~ src/http/modules/ngx_http_rewrite_module.c: In function ‘ngx_http_rewrite_if_condition’: src/http/modules/ngx_http_rewrite_module.c:658:5: error: unknown type name ‘ngx_http_script_regex_code_t’; did you mean ‘ngx_http_script_file_code_t’? 658 | ngx_http_script_regex_code_t *regex; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_file_code_t src/http/modules/ngx_http_rewrite_module.c:756:49: error: ‘ngx_http_script_regex_code_t’ undeclared (first use in this function); did you mean ‘ngx_http_script_file_code_t’? 756 | sizeof(ngx_http_script_regex_code_t)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_file_code_t src/http/modules/ngx_http_rewrite_module.c:770:18: error: request for member ‘regex’ in something not a structure or union 770 | regex->regex = ngx_http_regex_compile(cf, &rc); | ^~ src/http/modules/ngx_http_rewrite_module.c:771:22: error: request for member ‘regex’ in something not a structure or union 771 | if (regex->regex == NULL) { | ^~ src/http/modules/ngx_http_rewrite_module.c:775:18: error: request for member ‘code’ in something not a structure or union 775 | regex->code = ngx_http_script_regex_start_code; | ^~ src/http/modules/ngx_http_rewrite_module.c:775:27: error: ‘ngx_http_script_regex_start_code’ undeclared (first use in this function); did you mean ‘ngx_http_script_start_code’? 775 | regex->code = ngx_http_script_regex_start_code; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ngx_http_script_start_code src/http/modules/ngx_http_rewrite_module.c:776:18: error: request for member ‘next’ in something not a structure or union 776 | regex->next = sizeof(ngx_http_script_regex_code_t); | ^~ src/http/modules/ngx_http_rewrite_module.c:777:18: error: request for member ‘test’ in something not a structure or union 777 | regex->test = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:779:22: error: request for member ‘negative_test’ in something not a structure or union 779 | regex->negative_test = 1; | ^~ src/http/modules/ngx_http_rewrite_module.c:781:18: error: request for member ‘name’ in something not a structure or union 781 | regex->name = value[last]; | ^~
After having a look in the code the below 2 structures causing this are defined in teh directives with PCRE only and not with PCRE2
#if (NGX_PCRE) typedef struct { ngx_http_script_code_pt code; ngx_http_regex_t *regex; ngx_array_t *lengths; uintptr_t size; uintptr_t status; uintptr_t next; unsigned test:1; unsigned negative_test:1; unsigned uri:1; unsigned args:1; /* add the r->args to the new arguments */ unsigned add_args:1; unsigned redirect:1; unsigned break_cycle:1; ngx_str_t name; } ngx_http_script_regex_code_t; typedef struct { ngx_http_script_code_pt code; unsigned uri:1; unsigned args:1; /* add the r->args to the new arguments */ unsigned add_args:1; unsigned redirect:1; } ngx_http_script_regex_end_code_t; #endif
Could you please let me know if this is the right way of compiling or niginx1.24 does not support PCRE2 library on Ubuntu....
Note:
See TracTickets
for help on using tickets.
Compilation of nginx with PCRE2 is supported staring with nginx 1.21.5. And the
NGX_PCRE
macro is defined for both PCRE and PCRE2, seeauto/lib/pcre/conf
.The
gcc
arguments as shown, notably-I/home/umarsam/projectwork/nginx/../pcre/src/include
and-I /home/umarsam/projectwork/nginx/../pcre/prod/include
, suggest you are doing something wrong with theconfigure
arguments. Please showconfigure
arguments you are using andconfigure
output.