diff mbox series

[meta-oe] thrift: support reproducible builds

Message ID 20251120051404.2231799-1-hongxu.jia@windriver.com
State Under Review
Headers show
Series [meta-oe] thrift: support reproducible builds | expand

Commit Message

Hongxu Jia Nov. 20, 2025, 5:14 a.m. UTC
In order to support reproducible builds [1], while using bison
to generate source code, add COMPILE_FLAGS --file-prefix-map [2]
to remove build path prefix and source path prefix in the generated
header file.

[1] https://reproducible-builds.org/
[2] https://cgit.git.savannah.gnu.org/cgit/bison.git/commit/?id=dd878d18519689c7bbcd72de4c9f9e53085a3cbf

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta-oe/conf/layer.conf                       |  1 -
 .../0001-support-reproducible-builds.patch    | 49 +++++++++++++++++++
 .../thrift/thrift_0.22.0.bb                   |  1 +
 3 files changed, 50 insertions(+), 1 deletion(-)
 create mode 100644 meta-oe/recipes-connectivity/thrift/thrift/0001-support-reproducible-builds.patch
diff mbox series

Patch

diff --git a/meta-oe/conf/layer.conf b/meta-oe/conf/layer.conf
index 1f55f5bee1..186ff9a488 100644
--- a/meta-oe/conf/layer.conf
+++ b/meta-oe/conf/layer.conf
@@ -200,7 +200,6 @@  OEQA_REPRODUCIBLE_EXCLUDED_PACKAGES += " \
     libsource-highlight-dbg \
     libsource-highlight-dev \
     libsource-highlight-src \
-    libthrift-c-glib-zlib-src \
     libvncserver-dev \
     libwebsockets-testapps \
     libwmf \
diff --git a/meta-oe/recipes-connectivity/thrift/thrift/0001-support-reproducible-builds.patch b/meta-oe/recipes-connectivity/thrift/thrift/0001-support-reproducible-builds.patch
new file mode 100644
index 0000000000..7fad4ddaa6
--- /dev/null
+++ b/meta-oe/recipes-connectivity/thrift/thrift/0001-support-reproducible-builds.patch
@@ -0,0 +1,49 @@ 
+From d4c19c3c88200c49d48c9d47971977627f98f51b Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 20 Nov 2025 11:43:45 +0800
+Subject: [PATCH] support reproducible builds
+
+In order to support reproducible builds [1], while using bison to generate
+source code, add COMPILE_FLAGS --file-prefix-map [2] to remove build path
+prefix and source path prefix in the generated header file.
+
+[1] https://reproducible-builds.org/
+[2] https://cgit.git.savannah.gnu.org/cgit/bison.git/commit/?id=dd878d18519689c7bbcd72de4c9f9e53085a3cbf
+
+Upstream-Status: Submitted [https://github.com/apache/thrift/pull/3246]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ compiler/cpp/CMakeLists.txt       | 2 +-
+ compiler/cpp/tests/CMakeLists.txt | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/compiler/cpp/CMakeLists.txt b/compiler/cpp/CMakeLists.txt
+index 4c1c2c5..a1a8fcb 100644
+--- a/compiler/cpp/CMakeLists.txt
++++ b/compiler/cpp/CMakeLists.txt
+@@ -30,7 +30,7 @@ find_package(BISON REQUIRED)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/)
+ 
+ # Create flex and bison files and build the lib parse static library
+-BISON_TARGET(thrifty ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc)
++BISON_TARGET(thrifty ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc COMPILE_FLAGS "--file-prefix-map=${CMAKE_BINARY_DIR}='' --file-prefix-map=${CMAKE_SOURCE_DIR}=''")
+ FLEX_TARGET(thriftl ${CMAKE_CURRENT_SOURCE_DIR}/src/thrift/thriftl.ll ${CMAKE_CURRENT_BINARY_DIR}/thrift/thriftl.cc)
+ ADD_FLEX_BISON_DEPENDENCY(thriftl thrifty)
+ 
+diff --git a/compiler/cpp/tests/CMakeLists.txt b/compiler/cpp/tests/CMakeLists.txt
+index 6a078ec..39f5bb2 100644
+--- a/compiler/cpp/tests/CMakeLists.txt
++++ b/compiler/cpp/tests/CMakeLists.txt
+@@ -45,7 +45,7 @@ find_package(BISON REQUIRED)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/)
+ 
+ # Create flex and bison files and build the lib parse static library
+-BISON_TARGET(thrifty ${THRIFT_COMPILER_SOURCE_DIR}/src/thrift/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc)
++BISON_TARGET(thrifty ${THRIFT_COMPILER_SOURCE_DIR}/src/thrift/thrifty.yy ${CMAKE_CURRENT_BINARY_DIR}/thrift/thrifty.cc COMPILE_FLAGS "--file-prefix-map=${CMAKE_BINARY_DIR}='' --file-prefix-map=${CMAKE_SOURCE_DIR}=''")
+ FLEX_TARGET(thriftl ${THRIFT_COMPILER_SOURCE_DIR}/src/thrift/thriftl.ll ${CMAKE_CURRENT_BINARY_DIR}/thrift/thriftl.cc)
+ ADD_FLEX_BISON_DEPENDENCY(thriftl thrifty)
+ 
+-- 
+2.34.1
+
diff --git a/meta-oe/recipes-connectivity/thrift/thrift_0.22.0.bb b/meta-oe/recipes-connectivity/thrift/thrift_0.22.0.bb
index 9c50317eff..8ca1d0085e 100644
--- a/meta-oe/recipes-connectivity/thrift/thrift_0.22.0.bb
+++ b/meta-oe/recipes-connectivity/thrift/thrift_0.22.0.bb
@@ -10,6 +10,7 @@  DEPENDS = "thrift-native boost flex-native bison-native openssl zlib"
 
 SRC_URI = "https://downloads.apache.org/${BPN}/${PV}/${BP}.tar.gz \
            file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch \
+           file://0001-support-reproducible-builds.patch \
            "
 SRC_URI[sha256sum] = "794a0e455787960d9f27ab92c38e34da27e8deeda7a5db0e59dc64a00df8a1e5"