libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 6/7] Convert file name to toolchain format when invoking $NM.


From: Peter Rosin
Subject: Re: [PATCH 6/7] Convert file name to toolchain format when invoking $NM.
Date: Thu, 09 Sep 2010 09:19:36 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2

Den 2010-09-09 06:18 skrev Charles Wilson:
> Peter, a question about your current patch series: with it only
> partially committed, do you expect errors?  Are we waiting for some
> other change upon which the current series depends, before it all "just
> works" again...or are things fubared now?

I wouldn't knowingly have committed anything half-assed like that. I
expected things to be better now that they were before.

> Right now, I'm seeing a regression just building libltdl. It builds
> correctly "the first time" -- but when I try to run the old test suite,
> a rule gets triggered to rebuild libltdl.al:
> 
> (cd ../..; make `echo ../../libltdl/libltdlc.la | sed
> 's,.*\.\./libltdl/,libltdl/,g'`)
> make[1]: Entering directory
> `/c/cygwin-1.7/usr/src/packages/libtool/git/build-mingw'
> make[1]: *** No rule to make target
> `..\\libtool\\libltdl\\loaders\\preopen.c', needed by
> `libltdl/loaders/libltdl_libltdlc_la-preopen.lo'.  Stop.
> 
> 
> Going to the top level and simply typing 'make' also triggers the error:
> 
> $ make
> make  all-recursive
> make[1]: Entering directory
> `/c/cygwin-1.7/usr/src/packages/libtool/git/build-mingw'
> make[2]: Entering directory
> `/c/cygwin-1.7/usr/src/packages/libtool/git/build-mingw'
> make[2]: *** No rule to make target
> `..\\libtool\\libltdl\\loaders\\preopen.c', needed by
> `libltdl/loaders/libltdl_libltdl_la-preopen.lo'.  Stop.
> make[2]: Leaving directory
> `/c/cygwin-1.7/usr/src/packages/libtool/git/build-mingw'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory
> `/c/cygwin-1.7/usr/src/packages/libtool/git/build-mingw'
> make: *** [all] Error 2
> 
> This is with MSYS/MinGW (but the git tree is over on my cygwin
> installation, since I only have cygwin-git installed).
> 
> I suspect that there is a mismatch between the targets (and deps) in the
> Makefile (and the .deps/*.P files), and the new pre-converted filenames
> being generated by $to_tool_file_cmd.

That might very well be the cause, as I didn't think of that case at all.

> Basically, it appears that this is case where
> if-it-ain't-broke-don't-fix-it should have applied, and MSYS/MinGW was
> *not* broke.  At least, not anywhere except inside @file contents, and
> maybe the actual name OF that @file (this latter case is the reason
> behind the recent msys-1.0.16 change).

Well, it was broke, you just didn't notice that low max_cmd_len failed
in more ways than you assumed. That part is fixed.

> I'm wondering if, when $build=MSYS, we could turn off all of the libtool
> to_tool_file_cmd stuff, EXCEPT when generating the contents of an @file.

I agree, we should implement some kind of "lazy" strategy for MSYS, so
that we don't do any needless conversions.

>  You know, just fix the broken stuff....without breaking other,
> previously working, stuff?  (I mean, you're basically removing the whole
> point of msys; why not just use cygwin instead, if you're not going to
> let msys do for you what it was designed to do?)

You know, I did think that was what I was doing, fixing broken stuff
without breaking other previously working stuff. I have been running
the testsuite to death lately and can't understand how this failure
has gone undetected. But it's clearly there. My bad, and sorry for the
inconvenience.

> I've put off trying to track down the error wrt mdemo until after this
> is resolved; I can't really compare the behavior of the (previously
> working) mdemo-static-make/mdemo-static-exec and the broken static
> subcase of mdemo-make/mdemo-exec, when neither one will actually build
> any longer...

My guess is that it is commit d243a1ec536d9e154c6dfca27135
"Use func_to_tool_file instead of fix_srcfile_path." that kills the test.

This will probably fix it (I don't want to commit and make a proper
git patch ATM since the testsuite is running and I don't want to
upset that, so I just ran "git diff origin"):

Cheers,
Peter

diff --git a/libltdl/config/ltmain.m4sh b/libltdl/config/ltmain.m4sh
index 1a7bd96..dda2cd0 100644
--- a/libltdl/config/ltmain.m4sh
+++ b/libltdl/config/ltmain.m4sh
@@ -873,14 +873,21 @@ func_to_host_file ()
 # end func_to_host_file


-# func_to_tool_file ARG
+# func_to_tool_file ARG LAZY
 # converts the file name ARG from $build format to toolchain format. Return
 # result in func_to_tool_file_result.
 func_to_tool_file ()
 {
   $opt_debug
-  $to_tool_file_cmd "$1"
-  func_to_tool_file_result=$func_to_host_file_result
+  case ,func_convert_file_$2, in
+    *,$to_tool_file_cmd,*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
 }
 # end func_to_tool_file

@@ -1376,7 +1383,7 @@ compiler."
     func_append removelist " $lockfile"
     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15

-    func_to_tool_file "$srcfile"
+    func_to_tool_file "$srcfile" msys_to_w32
     srcfile=$func_to_tool_file_result
     func_quote_for_eval "$srcfile"
     qsrcfile=$func_quote_for_eval_result




reply via email to

[Prev in Thread] Current Thread [Next in Thread]