fixpath not properly converting Unix paths with print?

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Oct 20 15:03:26 UTC 2022


The fixpath.sh script has two "modes", one in which it tries to 
autodetect it's environment itself, and one in which the environment 
info is fed into it from the caller.

The latter method is used in all real use cases when it is used in the 
make files.

You are exercising the first case. That is only intended as a 
development tool, and might not work correctly.

I think that is the answer to the oddities you are seeing.

Look in `spec.gmk` to find how fixpath.sh is really called during a 
makefile execution.

/Magnus


On 2022-10-20 10:58, Julian Waters wrote:
> Hi all,
>
> On Windows MakeBase contains a utility to extract Windows paths from 
> Unix style paths:
>
> # FixPath
> #
> # On Windows, converts a path from cygwin/unix style (e.g. /bin/foo) into
> # "mixed mode" (e.g. c:/cygwin/bin/foo). On other platforms, return 
> the path
> # unchanged.
> # This also converts a colon-separated list of paths to a 
> semicolon-separated
> # list.
> # This is normally not needed since we use the FIXPATH prefix for 
> command lines,
> # but might be needed in certain circumstances.
>
> According to the documentation it should be able to handle paths like 
> /usr/bin or /bin/xxx, but manually invoking the implementation of this 
> utility from the shell seems to indicate that it can only properly 
> convert full paths that have environment prefixes and so on, with the 
> "true" Unix style paths simply expanding into empty strings:
>
> Working usage:
>
> user at LAPTOP-NEMLU0S6:/mnt/d/eclipse/workspace/hotspot/jdk$ fixpath 
> print 
> /mnt/c/progra~1/mib055~1/2022/commun~1/vc/tools/msvc/1432~1.313/bin/hostx64/x64/cl.exe 
>
> c:\progra~1\mib055~1\2022\commun~1\vc\tools\msvc\1432~1.313\bin\hostx64\x64\cl.exe
> user at LAPTOP-NEMLU0S6:/mnt/d/eclipse/workspace/hotspot/jdk$
>
> as compared to:
>
> user at LAPTOP-NEMLU0S6:/mnt/d/eclipse/workspace/hotspot/jdk$ 
> /mnt/d/eclipse/workspace/hotspot/jdk/build/windows-x86_64-server-release/fixpath 
> print /usr/bin/make
> vertig0 at LAPTOP-NEMLU0S6:/mnt/d/eclipse/workspace/hotspot/jdk$
>
> I can't quite tell if this is a subtle bug or if it's working as 
> intended, and the documentation is just a tad outdated/was 
> misinterpreted by me, so I thought I'd raise it on the list just in 
> case (I first caught this while using FixPath on a local branch).
>
> best regards,
> Julian



More information about the build-dev mailing list