rakudo / star

Rakudo Star (Raku distribution)
https://rakudo.org/
Artistic License 2.0
265 stars 41 forks source link

Windows and longPathAware? #194

Closed rcmlz closed 10 months ago

rcmlz commented 10 months ago

Description

Apparently Windows has a 260 char path lenght limit, which could cause failures e.g. during installations of modules - for instance by very long temporary paths and file names.

I was wondering if activating longPathAware during windows build would be an option. Here it is mentioned that two steps are needed.

a.) Modifying the windows registry by user allowing longPaths (simple PowerShell command given) b.) The application manifest must also include the longPathAware element. (some XML given)

I assume b.) needs to be done during build of Rakudo/Star for Windows.

Maybe activating longPathAware causes other issues I am not aware of and this issue has been discussed already.

coke commented 10 months ago

https://github.com/rakudo/rakudo/issues/5252

rcmlz commented 10 months ago

Thank you. I understand that UNC paths is the best solution as it e.g. does not require the user changing Windows (which would need superuser privileges) and can be solved purely on Raku side.

Out of curiosity, would activating LongPathAware during Windows build also technically work as a second-best quick fix solution? Would it avoid errors like this? (%TEMP% is set to D:\T)

[Term::termios] Failed to open file D:\T\Distribution%3A%3ABuilder%3A%3AMakeFromJSON%3Aver%3C0.6%3E%3Aauth%3Cgithub%3Aniner%3E.tar.gz\Distribution-Builder-MakeFromJSON-master.precomp\B91872E0D55CAE5C5DD2CF2D09E47281799D1DF2\6F\6FC744201967BC598B30F1D3B57900F48051601E.repo-id.PWRGT8L8UZW9YZYOEK1VKJFP.tmp: No such file or directory

coke commented 10 months ago

I tried activating on my windows box, and it does not resolve the issue by itself.

rcmlz commented 10 months ago

OK. You just launched

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

or did you also do the second required step mentioned Here

The application manifest must also include the longPathAware element.

XML

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        <ws2:longPathAware>true</ws2:longPathAware>
    </windowsSettings>
</application

I assume the second step is done during compilation of Raku for Windows, right?

And I guess a reboot - after all is setup - might be needed. Just in case ...

coke commented 10 months ago

There is no application manifest for rakudo. Edit there does seem to be the framework for one in the libuv library in MoarVM, which has longpath enabled. But as this is a rakudo issue (not a star issue), please update/follow on the linked ticket.

ugexe commented 10 months ago

https://github.com/MoarVM/MoarVM/pull/1776

AntonOks commented 10 months ago

THANKS @ugexe !!!

@rcmlz As the topic has to be fixed outside Rakudo Star, I will close this issue. Ok?

rcmlz commented 10 months ago

sure, thank you all for addressing this.

AntonOks commented 10 months ago

tried to collect / summarize some of the issues, pulls and so on on https://github.com/rakudo/star/wiki/20_Windows