diff mbox series

[meta-oe] minifi-cpp: fix reproducibility issue

Message ID 20250919033335.2338952-1-yi.zhao@windriver.com
State Accepted
Headers show
Series [meta-oe] minifi-cpp: fix reproducibility issue | expand

Commit Message

Yi Zhao Sept. 19, 2025, 3:33 a.m. UTC
Minifi-cpp will add a build identifier to the binary. If not specified,
a random build identifier will be generated for each build. This breaks
reproducibility. Set BUILD_IDENTIFIER to ${PV} to ensure the identifier
remains constant across builds.

Additionally, set BUILD_DATE to SOURCE_DATE_EPOCH to use reproducible
timestamp.

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 ...sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch | 34 +++++++++++++++++++
 .../minifi-cpp/minifi-cpp_0.99.1.bb           |  2 ++
 2 files changed, 36 insertions(+)
 create mode 100644 meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch

Comments

Yoann Congal Sept. 19, 2025, 10:07 a.m. UTC | #1
Hello,

Le ven. 19 sept. 2025 à 05:34, Yi Zhao via lists.openembedded.org <yi.zhao=
eng.windriver.com@lists.openembedded.org> a écrit :

> Minifi-cpp will add a build identifier to the binary. If not specified,
> a random build identifier will be generated for each build. This breaks
> reproducibility. Set BUILD_IDENTIFIER to ${PV} to ensure the identifier
> remains constant across builds.
>
> Additionally, set BUILD_DATE to SOURCE_DATE_EPOCH to use reproducible
> timestamp.
>
> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> ---
>  ...sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch | 34 +++++++++++++++++++
>  .../minifi-cpp/minifi-cpp_0.99.1.bb           |  2 ++
>  2 files changed, 36 insertions(+)
>  create mode 100644
> meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
>
> diff --git
> a/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
> b/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
> new file mode 100644
> index 0000000000..a61873e21a
> --- /dev/null
> +++
> b/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
> @@ -0,0 +1,34 @@
> +From ee9722731b3f9cfc3d8e338ab09bc0ad409a6941 Mon Sep 17 00:00:00 2001
> +From: Yi Zhao <yi.zhao@windriver.com>
> +Date: Thu, 18 Sep 2025 14:43:11 +0000
> +Subject: [PATCH] generateVersion.sh: set BUILD_DATE to SOURCE_DATE_EPOCH
> +
> +Use SOURCE_DATE_EPOCH to set BUILD_DATE to improve reproducibility.
> +
> +Upstream-Status: Inappropriate [embedded specific]
>

IMHO, this patch is appropriate for upstream. Reproducibility is a
desirable property even outside of OE.
Can you try sending it upstream?
You can reference https://reproducible-builds.org/docs/source-date-epoch/

Thanks!


