[Mono-dev] making mono builds reproducible (xamarin bz #26842)

directhex at apebox.org directhex at apebox.org
Mon Feb 16 23:32:58 UTC 2015

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.

Sent from Windows Mail

From: Michael McGlothlin
Sent: ‎Monday‎, ‎16‎ ‎February‎ ‎2015 ‎23‎:‎17
To: Daniel Kahn Gillmor
Cc: mono development list, Henrik Feldt, Jo Shields, Debian Reproducible Builds, Jeroen Frijters

I'd always store time in epochs. Seconds since 1/1/1970 GMT.

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..

Sent from my iPad

> On Feb 16, 2015, at 4:19 PM, Daniel Kahn Gillmor <dkg at fifthhorseman.net> wrote:
> Hi Mono folks--
> some good discussion has come up on the xamarin bugtracker about being
> able to make builds using the mono toolchain reproducible:
>   https://bugzilla.xamarin.com/show_bug.cgi?id=26842
> Jo Shields offered a one-liner fix to PEWriter.cs to allow the use of an
> environment variable to fix the timestamp epoch, but made it clear that
> more feedback is needed, so i'm raising it here:
> from:
>   public DWORD TimeDateStamp = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
> to:
>   public DWORD TimeDateStamp = Environment.GetEnvironmentVariable("IKVM_WRITER_TIMESTAMP_EPOCH") != null ?
>                                uint.Parse(Environment.GetEnvironmentVariable("IKVM_WRITER_TIMESTAMP_EPOCH")) :
>                                (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
> (i'm not sure whether the integer number of seconds is the best form for
> the environment variable, or whether it would be better to parse a
> standard date string -- from debian's perspective, we can deal with
> either, of course)
> And this still doesn't solve the secondary issue of the assembly GUID,
> as Jo noted.
> Any thoughts about how to best enable binary-reproducible builds from
> the mono toolchain if the invoker requests them?
> Regards,
>        --dkg
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20150216/f358c555/attachment.html>

More information about the Mono-devel-list mailing list