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.