diff mbox series

[meta-python,1/3] python3-mlcommons-loadgen: support reproducibility

Message ID 20250926081026.3104475-1-hongxu.jia@windriver.com
State New
Headers show
Series [meta-python,1/3] python3-mlcommons-loadgen: support reproducibility | expand

Commit Message

Hongxu Jia Sept. 26, 2025, 8:10 a.m. UTC
Implement the SOURCE_DATE_EPOCH specification[1] for reproducible
builds. If SOURCE_DATE_EPOCH is set, use it as timestamp instead of the
current time.

[1] https://reproducible-builds.org/specs/source-date-epoch/

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 .../files/source-date-epoch.patch             | 41 +++++++++++++++++++
 .../python3-mlcommons-loadgen_5.1.0.bb        |  4 ++
 2 files changed, 45 insertions(+)
 create mode 100644 meta-python/recipes-devtools/python3-mlcommons-loadgen/files/source-date-epoch.patch
diff mbox series

Patch

diff --git a/meta-python/recipes-devtools/python3-mlcommons-loadgen/files/source-date-epoch.patch b/meta-python/recipes-devtools/python3-mlcommons-loadgen/files/source-date-epoch.patch
new file mode 100644
index 0000000000..32e529d483
--- /dev/null
+++ b/meta-python/recipes-devtools/python3-mlcommons-loadgen/files/source-date-epoch.patch
@@ -0,0 +1,41 @@ 
+From dd7925397b84c2a327cd4594edba9f7ca5acef61 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 26 Sep 2025 14:02:23 +0800
+Subject: [PATCH] Honor the SOURCE_DATE_EPOCH variable
+
+Implement the SOURCE_DATE_EPOCH specification[1] for reproducible
+builds. If SOURCE_DATE_EPOCH is set, use it as timestamp instead of the
+current time.
+
+[1] https://reproducible-builds.org/specs/source-date-epoch/
+
+Upstream-Status: Submitted [https://github.com/mlcommons/inference/pull/2345]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ version_generator.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/version_generator.py b/version_generator.py
+index 2e75243..5202da9 100644
+--- a/version_generator.py
++++ b/version_generator.py
+@@ -110,8 +110,13 @@ def generate_loadgen_version_definitions(cc_filename, loadgen_root):
+     # Write the version into the function definition
+     ofile.write(func_def("Version", f"\"{version_contents}\""))
+ 
+-    date_time_now_local = datetime.datetime.now().isoformat()
+-    date_time_now_utc = datetime.datetime.utcnow().isoformat()
++    if os.environ.get('SOURCE_DATE_EPOCH', False):
++        source_date_epoch = int(os.environ['SOURCE_DATE_EPOCH'])
++        date_time_now_local = datetime.datetime.fromtimestamp(source_date_epoch).isoformat()
++        date_time_now_utc = datetime.datetime.fromtimestamp(source_date_epoch, tz=datetime.timezone.utc).isoformat()
++    else:
++        date_time_now_local = datetime.datetime.now().isoformat()
++        date_time_now_utc = datetime.datetime.utcnow().isoformat()
+     ofile.write(func_def("BuildDateLocal", '"' + date_time_now_local + '"'))
+     ofile.write(func_def("BuildDateUtc", '"' + date_time_now_utc + '"'))
+ 
+-- 
+2.34.1
+
diff --git a/meta-python/recipes-devtools/python3-mlcommons-loadgen/python3-mlcommons-loadgen_5.1.0.bb b/meta-python/recipes-devtools/python3-mlcommons-loadgen/python3-mlcommons-loadgen_5.1.0.bb
index abc47172c1..7bb2e9d4dd 100644
--- a/meta-python/recipes-devtools/python3-mlcommons-loadgen/python3-mlcommons-loadgen_5.1.0.bb
+++ b/meta-python/recipes-devtools/python3-mlcommons-loadgen/python3-mlcommons-loadgen_5.1.0.bb
@@ -14,6 +14,10 @@  DEPENDS = "python3-pybind11-native"
 
 inherit setuptools3 pypi
 
+SRC_URI += " \
+    file://source-date-epoch.patch \
+"
+
 PYPI_PACKAGE = "mlcommons_loadgen"
 UPSTREAM_CHECK_PYPI_PACKAGE = "mlcommons_loadgen"