On Mon, 4 Jul 2022 16:26:21 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:

>> configure failed as following when I run it on WSL 1.
>> 
>> 
>> checking for version string... 20-internal-adhoc.yasuenag.jdk
>> configure: Found potential Boot JDK using configure arguments
>> configure: The command for java_to_test, which resolves as 
>> "/mnt/d/java/jdk-18/bin/java", can not be found.
>> configure: error: Cannot locate /mnt/d/java/jdk-18/bin/java
>> configure exiting with result code 1
>> 
>> 
>> fixpath.sh would attempt to add ".exe" (e.g. "java" -> "java.exe") if 
>> `wslpath -w" failed (returns non-zero value). However it returns zero even 
>> if the path does not exist in recent WSL (v0.61.4 at least).
>> 
>> WSL v0.60.0.0
>> 
>> $ wslpath -w silver-bullet
>> wslpath: silver-bullet: No such file or directory
>> $ echo $?
>> 1
>> 
>> 
>> WSL v0.61.4.0
>> 
>> $ wslpath -w silver-bullet
>> silver-bullet
>> $ echo $?
>> 0
>> 
>> 
>> We should add ".exe" at the tail of path regardless of return value from 
>> wslpath.
>
> I added some comments. As a minimum, you need to verify that this works on 
> WSL1, WSL2 and Cygwin. Ideally, you would test on msys2 as well. You will 
> need to verify that importing paths works for executables both with and 
> without .exe, both if they reside in the winenv root (like in /tmp) or on the 
> Windows drive (like /cygwin/d/data/...).
> 
> As I wrote, I think you might run into problems for things like /tmp/foo.exe 
> on WSL1. It might also work on newer versions of wslpath but break on older, 
> seeing that Microsoft is in the habit of changing the behaviour of wslpath...

Thanks @magicus for your comment!
I thought we can remove `unixpath` to simplify fixpath in this patch, but we 
can use it to keep current behavior. So I updated this PR to use `unixpath`. 
Could you review again? It uses `test -e` instead of return code from wslpath.

-------------

PR: https://git.openjdk.org/jdk/pull/9357

Reply via email to