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@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@LAPTOP-NEMLU0S6:/mnt/d/eclipse/workspace/hotspot/jdk$

as compared to:

user@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@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

Reply via email to