Binary Reproducible Builds with Docker
summary
Shows how to make a reproducible C++ build by using Docker to freeze the environment, pinning a Debian base image, installing GCC and build tools, and setting a fixed working directory so object paths and timestamps don’t vary. Demonstrates problems (compile-time __DATE__, per-file random seeds, ar timestamps, build IDs) and fixes (use stable seeds derived from source MD5, ar -D, strip) and verifies results with md5sum where builds inside the same image produce identical outputs e g 60c3… vs f9de… before fixes and matching MD5 after, so the method works. docker image with fixed working dir md5sum equality
AI-written summary · about
chapters (10)
- 0:00Start
- 2:08Where is Binary Reproducible Software Needed?
- 4:10Where are the Lifecycle Challenges?
- 11:14Controlling the environment
- 11:53Dependency management
- 14:02Docker hub
- 14:56Source Code: Identifying Volatile Inputs
- 18:32Source Code: Value Initialization
- 19:06Randomness in the compiler
- 20:58Randomness in the Linker (ar)
related talks
56mReproducible Builds, the first ten years
47mReproducible builds
58mKeeping your builds green using Docker
33mDocker Container Lifecycles – Problem or Opportunity?
34mReproducible Builds in Fedora
30mRootless, Reproducible, and Hermetic: Secure Container Build Showdown
23mReproducible Environments for Reproducible Results
13mBuilding reproducible dev environments with Docker
