Hello everyone... it's been some time since I posted here. I pulled the
latest svn revision (18079) and had some trouble building Open MPI on a
FreeBSD 7 machine (i386).
Make failed when compiling opal/event/kqueue.c. It appears that freebsd
needs sys/types.h, sys/ioctl.h, termios.h and libutil.h included in
order to reference openpty(). I added ifdef/includes for these header
files into kqueue.c and managed to build. Note that I also tried the
latest nightly tarball. The tarball build actually succeeded without any
changes. Curious if anyone has experienced this type of behavior? A
colleague of mine mentioned it could be a FreeBSD autotools issue?
Although builds were successful (with modification for the svn build,
and without modification for the nightly tarball), I tried running a
simple app locally with 2 processes using the TCP BTL that does a
non-blocking send/recv. The app simply hung. After attaching gdb to one
of the 2 processes, the console output (not gdb) reported the following
output:
[warn] kq_init: detected broken kqueue (failed add); not using error 4
(Interrupted system call)
: Interrupted system call
I'm including the diff of kqueue.c here for completeness. If anyone
requires any further information, please let me know.
Thanks.
--
Karol
Index: opal/event/kqueue.c
===================================================================
--- opal/event/kqueue.c (revision 18079)
+++ opal/event/kqueue.c (working copy)
@@ -52,7 +52,17 @@
#ifdef HAVE_UTIL_H
#include <util.h>
#endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+#ifdef HAVE_LIBUTIL_H
+#include <libutil.h>
+#endif
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+
/* Some platforms apparently define the udata field of struct kevent as
* intptr_t, whereas others define it as void*. There doesn't seem to be an
* easy way to tell them apart via autoconf, so we need to use OS macros. */