Re: [PATCH] Configure: don't test alternatives if preferred feature is found

2016-06-30 Thread Piotr Sikora
Hey Maxim,

On Thu, Jun 30, 2016 at 12:52 PM, Piotr Sikora  wrote:
> # 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

2016-06-30 Thread Piotr Sikora
# 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

2016-06-30 Thread Piotr Sikora
# 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

2016-06-30 Thread Piotr Sikora
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

2016-06-30 Thread Maxim Dounin
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

2016-06-28 Thread Piotr Sikora
# 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

2016-06-28 Thread Piotr Sikora
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

2016-06-28 Thread Piotr Sikora
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

2016-06-28 Thread Maxim Dounin
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

2016-06-28 Thread Ruslan Ermilov
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

2016-06-27 Thread Piotr Sikora
# 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"
+