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 bug-gnu...@gnu.org 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 <br...@clisp.org> accept4: Fix compilation error on OpenIndiana. Reported by Michal Nowak <mno...@startmail.com> via Mark H Weaver <m...@netris.org>. * 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 ])