[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
])