diff mbox series

[meta-arago,master,3/4] tensorflow-lite: upgrade 2.18.0 -> 2.20.0

Message ID 20260304123221.1450993-4-p-deshmukh@ti.com
State Changes Requested
Delegated to: Ryan Eatmon
Headers show
Series Migrate GP AI Stacks | expand

Commit Message

Pratham Deshmukh March 4, 2026, 12:32 p.m. UTC
We are migrating Tensorflow-Lite from v2.18.0 to the
stable release v2.20.0

Key Changes:
 - Pin flatbuffers-native and protobuf-native to use the same version as
   TensorFlow Lite 2.20.0 to avoid version mismatch
 - Updated SRCREV for all the dependencies
 - Updated recipe to meet the build compatibilty

Signed-off-by: Pratham Deshmukh <p-deshmukh@ti.com>
---
 .../flatbuffers/flatbuffers-arago.inc         |  8 +++
 .../flatbuffers/flatbuffers.bbappend          |  4 ++
 .../protobuf/protobuf-arago.inc               | 18 +++++++
 .../protobuf/protobuf_%.bbappend              |  5 ++
 ...te_2.18.0.bb => tensorflow-lite_2.20.0.bb} | 52 ++++++++++---------
 5 files changed, 62 insertions(+), 25 deletions(-)
 create mode 100644 meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
 create mode 100644 meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
 create mode 100644 meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
 create mode 100644 meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
 rename meta-arago-extras/recipes-framework/tensorflow-lite/{tensorflow-lite_2.18.0.bb => tensorflow-lite_2.20.0.bb} (86%)

Comments

