shiv
shiv copied to clipboard
Fix: Ensure deterministic file ordering in `iter_package_files`
cc @lorencarvalho
Summary
Fixed non-deterministic file ordering in the iter_package_files function by adding explicit sorting of package files. This change ensures consistent behavior across builds and prevents issues caused by unordered file iteration.
Changes Made
- Applied
sorted()to file listings in both Python versions (<3.11 and >=3.11). - Guaranteed that files are processed in a consistent, lexicographic order.
Why This Fix?
- Prevents non-deterministic builds caused by unordered file iteration.
- Improves build reproducibility and enables better caching in CI/CD pipelines.
- Simplifies code by enforcing consistent ordering within the function, reducing the need for manual sorting in callers.
Testing
- Rebuilt the project multiple times and verified that output files are now consistent across builds.
- Compared generated artifacts (e.g.,
.jsonfiles) to confirm deterministic ordering.
Impact
- No functional changes to how files are processed, only improves determinism.
- Safer and more reliable builds, especially in CI environments.
Closes https://github.com/linkedin/shiv/issues/265