GNU Libtool 2.1b released (alpha release)
The Libtool Team is pleased to announce alpha release 2.1b of GNU Libtool. GNU Libtool hides the complexity of using shared libraries behind a consistent, portable interface. GNU Libtool ships with GNU libltdl, which hides the complexity of loading dynamic runtime libraries (modules) behind a consistent, portable interface. This is the first test release for Libtool 2.2. Libtool 2.0 was never released, as by the time 1.9f was released from the stable branch, the head of the development branch had already become much more stable than the supposed stable branch. The compressed sources will shortly arrive at: ftp://alpha.gnu.org/gnu/libtool/libtool-2.1b.tar.gz ftp://alpha.gnu.org/gnu/libtool/libtool-2.1b.tar.bz2 There are no xdeltas and diffs, as this is the first release from HEAD in more than 4 years. Here are the associated gpg detached signatures: ftp://alpha.gnu.org/gnu/libtool/libtool-2.1b.tar.gz.sig ftp://alpha.gnu.org/gnu/libtool/libtool-2.1b.tar.bz2.sig You should download the signature named after any tarball you download, and then verify its integrity with, for example: gpg --verify libtool-2.1b.tar.gz.sig Here are the MD5 and SHA1 checksums: e22f79424d4efcf0247ad834773bffb7 libtool-2.1b.tar.gz f814c207f8fe257aa90ca26d49e63c3d libtool-2.1b.tar.bz2 86d50163a33682ab83ac0005a8bd31088db1bd57 libtool-2.1b.tar.gz e5d2d239b6834e6d521d26f655dae751211e79a9 libtool-2.1b.tar.bz2 This release is more or less entirely rewritten in comparison with the 1.5 branch, and has many more features by comparison. This release was bootstrapped with Autoconf 2.61 and Automake 1.10.1, but should be useable with any reasonably modern equivalents in your own projects. Alternatively, you can fetch the unbootstrapped source code from anonymous cvs by using the following command: $ cvs -z3 -d :pserver:[EMAIL PROTECTED]:/sources/libtool \ co -r release-2-1b libtool You will then need to have recent (possibly as yet unreleased) versions of Automake and Autoconf installed to bootstrap the checked out sources yourself. New in 2.1b: 2008-02-01 * Important incompatible changes and obsoleted features: - Removed deprecated APIs from libltdl: lt_dlcaller_register, lt_dlhandle_next, lt_dlhandle_find, lt_dlforeach, lt_dlmutex_register, lt_dlmutex_lock, lt_dlmutex_unlock, lt_dlmutex_seterror, lt_dlmutex_geterror, lt_dlmalloc, lt_dlrealloc, lt_dlfree. - The Libtool and libltdl macros and the testsuite now assume a C89 environment, consequently do not test for headers such as string.h, strings.h, memory.h any more. - Fix regression in libltdl symbol exports on Cygwin. Side effect: LT_GLOBAL_DATA and LT_SCOPE are now explicitly defined as declspec(dllexport), bypassing auto-export logic on Cygwin. This tracks existing behavior on MinGW. - The libtool script has been optimized a bit for more modern shells. This breaks use of the stdin file descriptor in libtool, and can break if a different shell is used to execute the libtool script than the one it was configured for. - The macros AC_ENABLE_SHARED, AC_DISABLE_SHARED, AC_ENABLE_STATIC, and AC_DISABLE_STATIC have been un-deprecated after deprecation in 1.9b. - The macro LT_WITH_LTDL has been renamed to LTDL_INIT. - Fixed a branch-1-5/HEAD regression to only link uninstalled libraries statically with `-static'. In order to compensate for this, there is a new link flag `-static-libtool-libs' to provide the previous `-static' semantics. * New features: - Fix installation of libltdl so that it does not need Autoconf and Automake installed, in order to be usable in another package. This lifts the restrictions introduced in 1.9b. - Default convenience or installable libltdl builds can optionally be declared using new `convenience' or `installable' options to the LTDL_INIT macro (as an alternative to individual LTDL_CONVENIENCE or LTDL_INSTALLABLE invocations). - New configure-time options to allow libltdl parent project builder to choose between installed and shipped libltdl, when invoking LTDL_INIT: --with-included-ltdl, --with-ltdl-include, --with-ltdl-lib. - New LT_CONFIG_LTDL_DIR macro to specify a different directory name for a convenience libltdl. - libtoolize has been completely overhauled. - `libtoolize --install' now also installs `install-sh'. - New libtoolize options: --non-recursive, --recursive, --subproject. These options control the way libltdl is installed into a package by libtoolize. The new recursive and non-recursive build modes for libltdl don't require a subconfigure any more. The Libtool package itself builds libltdl nonrecursively. - The 'nonrecursive', 'recursive' and 'subproject' libltdl build modes are given as LTDL_INIT options. - New make variable LTDLDEPS for use in output_DEPENDENCIES. - New multi-module-loader safe libltdl handle iteration APIs: lt_dlhan
The right way to go in automake plus libtool
Hi, maybe this sounds quite a naive question about using libtool in automake but I don't know how to do it right. I have an automake project with several directories, e.g A, B, C, where A and B build both shared libraries, let's say them libA.la and libB.la. C directory creates an executable, say it C.exe. Both libraries are installed. libB.la depends on libA.la and and C.exe depends on both libB.la (and I guess that indirectly of libA.la). The question is, what do I have to put in Makefile.am files to make this dependency explicit? Now I'm doing this -- A/Makefile.am # Nothing special here lib_LTLIBRARIES = libA.la libA_la_SOURCES = ... -- B/Makefile.am lib_LTLIBRARIES = libB.la libB_la_SOURCES = ... libB_la_LIBADD = $(top_builddir)/A/libA.la -- C/Makefile.am bin_PROGRAMS = C.exe C_exe_SOURCES = ... C_exe_LDADD = $(top_builddir)/B/libB.la -- This works fine all the time (both running from the build directory and from the installe executable) but libtool complains, when doing 'make install' that it has to relink "libB.la" so I suspect that this is not the proper way to go. Is the way above right or something different has to be done in the Makefile.am ? Thank you very much, -- Roger Ferrer Ibáñez - [EMAIL PROTECTED] ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: The right way to go in automake plus libtool
On Thu, 31 Jan 2008, Roger Ferrer Ibanez wrote: This works fine all the time (both running from the build directory and from the installe executable) but libtool complains, when doing 'make install' that it has to relink "libB.la" so I suspect that this is not the proper way to go. This complaint is not a cause for concern. It is really an informational "warning" that the program installed will not be 100% identical to the one tested via 'make check'. The need to re-link at install time is OS dependent. The most important thing is to make sure that your shared libraries are installed in the correct order so that when this "relink" occurs, it is against the freshly installed library rather than some older one which was already installed. Bob == Bob Friesenhahn [EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: GNU Libtool 2.1b released (alpha release)
It is good that this is only an alpha release since it is now broken. Perhaps the massive flurry of changes at the very last minute was not a wise idea. I have been updating every few days without issues but today libtool broke GraphicsMagick: gmake[1]: *** No rule to make target `argz.lo', needed by `ltdl/libltdlc.la'. Stop. Configured with --enable-ltdl-convenience. Bob == Bob Friesenhahn [EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: GNU Libtool 2.1b released (alpha release)
Hi Bob! On 1 Feb 2008, at 11:17, Bob Friesenhahn wrote: It is good that this is only an alpha release since it is now broken. Perhaps the massive flurry of changes at the very last minute was not a wise idea. Well, I only applied the 2 patches that have been open for comment on the list for the last few days, plus a workaround for the autoconf compiler droppings bug that prevented me from running make distcheck, plus the changes to version numbers and the like during the release process... I have been updating every few days without issues but today libtool broke GraphicsMagick: gmake[1]: *** No rule to make target `argz.lo', needed by `ltdl/ libltdlc.la'. Stop. Configured with --enable-ltdl-convenience. I can't reproduce it here, with or without --enable-ltdl-convenience. What does this show in your environment? $ grep lt_ltdl_dir= configure lt_ltdl_dir='ltdl' $ grep lt_libobj_prefix lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/" _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" What version of autoconf are you using? Did you apply my small patch to the GraphicsMagick configure.ac and bootstrap scripts? Cheers, Gary -- Gary V. Vaughan ([EMAIL PROTECTED]) PGP.sig Description: This is a digitally signed message part ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: GNU Libtool 2.1b released (alpha release)
On Fri, 1 Feb 2008, Gary V. Vaughan wrote: What does this show in your environment? $ grep lt_ltdl_dir= configure lt_ltdl_dir='ltdl' $ grep lt_libobj_prefix lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/" _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" The same. What version of autoconf are you using? 2.61 Did you apply my small patch to the GraphicsMagick configure.ac and bootstrap scripts? I am not aware of any small patch from you. Is it diminishingly small so I might not have seen it? :-) FYI: Down-reving libtool to the version current as of 2008-01-28 produces a working libtool. I do recall Ralph mentioning to you a couple of days ago that something breaks GraphicsMagick but I did not pay much attention at the time. Bob == Bob Friesenhahn [EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: 350-gary-maintain-private-libobj-namespace
Gary, This scrap of email from the libtool-patches list includes evidence that Ralf ran into the same problem that I ran into today. Something must be special about your environment. Note Ralf's observation that lt_libobj_prefix is not set by configure. Bob On Wed, 30 Jan 2008, Gary V. Vaughan wrote: Hallo Ralf, On 30 Jan 2008, at 14:43, Ralf Wildenhues wrote: * Gary V. Vaughan wrote on Tue, Jan 29, 2008 at 08:44:51AM CET: On 29 Jan 2008, at 06:45, Ralf Wildenhues wrote: I haven't reviewed your last two pending patches yet (but I'm not telling you to wait for me). Every little helps, even if you don't have time for a thorough review... Your latest version of this patch is so badly mangled as to be unapplicable. This is not the first time it happens. Please consider sending patches as (text!) attachments, or at least try to apply patches from your mails to see whether that works. Sorry, I was pasting the patch into the body since you asked me not to attach directly as that made it harder to review. I didn't use mailnotify because it breaks the thread. Maybe Mail.app will co-operate if I use a '.txt' extension for the patch attachments? Let me know if this is better. If not, I'll post with mailnotify, and put up with the broken message threading. When I try to apply this patch by hand, build and install, get CVS HEAD GraphicsMagick, and run its bootstrap script, I end up with this failure, which I assume is due to one of your patches, or to messup resulting from manual patch application. Anyway you should look at it before applying the patch (hint: lt_libobj_prefix seems not set in configure): /bin/sh ./libtool --silent --tag=CC --mode=link gcc -std=gnu99 -g -O2 -Wall -pthread -module -avoid-version -L/usr/X11R6/lib -L/usr/lib -L/usr/lib -o ltdl/dlopen.la ltdl/loaders/dlopen.lo -ldl make[1]: *** No rule to make target `lt__strl.lo', needed by `ltdl/libltdlc.la'. Stop. make[1]: Leaving directory `/tmp/GraphicsMagick/build' make: *** [all] Error 2 Works for me, I reran bootstrap, and launched a successful VPATH build. Hopefully, you're just seeing a patch misapplication, otherwise we'll have to figure out what is different for us. Actually configure.ac and bootstrap can be cleaned up for (tomorrow's) libtool-2.1b. .txt patch attached, and fingers crossed. Index: b/libltdl/m4/ltdl.m4 === --- a/libltdl/m4/ltdl.m4 +++ b/libltdl/m4/ltdl.m4 [...] + +AC_CONFIG_COMMANDS_PRE([ +_ltdl_libobjs= +_ltdl_ltlibobjs= +if test -n "$_LT_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' This is code that ends up in configure. sed_drop_objext is not namespace clean, please prefix with _lt_ or so. Careless pasting from gnulib-tool. CCing the gnulib list so they can fix their version too... gl_sed_drop_objext? + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do `sort -u' is portable. Tx. Fixed in the attached. Cheers, Gary -- ())_. Email me: [EMAIL PROTECTED] ( '/ Read my blog: http://blog.azazil.net / )= ...and my book: http://sources.redhat.com/autobook `(_~)_ == Bob Friesenhahn [EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: GNU Libtool 2.1b released (alpha release)
Hi Bob, On 1 Feb 2008, at 13:09, Bob Friesenhahn wrote: On Fri, 1 Feb 2008, Gary V. Vaughan wrote: What does this show in your environment? $ grep lt_ltdl_dir= configure lt_ltdl_dir='ltdl' $ grep lt_libobj_prefix lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/" _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" The same. So this is not the same as the bug Ralf found, as he observed that lt_libobj_prefix was not set, whereas you have it correctly set to "ltdl/". Does ltdl_LTLIBOBJS in your Makefile also contain the correct value? $ grep ltdl_LTLIBOBJS Makefile ltdl_LTLIBOBJS = ltdl/argz.lo [[...]] What version of autoconf are you using? 2.61 Same as me. Did you apply my small patch to the GraphicsMagick configure.ac and bootstrap scripts? I am not aware of any small patch from you. Is it diminishingly small so I might not have seen it? :-) It was indeed tiny, and attached to my reply to Ralfs GraphicsMagick report. I'm reattaching here too... Aha! I get the same error if I undo that patch in my GraphicsMagick working copy, run bootstrap with libtoolize (2.1b). I'll see if I can figure out why I get this: $ grep argz.lo Makefile ltdl_LTLIBOBJS = argz.lo Instead of this: $ grep argz.lo Makefile ltdl_LTLIBOBJS = ltdl/argz.lo In the mean time, you can work around it by applying the attached patch to GraphicsMagick. FYI: Down-reving libtool to the version current as of 2008-01-28 produces a working libtool. I do recall Ralph mentioning to you a couple of days ago that something breaks GraphicsMagick but I did not pay much attention at the time. He did, and I made sure that it worked on my machine before I rolled the release. Ralf and I concluded that something broke when he manually applied my patches after they were mangled by my MTA. Cheers, Gary -- ())_. Email me: [EMAIL PROTECTED] ( '/ Read my blog: http://blog.azazil.net / )= ...and my book: http://sources.redhat.com/autobook `(_~)_ from Gary V. Vaughan <[EMAIL PROTECTED]> * configure.ac: Updated for libtool-2.1b. * bootstrap (libtoolize): Libtoolize can figure out the mode and directory for libltdl from configure.ac. Index: configure.ac === RCS file: /GraphicsMagick/GraphicsMagick/configure.ac,v retrieving revision 1.256 diff -u -r1.256 configure.ac --- configure.ac19 Jan 2008 21:07:47 - 1.256 +++ configure.ac30 Jan 2008 13:42:01 - @@ -337,9 +337,8 @@ AC_SUBST(LIBTOOL_DEPS) # Configure libltdl -LT_CONFIG_LTDL_DIR([ltdl],[nonrecursive]) -AC_LIBLTDL_CONVENIENCE([ltdl]) -AC_LIB_LTDL +LT_CONFIG_LTDL_DIR([ltdl]) +LTDL_INIT([convenience nonrecursive]) # Substitute INCLTDL and LIBLTDL in the Makefiles #AC_SUBST(INCLTDL) #AC_SUBST(LIBLTDL) Index: bootstrap === RCS file: /GraphicsMagick/GraphicsMagick/bootstrap,v retrieving revision 1.7 diff -u -r1.7 bootstrap --- bootstrap 31 Mar 2007 23:07:00 - 1.7 +++ bootstrap 30 Jan 2008 13:44:37 - @@ -4,7 +4,7 @@ # Automake or Autoconf is changed. # -libtoolize --verbose --copy --force --nonrecursive --ltdl=ltdl +libtoolize --verbose --copy --force # echo 'm4_include([ltdl/m4/lt~obsolete.m4])' >> aclocal.m4 aclocal -I ltdl/m4 -I m4 autoheader PGP.sig Description: This is a digitally signed message part ___ http://lists.gnu.org/mailman/listinfo/libtool