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

Reply via email to