On Tue, Feb 03, 2015 at 07:22:49PM +0100, Peter Stuge wrote:
Kevin O'Connor wrote:
What breaks if the version changes?
Reproducible builds; allowing to create a consensus that a particular binary is indeed the correct binary for a particular source code.
That is useful. A solution for stabilizing gcc/binutils output would also need to be found though, and that's a much harder problem.
Do you mean code generation? Reproducible builds are created using the same particular compiler version everywhere.
Well, sure. But that's not the current reality - we know there are lots of different compiler versions in use today. (Indeed, new versions come out every few months.)
I recommend this presentation for more information:
https://media.ccc.de/browse/congress/2014/31c3_-_6240_-_en_-_saal_g_-_201412...
Looks to be a long video - I'll add it to my queue.
For direct video download links: https://media.ccc.de/browse/congress/2014/31c3_-_6240_-_en_-_saal_g_-_201412...
It should be possible to force a static version with "make VERSION='xyz'", but I'd ask that that not be done for production builds as it makes handling trouble reports harder.
I would recommend to use `git describe --tags --dirty` output, which tells if there are any local modifications.
"git describe" is already there - see my recent email to Ian.
It's important that there's nothing additional in the string that changes depending on transient things outside of the source code. I.e. it needs to be nothing but describe output, and I think it would be nice if it were the default, so as to support reproducible builds out of the box.
If someone wants to add a SeaBIOS build flag to help with building a reproducible version, I'm okay with that. (Contrary to my earlier email, "make VERSION=xyz" no longer works.) I do not agree it should be the default.
-Kevin