Re: Nginx не собирается с OpenSSL 1.1.0c на Windows

Maxim Dounin mdounin на mdounin.ru
Ср Дек 14 16:32:30 UTC 2016


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 <mdounin at mdounin.ru>
# 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