Enable classes for reproducible-builds in OE 03/22203/9
authorJan-Simon Möller <jsmoeller@linuxfoundation.org>
Thu, 22 Aug 2019 21:23:50 +0000 (23:23 +0200)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Wed, 18 Mar 2020 21:34:02 +0000 (21:34 +0000)
commit5c4d183e5ff2228b8daacac090e1176bb198d845
treeb8333a9e8536a8297a6a7c18ecc19a90fbc18d28
parentde577de9ed8cf40a45eaf0c35f01be633d447a63
Enable classes for reproducible-builds in OE

The reproducible_build class will use the SOURCE_DATE_EPOCH
mechanism to preset a known timestamp during
compilation of binaries to help ensure
binary reproducability.

With this mechanism we reach very good reuse across rebuilds
with basically just 2 packages changed (and these are expected):

dl9pf@elrond:~/repobuild-local/build-x86-64-repro> bitbake agl-demo-platform-crosssdk

Sstate summary: Wanted 17 Found 8 Missed 9 Current 4282 (47% match, 99% complete)
--------------------------------------------------------------------^^^ !!

NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 10048 tasks of which 10025 didn't need to be rerun and all succeeded.
-------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^  just 13 tasks !!
NOTE: Build completion summary:
NOTE:   do_populate_sysroot: 0.0% sstate reuse(0 setscene, 1 scratch)
NOTE:   do_package_qa: 0.0% sstate reuse(0 setscene, 2 scratch)
NOTE:   do_package: 0.0% sstate reuse(0 setscene, 1 scratch)
NOTE:   do_packagedata: 0.0% sstate reuse(0 setscene, 1 scratch)
NOTE:   do_package_write_rpm: 0.0% sstate reuse(0 setscene, 2 scratch)
NOTE: Writing buildhistory

dl9pf@elrond:~/repobuild-local/build-x86-64-repro> buildhistory-diff HEAD^ | sort
Changes to images/qemux86_64/glibc/agl-demo-platform-crosssdk (files-in-image.txt):
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/checksum_data was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/checksum_type was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/command_line was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/from_repo was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/installed_by was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/reason was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64/releasever was added
  /var/lib/dnf/yumdb/d/4e1ef2f15bdf12ac2dcba29f87bee13623f1676d-distro-build-manifest-1.0-r0-qemux86_64 was added
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/checksum_data was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/checksum_type was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/command_line was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/from_repo was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/installed_by was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/reason was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64/releasever was removed
  /var/lib/dnf/yumdb/d/8ea1dc59afc8b04e7a013cdc38eb3bbaddeb37f6-distro-build-manifest-1.0-r0-qemux86_64 was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/checksum_data was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/checksum_type was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/command_line was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/from_repo was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/installed_by was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/reason was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch/releasever was removed
  /var/lib/dnf/yumdb/o/3198ffc9414564ec5ff5f321629f314fac69fc78-os-release-1.0-r0-noarch was removed
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/checksum_data was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/checksum_type was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/command_line was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/from_repo was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/installed_by was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/reason was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch/releasever was added
  /var/lib/dnf/yumdb/o/7d7c5992be19f3a2a9e2077fb422129ab40d49ea-os-release-1.0-r0-noarch was added

Later, we will bump the default EPOCH timestamps
with the releases/point releases.

References: https://reproducible-builds.org/

Should be backported to halibut as well.

v2: add change to distro configuration

Bug-AGL: SPEC-2769

Change-Id: I83e1d92eadf838291f03a184a804a9b8b72f7809
Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
meta-agl-distro/conf/distro/poky-agl.conf