Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/1] rpm_4.14.0: clamp timestamps
@ 2018-01-02 23:16 Juro Bystricky
  2018-01-02 23:16 ` [PATCH 1/1] rpm_4.14.0: clamp timestamps by default Juro Bystricky
  0 siblings, 1 reply; 6+ messages in thread
From: Juro Bystricky @ 2018-01-02 23:16 UTC (permalink / raw)
  To: openembedded-core; +Cc: jurobystricky

The recipe for RPM has been upgraded to version 4.14.0.
This version introduced a new macro "clamp_mtime_to_source_date_epoch".
The macro allows the RPM packages to set buildtime and mtime of files to
values as specified by SOURCE_DATE_EPOCH. This, however, is not the enabled by default:
The default setting for "clamp_mtime_to_source_date_epoch" is "0".
This patch sets the macro to "1", thus allowing clamping of the timestamps.
As the user needs to jump through some hoops to set SOURCE_DATE_EPOCH in
the environment, clamping the timestamps is very likely what the user wants.

I am aware that the macro can be set on command line.
This would involve patching the file package_rpm.bbclass, something like:

cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'"

However, I think a better approach was to patch the upgraded recipe for the RPM,
in order to keep package_rpm.bbclass as RPM version agnostic as possible.

I tested this patch by a simple test, adding to local.conf:

export SOURCE_DATE_EPOCH
SOURCE_DATE_EPOCH="0"
PACKAGE_CLASSES = "package_rpm package_deb"

Then I ran twice (in two different folders, same machine, different times, no SSTATE):

$ bitbake core-image-minimal

The build created 3952 target packages (RPM and Debian each).

Without this patch the binary package comparison for RPM packages was:

Same: 538
Different: 3414
Total: 3952

With the patch the results were substantially better (same numbers for RPM and Debian):

Same: 3917
Different: 35
Total: 3952

Few caveats:
You need two additional patches by Alex Kanavin:
"rpm: update to 4.14.0"
"package.bbclass: replace rpm/debugedit with dwarfsrcfiles"

The resulting numbers need to be taken with a grain of salt, as there are
addional factors that can cause different results.
I realize SOURCE_DATE_EPOCH should be determined based on source code,
instead of setting it to "0", but that is not crucial to test the patch.

Finally, RPM 4.14.0 supports yet another macro "_buildhost" which should be used
to define some kind of a "standard" buildhost name in order to improve
reproducibility. (Otherwise, I think, buildost is taken from /etc/hosts).
But that's a subject of a separate patch.


Juro Bystricky (1):
  rpm_4.14.0: clamp timestamps by default

 .../recipes-devtools/rpm/files/0001-support-sde.patch | 19 +++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_4.14.0.bb               |  1 +
 2 files changed, 20 insertions(+)
 create mode 100644 meta/recipes-devtools/rpm/files/0001-support-sde.patch

-- 
2.7.4



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-01-04 12:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-02 23:16 [PATCH 0/1] rpm_4.14.0: clamp timestamps Juro Bystricky
2018-01-02 23:16 ` [PATCH 1/1] rpm_4.14.0: clamp timestamps by default Juro Bystricky
2018-01-03  8:47   ` Alexander Kanavin
2018-01-03 10:40     ` Richard Purdie
2018-01-03 16:59     ` Bystricky, Juro
2018-01-04 12:16       ` Alexander Kanavin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox