shiv icon indicating copy to clipboard operation
shiv copied to clipboard

Fix: Ensure deterministic file ordering in `iter_package_files`

Open lilaliu-stripe opened this issue 9 months ago • 0 comments

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., .json files) 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

lilaliu-stripe avatar Jan 15 '25 01:01 lilaliu-stripe