nginx-0.7.44

Jérôme Loyet jerome at loyet.net
Mon Mar 23 20:51:50 MSK 2009


2009/3/23 Igor Sysoev <is at rambler-co.ru>:
> On Mon, Mar 23, 2009 at 05:03:40PM +0100, J?r?me Loyet wrote:
>
>> 2009/3/23 Igor Sysoev <is at rambler-co.ru>:
>> > On Mon, Mar 23, 2009 at 04:27:53PM +0100, J?r?me Loyet wrote:
>> >
>> >> 2009/3/23 Igor Sysoev <is at rambler-co.ru>:
>> >> > On Mon, Mar 23, 2009 at 04:06:32PM +0100, J?r?me Loyet wrote:
>> >> >
>> >> >> 2009/3/23 Igor Sysoev <is at rambler-co.ru>:
>> >> >> > On Mon, Mar 23, 2009 at 03:55:54PM +0100, J?r?me Loyet wrote:
>> >> >> >
>> >> >> >> 2009/3/23 Igor Sysoev <is at rambler-co.ru>:
>> >> >> >> > On Mon, Mar 23, 2009 at 03:41:51PM +0100, J?r?me Loyet wrote:
>> >> >> >> >
>> >> >> >> >> > I'm not using openssl and I don't have any md5.h file in my include
>> >> >> >> >> > path. /usr/include/md5.h is valid on BSD but not on Linux. I have to
>> >> >> >> >> > add the openssl library somehow in configure. I think there is a
>> >> >> >> >> > missing check in the configure script.
>> >> >> >> >> >
>> >> >> >> >> > The build is working correctly if I'm using
>> >> >> >> >> > --openssl-dir=/usr/local/openssl-0.9.6.
>> >> >> >> >>
>> >> >> >> >> Sorry I miss something: The build is working correctly if I'm using
>> >> >> >> >> --openssl-dir=/usr/local/openssl-0.9.6 AND --with-http_ssl_module
>> >> >> >> >> (only openssl-dir show that it founds the library but it doesn't use
>> >> >> >> >> it when compiling (no -I /usr/local/openssl-0.9.6/include))
>> >> >> >> >
>> >> >> >> > nginx's configure has no --openssl-dir= option.
>> >> >> >>
>> >> >> >> I meant --with-openssl= option. Sorry
>> >> >> >
>> >> >> > The --with-openssl= option should point to OpenSSL sources, but not
>> >> >> > to inlcudes and binary libraries.
>> >> >>
>> >> >> OK thx for the answer.
>> >> >
>> >> > As your OpenSSL is set in non-standard place (I have just tested building
>> >> > on Debian with standard /usr/include/openssl/md5.h), you should use
>> >> > something like this:
>> >> >
>> >> > --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>> >>
>> >> it's not working because of the #ifdef in md5.h:
>> >>
>> >> #if (NGX_HAVE_OPENSSL_MD5_H)
>> >> #include <openssl/md5.h>
>> >> #else
>> >> #include <md5.h>
>> >> #endif
>> >>
>> >> Has NGX_HAVE_OPENSSL_MD5_H is not defined, it looks for md5.h instead
>> >> of openssl/md5.h. And if I use
>> >> --with-cc-opt=-I/usr/local/openssl-0.9.6/include/openssl it won't work
>> >> because the function name are from OpenSSL lib and not from BSD kernel
>> >> (MD5_Init vs MD5Init).
>> >>
>> >> I have to make configure to set NGX_HAVE_OPENSSL_MD5_H ... do you have
>> >> any clue ? I'm still searching
>> >
>> > -  --with-cc-opt=-I/usr/local/openssl-0.9.6/include/openssl
>> > +  --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>
>> Here are configuration options:
>> ./configure --with-http_addition_module --with-http_flv_module
>> --with-http_gzip_static_module --with-http_realip_module
>> --with-http_stub_status_module --with-http_sub_module
>> --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>
>> And a part of the output:
>> [...]
>> checking for rsaref md5 library ... not found
>> checking for rsaref md library ... not found
>> checking for OpenSSL md5 crypto library ... not found
>> [...]
>> Configuration summary
>>   + using system PCRE library
>>   + OpenSSL library is not used
>>   + md5 library is not found
>>   + sha1 library is not used
>>   + using system zlib library
>
> What is in objs/autoconf.err under the line:
> checking for OpenSSL md5 crypto library
> ?
>
>> as OpenSSL md5 crypto library is not found, NGX_HAVE_OPENSSL_MD5_H is
>> not defined by configure. So ngx_md5.h will try to include <md5.h> and
>> not <openssl/md5.h>
>>
>> #if (NGX_HAVE_OPENSSL_MD5_H)
>> #include <openssl/md5.h>
>> #else
>> #include <md5.h>
>> #endif
>>
>> And make stops at compilation time when including ngx_md5.h from
>> ngx_http_file_cache.c
>>
>> How to tell to configure script to lookup in /usr/local/openssl-0.9.6
>> for headers and lib from openssl ?
>
> This may be not include problem, but library's one.
> Where is md5.h and libcrypto.so on your system:
>
> /usr/local/openssl-0.9.6/include/openssl/md5.h
> /usr/local/openssl-0.9.6/lib/libcrypto.so
>
> ?

I found a small bug which caused my death on this :)

--- auto/feature.orig   Mon Mar 23 18:40:55 2009
+++ auto/feature        Mon Mar 23 18:41:11 2009
@@ -39,7 +39,7 @@


 ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
+          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_CC_OPT $NGX_LD_OPT
$ngx_feature_libs"

 ngx_feature_inc_path=


In auto/feature the NGX_CC_OPT variable (from --with-cc-opt configure
option) was not used. So I could set whatever I wanted through
--with-cc-opt it would never be looked at.

now everything works fine. In my case I have to specify both
with-cc-opt and with-cc-opt:
--with-cc-opt=-I/usr/local/openssl-0.9.6/include
--with-ld-opt=-L/usr/local/openssl-0.9.6/lib

Does this patch sound good to you igor ?

++ Jerome





More information about the nginx mailing list