RFR: JDK-8241271 Make hotspot build reproducible

Erik Joelsson erik.joelsson at oracle.com
Fri Mar 20 13:05:38 UTC 2020


Looks good!

/Erik

On 2020-03-20 03:58, Magnus Ihse Bursie wrote:
> On 2020-03-19 19:01, Erik Joelsson wrote:
>> On 2020-03-19 10:20, Magnus Ihse Bursie wrote:
>>> Currently, it is not possible two make hotspot builds reproducible, 
>>> since the current date and time is always inserted using the special 
>>> macros __DATE__ and __TIME__. This patch makes it possible to 
>>> override these values from the build system, paving the way for 
>>> making re-builds of hotspot bit-by-bit identical.
>>>
>> I like the ability to achieve this.
>>> On linux/gcc, we can now actually get bit-by-bit identical builds of 
>>> libjvm.so (if not using precompiled headers), so I've updated the 
>>> baseline-cmp profiles and compare script to reflect this.
>>>
>> I'm not sure this is a good idea though. It means I can't reasonably 
>> compare to validate build changes that affect the precompiled header. 
>> Similarly, the COMPARE_BUILD make variable argument will not work 
>> unless you use both of these configure arguments.
>>
>> Since compare.sh is generated through configure, perhaps these 
>> exceptions can be made conditional on if these configure arguments 
>> are setup correctly for a reproducible libjvm.so?
>
> Good thinking! I did not think of this possibility. And yes, I too did 
> not like the current solution, but could think of no way around it. 
> Here's an improved webrev.
>
> WebRev: 
> http://cr.openjdk.java.net/~ihse/JDK-8241271-make-hotspot-reproducible/webrev.02
>
> Technically, you can make this fail by setting HOTSPOT_BUILD_TIME but 
> to different values, but hey, there's no need to make this idiot-proof.
>
> /Magnus
>>
>> /Erik
>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8241271
>>> WebRev: 
>>> http://cr.openjdk.java.net/~ihse/JDK-8241271-make-hotspot-reproducible/webrev.01
>>>
>>> /Magnus
>



More information about the build-dev mailing list