[ofa-general] RE: [opensm] bugs in build system

Eitan Zahavi eitan at mellanox.co.il
Thu Sep 6 08:41:36 PDT 2007


Hi Sasha,

I agree option 2 is the way to go.

EZ
> -----Original Message-----
> From: Sasha Khapyorsky [mailto:sashak at voltaire.com] 
> Sent: Thursday, September 06, 2007 6:51 PM
> To: Eitan Zahavi; Hal Rosenstock
> Cc: openib-general at openib.org
> Subject: Re: [opensm] bugs in build system
> 
> On 09:37 Wed 05 Sep     , Eitan Zahavi wrote:
> > 
> > Patch tested. Works great.
> 
> But actually it is not so correct. OpenSM (and other management
> components) uses header files from local tree, but is linked 
> against installed libraries. Before this patch it was not 
> able to find header files locally (due to broken paths) and 
> used (by  mistake) installed header files - at least it was 
> consistent.
> 
> I think there are two possible solutions for this:
> 
> 1. To use only installed header files and libraries 2. To use 
> header files and libraries from local tree and if it doesn't 
> exist fall back to installed ones.
> 
> Personally I like (2) more - it is more complicated, but we 
> will be able to build and run OpenSM without any libumad, 
> libibcommon installations.
> 
> Any comments?
> 
> Sasha
> 
> > 
> > Thanks
> > 
> > Eitan
> > 
> > > -----Original Message-----
> > > From: Sasha Khapyorsky [mailto:sashak at voltaire.com]
> > > Sent: Tuesday, September 04, 2007 11:36 PM
> > > To: Eitan Zahavi
> > > Cc: openib-general at openib.org
> > > Subject: Re: [opensm] bugs in build system
> > > 
> > > Hi again, Eitan,
> > > 
> > > On 17:02 Sun 02 Sep     , Eitan Zahavi wrote:
> > > > Hi Sasha,
> > > > 
> > > > For some reason OpenSM (and the required management libs)
> > > do not build
> > > > correctly when I use manual autogen.sh, configure
> > > --prefix=/tmp/ez/usr
> > > > ; make; make install mode.
> > > > 
> > > > It seems the build system is probably broken as it 
> relies on fixed 
> > > > paths?
> > > 
> > > It is not, but it relies to invalid paths like 
> > > -I.../include/infiniband when in the code '#include 
> > > <infiniband/file.h>' is used.
> > > 
> > > > OK 3. cd management/libibumad; autogen.sh; FAIL 4. ./configure 
> > > > --prefix=/tmp/ez/usr checking for sys_read_string in
> > > -libcommon... no
> > > > configure: error: sys_read_string() not found. 
> libibumad requires 
> > > > libibcommon.
> > > >
> > > > To overcome this I manually added the --disable-libcheck
> > > ./configure
> > > > --prefix=/tmp/ez/usr --disable-libcheck I do not understand
> > > why after
> > > > installing the common lib I still get this error?
> > > > Isn't the search path should include the <prefix>/lib ???
> > > 
> > > Seems it is AC_CHECK_LIB() feature (ugh - I hate 
> autotools mess :))
> > > 
> > > I'm not really sure such checks should be there. 
> libibcommon library 
> > > is part of our project and not "external" library.
> > > 
> > > > FAIL 5. make
> > > > Make fails as it does not find the infiniband/common.h
> > > 
> > > Wrong include path in Makefile.am - it uses include/infiniband.
> > > 
> > > > To overcome this I manually added -I<prefix>/include ....
> > > > make CFLAGS="-I/tmp/ez/usr/include" 
> > > > 
> > > > OK 6. make install
> > > > --------------- OPENSM ------------------ OK 7. cd
> > > management/opensm;
> > > > autogen.sh; FAIL 8. configure --prefix=/tmp/ez/usr checking for 
> > > > umad_init in -libumad... no
> > > > configure: error: umad_init() not found. libosmvendor of
> > > type openib
> > > > requires libibumad.
> > > > configure: error: /bin/sh './configure' failed for libvendor
> > > > 
> > > > To overcome this I manually added the --disable-libcheck
> > > ./configure
> > > > --prefix=/tmp/ez/usr --disable-libcheck This problem is same as 
> > > > the
> > > > above: lib path for linking should use the <prefix>/lib.
> > > > 
> > > > FAIL 9. make
> > > > Here again the include path is missing the <prefix>/include:
> > > > 
> > > > ./../include/vendor/osm_vendor_ibumad.h:44:31: 
> > > infiniband/common.h: No
> > > > such file or directory
> > > > ./../include/vendor/osm_vendor_ibumad.h:45:29: 
> > > infiniband/umad.h: No
> > > > such file or directory
> > > 
> > > Wrong OSMV_INCLUDES definition (it uses paths 
> include/infiniband ).
> > > 
> > > > To overcome this I manually added -I<prefix>/include ....
> > > > make CFLAGS="-I/tmp/ez/usr/include" 
> > > > 
> > > > But this is not enough as the linker fail:
> > > > /usr/bin/ld: cannot find -libumad
> > > 
> > > It seems to be buggy opensm_LDADD in Makefile.am
> > > 
> > > > To overcome this I had to add -L<prefix>/lib ....
> > > > make CFLAGS="-I/tmp/ez/usr/include" LDFLAGS="-L/tmp/ez/usr/lib 
> > > > -libumad -libcommon"
> > > > 
> > > > OK 10. make install
> > > > 
> > > > I hope the above issues could be fixed such that the 
> installation 
> > > > would be simpler.
> > > 
> > > Could you test the patch please (you still need to use 
> > > '--disable-libcheck' with ./configure)? Thanks.
> > > 
> > > Sasha
> > > 
> > > 
> > > diff --git a/libibumad/Makefile.am b/libibumad/Makefile.am index 
> > > 48868e7..7e82590 100644
> > > --- a/libibumad/Makefile.am
> > > +++ b/libibumad/Makefile.am
> > > @@ -2,7 +2,7 @@
> > >  SUBDIRS = .
> > >  
> > >  INCLUDES = -I$(srcdir)/include/infiniband \
> > > -	   -I$(srcdir)/../libibcommon/include/infiniband
> > > +	   -I$(srcdir)/../libibcommon/include
> > >  
> > >  man_MANS = man/umad_debug.3 man/umad_get_ca.3 \
> > >  	   man/umad_get_ca_portguids.3 man/umad_get_cas_names.3 \ diff 
> > > --git a/opensm/config/osmvsel.m4
> > > b/opensm/config/osmvsel.m4 index 47ad36f..97d5a9e 100644
> > > --- a/opensm/config/osmvsel.m4
> > > +++ b/opensm/config/osmvsel.m4
> > > @@ -61,11 +61,11 @@ with_sim="/usr")  dnl based on the 
> with_osmv we 
> > > can try the vendor flag  if test $with_osmv = "openib"; then
> > >     OSMV_CFLAGS="-DOSM_VENDOR_INTF_OPENIB"
> > > -   OSMV_INCLUDES="-I\$(srcdir)/../include 
> > > -I\$(srcdir)/../../libibcommon/include/infiniband
> > > -I\$(srcdir)/../../libibumad/include/infiniband"
> > > -   if test "x$with_umad_libs" = "x"; then
> > > -     OSMV_LDADD="-libumad"
> > > -   else
> > > -     OSMV_LDADD="-L$with_umad_libs -libumad"
> > > +   OSMV_INCLUDES="-I\$(srcdir)/../include
> > > -I\$(srcdir)/../../libibcommon/include
> > > -I\$(srcdir)/../../libibumad/include"
> > > +   OSMV_LDADD="-L\$(libdir) -libumad -libcommon"
> > > +
> > > +   if test "x$with_umad_libs" != "x"; then
> > > +     OSMV_LDADD="-L$with_umad_libs $OSMV_LDADD"
> > >     fi
> > >  
> > >     if test "x$with_umad_includes" != "x"; then
> > > 
> 



More information about the general mailing list