On Sun, Apr 03, 2016 at 11:26:48PM +0200, Ludovic Courtès wrote: > Leo Famulari skribis: > > All the .beam files have timestamps and build paths embedded [0]. This > > is a known issue without a clear solution. The build paths don't seem so > > bad to me, since my understanding is that they are set deterministically > > by the Guix builder. > A patch along the lines of the one of the page above should do the work > for beam files, no? We’d have to change DEB_BUILD_DATE to > SOURCE_DATE_EPOCH, and remove regexp-matching from there. There is a more generic patch applied to the actual Debian package [0], and I've applied it to ours in the attached revision. It will allow us to build Erlang packages without the timestamp. Unfortunately, it seems to have no effect when building Erlang itself. > > There are also some .script files that also embed timestamps in a human > > readable string. Grepping for the string makes it easy to find the > > source of this. We could patch the timestamp format string with the > > value of SOURCE_DATE_EPOCH. Debian's package exhibits this problem. The timestamps are generated in the following places in the source code. I don't know how to approach this problem. lib/kernel/test/global_SUITE_data/global_trace.erl: io:format("The trace was generated at ~p~n", [EndTime]), lib/reltool/bin/reltool.escript: lists:flatten(io_lib:format("%% ~s generated at ~w ~w\n~p.\n\n", lib/reltool/src/reltool_server.erl: IoList = io_lib:format("%% config generated at ~w ~w\n~p.\n\n", lib/reltool/src/reltool_target.erl: RelIoList = io_lib:format("%% rel generated at ~w ~w\n~p.\n\n", lib/reltool/src/reltool_target.erl: ScriptIoList = io_lib:format("%% script generated at ~w ~w\n~p.\n\n", lib/reltool/src/reltool_target.erl: AppIoList = io_lib:format("%% app generated at ~w ~w\n~p.\n\n", lib/reltool/src/reltool_target.erl: AppIoList = io_lib:format("%% app generated at ~w ~w\n~p.\n\n", lib/runtime_tools/src/erts_alloc_config.erl: "generated at ~w-~2..0w-~2..0w ~2..0w:~2..0w.~2..0w by " lib/sasl/src/systools_make.erl: io:format(Fd, "%% script generated at ~w ~w\n~p.\n", lib/wx/src/gen/gl.erl:%% The program object's information log is updated and the program is generated at the time [0] https://sources.debian.net/src/erlang/1:18.3-dfsg-1/debian/patches/reproducible-build.patch/