JuliaPackaging / BinaryBuilder.jl

Binary Dependency Builder for Julia
https://binarybuilder.org
Other
392 stars 101 forks source link

Add audit check about length of path of files for Windows #1197

Open giordano opened 2 years ago

giordano commented 2 years ago

We have discovered the hard way (https://github.com/JuliaPackaging/Yggdrasil/pull/4720) that file paths on Windows can't be longer than 260 characters by default, unless users change this limit: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell.

This can make it impossible to install an artifact on Windows, with an error like this:

ERROR: Unable to automatically download/install artifact 'PETSc' from sources listed in 'C:\Users\user\.julia\packages\PETSc_jll\ilfQn\Artifacts.toml'.
Sources attempted:
- https://pkg.julialang.org/artifact/b0021810ce994eb4c6217fe07392d7823dfd43e9
    Error: HTTP/1.1 200 OK (Failure when receiving data from the peer) while requesting https://pkg.julialang.org/artifact/b0021810ce994eb4c6217fe07392d7823dfd43e9
- https://github.com/JuliaBinaryWrappers/PETSc_jll.jl/releases/download/PETSc-v3.16.5+3/PETSc.v3.16.5.x86_64-w64-mingw32-libgfortran5.tar.gz
    Error: SystemError: opening file "C:\\Users\\user\\.julia\\artifacts\\b0021810ce994eb4c6217fe07392d7823dfd43e9\\bin\\petsc\\double_complex_Int32\\share\\petsc\\examples\\src\\ksp\\ksp\\tutorials\\output\\ex71_bddc_elast_deluxe_layers_adapt_mkl_pardiso_cuda_pc_bddc_schur_layers-10_pc_bddc_adaptive_userdefined-0.out": No such file or directory

We may want to add an audit pass which prints a warning if the path of a file within the prefix is longer than ~200 characters (consider that files in artifacts will placed be in <depot>/artifacts/<hash>/).