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,
Hello,
Thank you for the report with fixes. Indeed, line with a predicate should look like you have pointed out.
Before next release I plan to go through all warnings from gcc and run coverity scan tests to spot such nuisances.
Fixes are already commited to the repository.
Best regards, Daniel
On Thu, Feb 23, 2017 at 12:25 PM, Daniel Kochmański daniel@turtleware.eu wrote:
Fixes are already commited to the repository.
You're fast! :-) Thank you, Daniel.