There are several ways, a filesystem can be used to introduce nondeterminism:
-
readdir order is already covered in its own section
-
storing
mtime
,ctime
oratime
values of files touched during build will introduce varying timestamps -
using
st_ino
orst_dev
fields fromstat(2)
-
storing
st_size
for directories or usingst_blocks
orst_blksize
for any file, because it is filesystem-dependent. E.g. creating a million files and removing them again, will cause a directory to be large on ext4