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",