Am 11.05.2014 22:42, schrieb Andrej Mitrovic:
On Sun, 11 May 2014 20:32:10 GMT, Andrej Mitrovic wrote:
test.bat:
Note that that example isn't good without having the existing path, so here's a full batch file that another person has been able to reproduce as well:
@echo off setlocal enableextensions md C:\dev\projects\opengl-tutorials\ports\opengl-tutorial.org\tutorials\11_text endlocal cd C:\dev\projects\opengl-tutorials\ports\opengl-tutorial.org\tutorials\11_text rem This works, path has 182 chars echo. 2> ..\..\..\..\..\..\..\Users\Administrator\AppData\Roaming\dub\packages\derelict-assimp3-master\.dub\build\library-debug-windows-x86-dmd-7F811CB10FFAE5D52D1E21B73C0EC98D\aasdfasdfa.lib rem This fails, path has 183 chars echo. 2> ..\..\..\..\..\..\..\Users\Administrator\AppData\Roaming\dub\packages\derelict-assimp3-master\.dub\build\library-debug-windows-x86-dmd-7F811CB10FFAE5D52D1E21B73C0EC98D\aasdfasdfaX.lib
Anyway the first command is exactly 260 characters (MAX_PATH), the second command exceeds it. Is there any way for dub to work around this?
Vladimir Panteleev gave some insights:
[22:41] <CyberShadow> From D code you can use the \\?\ prefix (assuming you use the Unicode APIs) to bypass that limitation
Sounds like that could simply be added to Path.toNativeString()
. Hmm..
but I guess the \\?\
syntax will always make up an absolute path, so
there would also need to be some logic to avoid the Path.relativeTo()
call in various places, so it will probably require an additional shortenPath(path, base)
function that conditionally does the right
thing. I can look into that.