fixpath seems to be deleting path separators when paths are read from files
Julian Waters
tanksherman27 at gmail.com
Wed Apr 13 03:39:20 UTC 2022
Recently I've been getting build failures on my Windows device that go
something along the lines of:
/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/.../x86_64-w64-mingw32/bin/ld.exe:
cannot find
d:eclipseworkspacehotspotjdkbuildwindows-x86_64-server-releasehotspotvariant-serverlibjvmobjectsabstractCompiler.o:
No such file or directory
The issue results from fixpath apparently deleting path separators when it
transforms the path styles for Windows; It does add the proper drive name
but ends up wiping all of the slashes in the path
/d/eclipse/workspace/hotspot/jdk/build/windows-x86_64-server-release/hotspot/variant-server/libjvm/objects/abstractCompiler.o
ends up becoming (As seen above)
d:eclipseworkspacehotspotjdkbuildwindows-x86_64-server-releasehotspotvariant-serverlibjvmobjectsabstractCompiler.o
Curiously, it works fine only for the last path listed in the @file, so
given a file containing:
/d/eclipse/workspace/hotspot/jdk/build/windows-x86_64-server-release/hotspot/variant-server/libjvm/objects/zWorkers.o
/d/eclipse/workspace/hotspot/jdk/build/windows-x86_64-server-release/hotspot/variant-server/libjvm/objects/jvm.dll.res
the latter would properly convert to
d:\eclipse\workspace\hotspot\jdk\build\windows-x86_64-server-release\hotspot\variant-server\libjvm\objects\jvm.dll.res
but the former and everything before it would be affected
The full generated build command (with the absolute paths truncated) is as
follows
fixpath exec g++.exe -Wl,--warn-unresolved-symbols -Wl,-O1 -m64 -shared -O3
-fuse-linker-plugin -fno-strict-aliasing -m64
-Wl,-version-script=/hotspot/variant-server/libjvm/mapfile
-Wl,-soname=jvm.dll -o /support/modules_libs/java.base/server/jvm.dll
@/hotspot/variant-server/libjvm/objects/_BUILD_LIBJVM_objectfilenames.txt
/hotspot/variant-server/libjvm/objects/jvm.dll.res
There aren't any peculiarities between the 2 compilers (I'm currently
experimenting with the ucrt linking port of gcc) that should be causing
this from what I can tell, out of curiosity, has this been an issue
reported elsewhere before? I haven't figured out what's causing this so far
unfortunately
:(
best regards,
Julian
More information about the build-dev
mailing list