RFR: JDK-8241616: Timestamps on ct.sym entries lead to non-reproducible builds

Jan Lahoda jan.lahoda at oracle.com
Thu Apr 30 12:50:04 UTC 2020


On 30. 04. 20 14:29, Magnus Ihse Bursie wrote:
> On 2020-04-30 12:41, Alan Bateman wrote:
>>
>>
>> On 30/04/2020 08:03, Jan Lahoda wrote:
>>> Hi,
>>>
>>> The building of lib/ct.sym is not reproducible, due to timestamps of 
>>> files inside the file (which is basically a zip file).
>>>
>>> The proposed solution is to use a constant timestamp for the files 
>>> inside the ct.sym file. To simplify the construction, the 
>>> CreateSymbols tool does not produce files on the filesystem anymore, 
>>> but rather constructs the ct.sym directly.
>>>
>>> Proposed webrev: http://cr.openjdk.java.net/~jlahoda/8241616/webrev.00/
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8241616
>> 1587656816359 = 2020-04-23T15:46:56.359Z. Is there anything 
>> significant with this timestamp? Magnus might have suggestions but 
>> maybe it would be saner to pick up the value of DEFAULT_VERSION_DATE.
> There is an officially suggested standard, SOURCE_DATE_EPOCH for 
> reproducible builds. [1] I have long-term vision to include this in the 
> entire JDK build, but has of yet not even started on that. :-(
> 
> This might be a good first step to start using it. I can assist in 
> making the needed makefile changes to have that environment variable 
> available.

I think a standard mechanism would be great. I don't think this patch is 
very urgent, so I am happy to wait some time (rather than add a 
timestamp to symbols and then remove it when there's a standard mechanism).

Thanks,
     Jan

> 
> /Magnus
> 
> [1] https://reproducible-builds.org/specs/source-date-epoch/
>>
>> There is some curious code that generates the timestamp with:
>>    Long.toString(FileTime.from(Instant.now()).toMillis())
>> Could this use Instant.now().toEpochMilli() instead?
>>
>> -Alan
>>
>>
> 



More information about the build-dev mailing list