Two issues with ecl 16.1.3 and gcc 7

Jerry James loganjerry at
Thu Feb 23 18:55:06 UTC 2017


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

{{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
/builddir/build/BUILD/ecl-16.1.3/src/c/file.d:1630:32: warning:
comparison of constant '16' with boolean expression is always false

That refers to this line:

  if (ECL_BASE_STRING_P(strng) == t_base_string) {

shouldn't that be:

  if (ECL_BASE_STRING_P(strng)) {


Jerry James

More information about the ecl-devel mailing list