From a74ff6dda10d6f68f07cfd342bcd93789b56a5be Mon Sep 17 00:00:00 2001 From: Alper Ak Date: Thu, 24 Jul 2025 11:50:41 +0300 Subject: avro-c++: Fix build for 32-bit targets Building avro-c++ for 32-bit targets currently fails due to the following warnings being treated as errors: - `useless-cast` in Symbol.cc - `conversion` in FileStream.cc These are promoted to errors because of `-Werror` in the project's build flags. Fix: lib32-avro-c++/1.12/sources/avro-c++-1.12/lang/c++/impl/parsing/Symbol.cc:91:27: error: useless cast to type 'int' [-Werror=useless-cast] 91 | adj.push_back(static_cast(it - rs.begin())); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors lib32-avro-c++/1.12/sources/avro-c++-1.12/lang/c++/impl/FileStream.cc:208:41: error: conversion from 'int64_t' {aka 'long long int'} to 'size_t' {aka 'unsigned int'} may change value [-Werror=conversion] 208 | in_->seek(position - byteCount_ - available_); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ lib32-avro-c++/1.12/sources/avro-c++-1.12/lang/c++/impl/FileStream.cc:209:22: error: conversion from 'int64_t' {aka 'long long int'} to 'size_t' {aka 'unsigned int'} may change value [-Werror=conversion] 209 | byteCount_ = position; | ^~~~~~~~ cc1plus: all warnings being treated as errors Signed-off-by: Alper Ak Signed-off-by: Khem Raj --- meta-oe/recipes-support/avro/avro-c++_1.12.bb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meta-oe/recipes-support/avro/avro-c++_1.12.bb b/meta-oe/recipes-support/avro/avro-c++_1.12.bb index 726a861bc9..61aef88e13 100644 --- a/meta-oe/recipes-support/avro/avro-c++_1.12.bb +++ b/meta-oe/recipes-support/avro/avro-c++_1.12.bb @@ -26,4 +26,16 @@ do_configure:prepend() { cp -r ${UNPACKDIR}/_deps/fmt-src ${B}/_deps/ } +# Workaround for 32-bit build failures due to -Werror: +# 'useless-cast' in Symbol.cc and 'conversion' in FileStream.cc +# +# A patch has been submitted upstream: https://github.com/apache/avro/pull/3433 +# Once this or an equivalent fix is merged and the recipe upgraded, this can be removed. +# +# These errors don't occur when using Clang accordingly to upstream configuration and +# the workaround flags aren't recognized by Clang either. +# To avoid unnecessary warnings and keep the build clean across toolchains, the flags are conditionally added +# using the toolchain-gcc override. This makes it unnecessary to override anything for Clang. +CXXFLAGS:append:toolchain-gcc = " -Wno-error=useless-cast -Wno-error=conversion" + BBCLASSEXTEND = "native nativesdk" -- cgit v1.2.3-54-g00ecf