bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bug#36342: accept4 detection on illumos needs -lsocket -lnsl


From: Bruno Haible
Subject: Re: bug#36342: accept4 detection on illumos needs -lsocket -lnsl
Date: Sat, 29 Jun 2019 02:06:05 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-151-generic; KDE/5.18.0; x86_64; ; )

Hi Michal and Mark,

> > GNU Guile 2.2.5 build fails because accept4 detection on OpenIndiana
> > 2019.04 (illumos distribution) [1] fails due to "-lsocket -lnsl" not
> > being part of the linking process and the build system then tries to
> > build it's vendored accept4:
> 
> I believe this is an issue in gnulib, because the relevant autoconf
> detection code, as well as the replacement implementation that fails to
> compile on OpenIndiana, are imported from gnulib.
> 
> I've CC'd the address@hidden mailing list, for input from the gnulib
> developers.
> 
> Thanks for this report,
> 
>       Mark
> 
> 
> >    CC       accept4.lo
> > In file included from /usr/include/sys/time.h:462:0,
> >                   from ./sys/time.h:39,
> >                   from /usr/include/sys/select.h:53,
> >                   from ./sys/select.h:36,
> >                   from /usr/include/sys/types.h:640,
> >                   from ./sys/types.h:28,
> >                   from ./sys/socket.h:51,
> >                   from accept4.c:20:
> > ./sys/socket.h:1034:1: error: conflicting types for 'accept4'
> >   _GL_FUNCDECL_SYS (accept4, int,
> >   ^
> > In file included from ./sys/socket.h:58:0,
> >                   from accept4.c:20:
> > /usr/include/sys/socket.h:540:12: note: previous declaration of
> > 'accept4' was here
> >   extern int accept4(int, struct sockaddr *_RESTRICT_KYWD, Psocklen_t,
> > int);
> >              ^~~~~~~
> > accept4.c:32:1: error: conflicting types for 'accept4'
> >   accept4 (int sockfd, struct sockaddr *addr, socklen_t *addrlen, int
> > flags)
> >   ^~~~~~~
> > In file included from ./sys/socket.h:58:0,
> >                   from accept4.c:20:
> > /usr/include/sys/socket.h:540:12: note: previous declaration of
> > 'accept4' was here
> >   extern int accept4(int, struct sockaddr *_RESTRICT_KYWD, Psocklen_t,
> > int);
> >              ^~~~~~~
> >
> > This is fixed by LIBS="-lsocket -lnsl" in the build environment.
> >
> > This was in the past reported both on the guile-user [2] and
> > openindiana-discuss [3] mailing lists, where you also can see the
> > build error in full.
> >
> > Thanks,
> > Michal
> >
> > [1] https://illumos.org/man/3socket/accept4
> > [2] https://lists.gnu.org/archive/html/guile-user/2018-03/msg00006.html
> > [3]
> > https://openindiana.org/pipermail/openindiana-discuss/2018-March/021931.html

Thanks for the report. This patch fixes it. Pushed. Now, guile needs to pick it
up.


2019-06-28  Bruno Haible  <address@hidden>

        accept4: Fix compilation error on OpenIndiana.
        Reported by Michal Nowak <address@hidden>
        via Mark H Weaver <address@hidden>.
        * m4/accept.m4 (gl_FUNC_ACCEPT4): Test whether accept4 is declared, not
        whether it exists as a function.

diff --git a/m4/accept4.m4 b/m4/accept4.m4
index b38ce30..9b976fb 100644
--- a/m4/accept4.m4
+++ b/m4/accept4.m4
@@ -1,4 +1,4 @@
-# accept4.m4 serial 2
+# accept4.m4 serial 3
 dnl Copyright (C) 2009-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,8 +11,11 @@ AC_DEFUN([gl_FUNC_ACCEPT4],
   dnl Persuade glibc <sys/socket.h> to declare accept4().
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
 
-  AC_CHECK_FUNCS_ONCE([accept4])
-  if test $ac_cv_func_accept4 != yes; then
+  AC_CHECK_DECLS([accept4], , , [[
+#include <sys/types.h>
+#include <sys/socket.h>
+]])
+  if test $ac_cv_have_decl_accept4 != yes; then
     HAVE_ACCEPT4=0
   fi
 ])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]