Compilando o nginx com o nginx-gridfs, obtendo erros do driver mongo-c durante o make

2

Estou tentando compilar o nginx (versão 1.0.11) com o suporte gridfs (nginx-gridfs versão 0.8) no Ubuntu 11.10 (gcc versão 4.6) usando o módulo nginx aqui:

https://github.com/mdirolf/nginx-gridfs

As instruções de instalação descritas aqui são simples:

* Clone the nginx-gridfs repository ('git clone https://github.com/mdirolf/nginx-gridfs')
* Check out the mongo-c-driver submodule ('git submodule init' then 'git submodule update')
* Download and unpack the nginx source (from 'http://nginx.org/download/nginx-1.0.11.tar.gz')
* Run './configure' with '--add-module=/path/to/nginx-gridfs/repository'
* 'make' and 'sudo make install'

Estas etapas funcionaram bem para mim da última vez que configurei nginx-gridfs em uma máquina (cerca de quatro meses atrás no Ubuntu 10.04, com gcc 4.5 e nginx versão 1.0.5), mas agora (em uma nova instalação do Ubuntu) estou recebendo um erro. O ./configure está funcionando bem, mas make falha com:

/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c: In function 'mongo_count':
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:939:5: error: missing initializer [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:939:5: error: (near initialization for 'out.dataSize') [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c: In function 'mongo_simple_int_command':
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:981:5: error: missing initializer [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:981:5: error: (near initialization for 'out.dataSize') [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c: In function 'mongo_simple_str_command':
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1013:5: error: missing initializer [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1013:5: error: (near initialization for 'out.dataSize') [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c: In function 'mongo_cmd_get_error_helper':
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1055:5: error: missing initializer [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1055:5: error: (near initialization for 'out.dataSize') [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c: In function 'mongo_cmd_ismaster':
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1098:5: error: missing initializer [-Werror=missing-field-initializers]
/path/to/nginx-gridfs/mongo-c-driver/src/mongo.c:1098:5: error: (near initialization for 'out.dataSize') [-Werror=missing-field-initializers]
cc1: all warnings being treated as errors
make[1]: *** [objs/addon/src/mongo.o] Error 1

Alguma idéia de por que isso falharia?

O cc1: all warnings being treated as errors leva-me a acreditar que posso adicionar -Wno-error a CFLAGS para dizer que não trata os avisos como erros para evitar este problema. Mas estou preocupado que os avisos de tratamento como erros estejam habilitados aqui por um motivo, e que desativá-lo só tornaria a compilação bem-sucedida na superfície, mas não funcionaria de fato.

Alguém sabe o que está acontecendo aqui?

    
por Ben Lee 27.12.2011 / 05:50

1 resposta

3

Usar seus métodos de avisos de ignição fez com que a compilação funcionasse, mas eu realmente não conseguiria conectar-me ao banco de dados com erros de usuário / senha em uso. O que funcionou para mim foi uma combinação de construção de mongo a partir do zero para suprir o nginx com novas bibliotecas: link

Mas isso não foi suficiente. Eu também tive que verificar especificamente o driver mongo c v0.3.1 no submódulo de nginx-gridfs. Então é v0.8 de gridfs nginx. V0.3.1 mongo c driver, e o novo mongo build sendo referências do env especificado nesse link. Então eu construí o nginx 1.0.11 sem erros e funcionou.

    
por 03.01.2012 / 17:35