* Milan Crha:
On Thu, 2023-11-30 at 18:09 +0100, Florian Weimer wrote:
Again, some of these are false positives.
Hi, I think the errors from the configure time of the script are not always problems, are they? At least in the case of the evolution-data-server, it's half a problem and half expected.
Yes, we have definitely need an exception list for implicit function declarations.
Specifically, one "configure" (there is used CMake) check tries to figure out whether gethostbyname_r() has five arguments. It does not in Fedora, thus a) there are passed no enough arguments to the function; b) there are incompatible types passed to the function. Both are claimed by gcc. The second is due to the first. The result of this "source compiles" test is correct, the function does not have five arguments.
I don't see this. The evolution-data-server-3.50.2-1.fc39 and evolution-data-server-3.50.2-1.fc40 have this:
-- Performing Test HAVE_I_CAL_EMAIL_PARAMETER -- Performing Test HAVE_I_CAL_EMAIL_PARAMETER - Success
While my test build has:
-- Performing Test HAVE_I_CAL_EMAIL_PARAMETER -- Performing Test HAVE_I_CAL_EMAIL_PARAMETER - Failed
So the test outcome is altered by the new error.
Furthermore, in the YAML log, I don't see the second error about the mismatching parameter count:
“ …-build/CMakeFiles/CMakeScratch/TryCompile-HmYCHv/src.c: In function ‘main’: …-build/CMakeFiles/CMakeScratch/TryCompile-HmYCHv/src.c:5:39: error: assignment to ‘icalparameter *’ {aka ‘struct icalparameter_impl *’} from incompatible pointer type ‘ICalParameter *’ 5 | param = i_cal_property_get_first_parameter (NULL, I_CAL_EMAIL_PARAMETER); | ^ …-build/CMakeFiles/CMakeScratch/TryCompile-HmYCHv/src.c:6:60: error: passing argument 1 of ‘i_cal_parameter_get_email’ from incompatible pointer type 6 | i_cal_parameter_get_email (param); | ^~~~~ | | | icalparameter * {aka struct icalparameter_impl *} In file included from /usr/include/libical-glib/i-cal-parameter.h:28, from /usr/include/libical-glib/i-cal-component.h:27, from /usr/include/libical-glib/libical-glib.h:34, from …-build/CMakeFiles/CMakeScratch/TryCompile-HmYCHv/src.c:2: /usr/include/libical-glib/i-cal-derived-parameter.h:399:71: note: expected ‘const ICalParameter *’ but argument is of type ‘icalparameter *’ {aka ‘struct icalparameter_impl *’} 399 | const gchar * i_cal_parameter_get_email (const ICalParameter *param); | ~~~~~~~~~~~~~~~~~~~~~^~~~~ ”
The instrumented GCC can backpropagate certain errors and suppress the logging of otherwise critical errors (even if they occurred earlier in the file), including in some cases if there are too many function arguments. However, this suppression heuristic is presently incomplete. But I don't think it matters here because there is no such error in the CMake probe.
Another "configure" check used incorrect arguments in error. I corrected it for the development version [1], which should be released at the beginning of the next year.
[1] https://gitlab.gnome.org/GNOME/evolution-data-server/-/commit/55558d3c23e68a...
Ahh, sorry, I think I looked at this error because that's the only one that makes it into the critical error log. 8-)
The first one you mentioned has probably been suppressed by the heuristic. Still sending this message because it might be helpful to show how this works.
Thanks, Florian