Bug#1040472: p11-kit FTCBFS: AC_RUN_IFELSE
Helmut Grohne
helmut at subdivi.de
Sun Jul 9 16:39:34 BST 2023
Hi Andreas,
On Sun, Jul 09, 2023 at 04:04:20PM +0200, Andreas Metzler wrote:
> > @@ -178,10 +179,13 @@
> > return strerror_r (EINVAL, buf, 32);
> > }
> > ]])],
> > + [ac_cv_strerror_r_ret=xsi],
> > + [ac_cv_strerror_r_ret=gnu],
> > + [ac_cv_strerror_r_ret=cross])])
> > + dnl Guess that we cross build on glibc
> > + AS_IF([test "$ac_cv_strerror_r_ret" = xsi],
> > [AC_DEFINE([HAVE_XSI_STRERROR_R], 1, [Whether XSI-compliant strerror_r() is available])],
> > - [AC_DEFINE([HAVE_GNU_STRERROR_R], 1, [Whether GNU-specific strerror_r() is available])],
> > - [])],
> > - [])
> > + [AC_DEFINE([HAVE_GNU_STRERROR_R], 1, [Whether GNU-specific strerror_r() is available])])])
>
> > AC_CACHE_CHECK([for thread-local storage class],
> > [ac_cv_tls_keyword],
>
> Hello Helmut,
>
> thanks.
>
> I guess this should read
> AS_IF([test "$ac_cv_strerror_r_ret" = cross],
>
> instead of
>
> AS_IF([test "$ac_cv_strerror_r_ret" = xsi],
>
> ?
Thanks for asking rather than just changing my patch. I think my patch
is correct as is. If the strerror_r returns 0, ac_cv_strerror_r_ret will
be set to xsi. In that case, we want to define HAVE_XSI_STRERROR_R. In
other cases, ac_cv_strerror_r_ret will be set to gnu or cross. Since I
guess cross compilation to target glibc, I set HAVE_GNU_STRERROR_R in
both cases.
Do you now see why it needs to be the way I've written it?
> Also wouldn't using AC_FUNC_STRERROR_R be a better fix? (I do not expect
> you to provide this, I asking for your opinion)
After having read the documentation of that macro, I am unsure whether
it resolves what is being checked here. AC_FUNC_STRERROR_R checks for
the function and also for how it is being declared, but makes no
statement about its return value. If there is a connection between
return type and return value that I don't see, then yes, this may be
better. Otherwise, this probably still is better than using
AC_CHECK_FUNC outside. Maybe that connection is XSI <=> int return, GNU
<=> pointer return?
Helmut
More information about the Pkg-gnutls-maint
mailing list