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. */

Reply via email to