fix(windows): remove unneeded dirs#80
Conversation
This is because otherwise, with latest nimble, you can end up exceeding 260 characters, thus ending up with an error due to path being too long
There was a problem hiding this comment.
Pull request overview
Updates the Nimble package install manifest to avoid Windows “path too long” failures (260 char limit) by installing only a curated subset of the vendored trees instead of whole directories.
Changes:
- Replaces
installDirswith dynamically generatedinstallFilesbased on walkinginstallRoots. - Adds a skip list to exclude bulky/unneeded vendor subdirectories (tests/tools/docs/etc.) and hidden paths.
- Removes the later redundant
import os, strutils, sequtilsblock.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| proc collectInstallFiles(root: string) = | ||
| for kind, path in walkDir(root): | ||
| let norm = normalizeInstallPath(path) | ||
| case kind | ||
| of pcDir: | ||
| if not isSkippedInstallPath(norm): | ||
| collectInstallFiles(norm) | ||
| of pcFile: | ||
| if not isSkippedInstallPath(norm): | ||
| installFiles.add(norm) | ||
| else: | ||
| discard | ||
|
|
||
| installFiles = rootInstallFiles | ||
| for root in installRoots: | ||
| collectInstallFiles(root) |
There was a problem hiding this comment.
The install manifest is built by recursively walking installRoots at Nimble file evaluation time, so every Nimble command (e.g., nimble test, nimble tasks, etc.) will traverse the entire vendored libs/ trees. This can noticeably slow down unrelated commands and can also fail early with an OSError if those directories are missing (e.g., partial checkouts) even when the command wouldn’t need installation. Consider moving the directory walk behind an install-only gate (or overriding task install to compute installFiles there), so the expensive filesystem traversal only happens for nimble install/develop.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| skipDirs = @[ | ||
| "benchmarks", | ||
| "tests", | ||
| "libs/lsquic/bin", | ||
| "libs/lsquic/docs", | ||
| "libs/lsquic/qir", | ||
| "libs/lsquic/tests", | ||
| "libs/lsquic/tools", | ||
| "libs/lsquic/src/liblsquic/ls-qpack/bin", | ||
| "libs/lsquic/src/liblsquic/ls-qpack/fuzz", | ||
| "libs/lsquic/src/liblsquic/ls-qpack/test", | ||
| "libs/lsquic/src/liblsquic/ls-qpack/tools", | ||
| "libs/lsquic/src/lshpack/test", | ||
| "libs/lsquic/src/lshpack/bin", | ||
| "libs/vac_boringssl/.bcr", | ||
| "libs/vac_boringssl/.github", | ||
| "libs/vac_boringssl/bench", | ||
| "libs/vac_boringssl/cmake", | ||
| "libs/vac_boringssl/crypto/cipher/test", | ||
| "libs/vac_boringssl/crypto/evp/test", | ||
| "libs/vac_boringssl/crypto/fipsmodule/bn/test", | ||
| "libs/vac_boringssl/crypto/fipsmodule/policydocs", | ||
| "libs/vac_boringssl/crypto/pkcs7/test", | ||
| "libs/vac_boringssl/crypto/pkcs8/test", | ||
| "libs/vac_boringssl/crypto/rsa/test", | ||
| "libs/vac_boringssl/crypto/test", | ||
| "libs/vac_boringssl/crypto/x509/test", | ||
| "libs/vac_boringssl/docs", | ||
| "libs/vac_boringssl/fuzz", | ||
| "libs/vac_boringssl/gen/test_support", | ||
| "libs/vac_boringssl/infra", | ||
| "libs/vac_boringssl/pki", | ||
| "libs/vac_boringssl/rust", | ||
| "libs/vac_boringssl/ssl/test", | ||
| "libs/vac_boringssl/third_party/benchmark", | ||
| "libs/vac_boringssl/third_party/googletest", | ||
| "libs/vac_boringssl/third_party/wycheproof_testvectors", | ||
| "libs/vac_boringssl/tool", | ||
| "libs/vac_boringssl/util", | ||
| ] |
There was a problem hiding this comment.
[nph] reported by reviewdog 🐶
| skipDirs = @[ | |
| "benchmarks", | |
| "tests", | |
| "libs/lsquic/bin", | |
| "libs/lsquic/docs", | |
| "libs/lsquic/qir", | |
| "libs/lsquic/tests", | |
| "libs/lsquic/tools", | |
| "libs/lsquic/src/liblsquic/ls-qpack/bin", | |
| "libs/lsquic/src/liblsquic/ls-qpack/fuzz", | |
| "libs/lsquic/src/liblsquic/ls-qpack/test", | |
| "libs/lsquic/src/liblsquic/ls-qpack/tools", | |
| "libs/lsquic/src/lshpack/test", | |
| "libs/lsquic/src/lshpack/bin", | |
| "libs/vac_boringssl/.bcr", | |
| "libs/vac_boringssl/.github", | |
| "libs/vac_boringssl/bench", | |
| "libs/vac_boringssl/cmake", | |
| "libs/vac_boringssl/crypto/cipher/test", | |
| "libs/vac_boringssl/crypto/evp/test", | |
| "libs/vac_boringssl/crypto/fipsmodule/bn/test", | |
| "libs/vac_boringssl/crypto/fipsmodule/policydocs", | |
| "libs/vac_boringssl/crypto/pkcs7/test", | |
| "libs/vac_boringssl/crypto/pkcs8/test", | |
| "libs/vac_boringssl/crypto/rsa/test", | |
| "libs/vac_boringssl/crypto/test", | |
| "libs/vac_boringssl/crypto/x509/test", | |
| "libs/vac_boringssl/docs", | |
| "libs/vac_boringssl/fuzz", | |
| "libs/vac_boringssl/gen/test_support", | |
| "libs/vac_boringssl/infra", | |
| "libs/vac_boringssl/pki", | |
| "libs/vac_boringssl/rust", | |
| "libs/vac_boringssl/ssl/test", | |
| "libs/vac_boringssl/third_party/benchmark", | |
| "libs/vac_boringssl/third_party/googletest", | |
| "libs/vac_boringssl/third_party/wycheproof_testvectors", | |
| "libs/vac_boringssl/tool", | |
| "libs/vac_boringssl/util", | |
| ] | |
| skipDirs = | |
| @[ | |
| "benchmarks", "tests", "libs/lsquic/bin", "libs/lsquic/docs", "libs/lsquic/qir", | |
| "libs/lsquic/tests", "libs/lsquic/tools", "libs/lsquic/src/liblsquic/ls-qpack/bin", | |
| "libs/lsquic/src/liblsquic/ls-qpack/fuzz", | |
| "libs/lsquic/src/liblsquic/ls-qpack/test", | |
| "libs/lsquic/src/liblsquic/ls-qpack/tools", "libs/lsquic/src/lshpack/test", | |
| "libs/lsquic/src/lshpack/bin", "libs/vac_boringssl/.bcr", | |
| "libs/vac_boringssl/.github", "libs/vac_boringssl/bench", | |
| "libs/vac_boringssl/cmake", "libs/vac_boringssl/crypto/cipher/test", | |
| "libs/vac_boringssl/crypto/evp/test", | |
| "libs/vac_boringssl/crypto/fipsmodule/bn/test", | |
| "libs/vac_boringssl/crypto/fipsmodule/policydocs", | |
| "libs/vac_boringssl/crypto/pkcs7/test", "libs/vac_boringssl/crypto/pkcs8/test", | |
| "libs/vac_boringssl/crypto/rsa/test", "libs/vac_boringssl/crypto/test", | |
| "libs/vac_boringssl/crypto/x509/test", "libs/vac_boringssl/docs", | |
| "libs/vac_boringssl/fuzz", "libs/vac_boringssl/gen/test_support", | |
| "libs/vac_boringssl/infra", "libs/vac_boringssl/pki", "libs/vac_boringssl/rust", | |
| "libs/vac_boringssl/ssl/test", "libs/vac_boringssl/third_party/benchmark", | |
| "libs/vac_boringssl/third_party/googletest", | |
| "libs/vac_boringssl/third_party/wycheproof_testvectors", "libs/vac_boringssl/tool", | |
| "libs/vac_boringssl/util", | |
| ] |
| skipFiles = @[ | ||
| "extras.nim", | ||
| "generate_lsquic_ffi.nim", | ||
| "build.sh", | ||
| "libs/vac_boringssl/ssl/ssl_c_test.c", | ||
| "libs/vac_boringssl/ssl/ssl_internal_test.cc", | ||
| "libs/vac_boringssl/ssl/ssl_test.cc", | ||
| "libs/vac_boringssl/ssl/span_test.cc", | ||
| ] |
There was a problem hiding this comment.
[nph] reported by reviewdog 🐶
| skipFiles = @[ | |
| "extras.nim", | |
| "generate_lsquic_ffi.nim", | |
| "build.sh", | |
| "libs/vac_boringssl/ssl/ssl_c_test.c", | |
| "libs/vac_boringssl/ssl/ssl_internal_test.cc", | |
| "libs/vac_boringssl/ssl/ssl_test.cc", | |
| "libs/vac_boringssl/ssl/span_test.cc", | |
| ] | |
| skipFiles = | |
| @[ | |
| "extras.nim", "generate_lsquic_ffi.nim", "build.sh", | |
| "libs/vac_boringssl/ssl/ssl_c_test.c", | |
| "libs/vac_boringssl/ssl/ssl_internal_test.cc", "libs/vac_boringssl/ssl/ssl_test.cc", | |
| "libs/vac_boringssl/ssl/span_test.cc", | |
| ] |
| installFiles = @[ | ||
| "lsquic.nim", | ||
| "boringssl.nim", | ||
| ] |
There was a problem hiding this comment.
[nph] reported by reviewdog 🐶
| installFiles = @[ | |
| "lsquic.nim", | |
| "boringssl.nim", | |
| ] | |
| installFiles = @["lsquic.nim", "boringssl.nim"] |
This is because otherwise, with latest nimble, you can end up exceeding 260 characters, thus ending up with an error due to path being too long