<html>
<head>
<meta name="generator" content="Windows Mail 17.5.9600.20689">
<style type="text/css"><!--html { font-family: "Color Emoji", "Calibri", "Segoe UI", "Meiryo", "Microsoft YaHei UI", "Microsoft JhengHei UI", "Malgun Gothic", "sans-serif"; }--></style><style data-externalstyle="true"><!--
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
}
p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin:0in;
margin-bottom:.0001pt;
}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst, 
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle, 
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
}
--></style></head>
<body dir="ltr">
<div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;"><div>Considering the format used in the PE header is epoch seconds, using any other format to override that header seems like a pointless introduction of possible l10n-based parser issues.<br></div><div data-signatureblock="true"><div><br></div><div>Sent from Windows Mail</div><div><br></div></div><div style="padding-top: 5px; border-top-color: rgb(229, 229, 229); border-top-width: 1px; border-top-style: solid;"><div><font face=" 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif'" style='line-height: 15pt; letter-spacing: 0.02em; font-family: "Calibri", "Segoe UI", "Meiryo", "Microsoft YaHei UI", "Microsoft JhengHei UI", "Malgun Gothic", "sans-serif"; font-size: 12pt;'><b>From:</b> <a href="mailto:mike.mcglothlin@gmail.com" target="_parent">Michael McGlothlin</a><br><b>Sent:</b> ‎Monday‎, ‎16‎ ‎February‎ ‎2015 ‎23‎:‎17<br><b>To:</b> <a href="mailto:dkg@fifthhorseman.net" target="_parent">Daniel Kahn Gillmor</a><br><b>Cc:</b> <a href="mailto:mono-devel-list@lists.ximian.com" target="_parent">mono development list</a>, <a href="mailto:henrik@logibit.se" target="_parent">Henrik Feldt</a>, <a href="mailto:directhex@apebox.org" target="_parent">Jo Shields</a>, <a href="mailto:reproducible-builds@lists.alioth.debian.org" target="_parent">Debian Reproducible Builds</a>, <a href="mailto:jeroen@sumatra.nl" target="_parent">Jeroen Frijters</a></font></div></div><div><br></div><div dir=""><div id="readingPaneBodyContent">I'd always store time in epochs. Seconds since 1/1/1970 GMT.<br><br>The use of textual date strings instead of a epochs is one of the worst things I've seen from the C# way of doing things. I had often wondered why so many programs could have so much trouble with handling dates and times correctly..<br><br><br>Sent from my iPad<br><br>> On Feb 16, 2015, at 4:19 PM, Daniel Kahn Gillmor <dkg@fifthhorseman.net> wrote:<br>> <br>> Hi Mono folks--<br>> <br>> some good discussion has come up on the xamarin bugtracker about being<br>> able to make builds using the mono toolchain reproducible:<br>> <br>>   https://bugzilla.xamarin.com/show_bug.cgi?id=26842<br>> <br>> Jo Shields offered a one-liner fix to PEWriter.cs to allow the use of an<br>> environment variable to fix the timestamp epoch, but made it clear that<br>> more feedback is needed, so i'm raising it here:<br>> <br>> from:<br>> <br>>   public DWORD TimeDateStamp = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;<br>> <br>> to:<br>> <br>>   public DWORD TimeDateStamp = Environment.GetEnvironmentVariable("IKVM_WRITER_TIMESTAMP_EPOCH") != null ?<br>>                                uint.Parse(Environment.GetEnvironmentVariable("IKVM_WRITER_TIMESTAMP_EPOCH")) :<br>>                                (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;<br>> <br>> (i'm not sure whether the integer number of seconds is the best form for<br>> the environment variable, or whether it would be better to parse a<br>> standard date string -- from debian's perspective, we can deal with<br>> either, of course)<br>> <br>> And this still doesn't solve the secondary issue of the assembly GUID,<br>> as Jo noted.<br>> <br>> Any thoughts about how to best enable binary-reproducible builds from<br>> the mono toolchain if the invoker requests them?<br>> <br>> Regards,<br>> <br>>        --dkg<br>> _______________________________________________<br>> Mono-devel-list mailing list<br>> Mono-devel-list@lists.ximian.com<br>> http://lists.ximian.com/mailman/listinfo/mono-devel-list<br></div></div></div>
</body>
</html>