Andrew Davis March 4, 2026, 4:51 p.m. UTC | #1
On 3/4/26 6:32 AM, Pratham Deshmukh wrote:
> We are migrating Tensorflow-Lite from v2.18.0 to the
> stable release v2.20.0
> 
> Key Changes:
>   - Pin flatbuffers-native and protobuf-native to use the same version as
>     TensorFlow Lite 2.20.0 to avoid version mismatch
>   - Updated SRCREV for all the dependencies
>   - Updated recipe to meet the build compatibilty
> 
> Signed-off-by: Pratham Deshmukh <p-deshmukh@ti.com>
> ---
>   .../flatbuffers/flatbuffers-arago.inc         |  8 +++
>   .../flatbuffers/flatbuffers.bbappend          |  4 ++
>   .../protobuf/protobuf-arago.inc               | 18 +++++++
>   .../protobuf/protobuf_%.bbappend              |  5 ++
>   ...te_2.18.0.bb => tensorflow-lite_2.20.0.bb} | 52 ++++++++++---------
>   5 files changed, 62 insertions(+), 25 deletions(-)
>   create mode 100644 meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
>   create mode 100644 meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
>   create mode 100644 meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
>   create mode 100644 meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
>   rename meta-arago-extras/recipes-framework/tensorflow-lite/{tensorflow-lite_2.18.0.bb => tensorflow-lite_2.20.0.bb} (86%)
> 
> diff --git a/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
> new file mode 100644
> index 00000000..d85efc8b
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
> @@ -0,0 +1,8 @@
> +# Pin flatbuffers-native to use the same version as TensorFlow Lite 2.20.0
> +# to avoid version mismatch errors
> +
> +# Override version to match
> +PV = "24.3.25"
> +
> +# Use specific commit hash that corresponds to v24.3.25 tag
> +SRCREV = "595bf0007ab1929570c7671f091313c8fc20644e"
> diff --git a/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
> new file mode 100644
> index 00000000..2a627698
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
> @@ -0,0 +1,4 @@
> +# Conditionally include Arago-specific customizations for flatbuffers-native
> +FLATBUFFERS_ARAGO = ""
> +FLATBUFFERS_ARAGO:arago = "flatbuffers-arago.inc"
> +require ${FLATBUFFERS_ARAGO}
> diff --git a/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc b/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
> new file mode 100644
> index 00000000..489b1444
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
> @@ -0,0 +1,18 @@
> +# Pin protobuf-native to use the same version as TensorFlow Lite 2.20.0
> +# to avoid version mismatch errors
> +
> +# Override version to match
> +PV = "3.21.9"
> +
> +# Use specific commit hash that corresponds to v24.3.25 tag
> +SRCREV = "90b73ac3f0b10320315c2ca0d03a5a9b095d2f66"
> +
> +# Override SRC_URI to use 3.21.x branch and remove incompatible patches
> +SRC_URI = "git://github.com/protocolbuffers/protobuf.git;branch=main;protocol=https \
> +           file://run-ptest \
> +          "
> +
> +LIC_FILES_CHKSUM = " \
> +    file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b \
> +    file://third_party/utf8_range/LICENSE;md5=ef460f31070fd7184bd9059de2e4b132 \
> +"
> diff --git a/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend b/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
> new file mode 100644
> index 00000000..51c679a5
> --- /dev/null
> +++ b/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
> @@ -0,0 +1,5 @@
> +# Conditionally include Arago-specific customizations for flatbuffers-native
> +PROTOBUF_ARAGO = ""
> +PROTOBUF_ARAGO:arago = "protobuf-arago.inc"
> +
> +require ${PROTOBUF_ARAGO}
> diff --git a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
> similarity index 86%
> rename from meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
> rename to meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
> index c76939ac..57278f5b 100644
> --- a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
> +++ b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
> @@ -8,18 +8,19 @@ LICENSE = "Apache-2.0"
>   LIC_FILES_CHKSUM = "file://LICENSE;md5=4158a261ca7f2525513e31ba9c50ae98"
>   
>   # Get major of the PV variable
> -MAJOR = "${@d.getVar('PV').split('.')[0]}"
> +TF_MAJOR = "${@d.getVar('PV').split('.')[0]}"
> +TF_MINOR = "${@d.getVar('PV').split('.')[1]}"
> +TF_PATCH = "${@(d.getVar('PV').split('.') + ['0', '0'])[2]}"
>   
>   SRC_URI = " \
> -    git://github.com/tensorflow/tensorflow.git;protocol=https;branch=r2.18 \
> +    git://github.com/tensorflow/tensorflow.git;protocol=https;branch=r2.20 \
>       file://0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch \
>       file://0002-lite-Update-CMakeLists-for-building-shared-object-li.patch \
> -    file://0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch \
>       file://tensorflow2-lite.pc.in \
>   "
>   
>   SRC_URI += " \
> -    git://github.com/abseil/abseil-cpp.git;protocol=https;branch=lts_2023_08_02;name=abseil-cpp;destsuffix=${S}/external/abseil-cpp \
> +    git://github.com/abseil/abseil-cpp.git;protocol=https;branch=lts_2025_01_27;name=abseil-cpp;destsuffix=${S}/external/abseil-cpp \
>       git://gitlab.com/libeigen/eigen.git;protocol=https;branch=master;name=eigen;destsuffix=${S}/external/eigen \
>       git://github.com/google/farmhash.git;protocol=https;branch=master;name=farmhash;destsuffix=${S}/external/farmhash \
>       git://github.com/petewarden/OouraFFT.git;protocol=https;branch=master;name=fft2d;destsuffix=${S}/external/fft2d \
> @@ -28,35 +29,35 @@ SRC_URI += " \
>       git://github.com/jax-ml/ml_dtypes.git;branch=main;protocol=https;name=ml_dtypes;destsuffix=${S}/external/ml_dtypes \
>       git://github.com/google/ruy.git;branch=master;protocol=https;name=ruy;destsuffix=${S}/external/ruy \
>       git://github.com/google/flatbuffers;branch=master;protocol=https;name=flatbuffers;destsuffix=${S}/external/flatbuffers \
> -    git://github.com/Maratyszcza/pthreadpool.git;branch=master;protocol=https;name=pthreadpool-source;destsuffix=${S}/external/pthreadpool-source \
> +    git://github.com/google/pthreadpool.git;branch=main;protocol=https;name=pthreadpool-source;destsuffix=${S}/external/pthreadpool-source \
>       git://github.com/google/XNNPACK.git;branch=master;protocol=https;name=xnnpack;destsuffix=${S}/external/xnnpack \
>       git://github.com/Maratyszcza/FXdiv.git;branch=master;protocol=https;name=FXdiv-source;destsuffix=${S}/external/FXdiv-source \
>       git://github.com/Maratyszcza/FP16.git;branch=master;protocol=https;name=FP16-source;destsuffix=${S}/external/FP16-source \
>       git://git.gitlab.arm.com/kleidi/kleidiai.git;branch=main;protocol=https;name=kleidiai;destsuffix=${S}/external/kleidiai \
>       git://github.com/Maratyszcza/psimd.git;branch=master;protocol=https;name=psimd;destsuffix=${S}/external/psimd \
> -    git://github.com/protocolbuffers/protobuf.git;branch=25.x;protocol=https;name=protobuf;destsuffix=${S}/external/protobuf \
> +    git://github.com/protocolbuffers/protobuf.git;branch=main;protocol=https;name=protobuf;destsuffix=${S}/external/protobuf \
>   "
>   
>   SRCREV_FORMAT = "default"
>   
>   # Matches v${PV} tag
> -SRCREV = "6550e4bd80223cdb8be6c3afd1f81e86a4d433c3"
> -SRCREV_abseil-cpp = "fb3621f4f897824c0dbe0615fa94543df6192f30"
> +SRCREV = "72fbba3d20f4616d7312b5e2b7f79daf6e82f2fa"
> +SRCREV_abseil-cpp = "d9e4955c65cd4367dd6bf46f4ccb8cd3d100540b"
>   SRCREV_eigen = "33d0937c6bdf5ec999939fb17f2a553183d14a74"
>   SRCREV_farmhash = "0d859a811870d10f53a594927d0d0b97573ad06d"
>   SRCREV_fft2d = "c6fd2dd6d21397baa6653139d31d84540d5449a2"
>   SRCREV_gemmlowp = "16e8662c34917be0065110bfcd9cc27d30f52fdf"
> -SRCREV_cpuinfo = "b73ae6ce38d5dd0b7fe46dbe0a4b5f4bab91c7ea"
> +SRCREV_cpuinfo = "de0ce7c7251372892e53ce9bc891750d2c9a4fd8"
>   SRCREV_ml_dtypes = "24084d9ed2c3d45bf83b7a9bff833aa185bf9172"
>   SRCREV_ruy = "3286a34cc8de6149ac6844107dfdffac91531e72"
>   SRCREV_flatbuffers = "e6463926479bd6b330cbcf673f7e917803fd5831"
> -SRCREV_pthreadpool-source = "4fe0e1e183925bf8cfa6aae24237e724a96479b8"
> -SRCREV_xnnpack = "6b83f69d4938da4dc9ad63c00bd13e9695659a51"
> +SRCREV_pthreadpool-source = "c2ba5c50bb58d1397b693740cf75fad836a0d1bf"
> +SRCREV_xnnpack = "585e73e63cb35c8a416c83a48ca9ab79f7f7d45e"
>   SRCREV_FXdiv-source = "63058eff77e11aa15bf531df5dd34395ec3017c8"
> -SRCREV_FP16-source = "0a92994d729ff76a58f692d3028ca1b64b145d91"
> -SRCREV_kleidiai = "cddf991af5de49fd34949fa39690e4e906e04074"
> +SRCREV_FP16-source = "4dfe081cf6bcd15db339cf2680b9281b8451eeb3"
> +SRCREV_kleidiai = "dc69e899945c412a8ce39ccafd25139f743c60b1"
>   SRCREV_psimd = "072586a71b55b7f8c584153d223e95687148a900"
> -SRCREV_protobuf = "4a2aef570deb2bfb8927426558701e8bfc26f2a4"
> +SRCREV_protobuf = "90b73ac3f0b10320315c2ca0d03a5a9b095d2f66"
>   
>   inherit setuptools3 cmake
>   
> @@ -91,7 +92,7 @@ OECMAKE_SOURCEPATH = "${S}/tensorflow/lite"
>   # to further optimize the build for production use.
>   # Hence, activate -O3 optimization and disable debug symbols.
>   OECMAKE_C_FLAGS_RELEASE = "-O3 -DNDEBUG"
> -OECMAKE_CXX_FLAGS_RELEASE = "-O3 -DNDEBUG -flax-vector-conversions"
> +OECMAKE_CXX_FLAGS_RELEASE = "-O3 -DNDEBUG -flax-vector-conversions -DTF_MAJOR_VERSION=${TF_MAJOR} -DTF_MINOR_VERSION=${TF_MINOR} -DTF_PATCH_VERSION=${TF_PATCH} -DTF_VERSION_SUFFIX=\"\""
>   
>   OECMAKE_C_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
>   OECMAKE_CXX_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
> @@ -112,9 +113,8 @@ EXTRA_OECMAKE:append = " \
>       -DCMAKE_SYSTEM_PROCESSOR=${TENSORFLOW_TARGET_ARCH} \
>       -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
>       -DPYTHON_TARGET_INCLUDE=${RECIPE_SYSROOT}${includedir}/${PYTHON_DIR} \
> -    -DNUMPY_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/core/include \
> +    -DNUMPY_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/_core/include \
>       -DPYBIND11_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/pybind11/include \
> -    -DTFLITE_VERSION_MAJOR=${MAJOR}  \
>       -DTFLITE_HOST_TOOLS_DIR=${STAGING_BINDIR_NATIVE} \
>       -DPTHREADPOOL_SOURCE_DIR=${S}/external/pthreadpool-source \
>       -DFXDIV_SOURCE_DIR=${S}/external/FXdiv-source \
> @@ -122,6 +122,8 @@ EXTRA_OECMAKE:append = " \
>       -DCPUINFO_SOURCE_DIR=${S}/external/cpuinfo \
>       -DKLEIDIAI_SOURCE_DIR=${S}/external/kleidiai \
>       -DPSIMD_SOURCE_DIR=${S}/external/psimd \
> +    -DCMAKE_CXX_STANDARD=17 \
> +    -DCMAKE_CXX_STANDARD_REQUIRED=ON \
>       --compile-no-warning-as-error \
>       --log-level=VERBOSE \
>   "
> @@ -130,7 +132,6 @@ do_configure:prepend() {
>       for i in abseil-cpp cpuinfo eigen farmhash fft2d flatbuffers FP16-source FXdiv-source gemmlowp kleidiai ml_dtypes psimd protobuf pthreadpool-source ruy xnnpack; do
>           cp -ra ${S}/external/$i ${B}/$i
>       done
> -

Random whitespace change

>       # There is no Fortran compiler in the toolchain, but bitbake sets this variable anyway with unavailable
>       # binary & it leads to "CMake Error: Could not find compiler set in environment variable FC:"
>       unset FC
> @@ -143,7 +144,7 @@ do_compile:append() {
>       BUILD_DIR=${B}
>       TENSORFLOW_DIR=${S}
>       TENSORFLOW_LITE_DIR="${TENSORFLOW_DIR}/tensorflow/lite"
> -    TENSORFLOW_VERSION=$(grep "_VERSION = " "${TENSORFLOW_DIR}/tensorflow/tools/pip_package/setup.py" | cut -d= -f2 | sed "s/[ '-]//g")
> +    TENSORFLOW_VERSION=$(grep "_VERSION = " "${TENSORFLOW_DIR}/tensorflow/tools/pip_package/setup.py.tpl" | cut -d= -f2 | sed "s/[ '-]//g")
>       mkdir -p "${B}/tflite_runtime"
>       cp -r "${TENSORFLOW_LITE_DIR}/tools/pip_package/debian" \
>             "${TENSORFLOW_LITE_DIR}/tools/pip_package/MANIFEST.in" \
> @@ -156,22 +157,23 @@ do_compile:append() {
>          "${B}/tflite_runtime"
>       echo "__version__ = '${TENSORFLOW_VERSION}'" >> "${BUILD_DIR}/tflite_runtime/__init__.py"
>       echo "__git_version__ = '$(git -C "${TENSORFLOW_DIR}" describe)'" >> "${BUILD_DIR}/tflite_runtime/__init__.py"
> -
> +

?

>       export PACKAGE_VERSION="${TENSORFLOW_VERSION}"
>       export PROJECT_NAME="tflite_runtime"
>       cp "${B}/_pywrap_tensorflow_interpreter_wrapper.so" "tflite_runtime"
> -
> +

?

>       setuptools3_do_compile
>   }
>   
>   do_install() {
>       # Install tensorflow-lite dynamic library
>       install -d ${D}${libdir}
> -    install -m 0644 ${B}/libtensorflow-lite.so.${MAJOR} ${D}${libdir}/libtensorflow-lite.so.${PV}
> +    install -m 0644 ${B}/libtensorflow-lite.so. ${D}${libdir}/libtensorflow-lite.so.${PV}
>   
> -    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.${MAJOR}
> +    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.${TF_MAJOR}
>       ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so
> -
> +    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.
> +

What is a symline with the name same as the above but with a "." at the end doing for us?

>       # armnn expects the the dynamic library of tensorflow lite to be named as "libtensorflowlite.so"
>       # Eg - https://github.com/ARM-software/armnn/blob/branches/armnn_24_11/delegate/cmake/Modules/FindTfLite.cmake#L19
>       # Hence, create a symbolic link to handle the same
> @@ -197,7 +199,7 @@ do_install() {
>   
>       # Install pkgconfig file required for NNstreamer build
>       install -d ${D}${libdir}/pkgconfig
> -    install -m 0644 ${WORKDIR}/tensorflow2-lite.pc.in ${D}${libdir}/pkgconfig/tensorflow2-lite.pc
> +    install -m 0644 ${WORKDIR}/sources/tensorflow2-lite.pc.in ${D}${libdir}/pkgconfig/tensorflow2-lite.pc
>       sed -i 's:@version@:${PV}:g
>               s:@libdir@:${libdir}:g
>               s:@includedir@:${includedir}:g' \
diff mbox series

Patch

diff --git a/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
new file mode 100644
index 00000000..d85efc8b
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers-arago.inc
@@ -0,0 +1,8 @@ 
+# Pin flatbuffers-native to use the same version as TensorFlow Lite 2.20.0
+# to avoid version mismatch errors
+
+# Override version to match
+PV = "24.3.25"
+
+# Use specific commit hash that corresponds to v24.3.25 tag
+SRCREV = "595bf0007ab1929570c7671f091313c8fc20644e"
diff --git a/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
new file mode 100644
index 00000000..2a627698
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/flatbuffers/flatbuffers.bbappend
@@ -0,0 +1,4 @@ 
+# Conditionally include Arago-specific customizations for flatbuffers-native
+FLATBUFFERS_ARAGO = ""
+FLATBUFFERS_ARAGO:arago = "flatbuffers-arago.inc"
+require ${FLATBUFFERS_ARAGO}
diff --git a/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc b/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
new file mode 100644
index 00000000..489b1444
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/protobuf/protobuf-arago.inc
@@ -0,0 +1,18 @@ 
+# Pin protobuf-native to use the same version as TensorFlow Lite 2.20.0
+# to avoid version mismatch errors
+
+# Override version to match
+PV = "3.21.9"
+
+# Use specific commit hash that corresponds to v24.3.25 tag
+SRCREV = "90b73ac3f0b10320315c2ca0d03a5a9b095d2f66"
+
+# Override SRC_URI to use 3.21.x branch and remove incompatible patches
+SRC_URI = "git://github.com/protocolbuffers/protobuf.git;branch=main;protocol=https \
+           file://run-ptest \
+          " 
+
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b \
+    file://third_party/utf8_range/LICENSE;md5=ef460f31070fd7184bd9059de2e4b132 \
+"
diff --git a/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend b/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
new file mode 100644
index 00000000..51c679a5
--- /dev/null
+++ b/meta-arago-extras/recipes-devtools/protobuf/protobuf_%.bbappend
@@ -0,0 +1,5 @@ 
+# Conditionally include Arago-specific customizations for flatbuffers-native
+PROTOBUF_ARAGO = ""
+PROTOBUF_ARAGO:arago = "protobuf-arago.inc"
+
+require ${PROTOBUF_ARAGO}
diff --git a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
similarity index 86%
rename from meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
rename to meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
index c76939ac..57278f5b 100644
--- a/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.18.0.bb
+++ b/meta-arago-extras/recipes-framework/tensorflow-lite/tensorflow-lite_2.20.0.bb
@@ -8,18 +8,19 @@  LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4158a261ca7f2525513e31ba9c50ae98"
 
 # Get major of the PV variable
-MAJOR = "${@d.getVar('PV').split('.')[0]}"
+TF_MAJOR = "${@d.getVar('PV').split('.')[0]}"
+TF_MINOR = "${@d.getVar('PV').split('.')[1]}"
+TF_PATCH = "${@(d.getVar('PV').split('.') + ['0', '0'])[2]}"
 
 SRC_URI = " \
-    git://github.com/tensorflow/tensorflow.git;protocol=https;branch=r2.18 \
+    git://github.com/tensorflow/tensorflow.git;protocol=https;branch=r2.20 \
     file://0001-lite-Update-CMakeLists-for-building-_pywrap_tensorfl.patch \
     file://0002-lite-Update-CMakeLists-for-building-shared-object-li.patch \
-    file://0003-CMakeLists-Fix-build-issues-observed-in-TFlite-v2.18.patch \
     file://tensorflow2-lite.pc.in \
 "
 
 SRC_URI += " \
-    git://github.com/abseil/abseil-cpp.git;protocol=https;branch=lts_2023_08_02;name=abseil-cpp;destsuffix=${S}/external/abseil-cpp \
+    git://github.com/abseil/abseil-cpp.git;protocol=https;branch=lts_2025_01_27;name=abseil-cpp;destsuffix=${S}/external/abseil-cpp \
     git://gitlab.com/libeigen/eigen.git;protocol=https;branch=master;name=eigen;destsuffix=${S}/external/eigen \
     git://github.com/google/farmhash.git;protocol=https;branch=master;name=farmhash;destsuffix=${S}/external/farmhash \
     git://github.com/petewarden/OouraFFT.git;protocol=https;branch=master;name=fft2d;destsuffix=${S}/external/fft2d \
@@ -28,35 +29,35 @@  SRC_URI += " \
     git://github.com/jax-ml/ml_dtypes.git;branch=main;protocol=https;name=ml_dtypes;destsuffix=${S}/external/ml_dtypes \
     git://github.com/google/ruy.git;branch=master;protocol=https;name=ruy;destsuffix=${S}/external/ruy \
     git://github.com/google/flatbuffers;branch=master;protocol=https;name=flatbuffers;destsuffix=${S}/external/flatbuffers \
-    git://github.com/Maratyszcza/pthreadpool.git;branch=master;protocol=https;name=pthreadpool-source;destsuffix=${S}/external/pthreadpool-source \
+    git://github.com/google/pthreadpool.git;branch=main;protocol=https;name=pthreadpool-source;destsuffix=${S}/external/pthreadpool-source \
     git://github.com/google/XNNPACK.git;branch=master;protocol=https;name=xnnpack;destsuffix=${S}/external/xnnpack \
     git://github.com/Maratyszcza/FXdiv.git;branch=master;protocol=https;name=FXdiv-source;destsuffix=${S}/external/FXdiv-source \
     git://github.com/Maratyszcza/FP16.git;branch=master;protocol=https;name=FP16-source;destsuffix=${S}/external/FP16-source \
     git://git.gitlab.arm.com/kleidi/kleidiai.git;branch=main;protocol=https;name=kleidiai;destsuffix=${S}/external/kleidiai \
     git://github.com/Maratyszcza/psimd.git;branch=master;protocol=https;name=psimd;destsuffix=${S}/external/psimd \
-    git://github.com/protocolbuffers/protobuf.git;branch=25.x;protocol=https;name=protobuf;destsuffix=${S}/external/protobuf \
+    git://github.com/protocolbuffers/protobuf.git;branch=main;protocol=https;name=protobuf;destsuffix=${S}/external/protobuf \
 "
 
 SRCREV_FORMAT = "default"
 
 # Matches v${PV} tag
-SRCREV = "6550e4bd80223cdb8be6c3afd1f81e86a4d433c3"
-SRCREV_abseil-cpp = "fb3621f4f897824c0dbe0615fa94543df6192f30"
+SRCREV = "72fbba3d20f4616d7312b5e2b7f79daf6e82f2fa"
+SRCREV_abseil-cpp = "d9e4955c65cd4367dd6bf46f4ccb8cd3d100540b"
 SRCREV_eigen = "33d0937c6bdf5ec999939fb17f2a553183d14a74"
 SRCREV_farmhash = "0d859a811870d10f53a594927d0d0b97573ad06d"
 SRCREV_fft2d = "c6fd2dd6d21397baa6653139d31d84540d5449a2"
 SRCREV_gemmlowp = "16e8662c34917be0065110bfcd9cc27d30f52fdf"
-SRCREV_cpuinfo = "b73ae6ce38d5dd0b7fe46dbe0a4b5f4bab91c7ea"
+SRCREV_cpuinfo = "de0ce7c7251372892e53ce9bc891750d2c9a4fd8"
 SRCREV_ml_dtypes = "24084d9ed2c3d45bf83b7a9bff833aa185bf9172"
 SRCREV_ruy = "3286a34cc8de6149ac6844107dfdffac91531e72"
 SRCREV_flatbuffers = "e6463926479bd6b330cbcf673f7e917803fd5831"
-SRCREV_pthreadpool-source = "4fe0e1e183925bf8cfa6aae24237e724a96479b8"
-SRCREV_xnnpack = "6b83f69d4938da4dc9ad63c00bd13e9695659a51"
+SRCREV_pthreadpool-source = "c2ba5c50bb58d1397b693740cf75fad836a0d1bf"
+SRCREV_xnnpack = "585e73e63cb35c8a416c83a48ca9ab79f7f7d45e"
 SRCREV_FXdiv-source = "63058eff77e11aa15bf531df5dd34395ec3017c8"
-SRCREV_FP16-source = "0a92994d729ff76a58f692d3028ca1b64b145d91"
-SRCREV_kleidiai = "cddf991af5de49fd34949fa39690e4e906e04074"
+SRCREV_FP16-source = "4dfe081cf6bcd15db339cf2680b9281b8451eeb3"
+SRCREV_kleidiai = "dc69e899945c412a8ce39ccafd25139f743c60b1"
 SRCREV_psimd = "072586a71b55b7f8c584153d223e95687148a900"
-SRCREV_protobuf = "4a2aef570deb2bfb8927426558701e8bfc26f2a4"
+SRCREV_protobuf = "90b73ac3f0b10320315c2ca0d03a5a9b095d2f66"
 
 inherit setuptools3 cmake
 
@@ -91,7 +92,7 @@  OECMAKE_SOURCEPATH = "${S}/tensorflow/lite"
 # to further optimize the build for production use.
 # Hence, activate -O3 optimization and disable debug symbols.
 OECMAKE_C_FLAGS_RELEASE = "-O3 -DNDEBUG"
-OECMAKE_CXX_FLAGS_RELEASE = "-O3 -DNDEBUG -flax-vector-conversions"
+OECMAKE_CXX_FLAGS_RELEASE = "-O3 -DNDEBUG -flax-vector-conversions -DTF_MAJOR_VERSION=${TF_MAJOR} -DTF_MINOR_VERSION=${TF_MINOR} -DTF_PATCH_VERSION=${TF_PATCH} -DTF_VERSION_SUFFIX=\"\""
 
 OECMAKE_C_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
 OECMAKE_CXX_FLAGS_RELEASE:append:arm = " -march=armv7-a -mfpu=neon"
@@ -112,9 +113,8 @@  EXTRA_OECMAKE:append = " \
     -DCMAKE_SYSTEM_PROCESSOR=${TENSORFLOW_TARGET_ARCH} \
     -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
     -DPYTHON_TARGET_INCLUDE=${RECIPE_SYSROOT}${includedir}/${PYTHON_DIR} \
-    -DNUMPY_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/core/include \
+    -DNUMPY_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/numpy/_core/include \
     -DPYBIND11_TARGET_INCLUDE=${RECIPE_SYSROOT}${PYTHON_SITEPACKAGES_DIR}/pybind11/include \
-    -DTFLITE_VERSION_MAJOR=${MAJOR}  \
     -DTFLITE_HOST_TOOLS_DIR=${STAGING_BINDIR_NATIVE} \
     -DPTHREADPOOL_SOURCE_DIR=${S}/external/pthreadpool-source \
     -DFXDIV_SOURCE_DIR=${S}/external/FXdiv-source \
@@ -122,6 +122,8 @@  EXTRA_OECMAKE:append = " \
     -DCPUINFO_SOURCE_DIR=${S}/external/cpuinfo \
     -DKLEIDIAI_SOURCE_DIR=${S}/external/kleidiai \
     -DPSIMD_SOURCE_DIR=${S}/external/psimd \
+    -DCMAKE_CXX_STANDARD=17 \
+    -DCMAKE_CXX_STANDARD_REQUIRED=ON \
     --compile-no-warning-as-error \
     --log-level=VERBOSE \
 "
@@ -130,7 +132,6 @@  do_configure:prepend() {
     for i in abseil-cpp cpuinfo eigen farmhash fft2d flatbuffers FP16-source FXdiv-source gemmlowp kleidiai ml_dtypes psimd protobuf pthreadpool-source ruy xnnpack; do
         cp -ra ${S}/external/$i ${B}/$i
     done
-
     # There is no Fortran compiler in the toolchain, but bitbake sets this variable anyway with unavailable
     # binary & it leads to "CMake Error: Could not find compiler set in environment variable FC:"
     unset FC
@@ -143,7 +144,7 @@  do_compile:append() {
     BUILD_DIR=${B}
     TENSORFLOW_DIR=${S}
     TENSORFLOW_LITE_DIR="${TENSORFLOW_DIR}/tensorflow/lite"
-    TENSORFLOW_VERSION=$(grep "_VERSION = " "${TENSORFLOW_DIR}/tensorflow/tools/pip_package/setup.py" | cut -d= -f2 | sed "s/[ '-]//g")
+    TENSORFLOW_VERSION=$(grep "_VERSION = " "${TENSORFLOW_DIR}/tensorflow/tools/pip_package/setup.py.tpl" | cut -d= -f2 | sed "s/[ '-]//g")
     mkdir -p "${B}/tflite_runtime"
     cp -r "${TENSORFLOW_LITE_DIR}/tools/pip_package/debian" \
           "${TENSORFLOW_LITE_DIR}/tools/pip_package/MANIFEST.in" \
@@ -156,22 +157,23 @@  do_compile:append() {
        "${B}/tflite_runtime"
     echo "__version__ = '${TENSORFLOW_VERSION}'" >> "${BUILD_DIR}/tflite_runtime/__init__.py"
     echo "__git_version__ = '$(git -C "${TENSORFLOW_DIR}" describe)'" >> "${BUILD_DIR}/tflite_runtime/__init__.py"
-
+  
     export PACKAGE_VERSION="${TENSORFLOW_VERSION}"
     export PROJECT_NAME="tflite_runtime"
     cp "${B}/_pywrap_tensorflow_interpreter_wrapper.so" "tflite_runtime"
-
+  
     setuptools3_do_compile
 }
 
 do_install() {
     # Install tensorflow-lite dynamic library
     install -d ${D}${libdir}
-    install -m 0644 ${B}/libtensorflow-lite.so.${MAJOR} ${D}${libdir}/libtensorflow-lite.so.${PV}
+    install -m 0644 ${B}/libtensorflow-lite.so. ${D}${libdir}/libtensorflow-lite.so.${PV}
 
-    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.${MAJOR}
+    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.${TF_MAJOR}
     ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so
-
+    ln -sf libtensorflow-lite.so.${PV} ${D}${libdir}/libtensorflow-lite.so.
+    
     # armnn expects the the dynamic library of tensorflow lite to be named as "libtensorflowlite.so"
     # Eg - https://github.com/ARM-software/armnn/blob/branches/armnn_24_11/delegate/cmake/Modules/FindTfLite.cmake#L19
     # Hence, create a symbolic link to handle the same
@@ -197,7 +199,7 @@  do_install() {
 
     # Install pkgconfig file required for NNstreamer build
     install -d ${D}${libdir}/pkgconfig
-    install -m 0644 ${WORKDIR}/tensorflow2-lite.pc.in ${D}${libdir}/pkgconfig/tensorflow2-lite.pc
+    install -m 0644 ${WORKDIR}/sources/tensorflow2-lite.pc.in ${D}${libdir}/pkgconfig/tensorflow2-lite.pc
     sed -i 's:@version@:${PV}:g
             s:@libdir@:${libdir}:g
             s:@includedir@:${includedir}:g' \