FYI: My Solaris-11/x86-64/gcc-4.5.2 build completes with the following three changes: + Jeff's fix for if_posix.c + changing __always_inline to __opal_attribute_always_inline__ + fixing the fls() conflict by renaming OMPI's to "my_fls()" (just a lazy choice).
-Paul On Thu, Dec 19, 2013 at 6:47 PM, Paul Hargrove <phhargr...@lbl.gov> wrote: > Jeff, > > I didn't actually get very far after fixing __always_inline. > In fact, the build still fails on the *same* line, but for a different > (valid) reason: > fls() is declared in /usr/include/string.h > > Making all in mca/btl/usnic > make[2]: Entering directory > `/shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/BLD/ompi/mca/btl/usnic' > CC btl_usnic_module.lo > In file included from > /shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/openmpi-1.7.4rc2forpaul/ompi/mca/btl/usnic/btl_usnic_module.c:48:0: > /shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/openmpi-1.7.4rc2forpaul/ompi/mca/btl/usnic/btl_usnic_util.h:19:45: > error: static declaration of �fls� follows non-static declaration > /usr/include/string.h:87:12: note: previous declaration of �fls� was here > make[2]: *** [btl_usnic_module.lo] Error 1 > > -Paul > > > On Thu, Dec 19, 2013 at 6:35 PM, Paul Hargrove <phhargr...@lbl.gov> wrote: > >> Jeff, >> >> Solaris 11 / x86_64 build get farther than before, but fails with the >> following: >> >> make[2]: Entering directory >> `/shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/BLD/ompi/mca/btl/usnic' >> CC btl_usnic_module.lo >> In file included from >> /shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/openmpi-1.7.4rc2forpaul/ompi/mca/btl/usnic/btl_usnic_module.c:48:0: >> /shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/openmpi-1.7.4rc2forpaul/ompi/mca/btl/usnic/btl_usnic_util.h:19:24: >> error: expected �=�, �,�, �;�, �asm� or �__attribute__� before �int� >> make[2]: *** [btl_usnic_module.lo] Error 1 >> make[2]: Leaving directory >> `/shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/BLD/ompi/mca/btl/usnic' >> make[1]: *** [all-recursive] Error 1 >> make[1]: Leaving directory >> `/shared/OMPI/openmpi-1.7.4rc2forpaul-solaris11-x64-ib-gcc452/BLD/ompi' >> make: *** [all-recursive] Error 1 >> >> It looks like gcc is choking on __always_inline. >> I believe use of __opal_attribute_always_inline__ is the proper fix. >> I've made that change and resumed the build... will report again upon >> success or the next failure. >> >> I'm not sure why one is trying to build the usnic btl on Solaris at all. >> Perhaps just because the OFED stack is present? >> >> -Paul >> >> >> On Thu, Dec 19, 2013 at 4:39 PM, Jeff Squyres (jsquyres) < >> jsquy...@cisco.com> wrote: >> >>> Try http://www.open-mpi.org/~jsquyres/unofficial/. >>> >>> Should have both "if" fixes in it. >>> >>> >>> On Dec 19, 2013, at 7:12 PM, Paul Hargrove <phhargr...@lbl.gov> wrote: >>> >>> > Jeff, >>> > >>> > The patch looks fine to my eyes, but I cannot test it: >>> > >>> > 1) Not sure if email botched withepsace or what, but the patch didn't >>> apply to if_posix.c. >>> > 2) Even if it did, I don't have sufficiently new autoconf on that >>> system to "use" the configure.m4 part of the patch. >>> > >>> > Any chance of a patched-and-autogen'ed tarball to test? >>> > >>> > -Paul >>> > >>> > >>> > On Thu, Dec 19, 2013 at 4:04 PM, Jeff Squyres (jsquyres) < >>> jsquy...@cisco.com> wrote: >>> > Paul -- >>> > >>> > Does this patch fix it for you? >>> > >>> > Index: opal/mca/if/posix_ipv4/configure.m4 >>> > =================================================================== >>> > --- opal/mca/if/posix_ipv4/configure.m4 (revision 29997) >>> > +++ opal/mca/if/posix_ipv4/configure.m4 (working copy) >>> > @@ -42,8 +42,10 @@ >>> > ) >>> > >>> > AS_IF([test "$opal_if_posix_ipv4_happy" = "yes"], >>> > - [AC_CHECK_MEMBERS([struct ifreq.ifr_mtu], [], [], >>> > + [AC_CHECK_MEMBERS([struct ifreq.ifr_hwaddr], [], [], >>> > [[#include <net/if.h>]]) >>> > + AC_CHECK_MEMBERS([struct ifreq.ifr_mtu], [], [], >>> > + [[#include <net/if.h>]]) >>> > ]) >>> > >>> > AS_IF([test "$opal_if_posix_ipv4_happy" = "yes"], [$1], [$2]); >>> > Index: opal/mca/if/posix_ipv4/if_posix.c >>> > =================================================================== >>> > --- opal/mca/if/posix_ipv4/if_posix.c (revision 29997) >>> > +++ opal/mca/if/posix_ipv4/if_posix.c (working copy) >>> > @@ -263,22 +263,22 @@ >>> > /* generate CIDR and assign to netmask */ >>> > intf->if_mask = prefix(((struct sockaddr_in*) >>> &ifr->ifr_addr)->sin_addr.s_addr); >>> > >>> > -#ifdef SIOCGIFHWADDR >>> > - /* get the MAC address */ >>> > - if (ioctl(sd, SIOCGIFHWADDR, ifr) < 0) { >>> > - opal_output(0, "btl_usnic_opal_ifinit: >>> ioctl(SIOCGIFHWADDR) failed with errno=%d", errno); >>> > - break; >>> > - } >>> > - memcpy(intf->if_mac, ifr->ifr_hwaddr.sa_data, 6); >>> > +#ifdef SIOCGIFHWADDR && defined(HAVE_STRUCT_IFREQ_IFR_HWADDR) >>> > + /* get the MAC address */ >>> > + if (ioctl(sd, SIOCGIFHWADDR, ifr) < 0) { >>> > + opal_output(0, "opal_ifinit: ioctl(SIOCGIFHWADDR) failed >>> with errno=%d", errno); >>> > + break; >>> > + } >>> > + memcpy(intf->if_mac, ifr->ifr_hwaddr.sa_data, 6); >>> > #endif >>> > >>> > #if defined(SIOCGIFMTU) && defined(HAVE_STRUCT_IFREQ_IFR_MTU) >>> > - /* get the MTU */ >>> > - if (ioctl(sd, SIOCGIFMTU, ifr) < 0) { >>> > - opal_output(0, "btl_usnic_opal_ifinit: >>> ioctl(SIOCGIFMTU) failed with errno=%d", errno); >>> > - break; >>> > - } >>> > - intf->if_mtu = ifr->ifr_mtu; >>> > + /* get the MTU */ >>> > + if (ioctl(sd, SIOCGIFMTU, ifr) < 0) { >>> > + opal_output(0, "opal_ifinit: ioctl(SIOCGIFMTU) failed >>> with errno=%d", errno); >>> > + break; >>> > + } >>> > + intf->if_mtu = ifr->ifr_mtu; >>> > #endif >>> > >>> > opal_list_append(&opal_if_list, &(intf->super)); >>> > >>> > >>> > >>> > >>> > >>> > On Dec 19, 2013, at 6:51 PM, Paul Hargrove <phhargr...@lbl.gov> wrote: >>> > >>> > > In 1.7.4rc1's README support is still claimed for Solaris 11 on >>> x86_64 with Sun Studio (12.2 and 12.3): >>> > > - Oracle Solaris 10 and 11, 32 and 64 bit (SPARC, i386, x86_64), >>> > > with Oracle Solaris Studio 12.2 and 12.3 >>> > > >>> > > However, I get a build failure when configured with: >>> > > CC=cc CFLAGS=-m64 --with-wrapper-cflags=-m64 >>> > > CXX=CC CXXFLAGS='-m64 -library=stlport4' >>> --with-wrapper-cxxflags=-m64 >>> > > FC=f90 FCFLAGS=-m64 --with-wrapper-fcflags=-m64 >>> > > --with-openib --prefix=... >>> > > >>> > > The failure doesn't appear to be compiler specific, and I will be >>> testing gcc ASAP. >>> > > >>> > > make[2]: Entering directory >>> `/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/BLD/opal/mca/if/posix_ipv4' >>> > > CC if_posix.lo >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/include/opal/sys/amd64/atomic.h", >>> line 136: warning: parameter in inline asm statement unused: %3 >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/include/opal/sys/amd64/atomic.h", >>> line 182: warning: parameter in inline asm statement unused: %2 >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/include/opal/sys/amd64/atomic.h", >>> line 203: warning: parameter in inline asm statement unused: %2 >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/include/opal/sys/amd64/atomic.h", >>> line 224: warning: parameter in inline asm statement unused: %2 >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/include/opal/sys/amd64/atomic.h", >>> line 245: warning: parameter in inline asm statement unused: %2 >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/mca/if/posix_ipv4/if_posix.c", >>> line 272: undefined struct/union member: ifr_hwaddr >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/mca/if/posix_ipv4/if_posix.c", >>> line 272: warning: left operand of "." must be struct/union object >>> > > >>> "/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/mca/if/posix_ipv4/if_posix.c", >>> line 272: cannot access member of non-struct/union object >>> > > cc: acomp failed for >>> /shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/openmpi-1.7.4rc1/opal/mca/if/posix_ipv4/if_posix.c >>> > > make[2]: *** [if_posix.lo] Error 1 >>> > > make[2]: Leaving directory >>> `/shared/OMPI/openmpi-1.7.4rc1-solaris11-x64-ib-ss12u3/BLD/opal/mca/if/posix_ipv4' >>> > > >>> > > The atomics warnings are concerning (and appear *MANY* times in the >>> output). >>> > > However the *real* problem is the three errors in >>> opal/mca/if/posix_ipv4/if_posix.c", line 272 >>> > > >>> > > Solaris does't have a ifr_hwaddr field in struct if_req. >>> > > It *does* have an ifr_addr field, but this posting: >>> > > >>> http://comments.gmane.org/gmane.os.solaris.opensolaris.networking/12839 >>> > > suggests that this ioctl probably fails on PF_INET sockets. >>> > > >>> > > The surrounding code looks like: >>> > > >>> > > #ifdef SIOCGIFHWADDR >>> > > /* get the MAC address */ >>> > > if (ioctl(sd, SIOCGIFHWADDR, ifr) < 0) { >>> > > opal_output(0, "btl_usnic_opal_ifinit: >>> ioctl(SIOCGIFHWADDR) failed with errno=%d", errno); >>> > > break; >>> > > } >>> > > memcpy(intf->if_mac, ifr->ifr_hwaddr.sa_data, 6); >>> > > #endif >>> > > >>> > > #if defined(SIOCGIFMTU) && defined(HAVE_STRUCT_IFREQ_IFR_MTU) >>> > > /* get the MTU */ >>> > > if (ioctl(sd, SIOCGIFMTU, ifr) < 0) { >>> > > opal_output(0, "btl_usnic_opal_ifinit: >>> ioctl(SIOCGIFMTU) failed with errno=%d", errno); >>> > > break; >>> > > } >>> > > intf->if_mtu = ifr->ifr_mtu; >>> > > #endif >>> > > >>> > > >>> > > Note the "btl_usnic_open_ifinit:" in the opal_output lines is >>> probably a cut-and-paste error. >>> > > >>> > > -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 >>> > > _______________________________________________ >>> > > devel mailing list >>> > > de...@open-mpi.org >>> > > http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> > >>> > >>> > -- >>> > Jeff Squyres >>> > jsquy...@cisco.com >>> > For corporate legal information go to: >>> http://www.cisco.com/web/about/doing_business/legal/cri/ >>> > >>> > _______________________________________________ >>> > devel mailing list >>> > de...@open-mpi.org >>> > http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> > >>> > >>> > >>> > -- >>> > 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 >>> > _______________________________________________ >>> > devel mailing list >>> > de...@open-mpi.org >>> > http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> >>> >>> -- >>> Jeff Squyres >>> jsquy...@cisco.com >>> For corporate legal information go to: >>> http://www.cisco.com/web/about/doing_business/legal/cri/ >>> >>> _______________________________________________ >>> devel mailing list >>> de...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> >> >> >> >> -- >> 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 >> > > > > -- > 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 > -- 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