Greetings,
The Fedora project recently rebuilt all packages with gcc 7. The ecl build failed, due to gcc 7 complaining about missing braces on almost every line of src/c/unicode/ucd_names_pair.c. The massive amount of logging triggered for this slowed the build down so much that the builder eventually concluded the build had stalled and killed it.
You need one pair of braces for the top-level array, ecl_ucd_names_pair. Then, since each element of that array is a struct, you need another set of braces around the elements of the array. That struct has only one element, so there should be 1 value inside those braces. That value is an array, so another set of braces is needed around the initializers for the array. The upshot is that the initalizer lines all need to have two sets of curly braces, like so:
{{1, 0, 0, 0}} ,{{2, 0, 3, 0}} ...
GCC 6 also complained about this, but less verbosely. :-)
Here's a quick fix:
sed -i 's/{.*,.*,.*,.*}/{&}/g' src/c/unicode/ucd_names_pair.c
Also, while looking through the build log, I noticed this:
/builddir/build/BUILD/ecl-16.1.3/src/c/file.d: In function 'ecl_make_string_input_stream': /builddir/build/BUILD/ecl-16.1.3/src/c/file.d:1630:32: warning: comparison of constant '16' with boolean expression is always false [-Wbool-compare]
That refers to this line:
if (ECL_BASE_STRING_P(strng) == t_base_string) {
shouldn't that be:
if (ECL_BASE_STRING_P(strng)) {
?
Regards,