Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hey Maxim, On Thu, Jun 30, 2016 at 12:52 PM, Piotr Sikorawrote: > # HG changeset patch > # User Piotr Sikora > # Date 1467064812 25200 > # Mon Jun 27 15:00:12 2016 -0700 > # Node ID 33d0b463aa3484428a30d838f6c58d8fe717746b > # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 > Configure: don't test alternatives if preferred feature is found. Updated diff that retains the SO -> IP -> TCP order. I just moved IP_BIND_ADDRESS_NO_PORT after all NGX_HAVE_TRANSPARENT_PROXY checks. Best regards, Piotr Sikora ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[PATCH] Configure: don't test alternatives if preferred feature is found
# HG changeset patch # User Piotr Sikora# Date 1467064812 25200 # Mon Jun 27 15:00:12 2016 -0700 # Node ID 33d0b463aa3484428a30d838f6c58d8fe717746b # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 Configure: don't test alternatives if preferred feature is found. Signed-off-by: Piotr Sikora diff -r d452cb27639f -r 33d0b463aa34 auto/cc/conf --- a/auto/cc/conf +++ b/auto/cc/conf @@ -197,6 +197,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_CC_NAME" = "ccc" ]; then echo "checking for C99 variadic macros ... disabled" +ngx_found=no else ngx_feature="C99 variadic macros" ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" @@ -209,20 +210,24 @@ if [ "$NGX_PLATFORM" != win32 ]; then var(0, buf, \"%d\", 1); if (buf[0] != '1') return 1" . auto/feature - fi +fi -ngx_feature="gcc variadic macros" -ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" -ngx_feature_run=yes -ngx_feature_incs="#include +if [ $ngx_found = no ]; then + +ngx_feature="gcc variadic macros" +ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" +ngx_feature_run=yes +ngx_feature_incs="#include #define var(dummy, args...) sprintf(args)" -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="char buf[30]; buf[0] = '0'; - var(0, buf, \"%d\", 1); - if (buf[0] != '1') return 1" -. auto/feature +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" +. auto/feature + +fi ngx_feature="gcc builtin 64 bit byteswap" diff -r d452cb27639f -r 33d0b463aa34 auto/unix --- a/auto/unix +++ b/auto/unix @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, . auto/feature -ngx_feature="posix_fadvise()" -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="posix_fadvise()" +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" +. auto/feature + +fi ngx_feature="O_DIRECT" @@ -208,25 +212,34 @@ if [ $ngx_found = yes -a "$NGX_SYSTEM" = have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have fi -ngx_feature="F_NOCACHE" -ngx_feature_name="NGX_HAVE_F_NOCACHE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="fcntl(0, F_NOCACHE, 1);" -. auto/feature +if [ $ngx_found = no ]; then -ngx_feature="directio()" -ngx_feature_name="NGX_HAVE_DIRECTIO" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="directio(0, DIRECTIO_ON);" -. auto/feature +ngx_feature="F_NOCACHE" +ngx_feature_name="NGX_HAVE_F_NOCACHE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="fcntl(0, F_NOCACHE, 1);" +. auto/feature + +fi + + +if [ $ngx_found = no ]; then + +ngx_feature="directio()" +ngx_feature_name="NGX_HAVE_DIRECTIO" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="directio(0, DIRECTIO_ON);" +. auto/feature + +fi ngx_feature="statfs()" @@ -242,16 +255,20 @@ ngx_feature_test="struct statfs fs; . auto/feature -ngx_feature="statvfs()" -ngx_feature_name="NGX_HAVE_STATVFS" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="struct statvfs fs; - statvfs(\".\", );" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="statvfs()" +ngx_feature_name="NGX_HAVE_STATVFS" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="struct statvfs fs; + statvfs(\".\", );" +. auto/feature + +fi ngx_feature="dlopen()" @@ -341,6 +358,40 @@ ngx_feature_test="setsockopt(0, SOL_SOCK . auto/feature +# Linux transparent proxying + +if [ $ngx_found = no ]; then + +ngx_feature="IP_TRANSPARENT" +ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_TRANSPARENT, NULL, 0)" +.
[PATCH] Configure: don't test alternatives if preferred feature is found
# HG changeset patch # User Piotr Sikora# Date 1467064812 25200 # Mon Jun 27 15:00:12 2016 -0700 # Node ID 4dd0a17ea347f936d81236168bd33288e15fa782 # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 Configure: don't test alternatives if preferred feature is found. Signed-off-by: Piotr Sikora diff -r d452cb27639f -r 4dd0a17ea347 auto/cc/conf --- a/auto/cc/conf +++ b/auto/cc/conf @@ -197,6 +197,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_CC_NAME" = "ccc" ]; then echo "checking for C99 variadic macros ... disabled" +ngx_found=no else ngx_feature="C99 variadic macros" ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" @@ -209,20 +210,24 @@ if [ "$NGX_PLATFORM" != win32 ]; then var(0, buf, \"%d\", 1); if (buf[0] != '1') return 1" . auto/feature - fi +fi -ngx_feature="gcc variadic macros" -ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" -ngx_feature_run=yes -ngx_feature_incs="#include +if [ $ngx_found = no ]; then + +ngx_feature="gcc variadic macros" +ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" +ngx_feature_run=yes +ngx_feature_incs="#include #define var(dummy, args...) sprintf(args)" -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="char buf[30]; buf[0] = '0'; - var(0, buf, \"%d\", 1); - if (buf[0] != '1') return 1" -. auto/feature +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" +. auto/feature + +fi ngx_feature="gcc builtin 64 bit byteswap" diff -r d452cb27639f -r 4dd0a17ea347 auto/unix --- a/auto/unix +++ b/auto/unix @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, . auto/feature -ngx_feature="posix_fadvise()" -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="posix_fadvise()" +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" +. auto/feature + +fi ngx_feature="O_DIRECT" @@ -208,25 +212,34 @@ if [ $ngx_found = yes -a "$NGX_SYSTEM" = have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have fi -ngx_feature="F_NOCACHE" -ngx_feature_name="NGX_HAVE_F_NOCACHE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="fcntl(0, F_NOCACHE, 1);" -. auto/feature +if [ $ngx_found = no ]; then -ngx_feature="directio()" -ngx_feature_name="NGX_HAVE_DIRECTIO" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="directio(0, DIRECTIO_ON);" -. auto/feature +ngx_feature="F_NOCACHE" +ngx_feature_name="NGX_HAVE_F_NOCACHE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="fcntl(0, F_NOCACHE, 1);" +. auto/feature + +fi + + +if [ $ngx_found = no ]; then + +ngx_feature="directio()" +ngx_feature_name="NGX_HAVE_DIRECTIO" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="directio(0, DIRECTIO_ON);" +. auto/feature + +fi ngx_feature="statfs()" @@ -242,16 +255,20 @@ ngx_feature_test="struct statfs fs; . auto/feature -ngx_feature="statvfs()" -ngx_feature_name="NGX_HAVE_STATVFS" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="struct statvfs fs; - statvfs(\".\", );" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="statvfs()" +ngx_feature_name="NGX_HAVE_STATVFS" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="struct statvfs fs; + statvfs(\".\", );" +. auto/feature + +fi ngx_feature="dlopen()" @@ -329,18 +346,6 @@ ngx_feature_test="setsockopt(0, SOL_SOCK . auto/feature -# NetBSD bind to any address for transparent proxying - -ngx_feature="SO_BINDANY" -ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="setsockopt(0, SOL_SOCKET, SO_BINDANY, NULL, 0)" -. auto/feature - - # Linux IP_BIND_ADDRESS_NO_PORT
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hey Maxim, > This looks like a mismerge, as previous tests is about > IP_BIND_ADDRESS_NO_PORT (it is probably misplaced though). Yeah, IP_BIND_ADDRESS_NO_PORT was added in the middle of NGX_HAVE_TRANSPARENT_PROXY checks after I already wrote those changes and I didn't catch the mis-merge. Good catch, thanks! Best regards, Piotr Sikora ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hello! On Tue, Jun 28, 2016 at 03:28:31PM -0700, Piotr Sikora wrote: > # HG changeset patch > # User Piotr Sikora> # Date 1467064812 25200 > # Mon Jun 27 15:00:12 2016 -0700 > # Node ID 9e0d65eda7fa016c0aebddf898d6f3f5834351f1 > # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 > Configure: don't test alternatives if preferred feature is found. [...] > @@ -356,28 +373,36 @@ ngx_feature_test="setsockopt(0, IPPROTO_ > > # Linux transparent proxying > > -ngx_feature="IP_TRANSPARENT" > -ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" > -ngx_feature_run=no > -ngx_feature_incs="#include > - #include " > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_TRANSPARENT, NULL, 0)" > -. auto/feature > +if [ $ngx_found = no ]; then > + > +ngx_feature="IP_TRANSPARENT" > +ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" This looks like a mismerge, as previous tests is about IP_BIND_ADDRESS_NO_PORT (it is probably misplaced though). -- Maxim Dounin http://nginx.org/ ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[PATCH] Configure: don't test alternatives if preferred feature is found
# HG changeset patch # User Piotr Sikora# Date 1467064812 25200 # Mon Jun 27 15:00:12 2016 -0700 # Node ID d1974e5bf34e45539bd2a4b3d08924fd3ed01639 # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 Configure: don't test alternatives if preferred feature is found. While there, remove unused NGX_HAVE_READ_AHEAD. Signed-off-by: Piotr Sikora diff -r d452cb27639f -r d1974e5bf34e auto/cc/conf --- a/auto/cc/conf +++ b/auto/cc/conf @@ -197,6 +197,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_CC_NAME" = "ccc" ]; then echo "checking for C99 variadic macros ... disabled" +ngx_found=no else ngx_feature="C99 variadic macros" ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" @@ -209,20 +210,24 @@ if [ "$NGX_PLATFORM" != win32 ]; then var(0, buf, \"%d\", 1); if (buf[0] != '1') return 1" . auto/feature - fi +fi -ngx_feature="gcc variadic macros" -ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" -ngx_feature_run=yes -ngx_feature_incs="#include +if [ $ngx_found = no ]; then + +ngx_feature="gcc variadic macros" +ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" +ngx_feature_run=yes +ngx_feature_incs="#include #define var(dummy, args...) sprintf(args)" -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="char buf[30]; buf[0] = '0'; - var(0, buf, \"%d\", 1); - if (buf[0] != '1') return 1" -. auto/feature +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" +. auto/feature + +fi ngx_feature="gcc builtin 64 bit byteswap" diff -r d452cb27639f -r d1974e5bf34e auto/unix --- a/auto/unix +++ b/auto/unix @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, . auto/feature -ngx_feature="posix_fadvise()" -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="posix_fadvise()" +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" +. auto/feature + +fi ngx_feature="O_DIRECT" @@ -208,25 +212,34 @@ if [ $ngx_found = yes -a "$NGX_SYSTEM" = have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have fi -ngx_feature="F_NOCACHE" -ngx_feature_name="NGX_HAVE_F_NOCACHE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="fcntl(0, F_NOCACHE, 1);" -. auto/feature +if [ $ngx_found = no ]; then -ngx_feature="directio()" -ngx_feature_name="NGX_HAVE_DIRECTIO" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="directio(0, DIRECTIO_ON);" -. auto/feature +ngx_feature="F_NOCACHE" +ngx_feature_name="NGX_HAVE_F_NOCACHE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="fcntl(0, F_NOCACHE, 1);" +. auto/feature + +fi + + +if [ $ngx_found = no ]; then + +ngx_feature="directio()" +ngx_feature_name="NGX_HAVE_DIRECTIO" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="directio(0, DIRECTIO_ON);" +. auto/feature + +fi ngx_feature="statfs()" @@ -242,16 +255,20 @@ ngx_feature_test="struct statfs fs; . auto/feature -ngx_feature="statvfs()" -ngx_feature_name="NGX_HAVE_STATVFS" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="struct statvfs fs; - statvfs(\".\", );" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="statvfs()" +ngx_feature_name="NGX_HAVE_STATVFS" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="struct statvfs fs; + statvfs(\".\", );" +. auto/feature + +fi ngx_feature="dlopen()" @@ -356,28 +373,36 @@ ngx_feature_test="setsockopt(0, IPPROTO_ # Linux transparent proxying -ngx_feature="IP_TRANSPARENT" -ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_TRANSPARENT, NULL, 0)" -. auto/feature +if [ $ngx_found = no ];
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hey Maxim, > There was at least one attempt to introduce a code using both > fcntl(F_READAHEAD) and posix_fadvise() depending on a > configuration. And I don't think this should be prevented at > configure stage. This code isn't part of current NGINX codebase, so it's a moot point. Once fallbacks to alternatives are added to the code (and I might add some myself), it's trivial to re-enable them in the ./configure script on case-by-case basis, but right now those tests for alternatives are just pointless and waste CPU cycles. Furthermore, sometimes those tests warn about issues in features that aren't going to get used anyway, because preferred feature was already found. For example, on OSX, you'll see this: checking for mmap(MAP_ANON|MAP_SHARED) ... found checking for mmap("/dev/zero", MAP_SHARED) ... found but is not working checking for System V shared memory ... found Best regards, Piotr Sikora ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hey Ruslan, > So far I have mixed feelings about this patch, but if it gets > accepted then the compile-time condition for ngx_read_ahead() > in src/os/unix/ngx_files.c can be simplified to only test > NGX_HAVE_POSIX_FADVISE. Also, there is the currently unused > macro NGX_HAVE_READ_AHEAD. Good idea, thanks! Best regards, Piotr Sikora ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hello! On Tue, Jun 28, 2016 at 03:54:34PM +0300, Ruslan Ermilov wrote: > Hi Piotr, > > On Mon, Jun 27, 2016 at 07:55:17PM -0700, Piotr Sikora wrote: > > # HG changeset patch > > # User Piotr Sikora> > # Date 1467064812 25200 > > # Mon Jun 27 15:00:12 2016 -0700 > > # Node ID e4375e338d9acf927ffdc4cd18c704bb7ea1fd4e > > # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 > > Configure: don't test alternatives if preferred feature is found. > > > > Signed-off-by: Piotr Sikora [...] > > diff -r d452cb27639f -r e4375e338d9a auto/unix > > --- a/auto/unix > > +++ b/auto/unix > > @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, > > . auto/feature > > > > > > -ngx_feature="posix_fadvise()" > > -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" > > -ngx_feature_run=no > > -ngx_feature_incs="#include " > > -ngx_feature_path= > > -ngx_feature_libs= > > -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" > > -. auto/feature > > +if [ $ngx_found = no ]; then > > + > > +ngx_feature="posix_fadvise()" > > +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" > > +ngx_feature_run=no > > +ngx_feature_incs="#include " > > +ngx_feature_path= > > +ngx_feature_libs= > > +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" > > +. auto/feature > > + > > +fi > > So far I have mixed feelings about this patch, but if it gets > accepted then the compile-time condition for ngx_read_ahead() > in src/os/unix/ngx_files.c can be simplified to only test > NGX_HAVE_POSIX_FADVISE. Also, there is the currently unused > macro NGX_HAVE_READ_AHEAD. There was at least one attempt to introduce a code using both fcntl(F_READAHEAD) and posix_fadvise() depending on a configuration. And I don't think this should be prevented at configure stage. -- Maxim Dounin http://nginx.org/ ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
Re: [PATCH] Configure: don't test alternatives if preferred feature is found
Hi Piotr, On Mon, Jun 27, 2016 at 07:55:17PM -0700, Piotr Sikora wrote: > # HG changeset patch > # User Piotr Sikora> # Date 1467064812 25200 > # Mon Jun 27 15:00:12 2016 -0700 > # Node ID e4375e338d9acf927ffdc4cd18c704bb7ea1fd4e > # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 > Configure: don't test alternatives if preferred feature is found. > > Signed-off-by: Piotr Sikora > > diff -r d452cb27639f -r e4375e338d9a auto/cc/conf > --- a/auto/cc/conf > +++ b/auto/cc/conf > @@ -197,6 +197,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then > > if [ "$NGX_CC_NAME" = "ccc" ]; then > echo "checking for C99 variadic macros ... disabled" > +ngx_found=no > else > ngx_feature="C99 variadic macros" > ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" > @@ -209,20 +210,24 @@ if [ "$NGX_PLATFORM" != win32 ]; then >var(0, buf, \"%d\", 1); >if (buf[0] != '1') return 1" > . auto/feature > - fi > +fi > > > -ngx_feature="gcc variadic macros" > -ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" > -ngx_feature_run=yes > -ngx_feature_incs="#include > +if [ $ngx_found = no ]; then > + > +ngx_feature="gcc variadic macros" > +ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" > +ngx_feature_run=yes > +ngx_feature_incs="#include > #define var(dummy, args...) sprintf(args)" > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="char buf[30]; buf[0] = '0'; > - var(0, buf, \"%d\", 1); > - if (buf[0] != '1') return 1" > -. auto/feature > +ngx_feature_path= > +ngx_feature_libs= > +ngx_feature_test="char buf[30]; buf[0] = '0'; > + var(0, buf, \"%d\", 1); > + if (buf[0] != '1') return 1" > +. auto/feature > + > +fi > > > ngx_feature="gcc builtin 64 bit byteswap" > diff -r d452cb27639f -r e4375e338d9a auto/unix > --- a/auto/unix > +++ b/auto/unix > @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, > . auto/feature > > > -ngx_feature="posix_fadvise()" > -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" > -ngx_feature_run=no > -ngx_feature_incs="#include " > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" > -. auto/feature > +if [ $ngx_found = no ]; then > + > +ngx_feature="posix_fadvise()" > +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" > +ngx_feature_run=no > +ngx_feature_incs="#include " > +ngx_feature_path= > +ngx_feature_libs= > +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" > +. auto/feature > + > +fi So far I have mixed feelings about this patch, but if it gets accepted then the compile-time condition for ngx_read_ahead() in src/os/unix/ngx_files.c can be simplified to only test NGX_HAVE_POSIX_FADVISE. Also, there is the currently unused macro NGX_HAVE_READ_AHEAD. > > > ngx_feature="O_DIRECT" > @@ -208,25 +212,34 @@ if [ $ngx_found = yes -a "$NGX_SYSTEM" = > have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have > fi > > -ngx_feature="F_NOCACHE" > -ngx_feature_name="NGX_HAVE_F_NOCACHE" > -ngx_feature_run=no > -ngx_feature_incs="#include " > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="fcntl(0, F_NOCACHE, 1);" > -. auto/feature > > +if [ $ngx_found = no ]; then > > -ngx_feature="directio()" > -ngx_feature_name="NGX_HAVE_DIRECTIO" > -ngx_feature_run=no > -ngx_feature_incs="#include > - #include " > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="directio(0, DIRECTIO_ON);" > -. auto/feature > +ngx_feature="F_NOCACHE" > +ngx_feature_name="NGX_HAVE_F_NOCACHE" > +ngx_feature_run=no > +ngx_feature_incs="#include " > +ngx_feature_path= > +ngx_feature_libs= > +ngx_feature_test="fcntl(0, F_NOCACHE, 1);" > +. auto/feature > + > +fi > + > + > +if [ $ngx_found = no ]; then > + > +ngx_feature="directio()" > +ngx_feature_name="NGX_HAVE_DIRECTIO" > +ngx_feature_run=no > +ngx_feature_incs="#include > + #include " > +ngx_feature_path= > +ngx_feature_libs= > +ngx_feature_test="directio(0, DIRECTIO_ON);" > +. auto/feature > + > +fi > > > ngx_feature="statfs()" > @@ -242,16 +255,20 @@ ngx_feature_test="struct statfs fs; > . auto/feature > > > -ngx_feature="statvfs()" > -ngx_feature_name="NGX_HAVE_STATVFS" > -ngx_feature_run=no > -ngx_feature_incs="#include > - #include " > -ngx_feature_path= > -ngx_feature_libs= > -ngx_feature_test="struct statvfs fs; > - statvfs(\".\", );" > -. auto/feature > +if [ $ngx_found = no ]; then > + > +ngx_feature="statvfs()" > +ngx_feature_name="NGX_HAVE_STATVFS" > +ngx_feature_run=no > +ngx_feature_incs="#include > +
[PATCH] Configure: don't test alternatives if preferred feature is found
# HG changeset patch # User Piotr Sikora# Date 1467064812 25200 # Mon Jun 27 15:00:12 2016 -0700 # Node ID e4375e338d9acf927ffdc4cd18c704bb7ea1fd4e # Parent d452cb27639f714bc43b7f3ede417e3e7f8efdd6 Configure: don't test alternatives if preferred feature is found. Signed-off-by: Piotr Sikora diff -r d452cb27639f -r e4375e338d9a auto/cc/conf --- a/auto/cc/conf +++ b/auto/cc/conf @@ -197,6 +197,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then if [ "$NGX_CC_NAME" = "ccc" ]; then echo "checking for C99 variadic macros ... disabled" +ngx_found=no else ngx_feature="C99 variadic macros" ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" @@ -209,20 +210,24 @@ if [ "$NGX_PLATFORM" != win32 ]; then var(0, buf, \"%d\", 1); if (buf[0] != '1') return 1" . auto/feature - fi +fi -ngx_feature="gcc variadic macros" -ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" -ngx_feature_run=yes -ngx_feature_incs="#include +if [ $ngx_found = no ]; then + +ngx_feature="gcc variadic macros" +ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" +ngx_feature_run=yes +ngx_feature_incs="#include #define var(dummy, args...) sprintf(args)" -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="char buf[30]; buf[0] = '0'; - var(0, buf, \"%d\", 1); - if (buf[0] != '1') return 1" -. auto/feature +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="char buf[30]; buf[0] = '0'; + var(0, buf, \"%d\", 1); + if (buf[0] != '1') return 1" +. auto/feature + +fi ngx_feature="gcc builtin 64 bit byteswap" diff -r d452cb27639f -r e4375e338d9a auto/unix --- a/auto/unix +++ b/auto/unix @@ -184,14 +184,18 @@ ngx_feature_test="fcntl(0, F_READAHEAD, . auto/feature -ngx_feature="posix_fadvise()" -ngx_feature_name="NGX_HAVE_POSIX_FADVISE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="posix_fadvise()" +ngx_feature_name="NGX_HAVE_POSIX_FADVISE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL);" +. auto/feature + +fi ngx_feature="O_DIRECT" @@ -208,25 +212,34 @@ if [ $ngx_found = yes -a "$NGX_SYSTEM" = have=NGX_HAVE_ALIGNED_DIRECTIO . auto/have fi -ngx_feature="F_NOCACHE" -ngx_feature_name="NGX_HAVE_F_NOCACHE" -ngx_feature_run=no -ngx_feature_incs="#include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="fcntl(0, F_NOCACHE, 1);" -. auto/feature +if [ $ngx_found = no ]; then -ngx_feature="directio()" -ngx_feature_name="NGX_HAVE_DIRECTIO" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="directio(0, DIRECTIO_ON);" -. auto/feature +ngx_feature="F_NOCACHE" +ngx_feature_name="NGX_HAVE_F_NOCACHE" +ngx_feature_run=no +ngx_feature_incs="#include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="fcntl(0, F_NOCACHE, 1);" +. auto/feature + +fi + + +if [ $ngx_found = no ]; then + +ngx_feature="directio()" +ngx_feature_name="NGX_HAVE_DIRECTIO" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="directio(0, DIRECTIO_ON);" +. auto/feature + +fi ngx_feature="statfs()" @@ -242,16 +255,20 @@ ngx_feature_test="struct statfs fs; . auto/feature -ngx_feature="statvfs()" -ngx_feature_name="NGX_HAVE_STATVFS" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="struct statvfs fs; - statvfs(\".\", );" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="statvfs()" +ngx_feature_name="NGX_HAVE_STATVFS" +ngx_feature_run=no +ngx_feature_incs="#include + #include " +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="struct statvfs fs; + statvfs(\".\", );" +. auto/feature + +fi ngx_feature="dlopen()" @@ -356,28 +373,36 @@ ngx_feature_test="setsockopt(0, IPPROTO_ # Linux transparent proxying -ngx_feature="IP_TRANSPARENT" -ngx_feature_name="NGX_HAVE_TRANSPARENT_PROXY" -ngx_feature_run=no -ngx_feature_incs="#include - #include " -ngx_feature_path= -ngx_feature_libs= -ngx_feature_test="setsockopt(0, IPPROTO_IP, IP_TRANSPARENT, NULL, 0)" -. auto/feature +if [ $ngx_found = no ]; then + +ngx_feature="IP_TRANSPARENT" +