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