angristan / nginx-autoinstall

Compile NGINX from source with custom modules and patches on Debian and Ubuntu
GNU General Public License v3.0
636 stars 237 forks source link

Brotli make ended in error #222

Closed karelbasta closed 2 years ago

karelbasta commented 2 years ago

Tried building Nginx with the following settings.

Do you want to install Nginx stable or mainline?
   1) Stable 1.20.1
   2) Mainline 1.21.6

Select an option [1-2]: 2

Please tell me which modules you want to install.
If you select none, Nginx will be installed with its default modules.

Modules to install :
       HTTP/3 (⚠️ Patch by Cloudflare, will install BoringSSL, Quiche, Rust and Go) [y/n]: y
       Cloudflare's TLS Dynamic Record Resizing patch [y/n]: y
       Cloudflare's full HPACK encoding patch [y/n]: y
       PageSpeed 1.13.35.2 [y/n]: y
       Brotli [y/n]: y
       Headers More 0.33 [y/n]: n
       GeoIP (BROKEN) [y/n]: n
       Fancy index [y/n]: y
       ngx_cache_purge [y/n]: n
       nginx_substitutions_filter [y/n]: n
       ngx_http_lua_module [y/n]: n
       nginx WebDAV [y/n]: n
       nginx VTS [y/n]: y
       nginx RTMP [y/n]: n
       nginx testcookie [y/n]: n
       nginx ModSecurity [y/n]: n

Ended up with the following error.

cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -Wno-ignored-qualifiers  -D_GLIBCXX_USE_CXX11_ABI=0 -Wno-deprecated-declarations  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/src/nginx/modules/quiche/quiche/deps/boringssl/.openssl/include -I /usr/local/src/nginx/modules/quiche/quiche/include -I objs -I src/http -I src/http/modules -I src/http/v2 -I src/http/v3 -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/chromium/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/google-sparsehash/src/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/google-sparsehash/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/grpc/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/protobuf/src/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/re2/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/out/Release/obj/gen -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/out/Release/obj/gen/protoc_out/instaweb -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/apr/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/aprutil/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/apr/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/aprutil/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/url -I /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include \
        -o objs/addon/enc/encode.o \
        /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:1433:20: error: argument 5 of type ‘const uint8_t *’ {aka ‘const unsigned char *’} declared as a pointer [-Werror=vla-parameter]
 1433 |     const uint8_t* input_buffer, size_t* encoded_size,
      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:9:
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include/brotli/encode.h:293:19: note: previously declared as a variable length array ‘const uint8_t[*encoded_size]’ {aka ‘const unsigned char[*encoded_size]’}
  293 |     const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)],
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:1434:14: error: argument 7 of type ‘uint8_t *’ {aka
unsigned char *’} declared as a pointer [-Werror=vla-parameter]
 1434 |     uint8_t* encoded_buffer) {
      |     ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:9:
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include/brotli/encode.h:295:13: note: previously declared as a variable length array ‘uint8_t[input_size]’ {aka ‘unsigned char[input_size]’}
  295 |     uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:1749: objs/addon/enc/encode.o] Error 1
make[1]: Leaving directory '/usr/local/src/nginx/nginx-1.21.6'
make: *** [Makefile:10: build] Error 2
make -f objs/Makefile install
make[1]: Entering directory '/usr/local/src/nginx/nginx-1.21.6'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -Wno-ignored-qualifiers  -D_GLIBCXX_USE_CXX11_ABI=0 -Wno-deprecated-declarations  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/src/nginx/modules/quiche/quiche/deps/boringssl/.openssl/include -I /usr/local/src/nginx/modules/quiche/quiche/include -I objs -I src/http -I src/http/modules -I src/http/v2 -I src/http/v3 -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/chromium/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/google-sparsehash/src/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/google-sparsehash/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/grpc/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/protobuf/src/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/re2/src -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/out/Release/obj/gen -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/out/Release/obj/gen/protoc_out/instaweb -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/apr/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/aprutil/src/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/apr/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/third_party/aprutil/gen/arch/linux/x64/include -I /usr/local/src/nginx/modules/incubator-pagespeed-ngx-1.13.35.2-stable/psol/include/url -I /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include \
        -o objs/addon/enc/encode.o \
        /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:1433:20: error: argument 5 of type ‘const uint8_t *’ {aka ‘const unsigned char *’} declared as a pointer [-Werror=vla-parameter]
 1433 |     const uint8_t* input_buffer, size_t* encoded_size,
      |     ~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:9:
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include/brotli/encode.h:293:19: note: previously declared as a variable length array ‘const uint8_t[*encoded_size]’ {aka ‘const unsigned char[*encoded_size]’}
  293 |     const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)],
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:1434:14: error: argument 7 of type ‘uint8_t *’ {aka
unsigned char *’} declared as a pointer [-Werror=vla-parameter]
 1434 |     uint8_t* encoded_buffer) {
      |     ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/enc/encode.c:9:
/usr/local/src/nginx/modules/ngx_brotli/deps/brotli/c/include/brotli/encode.h:295:13: note: previously declared as a variable length array ‘uint8_t[input_size]’ {aka ‘unsigned char[input_size]’}
  295 |     uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:1749: objs/addon/enc/encode.o] Error 1
make[1]: Leaving directory '/usr/local/src/nginx/nginx-1.21.6'
make: *** [Makefile:13: install] Error 2
strip: unable to copy file '/usr/sbin/nginx'; reason: Text file busy
Installation done.

Resulting in installation failing.

I do not get this error on any other machine so I was wondering if some of the local configurations are causing this.

FlurryNight commented 2 years ago

Hi , @bastakka

Those errors are caused by GCC v11

Linking related issue on google/ngx_brotli https://github.com/google/ngx_brotli/issues/121#issuecomment-1004165084

I'm on it, if the build goes okay i will do a PR,

Things that I am doing

This issue

208

115

karelbasta commented 2 years ago

Fixed by using GCCv10.

GwynethLlewelyn commented 2 years ago

I can confirm that, on Ubuntu 20.04.4 LTS, switching back to gcc 10.3.0 (using update-alternatives --config gcc) will compile Brotli successfully (while 11.1.0 fails with the error originally posted by @bastakka).