I am seeing the following on OpenBSD/amd64 with "make V=1": Making all in tools/wrappers /bin/sh ../../../libtool --tag=CC --mode=link gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing -pthread -export-dynamic -o opal_wrapper opal_wrapper.o ../../../opal/libopen-pal.la -lutil -lm libtool: link: gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing -pthread -o .libs/opal_wrapper opal_wrapper.o -Wl,-E -L../../../opal/.libs -lopen-pal -lpthread -lutil -lm -pthread -Wl,-rpath,/home/phargrov/OMPI/openmpi-1.8.2rc3-openbsd5-amd64/INST/lib ../../../opal/.libs/libopen-pal.so.8.0: warning: vsprintf() is often misused, please use vsnprintf() ../../../opal/.libs/libopen-pal.so.8.0: warning: strcpy() is almost always misused, please use strlcpy() ../../../opal/.libs/libopen-pal.so.8.0: warning: random() isn't random; consider using arc4random() ../../../opal/.libs/libopen-pal.so.8.0: warning: strcat() is almost always misused, please use strlcat() ../../../opal/.libs/libopen-pal.so.8.0: warning: sprintf() is often misused, please use snprintf() ../../../opal/.libs/libopen-pal.so.8.0: undefined reference to `arc4random_addrandom' collect2: ld returned 1 exit status *** Error 1 in opal/tools/wrappers (Makefile:1623 'opal_wrapper') *** Error 1 in opal (Makefile:2145 'all-recursive') *** Error 1 in /home/phargrov/OMPI/openmpi-1.8.2rc3-openbsd5-amd64/BLD (Makefile:1689 'all-recursive')
Ignoring OpenBSD's typical warnings about functions their developers don't like there is an undefined reference to arc4random_addrandom. The only explicit reference appears to be in libevent: $ grep -rlw arc4random_addrandom . ./opal/mca/event/libevent2021/libevent/evutil_rand.c ./opal/mca/event/libevent2021/libevent/arc4random.c It appears that OpenBSD has arc4random, but no arc4random_addrandom(): /usr/include/stdlib.h:u_int32_t arc4random(void); /usr/include/stdlib.h:u_int32_t arc4random_uniform(u_int32_t); /usr/include/stdlib.h:void arc4random_buf(void *, size_t) I tried to work-around this by adding "ac_cv_func_arc4random=no" to the configure command line, but that creates secondary problems because the #if logic in libevent doesn't allow for the case that arc4random() does not exist but arc4random_buf() does: In file included from /home/phargrov/OMPI/openmpi-1.8.2rc3-openbsd5-amd64/openmpi-1.8.2rc3/opal/mca/event/libev ent2021/libevent/evutil_rand.c:119: /home/phargrov/OMPI/openmpi-1.8.2rc3-openbsd5-amd64/openmpi-1.8.2rc3/opal/mca/event/libevent2021/libevent/./arc 4random.c:482: error: static declaration of 'arc4random_buf' follows non-static declaration /usr/include/stdlib.h:308: error: previous declaration of 'arc4random_buf' was here Use of --with-libevent=... was no use because the pre-built libevent package for OpenBSD lacks thread support. So, I am left without any recipe to build 1.8.2rc3 on OpenBSD. HOWEVER, is appears that 1.8, 1.8.1 and trunk all have the same problem. Of course, I am the only one who tests Open MPI on OpenBSD, and I don't actually USE it. So, this is not any sort of a priority as far as I am concerned. -Paul -- Paul H. Hargrove phhargr...@lbl.gov Future Technologies Group Computer and Data Sciences Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900