It is important to detect reproducibility problems in the build system before the users do, to avoid any false alarms.

The method is usually as follows:

  1. Build a first time.
  2. Save the result.
  3. Perform as many changes to the environment as possible.
  4. Build a second time.
  5. Compare the results.

diffoscope is a tool that has been initially designed to help understand issues when comparing build results.

Here is a list of interesting variations that have been identified so far:

  • date and time,
  • build path,
  • hostname,
  • domain name,
  • filesystem,
  • environment variables,
  • timezone,
  • language,
  • locale,
  • user name,
  • user id,
  • group name,
  • group id,
  • kernel version,
  • umask,
  • CPU type,
  • number of CPU cores.

disorderfs can help in testing variations due to filesystems in a deterministic manner.

The list of variations tested for Debian is available as an actual example.