> +
> +Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> +---
> + generateVersion.sh | 6 +++++-
> + 1 file changed, 5 insertions(+), 1 deletion(-)
> +
> +diff --git a/generateVersion.sh b/generateVersion.sh
> +index 0b50a16..96cc3ae 100755
> +--- a/generateVersion.sh
> ++++ b/generateVersion.sh
> +@@ -25,7 +25,11 @@ flags=$6
> + extensions=$7
> + buildident=$8
> +
> +-date=$(date +%s)
> ++if [ -n "${SOURCE_DATE_EPOCH}" ]; then
> ++  date=$(date -u -d "@${SOURCE_DATE_EPOCH}" +%s)
> ++else
> ++  date=$(date +%s)
> ++fi
> +
> + if [ -d "${src_dir}"/.git ]; then
> +   buildrev=$(git -C "${src_dir}" log -1 --pretty=format:"%H")
> +--
> +2.48.1
> +
> diff --git a/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
> b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
> index 0d9a503793..f4d206c154 100644
> --- a/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
> +++ b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
> @@ -28,6 +28,7 @@ SRC_URI = "git://
> github.com/apache/nifi-minifi-cpp.git;protocol=https;branch=mai
>
> file://0007-libsodium-aarch64-set-compiler-attributes-after-including-arm_.patch
> \
>
> file://0008-MINIFICPP-2553-CMP0065-OLD-removed-in-cmake-4.0-remo.patch \
>
> file://0001-Add-missing-include-for-malloc-free.patch;patchdir=thirdparty/fmt-src
> \
> +
>  file://0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch \
>             file://systemd-volatile.conf \
>             file://sysvinit-volatile.conf \
>            "
> @@ -114,6 +115,7 @@ EXTRA_OECMAKE = " \
>                   -DFETCHCONTENT_SOURCE_DIR_FMT=${S}/thirdparty/fmt-src \
>
> -DFETCHCONTENT_SOURCE_DIR_SPDLOG=${S}/thirdparty/spdlog-src \
>                   ${@bb.utils.contains('DISTRO_FEATURES', 'systemd',
> '-DENABLE_SYSTEMD=ON', '-DENABLE_SYSTEMD=OFF', d)} \
> +                 -DBUILD_IDENTIFIER=${PV} \
>                  "
>
>  PACKAGECONFIG ??= "libarchive expression-language"
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#119585):
> https://lists.openembedded.org/g/openembedded-devel/message/119585
> Mute This Topic: https://lists.openembedded.org/mt/115322768/4316185
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> yoann.congal@smile.fr]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch b/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
new file mode 100644
index 0000000000..a61873e21a
--- /dev/null
+++ b/meta-oe/recipes-extended/minifi-cpp/files/0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch
@@ -0,0 +1,34 @@ 
+From ee9722731b3f9cfc3d8e338ab09bc0ad409a6941 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Thu, 18 Sep 2025 14:43:11 +0000
+Subject: [PATCH] generateVersion.sh: set BUILD_DATE to SOURCE_DATE_EPOCH
+
+Use SOURCE_DATE_EPOCH to set BUILD_DATE to improve reproducibility.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ generateVersion.sh | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/generateVersion.sh b/generateVersion.sh
+index 0b50a16..96cc3ae 100755
+--- a/generateVersion.sh
++++ b/generateVersion.sh
+@@ -25,7 +25,11 @@ flags=$6
+ extensions=$7
+ buildident=$8
+ 
+-date=$(date +%s)
++if [ -n "${SOURCE_DATE_EPOCH}" ]; then
++  date=$(date -u -d "@${SOURCE_DATE_EPOCH}" +%s)
++else
++  date=$(date +%s)
++fi
+ 
+ if [ -d "${src_dir}"/.git ]; then
+   buildrev=$(git -C "${src_dir}" log -1 --pretty=format:"%H")
+-- 
+2.48.1
+
diff --git a/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
index 0d9a503793..f4d206c154 100644
--- a/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
+++ b/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.99.1.bb
@@ -28,6 +28,7 @@  SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git;protocol=https;branch=mai
            file://0007-libsodium-aarch64-set-compiler-attributes-after-including-arm_.patch \
            file://0008-MINIFICPP-2553-CMP0065-OLD-removed-in-cmake-4.0-remo.patch \
            file://0001-Add-missing-include-for-malloc-free.patch;patchdir=thirdparty/fmt-src \
+           file://0001-generateVersion.sh-set-BUILD_DATE-to-SOURCE_DATE_EPO.patch \
            file://systemd-volatile.conf \
            file://sysvinit-volatile.conf \
           "
@@ -114,6 +115,7 @@  EXTRA_OECMAKE = " \
                  -DFETCHCONTENT_SOURCE_DIR_FMT=${S}/thirdparty/fmt-src \
                  -DFETCHCONTENT_SOURCE_DIR_SPDLOG=${S}/thirdparty/spdlog-src \
                  ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DENABLE_SYSTEMD=ON', '-DENABLE_SYSTEMD=OFF', d)} \
+                 -DBUILD_IDENTIFIER=${PV} \
                 "
 
 PACKAGECONFIG ??= "libarchive expression-language"