Skip to content

reproducible builds: filesystem readdir order #9794

@bmwiedemann

Description

@bmwiedemann

While working on reproducible builds for openSUSE, I found that our ocaml-dune package varies through non-determinism from filesystem readdir order.

Expected Behavior

dune build should be reproducible

Actual Behavior

--- strings RPMS.1/usr/bin/dune
+++ strings RPMS.2/usr/bin/dune
[...]
 padding.0
-sha1_do_chunk
 sha512_do_chunk
+sha1_do_chunk
 scanmult
 shutdown_happened

Maybe related: ocaml-dune-3.12.2/_boot/source_files produced by ./.duneboot.exe --verbose also has order variations.

Reproduction

build on two different filesystems or use disorderfs or randomize readdir order

Specifications

  • Version of dune (output of dune --version): ocaml-dune-3.12.2 with boot: remove single-command bootstrap #9735
  • Version of ocaml (output of ocamlc --version) ocaml-4.14.1
  • Operating system (distribution and version): openSUSE Tumbleweed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions