File fix-build-without-tflib.patch of Package nodejs-electron39

From 0a306a60f98a13868dc8241c31706a81f1d532c8 Mon Sep 17 00:00:00 2001
From: jj <jj@imput.net>
Date: Mon, 1 Dec 2025 15:08:15 -0800
Subject: [PATCH] [on_device_model] Fix build with build_with_tflite_lib=false

//services/on_device_model/safety:bert_safety_model depends on tflite,
and so it cannot be depended on if build_with_tflite_lib is false.

Also fixes the following:
ERROR at //components/optimization_guide/core/inference/BUILD.gn:8:1: Assertion failed.
assert(build_with_tflite_lib)
^-----
See //services/on_device_model/safety/BUILD.gn:15:7: which caused the file to be included.
      "//components/optimization_guide/core/inference:op_resolver",
      ^-----------------------------------------------------------

Bug: 40285541
Change-Id: I2f708f7cbeacfc734c5a8f8840cf6136c9506fc1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7185063
Reviewed-by: Mike Wittman <wittman@chromium.org>
Commit-Queue: jj <jj@chromium.org>
Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1552457}
---
 services/on_device_model/ml/BUILD.gn     |  5 ++++-
 services/on_device_model/ml/DEPS         |  1 +
 services/on_device_model/ml/ts_model.cc  | 13 +++++++++++--
 services/on_device_model/safety/BUILD.gn |  2 +-
 4 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/services/on_device_model/ml/BUILD.gn b/services/on_device_model/ml/BUILD.gn
index 38fcaa85cd7a49..67ee35aa43d796 100644
--- a/services/on_device_model/ml/BUILD.gn
+++ b/services/on_device_model/ml/BUILD.gn
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import("//build/config/features.gni")
+import("//components/optimization_guide/features.gni")
 import("//services/on_device_model/on_device_model.gni")
 
 source_set("api") {
@@ -64,6 +65,7 @@ if (use_blink || (is_ios && build_with_internal_optimization_guide)) {
     deps = [
       "//components/crash/core/common:crash_key",
       "//components/language_detection/core",
+      "//components/optimization_guide:machine_learning_tflite_buildflags",
       "//components/optimization_guide/core:features",
       "//components/translate/core/language_detection",
       "//services/on_device_model:backend_interfaces",
@@ -80,7 +83,7 @@ if (use_blink || (is_ios && build_with_internal_optimization_guide)) {
     if (use_blink) {
       deps += [ "//gpu/config" ]
     }
-    if (!is_fuchsia) {
+    if (!is_fuchsia && build_with_tflite_lib) {
       deps += [ "//services/on_device_model/safety:bert_safety_model" ]
     }
     if (is_win || is_mac || is_linux) {
diff --git a/services/on_device_model/ml/DEPS b/services/on_device_model/ml/DEPS
index ae54ecf90ff056..f06f8ee29de44d 100644
--- a/services/on_device_model/ml/DEPS
+++ b/services/on_device_model/ml/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   "+components/language_detection/core",
+  "+components/optimization_guide/machine_learning_tflite_buildflags.h",
   "+components/translate/core/language_detection",
   "+third_party/rust/chromium_crates_io/vendor/llguidance-v1/llguidance.h",
   "+third_party/xnnpack",
--- src/services/on_device_model/ml/ts_model.cc.orig	2025-11-23 13:48:08.468484401 +0100
+++ src/services/on_device_model/ml/ts_model.cc	2025-12-30 10:19:44.408687051 +0100
@@ -18,6 +18,7 @@
 #include "base/threading/sequence_bound.h"
 #include "build/build_config.h"
 #include "components/language_detection/core/language_detection_provider.h"
+#include "components/optimization_guide/machine_learning_tflite_buildflags.h"
 #include "components/translate/core/language_detection/language_detection_model.h"
 #include "services/on_device_model/ml/chrome_ml.h"
 #include "services/on_device_model/ml/chrome_ml_api.h"
@@ -25,7 +26,7 @@
 #include "services/on_device_model/public/mojom/on_device_model_service.mojom.h"
 #include "services/on_device_model/safety/safety_util.h"
 
-#if !BUILDFLAG(IS_FUCHSIA)
+#if !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB)
 #include "services/on_device_model/safety/bert_safety_model.h"
 #endif
 
@@ -95,6 +96,7 @@ std::unique_ptr<TsModel> TsModel::Create
 }
 
 bool TsModel::InitLanguageDetection(mojom::LanguageModelAssetsPtr assets) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
   auto tflite_model =
       std::make_unique<language_detection::LanguageDetectionModel>();
   tflite_model->UpdateWithFile(std::move(assets->model));
@@ -102,6 +104,9 @@ bool TsModel::InitLanguageDetection(mojo
   language_detector_ = std::make_unique<translate::LanguageDetectionModel>(
       std::move(tflite_model));
   return language_detector_->IsAvailable();
+#else
+  return false;
+#endif
 }
 
 DISABLE_CFI_DLSYM
@@ -169,10 +174,14 @@ mojom::LanguageDetectionResultPtr TsMode
   if (!language_detector_) {
     return nullptr;
   }
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
   language_detection::Prediction prediction = on_device_model::PredictLanguage(
       language_detector_->tflite_model(), text);
   return mojom::LanguageDetectionResult::New(prediction.language,
                                              prediction.score);
+#else
+  return nullptr;
+#endif
 }
 
 TsHolder::TsHolder(raw_ref<const ChromeML> chrome_ml) : chrome_ml_(chrome_ml) {}
@@ -189,7 +198,7 @@ void TsHolder::Reset(mojom::TextSafetyMo
                      mojo::PendingReceiver<mojom::TextSafetyModel> model) {
   model_.Clear();
 
-#if !BUILDFLAG(IS_FUCHSIA)
+#if !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB)
   if (!params->safety_assets || params->safety_assets->which() ==
                                     mojom::SafetyModelAssets::Tag::kTsAssets) {
     auto impl = TsModel::Create(*chrome_ml_, std::move(params));
diff --git a/services/on_device_model/safety/BUILD.gn b/services/on_device_model/safety/BUILD.gn
index 434255b329c5d1..2d443f00a413b4 100644
--- a/services/on_device_model/safety/BUILD.gn
+++ b/services/on_device_model/safety/BUILD.gn
@@ -4,7 +4,7 @@
 
 import("//components/optimization_guide/features.gni")
 
-if (!is_fuchsia) {
+if (!is_fuchsia && build_with_tflite_lib) {
   source_set("bert_safety_op_resolver") {
     sources = [
       "bert_safety_op_resolver.cc",
openSUSE Build Service is sponsored by