From 5c4d183e5ff2228b8daacac090e1176bb198d845 Mon Sep 17 00:00:00 2001 From: Jan-Simon Möller Date: Thu, 22 Aug 2019 23:23:50 +0200 Subject: Enable classes for reproducible-builds in OE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- meta-agl-distro/conf/distro/poky-agl.conf | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'meta-agl-distro') diff --git a/meta-agl-distro/conf/distro/poky-agl.conf b/meta-agl-distro/conf/distro/poky-agl.conf index bad7297d3..ef0e7f7ce 100644 --- a/meta-agl-distro/conf/distro/poky-agl.conf +++ b/meta-agl-distro/conf/distro/poky-agl.conf @@ -26,6 +26,15 @@ DISTRO_BRANCH_VERSION_TAG = "${DISTRO_CODENAME}/${@'${DISTRO_VERSION}'.replace(' AGL_APP_REVISION_aglrelease := "refs/tags/${DISTRO_BRANCH_VERSION_TAG}" AGL_DEFAULT_REVISION_aglrelease := "refs/tags/${DISTRO_BRANCH_VERSION_TAG}" +# reproducible builds: +# enable the flag +BUILD_REPRODUCIBLE_BINARIES = "1" +# Set the desired timestamps +export SOURCE_DATE_EPOCH = "1583798400" +REPRODUCIBLE_TIMESTAMP_ROOTFS = "1583798400" +# inherit the class +INHERIT += "reproducible_build" + # SDK SDK_VENDOR = "-aglsdk" -- cgit 1.2.3-korg