-
-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Make the Unix build process more repeatable #28449
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
91dab0a
to
55c9d44
Compare
55c9d44
to
4b44ba5
Compare
4b44ba5
to
887cc15
Compare
I'm wondering what the effect is when VERSION.dat doesn't contain a date, like in the current branch. In Debian, we set the SOURCE_DATE_EPOCH, which is based on the debian/changelog file. It would now get an other date, when upstream released it, instead of when Debian did, which looks fine to me. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is borderline on what we would accept with CLA: trivial. Please consider signing a CLA. https://openssl-library.org/policies/cla/index.html
my $t = $config{"release_date"}
? Time::Piece->strptime($config{"release_date"}, "%d %b %Y")
: localtime;
$t->strftime("%Y-%m-%d") When the release date ( |
I could accept it with |
So if we ever decide to shipped a non-released version, which seems unlikely, this will make it non-reproducible. |
I submitted my individual CLA just last night. The second commit doesn't contain that metadata because I planned on squashing the second commit to the first one (which has the metadata) prior to merge. |
Yes. That seems extremely unlikely though, since releasing sources without a fixed version to the public would be contradictory. Background for other readers: multiple OSes out there (I can speak directly to FreeBSD and a FreeBSD variant I develop on for work) keep patches which normalize dates to deterministic values in order to make builds reproducible. This is sometimes done for to simplify binary patching processes. |
Before this change all manpages would contain the date when pod2man was run. This resulted in outputs that differed between builds--or potentially across a single build if the host clock "ticked" to the next day when the build was being run. This commit modifies the manpage generation process as follows: - The date all manpages were generated will be normalized to a single date. - The release date specified in `VERSION.dat` is used instead of the date/time when `pod2man` was executed OR--in the event a date isn't specified in `VERSION.dat`--the time when the Makefiles were last regenerated. Embedding a consistent date into the generated manpages helps ensure that the build process as a whole is more repeatable and helps ensure that release versions of OpenSSL create artifacts consistent with the date that the official release was cut. Co-authored-by: Richard Levitte <levitte@openssl.org> Signed-off-by: Enji Cooper <yaneurabeya@gmail.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from #28449) (cherry picked from commit 2c0c9c8)
Before this change all manpages would contain the date when pod2man was run. This resulted in outputs that differed between builds--or potentially across a single build if the host clock "ticked" to the next day when the build was being run. This commit modifies the manpage generation process as follows: - The date all manpages were generated will be normalized to a single date. - The release date specified in `VERSION.dat` is used instead of the date/time when `pod2man` was executed OR--in the event a date isn't specified in `VERSION.dat`--the time when the Makefiles were last regenerated. Embedding a consistent date into the generated manpages helps ensure that the build process as a whole is more repeatable and helps ensure that release versions of OpenSSL create artifacts consistent with the date that the official release was cut. Co-authored-by: Richard Levitte <levitte@openssl.org> Signed-off-by: Enji Cooper <yaneurabeya@gmail.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from #28449) (cherry picked from commit 2c0c9c8)
Before this change all manpages would contain the date when pod2man was run. This resulted in outputs that differed between builds--or potentially across a single build if the host clock "ticked" to the next day when the build was being run. This commit modifies the manpage generation process as follows: - The date all manpages were generated will be normalized to a single date. - The release date specified in `VERSION.dat` is used instead of the date/time when `pod2man` was executed OR--in the event a date isn't specified in `VERSION.dat`--the time when the Makefiles were last regenerated. Embedding a consistent date into the generated manpages helps ensure that the build process as a whole is more repeatable and helps ensure that release versions of OpenSSL create artifacts consistent with the date that the official release was cut. Co-authored-by: Richard Levitte <levitte@openssl.org> Signed-off-by: Enji Cooper <yaneurabeya@gmail.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from #28449)
Merged to all the active branches. Thank you for your contribution. |
CHANGES.md: * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
CHANGES.md: * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
CHANGES.md: * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
CHANGES.md: * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
CHANGES.md: * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
CHANGES.md: * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28447 * openssl#28449 NEWS.md: * openssl#28447 Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.0.18 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28624 Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.2.6 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.2.6 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.3.5 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.3.5 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.4.3 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28415 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.4.3 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.3.5 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.3.5 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.4.3 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28415 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.4.3 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.2.6 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28603 * openssl#28624 * openssl#28642 3.2.6 NEWS.md do not have any updates. Updated the changes and news in the previous branches. Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
3.0.18 CHANGES.md includes the following: * openssl#28098 * openssl#28198 * openssl#28398 * openssl#28411 * openssl#28449 * openssl#28504 * openssl#28535 * openssl#28591 * openssl#28624 Release: Yes Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Before this change all manpages would contain the date when pod2man was
run. This resulted in outputs that differed between builds--or
potentially across a single build if the host clock "ticked" to the next
day when the build was being run.
This commit modifies the manpage generation process as follows:
date instead of a potentially rolling date.
VERSION.dat
is used instead of thedate/time when
pod2man
was executed OR--in the event a dateisn't specified in
VERSION.dat
--the time when the Makefiles werelast regenerated.
Embedding a consistent date into the generated manpages helps ensure that
the build process as a whole is more repeatable and helps ensure that
release versions of OpenSSL create artifacts consistent with the date
that the official release was cut.
Closes: #28323