Make build deterministic by sorting files and optionally fixing timestamps
These changes make Messages build in a deterministic fashion if the environment variable
SOURCE_DATE_EPOCH is set, this is a partial implementation of the
Whilst Filecore keeps directories sorted this is not required of RISC OS filing systems, so file order can change between builds. Some filing systems use randomised hash tables, and parallel builds (RiscOS/Utilities/Release/srcbuild!4) can also randomise file order.
- Utility executables are removed, and instead built from source.
- ScanRes source has been reformatted using Artistic Style so that it is consistent, with the goal of minimising change.
- Compiler warnings have been suppressed.
- Files are output in sorted order.
- Timestamps are set to 0 (00:00 1st January 1900 UTC) if
- Plenty of typos have been corrected.
Together with routines on WordV and FileV (example) to prevent timestamps being included a RISC OS build is completely deterministic depending only on the source and DDE version (and build path).
If committed immediately before RiscOS/Env!4 can partially protect against the hazard of losing dynamic dependencies.