RFR: 8282567: Improve source-date handling in build system
Magnus Ihse Bursie
ihse at openjdk.java.net
Fri Mar 4 23:42:05 UTC 2022
On Wed, 2 Mar 2022 18:09:58 GMT, Severin Gehwolf <sgehwolf at openjdk.org> wrote:
>> To clarify, the end effect of these changes is that building OpenJDK will basically be compliant with the method of just setting SOURCE_DATE_EPOCH. (The caveat is that it must be set at configure time, not build time.) So
>>
>> $ export SOURCE_DATE_EPOCH=123
>> $ bash configure
>> $ make
>>
>> will cause the build to default to building in reproducible mode, with the date given by SOURCE_DATE_EPOCH.
>
>> To clarify, the end effect of these changes is that building OpenJDK will basically be compliant with the method of just setting SOURCE_DATE_EPOCH. (The caveat is that it must be set at configure time, not build time.) So
>>
>> ```
>> $ export SOURCE_DATE_EPOCH=123
>> $ bash configure
>> $ make
>> ```
>
> Do you have an example configure output when used like that post-patch?
>
>> will cause the build to default to building in reproducible mode, with the date given by SOURCE_DATE_EPOCH.
>
> Hmm, when building via RPM, `SOURCE_DATE_EPOCH` is usually set. If I understand this correctly, prior to this, the RPM build would be non-reproducible. After it it would be. That may be confusing to some. If post-patch this makes the build reproducible, does it mention that via a WARNING/INFO or anything like that after this patch? I don't see it. Am I missing it? It would be good to have something to that effect in the configure output.
@jerboaa
The output in configure can look like this:
checking what source date to use... 946684800, from SOURCE_DATE_EPOCH
checking for --enable-reproducible-build... enabled, default
But your comment made me think. I believe this should be more prominently displayed. My latest update therefore adds a new line to the summary. So now it looks like this:
* Version string: 19-internal-adhoc (19-internal)
* Source date: 946684800 (2000-01-01T00:00:00Z)
If no fixed source date is set, this is shown instead:
* Version string: 19-internal-adhoc (19-internal)
* Source date: Determined at build time
(This is still the default if --with-source-date is not given or SOURCE_DATE_EPOCH is not set.)
-------------
PR: https://git.openjdk.java.net/jdk/pull/7660
More information about the build-dev
mailing list