Re: Windows Line Endings

"Gary V. Vaughan" <[email protected]>
Newsgroups gmane.comp.gnu.libtool.patches
Message-ID <[email protected]>
Hi Peter,

On 6 Oct 2012, at 06:20, Peter Rosin <[email protected]> wrote:
> Over to mdemo.at. It fails on MinGW because I do not have
> any installed libltdl in MinGW. Temporarily moving the
> installed Cygwin libltdl out of the lib search path makes
> the test fail on Cygwin as well. So, I believe this is
> a generic failure.

Nice catch!  And thanks for the analysis, that allowed me to get to the root
of the problem pretty quickly:

Legacy mdemo{,2} tests tricked their respective builds into reusing the main
project's libltdlc.la, where I tried to retool the replacement Autotest to
do what a user would do and use the project's own ltdl subproject.  Only I
didn't remove all of the trickery while rewriting the test  :-(

> Without an installed libltdl, I get this
> during configure:
> 
> checking where to find libltdl headers... -I$(top_srcdir)/libltdl
> checking where to find libltdl library... $(top_build_prefix)libltdl/libltdlc.la
> 
> and this when making:
> 
> ../../libtool-msvc/tests/mdemo.at:646: $unset LIBTOOL LIBTOOLIZE; $MAKE $target 
> stderr:
> Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la'
> Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la'
> Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la'
> Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la'
> libtool: link: cannot find the library `libltdl/libltdlc.la' or unhandled argument `libltdl/libltdlc.la'
> make[1]: *** [libmlib.la] Error 1

This means LTDL_INIT is finding the ltdl subtree, but I forgot to remove the
Makefile.am trickery to point $(LIBLTDL) back to $(top_srcdir)/libltdl.

> On Cygwin, with the installed libltdl intact, I get this during
> configure:
> 
> checking where to find libltdl headers... 
> checking where to find libltdl library... -lltdl
> 
> (and the test is ok, in so far one can consider using the
> installed libltdl ok...)

And I also forgot to pass --with-included-ltdl to configure :(

> I'm also noting that some time ago, mdemo had this in it's
> Makefile.am:
> 
> ## use @LIBLTDL@ because some broken makes do not accept macros in targets
> ## we can only do this because our LIBLTDL does not contain ${top_builddir}
> top_distdir = ../..
> @LIBLTDL@: $(top_distdir)/libtool \
>    $(top_distdir)/config.h $(srcdir)/$(top_distdir)/libltdl/ltdl.c \
>    $(srcdir)/$(top_distdir)/libltdl/ltdl.h
> 	(cd $(top_distdir); $(MAKE) `echo $(LIBLTDL) | sed 's,.*\.\./libltdl/,libltdl/,g'`)
> 
> but somewhere along the way, that comment was removed, probably at
> the same time @LIBLTDL@ was converted into $(LIBLTDL). Anyway,
> mdemo.at has this:
> 
> \$(LIBLTDL): ${top_build_prefix}libtool \
>    ${top_build_prefix}config.h $top_srcdir/libltdl/ltdl.c \
>    $top_srcdir/libltdl/ltdl.h
> 	cd $top_build_prefix; \$(MAKE) \`echo \$(LIBLTDL) | sed 's|.*\.\./\.\./libltdl/|libltdl/|g'\`
> 
> But the second line of the removed comment seems crucial and
> as our $(LIBLTDL) is not the expected "libltdl/libltdlc.la",
> Automake is fooled into creating two targets for the same
> file. Or something.

Something.  This is the trickery I'm talking about, which needs removing
to let mdemo.at use it's own libltdl.

> Also, the old mdemo had LTDL_CONVENIENCE([../../libltdl]), and the
> new mdemo.at have LT_CONFIG_LTDL_DIR([libltdl]) and
> LTDL_INIT([nonrecursive]), which does not seem entirely equivalent?

Right, because I tried to convert from reusing top-level libltdlc.la to
actually building our own subproject libltdl per-test.

> I don't have enough autofuu to fix this.

I've pushed a patch that fixes all of the above.  Pending as-yet-undiscovered
Windows madness, I think that should allow the test to work on your test
environments too.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.