Hello!

On Tue, Dec 13, 2016 at 05:29:48PM -0500, sofiamay wrote:

> Nginx не собирается с OpenSSL 1.1.0c на Windows, вот последние строки лога:

Да, всё так.  В OpenSSL 1.1.x поменяли процедуру сборки и имена 
библиотек под Windows, и nginx этого ещё не умеет.  У меня лежат 
предварительные патчи про это, но когда я доберусь их 
доделать/закоммитить - неизвестно.

Если хочется поиграться, то вот версия патча по состоянию на 
OpenSSL 1.1.0:

# HG changeset patch
# User Maxim Dounin <[email protected]>
# Date 1481732611 -10800
#      Wed Dec 14 19:23:31 2016 +0300
# Node ID a445bb89efa28d808d9ed58c5b9491d3f1e02343
# Parent  32714e60862997a2b5e88887cd5f20d1d28d694b
Win32: compatiblity with OpenSSL 1.1.0.

OpenSSL 1.1.0 now uses normal "nmake; nmake install" instead of using
custom "ms\do_ms.bat" script and "ms\nt.mak" makefile.  And Configure
now requires --prefix to be absolute, and no longer derives --openssldir
from prefix (so it's specified explicitly).  Generated libraries are now
called "libcrypto.lib" and "libssl.lib" instead of "libeay32.lib"
and "ssleay32.lib".

Additionally, compilation fails due to "warning C4090: 'function' : different
'const' qualifiers" in openssl/lhash.h.

diff -r 32714e608629 -r a445bb89efa2 auto/lib/openssl/conf
--- a/auto/lib/openssl/conf     Tue Dec 13 00:49:44 2016 +0100
+++ b/auto/lib/openssl/conf     Wed Dec 14 19:23:31 2016 +0300
@@ -15,8 +15,16 @@ if [ $OPENSSL != NONE ]; then
 
             CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
             CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+
+            if [ -f $OPENSSL/ms/do_ms ]; then
+                # before OpenSSL 1.1.0
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+            else
+                # OpenSSL 1.1.0+
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
+            fi
 
             # libeay32.lib requires gdi32.lib
             CORE_LIBS="$CORE_LIBS gdi32.lib"
diff -r 32714e608629 -r a445bb89efa2 auto/lib/openssl/makefile.msvc
--- a/auto/lib/openssl/makefile.msvc    Tue Dec 13 00:49:44 2016 +0100
+++ b/auto/lib/openssl/makefile.msvc    Wed Dec 14 19:23:31 2016 +0300
@@ -6,9 +6,16 @@
 all:
        cd $(OPENSSL)
 
-       perl Configure VC-WIN32 no-shared --prefix=openssl $(OPENSSL_OPT)
+       perl Configure VC-WIN32 no-shared                               \
+               --prefix="%cd%/openssl"                                 \
+               --openssldir="%cd%/openssl/ssl"                         \
+               $(OPENSSL_OPT)
 
-       ms\do_ms
-
-       $(MAKE) -f ms\nt.mak
-       $(MAKE) -f ms\nt.mak install
+       if exist ms\do_ms (                                             \
+               ms\do_ms                                                \
+               && $(MAKE) -f ms\nt.mak                                 \
+               && $(MAKE) -f ms\nt.mak install                         \
+       ) else (                                                        \
+               $(MAKE)                                                 \
+               && $(MAKE) install_sw                                   \
+       )
diff -r 32714e608629 -r a445bb89efa2 misc/GNUmakefile
--- a/misc/GNUmakefile  Tue Dec 13 00:49:44 2016 +0100
+++ b/misc/GNUmakefile  Wed Dec 14 19:23:31 2016 +0300
@@ -5,7 +5,7 @@ NGINX =         nginx-$(VER)
 TEMP =         tmp
 
 OBJS =         objs.msvc8
-OPENSSL =      openssl-1.0.2j
+OPENSSL =      openssl-1.1.0c
 ZLIB =         zlib-1.2.8
 PCRE =         pcre-8.39
 
diff -r 32714e608629 -r a445bb89efa2 src/os/win32/ngx_win32_config.h
--- a/src/os/win32/ngx_win32_config.h   Tue Dec 13 00:49:44 2016 +0100
+++ b/src/os/win32/ngx_win32_config.h   Wed Dec 14 19:23:31 2016 +0300
@@ -87,6 +87,9 @@ typedef long  time_t;
 /* 'type cast': from data pointer to function pointer */
 #pragma warning(disable:4055)
 
+/* 'function' : different 'const' qualifiers */
+#pragma warning(disable:4090)
+
 /* unreferenced formal parameter */
 #pragma warning(disable:4100)
 

-- 
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить