From: Christopher Clark <[email protected]>

Only use git to set SOURCE_DATE_EPOCH if ${S} is the top level of a git
repository.

Fixes the following errors with the prior logic when building a kernel
that is not obtained from a git repository:

1. With TMPDIR set to a directory outside any git repository on a
mounted filesystem, reproducible builds fail in do_compile with this git
error:

  fatal: not a git repository (or any parent up to mount point <abspath>)
  Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

aborting before the error handling logic.

2. With TMPDIR located within a subdirectory of a git repository, the
SOURCE_DATE_EPOCH timestamp would be that of said repository rather than
that of the kernel.

Signed-off-by: Christopher Clark <[email protected]>
---
 meta/classes/kernel.bbclass | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 0eadd3efb8..2603f24709 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -296,10 +296,14 @@ kernel_do_compile() {
                if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = 
"0" ]; then
                        olddir=`pwd`
                        cd ${S}
-                       SOURCE_DATE_EPOCH=`git log  -1 --pretty=%ct`
-                       # git repo not guaranteed, so fall back to 
REPRODUCIBLE_TIMESTAMP_ROOTFS
-                       if [ $? -ne 0 ]; then
-                               
SOURCE_DATE_EPOCH=${REPRODUCIBLE_TIMESTAMP_ROOTFS}
+                       # This kernel dir is not necessarily a git repo and we
+                       # must ensure that git does not incorrectly query a
+                       # repository in a parent directory.
+                       GIT_TOP=`git rev-parse --show-toplevel 2>/dev/null || 
echo ""`
+                       if [ "${S}" = "${GIT_TOP}" ]; then
+                               SOURCE_DATE_EPOCH=`git log  -1 --pretty=%ct`
+                       else
+                               
SOURCE_DATE_EPOCH="${REPRODUCIBLE_TIMESTAMP_ROOTFS}"
                        fi
                        cd $olddir
                fi
-- 
2.17.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to