Ok, hopefully this fixes it for Solaris without breaking mac or ubuntu scenarios.
In sed mode script pads the argument with a \n. Experiments shows gnu sed discards this character, so we don't need to strip it after processing, but sed does preserve any explicit trailing newlines prior to last. In awk mode script will use nawk when available (mac does not have nawk, but does have an awk with gsub support). The `command` posix is used to detect presence of nawk executable. This mode is just hedging that impl as we try to fix both modes. Retested on ubuntu with both awk and sed modes. I will not be able to retest mac with bsd_sed until this evening. Regards, Jeff Adamson From: Jeff Adamson/Cleveland/IBM@IBMUS To: "Ant Developers List" <dev@ant.apache.org> Cc: maarten_co...@yahoo.com Date: 10/25/2016 01:56 PM Subject: Re: ant wrapper script testing Also glad to know that awk is basically a no-go due to legacy versions. Suppose we could use `which nawk` to use that if present? So the trailing newline was a thing that I think was reported against an earlier iteration. I see no reason we can't change the "padding" to be a "X \n" value instead of just "X". The trick is to add and strip exactly one newline from the end so we dont' drop intended newlines from arguments. Then that should guarantee that sed applies to the whole argument. I'll see if I can come up with something quickly for that second option. Regards, Jeff Adamson Johan Corveleyn ---10/25/2016 10:13:02 AM---On Tue, Oct 25, 2016 at 3:50 PM, Johan Corveleyn <jcor...@gmail.com> wrote: > On Sat, Oct 22, 2016 a From: Johan Corveleyn <jcor...@gmail.com> To: Ant Developers List <dev@ant.apache.org> Cc: maarten_co...@yahoo.com Date: 10/25/2016 10:13 AM Subject: Re: ant wrapper script testing On Tue, Oct 25, 2016 at 3:50 PM, Johan Corveleyn <jcor...@gmail.com> wrote: > On Sat, Oct 22, 2016 at 4:11 PM, Stefan Bodewig <bode...@apache.org> wrote: >> On 2016-10-18, Jeff Adamson wrote: >> >>> I made a new pull request based on the ongoing work. >> >>> https://github.com/apache/ant/pull/25 >> >> Yes, thanks. I've merged it. >> >>> What do you think and can we get some users to test behaviors on a variety >>> of platforms? >> >> I really hope we can. > > I've tested 1.9.7 with the above change to the ant wrapper script > (I've copy pasted the "raw" version of the merge to 1.9.x of the above > pull request) on Solaris 11, but it doesn't work. Not with > esc_tool=sed and neither with esc_tool=awk. It's easy to test by > simply executing "ant -version". > > See the output below: > > [[[ > bash-4.1> uname -a > SunOS hostname-redacted 5.11 11.3 i86pc i386 i86pc > bash-4.1> ./ant.new -version ### with esc_tool=sed > Buildfile: build.xml does not exist! > Build failed > bash-4.1> vi ant.new ### change line 25 to esc_tool=awk > bash-4.1> ./ant.new -version > awk: syntax error near line 1 > awk: illegal statement near line 1 > awk: syntax error near line 1 > awk: illegal statement near line 1 > awk: syntax error near line 1 > awk: illegal statement near line 1 > awk: syntax error near line 1 > awk: illegal statement near line 1 > Buildfile: build.xml does not exist! > Build failed > ]]] > > I don't understand the sed command (I'm not much of a sed expert), but > I understand why the awk command fails: on Solaris "awk" really is the > "old awk", without the "new awk" extensions added in 1984 or so. This > means "gsub" is not available in "awk" on Solaris. To use gsub, you > have to invoke "nawk" on Solaris. > > So if you want the awk variant to work on Solaris, you either have to > do it without gsub, or use nawk as executable (but I guess nawk won't > work on some other unix platforms). > > It would probably be easier to make the sed statement work, but I have > to experiment a bit with that. OK, so the problem is that sed on Solaris does not process lines that don't end with a newline. So if I add a '\n' to the printf statement that's piped to sed, on line 49, then it works on Solaris. I don't know if that breaks other platforms of course. See patch below: [[[ --- ant.new Tue Oct 25 16:01:51 2016 +++ ant.new.edited Tue Oct 25 16:02:19 2016 @@ -46,7 +46,7 @@ case "$esc_tool" in 'sed') # mac sed does not support group-0, so pattern uses group-1 - esc_arg="$(printf '%s' "$esc_arg" | sed -e 's@\([$"\\`]\)@\\\1@g')" + esc_arg="$(printf '%s\n' "$esc_arg" | sed -e 's@\([$"\\`]\)@\\\1@g')" ;; 'awk') esc_arg="$(printf '%s' "$esc_arg" | awk '{ gsub(/\\/, "\\\\"); print }' )" ]]] Then at least 'ant -version' works on Solaris. -- Johan --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org