On 2021/11/11 15:31, [email protected] wrote:
> http://build-failures.rhaalovely.net/sparc64/2021-11-09/sysutils/polkit.log
I don't see how to fix it properly in meson.build, but here is the problem,
this is detected incorrectly with ports-gcc,
Checking if "setnetgrent return support" : compiles: YES
Should be NO.
Looking in meson.build
150
151 # Check whether setnetgrent has a return value
152 config_h.set('HAVE_NETGROUP_H', cc.has_header('netgroup.h'))
153
this is detecting netgroup.h and is setting it in config.h, but it is
*not* defining HAVE_NETGROUP_H when it compiles the following test
154 setnetgrent_return_src = '''
155 #include <stddef.h>
156 #ifdef HAVE_NETGROUP_H
157 #include <netgroup.h>
158 #else
159 #include <netdb.h>
160 #endif
161 int main() {
162 int r = setnetgrent (NULL);
163 };
164 '''
165
166 config_h.set('HAVE_SETNETGRENT_RETURN', cc.compiles(setnetgrent_return_src,
name: 'setnetgrent return support'))
The difference between the compilers is that gcc returns
warning: implicit declaration of function 'setnetgrent'; did you mean
'setnetent'? [-Wimplicit-function-declaration]
whereas clang gives
error: implicit declaration of function 'setnetgrent' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
so the test compile is giving wrong results, so it takes the wrong
ifdef path resulting in the build failure
../polkit-0.120/src/polkitbackend/polkitbackendinteractiveauthority.c:2239:7:
error: void value not ignored as it ought to be
Bodging it with
166 config_h.set('HAVE_SETNETGRENT_RETURN', cc.compiles(setnetgrent_return_src,
name: 'setnetgrent return support', args: '-DHAVE_NETGROUP_H'))
does work well enough for OpenBSD but obviously not correct ..