From 70f352c90cbb63497cc02847240b2d039083fd40 Mon Sep 17 00:00:00 2001 From: Oleksiy Obitotskyy Date: Mon, 22 Feb 2021 08:40:07 -0800 Subject: smartmontools: Improve reproducibility Backport changes added to master smartmontools. https://github.com/smartmontools/smartmontools/commit/24838916b4c0e91f5c897d44fcdeedb22848f684 Signed-off-by: Oleksiy Obitotskyy Signed-off-by: Khem Raj --- ...e.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch | 84 ++++++++++++++++++++++ .../smartmontools/smartmontools_7.2.bb | 1 + 2 files changed, 85 insertions(+) create mode 100644 meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch diff --git a/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch b/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch new file mode 100644 index 0000000000..87c0e1458e --- /dev/null +++ b/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch @@ -0,0 +1,84 @@ +From b621a313e0bc67803abfba18e1ae15e7a8b9b59f Mon Sep 17 00:00:00 2001 +From: Oleksiy Obitotskyy +Date: Mon, 22 Feb 2021 17:21:33 +0200 +Subject: [PATCH] smartmontools: Improve reproducibility + +Backport changes added to master smartmontools. +https://github.com/smartmontools/smartmontools/commit/24838916b4c0e91f5c897d44fcdeedb22848f684 + +Upstream-Status: Backported +Signed-off-by: Oleksiy Obitotskyy +--- + ChangeLog | 8 ++++++++ + configure.ac | 12 ++++++++++++ + utility.cpp | 10 ++++++++++ + 3 files changed, 30 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 39eac2d..6a3b4ee 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,13 @@ + $Id: ChangeLog 5155 2020-12-30 16:49:18Z chrfranke $ + ++2021-02-07 Christian Franke ++ ++ Improve reproducibility if SOURCE_DATE_EPOCH if set (GH pull/89). ++ configure.ac: Define SOURCE_DATE_EPOCH in CPPFLAGS. ++ utility.cpp: Print SOURCE_DATE_EPOCH value if specified. ++ Don't include configure arguments then. ++ cppcheck.sh: Silence related 'ConfigurationNotChecked' message. ++ + 2020-12-30 Christian Franke + + smartmontools 7.2 +diff --git a/configure.ac b/configure.ac +index ee6f0e5..c37c9bc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -61,6 +61,18 @@ case "${host}" in + ;; + esac + ++AC_MSG_CHECKING([whether reproducible build is selected (SOURCE_DATE_EPOCH)]) ++res=no ++if test -n "$SOURCE_DATE_EPOCH"; then ++ res=yes ++ test -z "`echo "$SOURCE_DATE_EPOCH" | sed 's,[[0-9]]*,,'`" || res=error ++fi ++AC_MSG_RESULT([$res]) ++case $res in ++ error) AC_MSG_ERROR([Malformed SOURCE_DATE_EPOCH]) ;; ++ yes) CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-DSOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH" ;; ++esac ++ + # Check for SVN. + AC_MSG_CHECKING([whether this is a build from SVN]) + is_svn_build=no +diff --git a/utility.cpp b/utility.cpp +index 0483c6f..8ab38c9 100644 +--- a/utility.cpp ++++ b/utility.cpp +@@ -134,9 +134,19 @@ std::string format_version_info(const char * prog_name, bool full /*= false*/) + #endif + "\n" + "smartmontools configure arguments:" ++#ifdef SOURCE_DATE_EPOCH ++ " [hidden in reproducible builds]\n" ++ "reproducible build SOURCE_DATE_EPOCH: " ++#endif + ; ++#ifdef SOURCE_DATE_EPOCH ++ char ts[32]; struct tm tmbuf; ++ strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S", time_to_tm_local(&tmbuf, SOURCE_DATE_EPOCH)); ++ info += strprintf("%u (%s)", (unsigned)SOURCE_DATE_EPOCH, ts); ++#else + info += (sizeof(SMARTMONTOOLS_CONFIGURE_ARGS) > 1 ? + SMARTMONTOOLS_CONFIGURE_ARGS : " [no arguments given]"); ++#endif + info += '\n'; + + return info; +-- +2.25.1 + diff --git a/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb b/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb index 3c01e589ca..cd97933592 100644 --- a/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb +++ b/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb @@ -16,6 +16,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/smartmontools/smartmontools-${PV}.tar.gz \ file://initd.smartd \ file://smartmontools.default \ file://smartd.service \ + file://0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch \ " PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'libcap-ng selinux', d)}" -- cgit 1.2.3-korg