From 69074fbee24ecfcaf304cfcb07cadf78b3ec2cda Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 14 Mar 2016 15:28:03 +0100 Subject: Use consistent mtime timestamps This patch adds consistent_timestamps.bbclass which is a hackish way of resembling reproducible build - byte-for-byte identical binary packages from a given source. Naturally this is not a complete solution, but it fixes the issue described below. Real solution for this should be done by the Yocto project itself. In OSTree each new update is checked out with all files and directories having mtime=0, this breaks fontconfig cache validity check (mtime embedded in the cache should match the containing directories mtime). Yocto generates this cache file in poky/meta/lib/oe/rootfs.py::create by calling self._run_intercepts() after all packages have been installed. These timestamps are nondeterministic as they depend on current system time. By using ROOTFS_POSTINSTALL_COMMAND hook we can ensure that these embedded time stamps have a known time, which is a basic property of reproducible build system. Change-Id: Ib2f130248f2e65db391d2b2f19ab5dac30a2cfb0 Task-number: QTEE-1081 Reviewed-by: Samuli Piippo --- classes/consistent_timestamps.bbclass | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 classes/consistent_timestamps.bbclass (limited to 'classes/consistent_timestamps.bbclass') diff --git a/classes/consistent_timestamps.bbclass b/classes/consistent_timestamps.bbclass new file mode 100644 index 0000000..e82f77c --- /dev/null +++ b/classes/consistent_timestamps.bbclass @@ -0,0 +1,27 @@ +############################################################################## +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Boot to Qt meta layer. +## +## $QT_BEGIN_LICENSE:COMM$ +## +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## $QT_END_LICENSE$ +## +############################################################################## + +update_file_timestaps() { + # Update file timestamp to 0 seconds since Epoch time. + TZ=UTC find ${IMAGE_ROOTFS} -exec touch -h -m -t '197001010000' {} \; +} + +ROOTFS_POSTINSTALL_COMMAND += "update_file_timestaps; " -- cgit v1.2.3-54-g00ecf