<div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 1, 2020 at 8:46 PM Christian Nilsson <<a href="mailto:nikize@gmail.com">nikize@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sat, 2 May 2020, 07:36 Neil Roza, <<a href="mailto:neil@rtr.ai" target="_blank">neil@rtr.ai</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi ipxe-devel,</div><div><br></div><div>Please find the attached diff representing a patch I would like to submit for your consideration. This is a small change to the `src/Makefile.housekeeping` that makes the generation of most artifacts (notably not `*.usb` images) deterministic.</div><div><br></div><div>The scariest change here is the removal of the `BUILD_ID_CMD` in favor of an inlined shell snippet where the `_build_id` symbol is defined. In keeping with the comments that specify a unique `_build_id` for each `$(BIN)/%.tmp`, I use the first 8 characters of the md5sum of the target, in the expected base-prefixed hexadecimal representation. Calculating the likelihood of collisions I leave as an exercise to the reviewer. :D</div><div><br></div><div>The `BUILD_TIMESTAMP` assignment has been changed to allow environment variable overriding, but it defaults to `SOURCE_DATE_EPOCH`. The source date epoch can also be overridden; it defaults to the Unix timestamp of the current git HEAD commit.</div><div><br></div><div>I like reproducible builds, but I recognize that others have different concerns. I'm happy to change what needs changing.</div><div></div></div></blockquote></div><div dir="auto"><br></div><div dir="auto">Hi,</div><div dir="auto">Have you read all previous emails on the topic that is posted to the mailing list?</div><div dir="auto">Also take a look at the commits that introduced the parts that you now are changing.</div><div dir="auto"><br></div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div></div>
</blockquote></div></div>
</blockquote></div><br clear="all"><div><div>Regarding commits that introduced things touching `BUILD_TIMESTAMP` and/or `BUILD_ID_CMD`, I found the following, in reverse-chronological order:</div><div><br></div><div>* 2014.06.18 : <a href="https://github.com/ipxe/ipxe/commit/8290a955130e0a6d6112ad8f269d8f617103e070">https://github.com/ipxe/ipxe/commit/8290a955130e0a6d6112ad8f269d8f617103e070</a> : `BUILD_TIMESTAMP` is introduced; its immediate-assigned value is returned from `date +%s`</div><div>* 2010.04.24 : <a href="https://github.com/ipxe/ipxe/commit/58f6e553625c90d928ddd54b8f31634a5b26f05e">https://github.com/ipxe/ipxe/commit/58f6e553625c90d928ddd54b8f31634a5b26f05e</a> : `BUILD_ID_CMD` is introduced; its immediate-assigned value is the string literal perl one-liner generating a 32-bit unsigned integer in hexadecimal</div><div><br></div><div>Insofar as I've been able to determine, these commits --- the ones that introduced these variables --- are the only commits that affect them. Each has been virtually untouched since its introduction.<br></div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Neil Roza<br><br></div></div></div></div></div></div></div>