Antw: Re: nginx sticky module compile error

Maxim Dounin mdounin at mdounin.ru
Thu Jun 16 23:47:32 MSD 2011


Hello!

On Thu, Jun 16, 2011 at 08:28:09PM +0200, Jérôme Loyet wrote:

> 2011/6/16 Maxim Dounin <mdounin at mdounin.ru>
> >
> > Hello!
> >
> > On Thu, Jun 16, 2011 at 12:01:26PM +0200, Dalibor Jotanovic wrote:
> >
> > > Hi,
> > >
> > > sure, here it is:
> > >
> > > gcc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter
> > > -Wunused-function -Wunused-variable -Wunused-value -Werror -g   -I
> > > src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I
> > > src/http -I src/http/modules -I src/mail \
> > >   -o objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o \
> > >   ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c
> > > In file included from
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:11:
> > > src/core/ngx_sha1.h:18:17: error: sha.h: No such file or directory
> > > In file included from
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:11:
> > > src/core/ngx_sha1.h:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
> > > ‘__attribute__’ before ‘ngx_sha1_t’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c: In
> > > function ‘ngx_http_sticky_misc_md5’:
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
> > > error: ‘MD5_DIGEST_LENGTH’ undeclared (first use in this function)
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
> > > error: (Each undeclared identifier is reported only once
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
> > > error: for each function it appears in.)
> > > cc1: warnings being treated as errors
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:115:
> > > warning: unused variable ‘hash’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c: In
> > > function ‘ngx_http_sticky_misc_sha1’:
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
> > > error: ‘ngx_sha1_t’ undeclared (first use in this function)
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:133:
> > > error: expected ‘;’ before ‘sha1’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
> > > error: ‘SHA_DIGEST_LENGTH’ undeclared (first use in this function)
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:142:
> > > warning: implicit declaration of function ‘SHA1_Init’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:142:
> > > error: ‘sha1’ undeclared (first use in this function)
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:143:
> > > warning: implicit declaration of function ‘SHA1_Update’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:144:
> > > warning: implicit declaration of function ‘SHA1_Final’
> > > ../modules/nginx-sticky-module-1.0-rc2//ngx_http_sticky_misc.c:134:
> > > warning: unused variable ‘hash’
> > > make[1]: ***
> > > [objs/addon/nginx-sticky-module-1.0-rc2/ngx_http_sticky_misc.o] Error 1
> > > make[1]: Leaving directory `/root/src/nginx-1.0.4'
> > > make: *** [build] Error 2
> > >
> > > Seems that the error is a different one, i wasn't aware of that.
> > > However, compiling fails..
> >
> > It seems that you don't have any library with SHA1 functions
> > required for sticky module.  Configure script should write
> > something like 'sha1: not found' (but it doesn't fail as SHA1 is
> > considered to be optional by nginx itself).
> 
> Hi maxim,
> 
> I'm the developper of the sticky module. In order to ensure that sha1
> and md5 functions exist, I've set the following variables in config
> file:
> USE_SHA1=YES
> USE_MD5=YES
> 
> but it seems not to be enough to ensure they are there. As SHA1 and
> MD5 are considered to be optional by nginx itself, what can be done to
> stop the configure script and correct this bug ?

I don't really think this is a bug in your module, but rather 
limitation of nginx itself.  It doesn't allow you to specify 
whether USE_* means "required" or "optional".

For USE_MD5 (and other libraries) it means "required" (in older 
versions configure failed, in 1.0.1+ we fallback to internal 
implementation).  For SHA1 it's historically "optional".

I believe solution would be to add internal SHA1 implementation, 
effectively making SHA1 "required" as well.

Maxim Dounin



More information about the nginx mailing list