sysutils/edk2_at_??? port futures: will need updates for gcc11 based builds

From: Mark Millard via freebsd-ports <freebsd-ports_at_freebsd.org>
Date: Sat, 19 Jun 2021 15:40:33 -0700
EDK2 fails to build via lang/gcc11-devel (or lang/gcc11). But it
turns out that EDK2 uses an external git submodule that is a
source for why.

That submodule has code that changed a header to use the newer
C variably modified types for a couple of functions but did not
change the function definitions to match. gcc10 did not report
about this but gcc11 correctly rejects the combination.

brotli/c/dec/decode.c:2033:41: error: argument 2 of type 'const uint8_t *' {aka 'const unsigned char *'} declared as a pointer [-Werror=vla-parameter]
 2033 |     size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size,
      |                          ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from brotli/c/dec/decode.c:7:
./brotli/c/include/brotli/decode.h:204:19: note: previously declared as a variable length array 'const uint8_t[*decoded_size]' {aka 'const unsigned char[*decoded_size]'}
  204 |     const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
brotli/c/dec/decode.c:2034:14: error: argument 4 of type 'uint8_t *' {aka 'unsigned char *'} declared as a pointer [-Werror=vla-parameter]
 2034 |     uint8_t* decoded_buffer) {
      |     ~~~~~~~~~^~~~~~~~~~~~~~
In file included from brotli/c/dec/decode.c:7:
./brotli/c/include/brotli/decode.h:206:13: note: previously declared as a variable length array 'uint8_t[encoded_size]' {aka 'unsigned char[encoded_size]'}
  206 |     uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(I'm not claiming that is the only issue but it is sufficient to
stop the build.)

I know that there has been activity at the projects involved to
deal with such, but I've not been tracking the progress.

NOTE:

My build tests ended up using lang/gcc11-devel instead of
lang/gcc11 because Mk/bsd.gcc.mk still has the code:

# A concrete version has been selected. Set proper ports dependencies,
# CC, CXX, CPP, and flags.
V:=                     ${_USE_GCC:S/.//}
. if ${V} == 11
_GCC_PORT:=             gcc${V}-devel
. else
_GCC_PORT:=             gcc${V}
. endif

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
Received on Sat Jun 19 2021 - 22:40:33 UTC

Original text of this message