tflite: patcher: Make git commits date-independent
Sets a fixed date for the initial commit and uses
`--committer-date-is-author-date` to ensure the ejected repo is
date-independent, and produces identical commit hashes across runs.
This reduces noise in the generated patches. All existing patches are
regenerated with the new stable hashes.
BUG=b:359512663
TEST=Run `./script/patcher.py eject` twice and verify commit hashes
Change-Id: Ibb5bb07bdf6e0e2a45a328194ad0a466c486ac6b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/tflite/+/5940226
Tested-by: Shik Chen <shik@chromium.org>
Commit-Queue: Tommy Chiang <ototot@google.com>
Reviewed-by: Tommy Chiang <ototot@google.com>
Auto-Submit: Shik Chen <shik@chromium.org>
diff --git a/patch/0001-bazel-toolchains.patch b/patch/0001-bazel-toolchains.patch
index 5b350ef..17a6ae0 100644
--- a/patch/0001-bazel-toolchains.patch
+++ b/patch/0001-bazel-toolchains.patch
@@ -1,4 +1,4 @@
-From cda8d56f74ed2eadb390850123078b10a3cd384d Mon Sep 17 00:00:00 2001
+From bdc2d751eedc4995a3e8bec87e31c5dec1c5726b Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 17:47:24 +0800
Subject: [PATCH] Remove unneeded repositories
diff --git a/patch/0002-ashmem-create.patch b/patch/0002-ashmem-create.patch
index d84d7e3..3aa2d8a 100644
--- a/patch/0002-ashmem-create.patch
+++ b/patch/0002-ashmem-create.patch
@@ -1,4 +1,4 @@
-From 33c983c0ffd7c91e032ec32546bf7864b12c71b6 Mon Sep 17 00:00:00 2001
+From e84f5a519df0a5baba71ae722529d56908cc5a93 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 17:55:33 +0800
Subject: [PATCH] Fix ASharedMemory_create in nnapi
diff --git a/patch/0003-nnapi-delegate.patch b/patch/0003-nnapi-delegate.patch
index 19fa15f..295625a 100644
--- a/patch/0003-nnapi-delegate.patch
+++ b/patch/0003-nnapi-delegate.patch
@@ -1,4 +1,4 @@
-From bdf22b505b912f5aa10421e46ee0ff9b75b92ac2 Mon Sep 17 00:00:00 2001
+From 2609a35a4a1a4e71c8c5702bed5be28ffc9c7b56 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 17:58:05 +0800
Subject: [PATCH] Force enable NnApiDelegate for ChromeOS.
diff --git a/patch/0004-gpu-delegate.patch b/patch/0004-gpu-delegate.patch
index 00d4074..7b3f9aa 100644
--- a/patch/0004-gpu-delegate.patch
+++ b/patch/0004-gpu-delegate.patch
@@ -1,4 +1,4 @@
-From aa11974612407311efb226f2cdf3aa9d23bccc0c Mon Sep 17 00:00:00 2001
+From 16cf01380c78fd469d0912e99ea10cdfd8ee84e8 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 17:59:37 +0800
Subject: [PATCH] Enable Gpu Delegate for ChromeOS.
diff --git a/patch/0005-nnapi-loading-errors.patch b/patch/0005-nnapi-loading-errors.patch
index ddb66f8..6670864 100644
--- a/patch/0005-nnapi-loading-errors.patch
+++ b/patch/0005-nnapi-loading-errors.patch
@@ -1,4 +1,4 @@
-From ca037e8b301ea1a91b02b908c251a8689aca1a2b Mon Sep 17 00:00:00 2001
+From ebbfd6b1101e74d15574c3f7b2c0914df92b940c Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:00:33 +0800
Subject: [PATCH] Fix NNAPI loading error
diff --git a/patch/0006-remove-llvm-repo.patch b/patch/0006-remove-llvm-repo.patch
index 0c86f78..135d95c 100644
--- a/patch/0006-remove-llvm-repo.patch
+++ b/patch/0006-remove-llvm-repo.patch
@@ -1,4 +1,4 @@
-From bf64f72f47a127ab927ee8f85fb184ce0af47b79 Mon Sep 17 00:00:00 2001
+From c7cbf89f4e75c2091ee494f71b6e6922d52866ab Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:01:42 +0800
Subject: [PATCH] Remove LLVM from workspace
diff --git a/patch/0007-Convolution2DTransposeBias.patch b/patch/0007-Convolution2DTransposeBias.patch
index 282a90a..c3b449c 100644
--- a/patch/0007-Convolution2DTransposeBias.patch
+++ b/patch/0007-Convolution2DTransposeBias.patch
@@ -1,4 +1,4 @@
-From d64c858ae41f755471df3c00109afe026b482eb8 Mon Sep 17 00:00:00 2001
+From 5bcf271508b2293af3fd2de27aca38183f9d75d4 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:04:20 +0800
Subject: [PATCH] Support Convolution2DTransposeBias custom op
diff --git a/patch/0008-nnapi-Convolution2DTransposeBias.patch b/patch/0008-nnapi-Convolution2DTransposeBias.patch
index caa09fa..60f484f 100644
--- a/patch/0008-nnapi-Convolution2DTransposeBias.patch
+++ b/patch/0008-nnapi-Convolution2DTransposeBias.patch
@@ -1,4 +1,4 @@
-From f8ab5c447bb7a77c2a0ecf748d43fe0ba9f5d6af Mon Sep 17 00:00:00 2001
+From 4aa6669b85746436929c19dee88e69e6f716746f Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:05:59 +0800
Subject: [PATCH] Implement Convolution2DTransposeBias in NNAPI delegate
diff --git a/patch/0009-ruy-amd-cpu.patch b/patch/0009-ruy-amd-cpu.patch
index 081cb8f..7285fd1 100644
--- a/patch/0009-ruy-amd-cpu.patch
+++ b/patch/0009-ruy-amd-cpu.patch
@@ -1,4 +1,4 @@
-From bf9fba29265bf0e87a58bdbeca048e61d2529ff9 Mon Sep 17 00:00:00 2001
+From e8c07c006869046296f8fc0372547afb7db2a049 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:08:07 +0800
Subject: [PATCH] Fix cpuinfo on some AMD model
diff --git a/patch/0010-memory-usage-monitor.patch b/patch/0010-memory-usage-monitor.patch
index 68c7284..11c6313 100644
--- a/patch/0010-memory-usage-monitor.patch
+++ b/patch/0010-memory-usage-monitor.patch
@@ -1,4 +1,4 @@
-From 755abd4ed3dfde4069c862de79b4f729dd72a790 Mon Sep 17 00:00:00 2001
+From e8b2e74fcadb9e21d0b58a4a347afffc596e824e Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:10:14 +0800
Subject: [PATCH] Include memory usage monitor
diff --git a/patch/0011-absl-log.patch b/patch/0011-absl-log.patch
index 9d8a94e..96c0322 100644
--- a/patch/0011-absl-log.patch
+++ b/patch/0011-absl-log.patch
@@ -1,4 +1,4 @@
-From 18699d1c4d2999878c9e9d9dae5dd930ff055345 Mon Sep 17 00:00:00 2001
+From 5051a0d9a18c0708a2c109d7d331f19220c77928 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:11:43 +0800
Subject: [PATCH] Add system lib BUILD rules for absl/log
diff --git a/patch/0012-absl-base-prefetch.patch b/patch/0012-absl-base-prefetch.patch
index 5d96550..d13ae3e 100644
--- a/patch/0012-absl-base-prefetch.patch
+++ b/patch/0012-absl-base-prefetch.patch
@@ -1,4 +1,4 @@
-From 540afb47a0eee0d9bfcf066980ce35cac9ee9076 Mon Sep 17 00:00:00 2001
+From 3f4c88e118184bcda13b38ab78ba979a56c9702b Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:12:37 +0800
Subject: [PATCH] Add bazel rule for absl/base:prefetch
diff --git a/patch/0013-cl-khr-command-buffer.patch b/patch/0013-cl-khr-command-buffer.patch
index 104b84c..16d75f8 100644
--- a/patch/0013-cl-khr-command-buffer.patch
+++ b/patch/0013-cl-khr-command-buffer.patch
@@ -1,4 +1,4 @@
-From ca43de6753a8028d9cb288f8eb37d0c9ac148285 Mon Sep 17 00:00:00 2001
+From b8b5301dc98d90333682a4d26d69a2a601793177 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:13:53 +0800
Subject: [PATCH] Use cl_khr_command_buffer extension with clvk
diff --git a/patch/0014-xnnpack-disable-latest-ops.patch b/patch/0014-xnnpack-disable-latest-ops.patch
index 9d11f18..05813bb 100644
--- a/patch/0014-xnnpack-disable-latest-ops.patch
+++ b/patch/0014-xnnpack-disable-latest-ops.patch
@@ -1,4 +1,4 @@
-From 0324d7d35699e46ee8cd74231a306a0cc390baa8 Mon Sep 17 00:00:00 2001
+From 495cf72922f638c75430a91f5ca800b73166bfde Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:14:26 +0800
Subject: [PATCH] Disable latest ops in xnnpack for b/352513578
diff --git a/patch/0015-cl-fast-relaxed-math.patch b/patch/0015-cl-fast-relaxed-math.patch
index 2e593aa..f9149d0 100644
--- a/patch/0015-cl-fast-relaxed-math.patch
+++ b/patch/0015-cl-fast-relaxed-math.patch
@@ -1,4 +1,4 @@
-From 3a58d00d43cc577b8deb8730e7b6218599e3c810 Mon Sep 17 00:00:00 2001
+From 20114f119b4e1e8c825e094fc8d0365bfddcbaf2 Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:15:12 +0800
Subject: [PATCH] Use fast relaxed math on CLVK
diff --git a/patch/0016-dts-fp16-mode.patch b/patch/0016-dts-fp16-mode.patch
index 4e72b64..d2bf24b 100644
--- a/patch/0016-dts-fp16-mode.patch
+++ b/patch/0016-dts-fp16-mode.patch
@@ -1,4 +1,4 @@
-From 1b6dba3630324c58e4b8ff791b5d4f3509a869e0 Mon Sep 17 00:00:00 2001
+From d9b2ca61b9a5a0afd02b48a90891a9be25f6860d Mon Sep 17 00:00:00 2001
From: TFLite Patcher <tflite@localhost>
Date: Fri, 18 Oct 2024 18:15:55 +0800
Subject: [PATCH] Backport fp16 DTS testing mode from upstream
diff --git a/patch/0017-Add-cros-mtk-pre-compile-custom-op.patch b/patch/0017-Add-cros-mtk-pre-compile-custom-op.patch
index c464a1b..2e67ac6 100644
--- a/patch/0017-Add-cros-mtk-pre-compile-custom-op.patch
+++ b/patch/0017-Add-cros-mtk-pre-compile-custom-op.patch
@@ -1,4 +1,4 @@
-From 94fbe6f15c5ea1519678e4cbbef4c36abeb8d620 Mon Sep 17 00:00:00 2001
+From 678798b2c0a7b17e85470cc4d19d759150bded80 Mon Sep 17 00:00:00 2001
From: Yi Chou <yich@google.com>
Date: Fri, 23 Aug 2024 13:13:34 +0800
Subject: [PATCH] Add cros-mtk-pre-compile custom op
diff --git a/patch/0018-stop-dts-validation-early.patch b/patch/0018-stop-dts-validation-early.patch
index 698849d..42427a3 100644
--- a/patch/0018-stop-dts-validation-early.patch
+++ b/patch/0018-stop-dts-validation-early.patch
@@ -1,4 +1,4 @@
-From 5bdb4ef6decceebcde53b04d69c50e92502acbb7 Mon Sep 17 00:00:00 2001
+From dcaa5c749abd49ecc8fd9cba755e86d53ce4919b Mon Sep 17 00:00:00 2001
From: Tommy Chiang <ototot@google.com>
Date: Mon, 7 Oct 2024 02:04:45 -0700
Subject: [PATCH] Stop validation if no delegates have been applied
diff --git a/patch/0019-dts-powopmodel-broadcastfloattest.patch b/patch/0019-dts-powopmodel-broadcastfloattest.patch
index 9ae5bcb..997b43e 100644
--- a/patch/0019-dts-powopmodel-broadcastfloattest.patch
+++ b/patch/0019-dts-powopmodel-broadcastfloattest.patch
@@ -1,4 +1,4 @@
-From c62215c671cb660ce70c01c8446acf904a7144ee Mon Sep 17 00:00:00 2001
+From a0258440c8d0d67cd7993dfa080aeea63a054785 Mon Sep 17 00:00:00 2001
From: Tommy Chiang <ototot@google.com>
Date: Tue, 8 Oct 2024 04:08:10 -0700
Subject: [PATCH] Use ArrayFloatNear to check values in
diff --git a/patch/0020-dts-rsqrtint16.patch b/patch/0020-dts-rsqrtint16.patch
index f49ccc1..01f32da 100644
--- a/patch/0020-dts-rsqrtint16.patch
+++ b/patch/0020-dts-rsqrtint16.patch
@@ -1,4 +1,4 @@
-From 4dfaaa3d0e5b00c3bd06bb640d7a2d365f457779 Mon Sep 17 00:00:00 2001
+From 89af599590f9793eabf575ab185dc8ea1f577e95 Mon Sep 17 00:00:00 2001
From: Tommy Chiang <ototot@google.com>
Date: Wed, 9 Oct 2024 00:49:13 -0700
Subject: [PATCH] Fix inaccurate RsqrtInt16 test
diff --git a/patch/0021-dts-stridedsliceoptests.patch b/patch/0021-dts-stridedsliceoptests.patch
index df9c8d3..4bcd839 100644
--- a/patch/0021-dts-stridedsliceoptests.patch
+++ b/patch/0021-dts-stridedsliceoptests.patch
@@ -1,4 +1,4 @@
-From 9235163e561ea42c2d675b3385c0b9b8377fe1b1 Mon Sep 17 00:00:00 2001
+From b66cdeb2fa5fbf6e5db546fd58168429ff682ca6 Mon Sep 17 00:00:00 2001
From: Tommy Chiang <ototot@google.com>
Date: Wed, 9 Oct 2024 07:34:39 -0700
Subject: [PATCH] Use ArrayFloatNear to check values in StridedSliceOpTests
diff --git a/patch/0022-dts-rsqrt-nan.patch b/patch/0022-dts-rsqrt-nan.patch
index bd28269..866cec1 100644
--- a/patch/0022-dts-rsqrt-nan.patch
+++ b/patch/0022-dts-rsqrt-nan.patch
@@ -1,4 +1,4 @@
-From db0058d2b02f6527cbb4ac0baf7846ebcc22c3aa Mon Sep 17 00:00:00 2001
+From a12ee6fe8ca140f83de06c9798bfd40f4049643f Mon Sep 17 00:00:00 2001
From: Tommy Chiang <ototot@google.com>
Date: Wed, 16 Oct 2024 22:37:09 -0700
Subject: [PATCH] rsqrt should report error when the input contains negative
diff --git a/script/patcher.py b/script/patcher.py
index d2e3d48..5f39a77 100755
--- a/script/patcher.py
+++ b/script/patcher.py
@@ -8,15 +8,23 @@
import argparse
import functools
import logging
+import os
from pathlib import Path
import re
import shlex
import subprocess
import sys
-from typing import List, Optional, Tuple
+from typing import Dict, List, Optional, Tuple
import xml.etree.ElementTree
+# Set a fixed random date to ensure a stable commit hash. The hash is derived
+# from both the tree content and the commit object, which includes the author
+# and committer dates.
+# The commit object can be inspected with `git cat-file -p $COMMIT_HASH`.
+INIT_COMMIT_DATE = "2024-10-01T00:00:00+08:00"
+
+
# TODO(shik): Extract common utilities into a module.
@@ -33,18 +41,32 @@
return " ".join(shlex.quote(c) for c in cmd)
-def run(args: List[str], *, cwd: Optional[Path] = None) -> int:
+def run(
+ args: List[str],
+ *,
+ cwd: Optional[Path] = None,
+ env: Optional[Dict[str, str]] = None,
+) -> int:
logging.debug("$ %s", shell_join(args))
if cwd is None:
cwd = get_workspace_root()
- return subprocess.check_call(args, cwd=cwd)
+ if env is not None:
+ env = {**os.environ, **env}
+ return subprocess.check_call(args, cwd=cwd, env=env)
-def check_output(args: List[str], *, cwd: Optional[Path] = None) -> str:
+def check_output(
+ args: List[str],
+ *,
+ cwd: Optional[Path] = None,
+ env: Optional[Dict[str, str]] = None,
+) -> str:
logging.debug("$ %s", shell_join(args))
if cwd is None:
cwd = get_workspace_root()
- return subprocess.check_output(args, text=True, cwd=cwd)
+ if env is not None:
+ env = {**os.environ, **env}
+ return subprocess.check_output(args, text=True, cwd=cwd, env=env)
def xml_get_value(el: xml.etree.ElementTree.Element, key="value") -> str:
@@ -121,6 +143,11 @@
"Initial commit from ejected repo",
],
cwd=repo,
+ env={
+ # https://git-scm.com/docs/git-commit/2.24.0#_date_formats
+ "GIT_COMMITTER_DATE": INIT_COMMIT_DATE,
+ "GIT_AUTHOR_DATE": INIT_COMMIT_DATE,
+ },
)
@@ -148,6 +175,7 @@
"git",
"am",
"--whitespace=nowarn", # Silent warning from upstream code
+ "--committer-date-is-author-date",
str(patch_path),
],
cwd=repo,