-
Notifications
You must be signed in to change notification settings - Fork 691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cabal-testsuite failures on Windows due to the max path length #6271
Comments
This could solve some non-determinism in output of cabal-testsuite which we experienced on appveyor, i.e. #6271
This could solve some non-determinism in output of cabal-testsuite which we experienced on appveyor, i.e. #6271
Does
Look like path length limitation? Is there anything one can do to make it not fail? |
Yeah that path is way too long. Which ghc and Cabal is this? |
You can try this before the build/testsuite raaz-crypto/raaz@78a8459 For newer cabal and ghc you can install |
@Mistuke, Cabal is But the GHC used, is 8.6.5, will |
I'd try |
It depends. I'm not quite sure who is issuing this error.. If it's coming from cabal or ghc. Blog post is at https://hub.zhox.com/posts/bypassing-max_path-limit-on-windows/ but I think it won't work in this case. |
Alternative is to backport the temp file creation from 8.12 to cabal As a compat fix. |
If It's used in one place; |
No it's mostly FFI. It gets complicated because So here are the options you have:
None of them very ideal solutions.. |
|
Trying to merge github workflows i noted lot of tests which works in ghc-8.6.5 with this invocation:
does not work with this other generated by
The two ghc calls have exactly the same paths. The only difference is the bad one uses Observe the double dash in the broken one maybe related? |
Cant reproduce locally with
🤦 |
I am tempted to mark those tests as broken for ghc >= 8.6.5 as we are gonna test 8.10, 9.0 and hopefully 9.2 in windows but i would prefer not having to do. |
The Paths aren't exactly the same: The working one has
and the broken one
Notice the difference
Which is just below the limit... and the broken
which is above the limit. Something has done some weird double escaping here. don't quite understand the escaping logic.. It doesn't look consistent. We only started patching the toolchain for long paths in GHC 8.10. With GHC 8.6 we patched GHC itself, but binutils is still bound. For this particular test, if you can fix the over-escaping it would bring you back under.
is equivalent but much shorter at |
many thanks @Mistuke, i had observed the double quoting behaviour, but i dont understand why invoking the cabal test suite with The full invocation of the working one is:
... without building the executable before that The full invocation of the not working one is:
... building the executable with So one hypothesis could be I also tried to shorthen the Dont understand neither why cant reproduce it locally. I tried the not working one in ci under msys2 bash, raw cmd and powershell and it did not work |
and the bad ghc call does not have any double slash in the ghc invocation, so it seems ghc is doing it depending on some stateful thing:
good one, identical but for the
|
well maybe the output of the call is the same but the double slashes are removed printing out the log 🤔 |
list of affected tests:
|
Ah yes, prior to GHC 9, the versioned files used to be wrappers, and from 9, it's the unversioned one. those wrappers are ancient and re-escape things. See https://github.com/ghc/ghc/blob/ghc-8.6.5-release/driver/utils/cwrapper.c looks like they don't escape |
wow, million thanks for that, I would swear I tried it with the main ghc.exe but trying it again, that should fix the calls too, no? |
It should, for 9.x GHC HQ flipped which one is the main though. though 9.x shouldn't have a problem with long paths. |
I trying disable few tests on windows & appveyor, they weren't run previously anyway.
The text was updated successfully, but these errors were encountered: