python-mediapipe: leave the semantic retriever out of libmediapipe.so

MediaPipe 1.1.0 links its SQLite memory and vector stores from prebuilt
archives built with Google's internal toolchain. They have no archive symbol
table, and once indexed they still need Google's libc++ (std::__u) and
internal symbols (__alloc_token_*__Znwm, sqlite_helpers, sqlite3_vector_init),
so the link of libmediapipe.so fails. Drop the semantic retriever's C API from
the library; mediapipe and its other tasks import and work as before.
This commit is contained in:
Ryan Hughes committed 2026-10-09 19:03:02 -04:00
1 parent 39f0096f35
commit 7dde80c9f7
2 files changed
+32 -1

No files matched your search

@@ -0,0 +1,21 @@
Drop the semantic retriever from libmediapipe.so
MediaPipe 1.1.0 links its SQLite memory and vector stores from prebuilt
archives (third_party/sqlite_prebuilt_files.bzl) built with Google's internal
toolchain: they carry no archive symbol table, reference Google's libc++
(std::__u) and internal symbols (__alloc_token_*__Znwm, sqlite_helpers,
sqlite3_vector_init), and cannot link against a libstdc++ build. Leave the
semantic retriever's C API out of the library; everything else, including
the universal embedder, still builds. Only an explicit import of
mediapipe.tasks.python.retrieval.semantic_retriever needs those symbols.
--- a/mediapipe/tasks/c/BUILD
+++ b/mediapipe/tasks/c/BUILD
@@ -45,7 +45,6 @@
"//mediapipe/tasks/c/audio/audio_embedder:audio_embedder_c_lib",
"//mediapipe/tasks/c/core:common",
"//mediapipe/tasks/c/metadata:flatbuffer_api_c_lib",
- "//mediapipe/tasks/c/retrieval/semantic_retriever:semantic_retriever_lib",
"//mediapipe/tasks/c/retrieval/universal_embedder:universal_embedder_lib",
"//mediapipe/tasks/c/text/language_detector:language_detector_c_lib",
"//mediapipe/tasks/c/text/text_classifier:text_classifier_c_lib",
+11 -1
View File
@@ -43,8 +43,15 @@ source=("${_pkgname}-${pkgver}.tar.gz::https://github.com/google-ai-edge/mediapi
"0005-set-hermetic-python-version-and-disable-odml-converter.patch"
"0006-opencv5-geometry-header.patch"
"0007-bump-rules-java.patch"
"0008-drop-semantic-retriever-from-libmediapipe.patch"
)
sha256sums=('ef260449409c942a35859ed017f13934f6bf6240ddccdd01a202225650dad73e' 'c97f02133adce63f0c28678ac1f21d65fa8255c80429b588aeeba8a1fac6202b' 'd18e88a217a00dc77cf2bfaa1d33b5fbc912deed5df686b0d2455fb0db75a677' '62cbd43346e7a7705127656a74bec44852e5bbfc006c4723005fdd23af5258db' 'fb082d88d9cca47534ae01fca676a3afdb909bfc82d52c97cf0eaedf34571d5f' 'bdead49ac5370dc84d9facee962bf2def5d9055d7339a37b2ba3f3b4bb02f811')
sha256sums=('ef260449409c942a35859ed017f13934f6bf6240ddccdd01a202225650dad73e'
'c97f02133adce63f0c28678ac1f21d65fa8255c80429b588aeeba8a1fac6202b'
'd18e88a217a00dc77cf2bfaa1d33b5fbc912deed5df686b0d2455fb0db75a677'
'62cbd43346e7a7705127656a74bec44852e5bbfc006c4723005fdd23af5258db'
'fb082d88d9cca47534ae01fca676a3afdb909bfc82d52c97cf0eaedf34571d5f'
'bdead49ac5370dc84d9facee962bf2def5d9055d7339a37b2ba3f3b4bb02f811'
'2b7ce1adcbfb39379f396a917bbc805a571f207ac2569ec6161348d88b3ccaf2')
prepare() {
@@ -58,6 +65,9 @@ prepare() {
patch -p1 -i "${srcdir}/0005-set-hermetic-python-version-and-disable-odml-converter.patch"
patch -p1 -i "${srcdir}/0006-opencv5-geometry-header.patch"
patch -p1 -i "${srcdir}/0007-bump-rules-java.patch"
# 1.1.0's semantic retriever links Google-toolchain prebuilts (libc++,
# internal symbols) that cannot link here; leave it out of libmediapipe.so
patch -p1 -i "${srcdir}/0008-drop-semantic-retriever-from-libmediapipe.patch"
# set __version__
sed -i "s/__version__ = 'dev'/__version__ = '$pkgver'/" setup.py
# set link_opencv to True