ports/162446: [ports] nginx is confused with new posix_fadvise
Mark Atkinson
atkin901 at gmail.com
Thu Nov 10 18:20:08 UTC 2011
>Number: 162446
>Category: ports
>Synopsis: [ports] nginx is confused with new posix_fadvise
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Nov 10 18:20:07 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Mark Atkinson
>Release: 10.0-CURRENT
>Organization:
>Environment:
10.0-CURRENT #23 r227391: Wed Nov 9 09:53:56 PST 2011
>Description:
nginx is confused with the introduction of posix_fadvise to the system.
In src/os/unix/ngx_files.h there is an attempt to define ngx_read_ahead() to fcntl which breaks compilation of ngx_files.c when fcntl is attempted to be reassigned back to a real function.
ngx_files.h:
275 #if (NGX_HAVE_F_READAHEAD)
276
277 #define NGX_HAVE_READ_AHEAD 1
278
279 #define ngx_read_ahead(fd, n) fcntl(fd, F_READAHEAD, (int) n)
280 #define ngx_read_ahead_n "fcntl(fd, F_READAHEAD)"
281
282 #elif (NGX_HAVE_POSIX_FADVISE)
283
284 #define NGX_HAVE_READ_AHEAD 1
285
286 ngx_int_t ngx_read_ahead(ngx_fd_t fd, size_t n);
287 #define ngx_read_ahead_n "posix_fadvise(POSIX_FADV_SEQUENTIAL)"
288
289 #else
290
291 #define ngx_read_ahead(fd, n) 0
292 #define ngx_read_ahead_n "ngx_read_ahead_n"
293
294 #endif
ngx_files.c
457 #if (NGX_HAVE_POSIX_FADVISE)
458
459 ngx_int_t
460 ngx_read_ahead(ngx_fd_t fd, size_t n)
461 {
462 int err;
463
464 err = posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
465
466 if (err == 0) {
467 return 0;
468 }
469
470 ngx_set_errno(err);
471 return NGX_FILE_ERROR;
472 }
473
474 #endif
===> Building for nginx-1.0.9,1
make -f objs/Makefile
cc -c -O2 -pipe -march=native -DNO_IDEA -fno-strict-aliasing -I /usr/local/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -o objs/src/os/unix/ngx_files.o src/os/unix/ngx_files.c
src/os/unix/ngx_files.c:460: error: expected declaration specifiers or '...' before numeric constant
src/os/unix/ngx_files.c:460: error: expected declaration specifiers or '...' before '(' token
src/os/unix/ngx_files.c:461: error: conflicting types for 'fcntl'
/usr/include/fcntl.h:296: error: previous declaration of 'fcntl' was here
src/os/unix/ngx_files.c: In function 'ngx_directio_on':
src/os/unix/ngx_files.c:484: error: too many arguments to function 'fcntl'
src/os/unix/ngx_files.c:490: error: too many arguments to function 'fcntl'
src/os/unix/ngx_files.c: In function 'ngx_directio_off':
src/os/unix/ngx_files.c:499: error: too many arguments to function 'fcntl'
src/os/unix/ngx_files.c:505: error: too many arguments to function 'fcntl'
*** Error code 1
Stop in /usr/ports/www/nginx/work/nginx-1.0.9.
*** Error code 1
Stop in /usr/ports/www/nginx/work/nginx-1.0.9.
*** Error code 1
Stop in /usr/ports/www/nginx.
*** Error code 1
Stop in /usr/ports/www/nginx.
>How-To-Repeat:
compile nginx on 10-current with a current revision.
>Fix:
#if 0 #endif the offending redefine in ngx_files.c
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list