Hi Gary, * Gary V. Vaughan wrote on Fri, Aug 19, 2005 at 07:43:56PM CEST: > Ralf Wildenhues wrote: > >Another bug: > > > >Makefile.am: > >+ $(SED) '/^# ### BEGIN /,/^# ### END / \ > >+ { s,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,; \ > >+ s,\$$(libltdl_,$$(,; p; }; \ > >+ d' $$in >> $$out; > > > >This is not going to work on AIX, because the sed will not see the > >newline. Please use `sed -n'. > > See what newline?
The one (that exists in `Makefile') before the `d' sed command, but won't be in the script `sed' gets: sed '... p; }; d' ... This: ^^^^^^^^^^^^^^ will, to sed, all be on one line. And thus it fails with AIX sed, as we've encountered a couple of times before (also mentioned in Autoconf docs). Hehe, now I know of a situation where it might be necessary to use sed -e .. -e .. (so no way to call this an urban legend any more.. ;-) > Do you mean like this: > > Makefile.am: > $(SED) -n '/^# ### BEGIN /,/^# ### END / { \ > s,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,; \ > s,\$$(libltdl_,$$(,; p; }' $$in >> $$out Yep. But now that I see it, there is even a much bigger problem: You may not use `#' in a Makefile in _anything_ other than a comment. Some `make' will read this as $(SED) -n '/^ s,libltdl_,,; s,libltdl/,,; s,: libltdl/,: ,; \ s,\$$(libltdl_,$$(,; p; }' $$in >> $$out (yep, they'll also ignore the escaped newline) and most likely bail badly. You could change the markers to use different characters and match with wildcards, e.g. like this: # %%% BEGIN %%% and match /^..%%% BEGIN %%%/... Shoot. This issue is in three other places in CVS HEAD.. Will post a patch for those. For ASCII, I believe lt_makecomment = tr '\174' '\043' is a valid way to make # out of |. > I'll fix this before I commit once I understand it! :-) I'll look at the rest of your monster patch eventually. Cheers, Ralf