Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: Re: [hwloc-devel] stop embedding libltdl
From: Brice Goglin (Brice.Goglin_at_[hidden])
Date: 2013-05-14 08:32:01


Here's a patch that seems to work. I stole the code that libtool.m4 uses
to find ltdl dependencies, put it inside a new HWLOC_CHECK_LTDL_DEPS
that stores these dependencies in HWLOC_LIBS_PRIVATE. It properly adds
-ldl on Linux and nothing on FreeBSD.

The rest of the patch is similar to Jeff's, with things moved inside
HWLOC_SETUP_CORE.

Brice

Le 14/05/2013 10:27, Brice Goglin a écrit :
> I am reviving this thread since I interrupted it to discuss "enabling
> plugins vs embedding hwloc" (1) but we didn't close the discussion
> about "not embedding libltdl anymore" (2).
>
> We committed a fix for (1) that (sometimes) generates tarballs without
> src/libltdl directory. It doesn't always happen, I don't understand
> why, but it certainly makes those tarballs unusable (configure
> complains that a Makefile.in is missing). My original patch for (1)
> fixed the problem, but (2) is a better way to avoid any such issue.
>
> The patch below does pretty much what we need, except putting the
> right ltdl static libs in hwloc.pc
>
> I am going to look at this before releasing v1.7.1
>
> Brice
>
>
>
>
> Le 08/05/2013 02:47, Jeff Squyres (jsquyres) a écrit :
>> How's this patch?
>>
>> The only question I have is: how do we figure out what libraries to put in the .pc file in the --disable-shared --enable-static case?
>>
>>
>> On May 7, 2013, at 8:24 PM, Samuel Thibault <samuel.thibault_at_[hidden]> wrote:
>>
>>> > Jeff Squyres (jsquyres), le Wed 08 May 2013 02:21:02 +0200, a écrit :
>>>> >> On May 7, 2013, at 6:25 PM, Brice Goglin <Brice.Goglin_at_[hidden]> wrote:
>>>> >>
>>>>> >>> I don't have anything against this. What was the reason for not using
>>>>> >>> the default/system libltdl in OMPI? libtool was buggy when you started
>>>>> >>> using it?
>>>> >>
>>>> >>
>>>> >> I neglected to answer this.
>>>> >>
>>>> >> Yes, plus libltdl grew new functionality that we needed (global/local symbol visibility).
>>>> >>
>>>> >> We might be getting to the point soon where we can rely on the installed libltdl to be new enough everywhere, but we haven't had that conversation.
>>> >
>>> > We could already check that the installed version is new enough for our
>>> > needs.
>>> >
>>> > Samuel
>>> > _______________________________________________
>>> > hwloc-devel mailing list
>>> > hwloc-devel_at_[hidden]
>>> > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel
>> -- Jeff Squyres jsquyres_at_[hidden] For corporate legal information go
>> to: http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>> no-embed-libltdl.diff
>>
>>
>> Index: configure.ac
>> ===================================================================
>> --- configure.ac (revision 5606)
>> +++ configure.ac (working copy)
>> @@ -168,30 +168,25 @@
>> AM_DISABLE_STATIC
>> AM_PROG_LIBTOOL([dlopen win32-dll])
>> LT_LANG([C])
>> -LT_CONFIG_LTDL_DIR([src/libltdl])
>> -LTDL_INIT([recursive convenience])
>> -AC_CONFIG_FILES([src/libltdl/Makefile])
>>
>> -# Workarounds for libtool LT_CONFIG_H bug
>> -#CPPFLAGS="$CPPFLAGS -I$HWLOC_top_builddir"
>> -AC_CONFIG_COMMANDS_PRE([LT_CONFIG_H=`expr "$LT_CONFIG_H" : '.*/\(.*\)'`])
>> +# If we want plugins, look for ltdl.h and libltdl
>> +LIBLTDL=
>> +AS_IF([test "$enable_plugins" = "yes"],
>> + [AC_CHECK_HEADER([ltdl.h], [],
>> + [AC_MSG_WARN([Plugin support requested, but could not find ltdl.h])
>> + AC_MSG_ERROR([Cannot continue])])
>> + AC_CHECK_LIB([ltdl], [lt_dlopenext], [],
>> + [AC_MSG_WARN([Plugin support requested, but could not find libltdl])
>> + AC_MSG_ERROR([Cannot continue])])
>> + ])
>> +AC_SUBST(LIBLTDL)
>>
>> # Add libltdl static-build dependencies to hwloc.pc
>> if test "x$hwloc_have_plugins" = xyes; then
>> - if test "x$with_included_ltdl" = xno; then
>> - HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $LIBLTDL"
>> - fi
>> + # JMS What to put here for static builds?
>> HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs"
>> fi
>>
>> -# Is ltdl included?
>> -HWLOC_LTDL_SUBDIR=
>> -AS_IF([test "x$with_included_ltdl" = xyes],
>> - [HWLOC_LIBLTDL_SUBDIR=libltdl])
>> -AC_SUBST(HWLOC_LIBLTDL_SUBDIR)
>> -dnl AM_CONDITIONAL([HWLOC_LTDL_INCLUDED], [test "x$with_included_ltdl" = xyes])
>> -
>> -
>> # Party on
>> AC_OUTPUT
>>
>> Index: src
>> ===================================================================
>> --- src (revision 5606)
>> +++ src (working copy)
>>
>> Property changes on: src
>> ___________________________________________________________________
>> Modified: svn:ignore
>> ## -1,5 +1,4 ##
>> .deps
>> Makefile.in
>> Makefile
>> -libltdl
>> static-components.h
>> Index: src/Makefile.am
>> ===================================================================
>> --- src/Makefile.am (revision 5606)
>> +++ src/Makefile.am (working copy)
>> @@ -207,8 +207,6 @@
>> AM_CPPFLAGS += $(LTDLINCL)
>> libhwloc_la_LDFLAGS += -export-dynamic
>> libhwloc_la_LIBADD = $(LIBLTDL)
>> -libhwloc_la_DEPENDENCIES = $(LTDLDEPS)
>> -SUBDIRS = $(HWLOC_LIBLTDL_SUBDIR)
>> endif
>>
>> # Embedded library (note the lack of a .so version number -- that
>>
>>
>> _______________________________________________
>> hwloc-devel mailing list
>> hwloc-devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel
>
>
>
> _______________________________________________
> hwloc-devel mailing list
> hwloc-devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel