Install this version:
emerge -a =localai-backend/face-detect-4.11.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =localai-backend/face-detect-4.11.0
Or alternatively:
emerge --autounmask-write -a =localai-backend/face-detect-4.11.0
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 4.11.0 | 8 | ~amd64 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# LocalAI face-detection/embedding backend (SCRFD/insightface-class
# models), built from mudler's face-detect.cpp at the exact commit this
# LocalAI release pins.
#
# SPECIAL CASE (parakeet.cpp pattern): the engine carries a patch stack
# for its ggml submodule (third_party/ggml-patches, applied by
# upstream's configure hook via git, replayed here with eapply). At
# every bump re-derive BOTH pins and expect the patch content to change.
#
# Unlike the wrapper-module backends, the dlopen-able library is the
# engine's own target (libfacedetect.so) and the Go side (purego) opens
# it by bare soname — run.sh provides LD_LIBRARY_PATH instead of an
# engine-specific variable. Upstream vendors libjpeg-turbo via a
# network-fetching ExternalProject; FACEDETECT_VENDOR_LIBJPEG=OFF
# switches the engine to find_package(JPEG) and the system library.
EAPI=8
LOCAL_AI_ENGINE_LIB="libfacedetect.so"
# face-detect.cpp FORCE-overwrites the bare GGML_* toggles from its own
# gated options, so only the prefixed names select acceleration.
# (FACEDETECT_GGML_CUDNN stays off: upstream enables it only for
# arm64+CUDA13 images — x86 CUDA has no cuDNN and it is a link failure.)
LOCAL_AI_CUDA_CMAKE_VARS="FACEDETECT_GGML_CUDA"
LOCAL_AI_VULKAN_CMAKE_VARS="FACEDETECT_GGML_VULKAN"
LOCAL_AI_HIP_CMAKE_VARS="FACEDETECT_GGML_HIP"
LOCAL_AI_EXTRA_CMAKE_ARGS=(
-DFACEDETECT_SHARED=ON
-DFACEDETECT_BUILD_CLI=OFF
-DFACEDETECT_BUILD_TESTS=OFF
-DFACEDETECT_VENDOR_LIBJPEG=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
)
inherit local-ai-ggml-go
# The face-detect.cpp commit LocalAI v4.11.0 builds against. Source of
# truth: backend/go/face-detect/Makefile (FACEDETECT_VERSION) at the
# upstream release tag; the ggml pin is that commit's third_party/ggml
# gitlink.
FACEDETECT_COMMIT="e22260d5d5490b37b021b7f795079f386d553afd"
GGML_COMMIT="707321c4cf6d21cb4bc831aa8b687dbf01a521ce"
DESCRIPTION="LocalAI face-detection backend (face-detect.cpp gRPC server)"
SRC_URI="
${LOCAL_AI_GO_SRC_URI}
https://github.com/mudler/face-detect.cpp/archive/${FACEDETECT_COMMIT}.tar.gz -> face-detect.cpp-${FACEDETECT_COMMIT}.tar.gz
https://github.com/ggml-org/ggml/archive/${GGML_COMMIT}.tar.gz -> ggml-org-ggml-${GGML_COMMIT}.tar.gz
"
S="${WORKDIR}/LocalAI-${PV}/backend/go/face-detect"
CMAKE_USE_DIR="${S}/sources/face-detect.cpp"
KEYWORDS="~amd64"
RDEPEND+="
media-libs/libjpeg-turbo:=
"
DEPEND+="
media-libs/libjpeg-turbo:=
"
src_unpack() {
local-ai-backend_go_unpack
local ggml=( "ggml-org-ggml-${GGML_COMMIT}.tar.gz" "ggml-${GGML_COMMIT}" third_party/ggml )
local-ai-backend_engine_unpack "face-detect.cpp-${FACEDETECT_COMMIT}.tar.gz" face-detect.cpp "${ggml[@]}"
}
src_prepare() {
# Replay the engine's ggml patch stack (upstream's configure-time git
# apply fails its .git check on tarballs and only WARNS, silently
# building unpatched ggml).
einfo "Applying face-detect.cpp's own third_party/ggml-patches to ggml"
pushd "${CMAKE_USE_DIR}/third_party/ggml" >/dev/null || die
eapply "${CMAKE_USE_DIR}"/third_party/ggml-patches/*.patch
popd >/dev/null || die
local-ai-ggml_src_prepare
}
src_install() {
# purego dlopens the bare soname; the backend dir itself goes on
# LD_LIBRARY_PATH (no FACEDETECT_LIBRARY-style variable exists).
local-ai-backend_gen_run_sh "${PN}" "LD_LIBRARY_PATH=."
local-ai-backend_install "${PN}" "${BUILD_DIR}/${LOCAL_AI_ENGINE_LIB}" "${S}/${PN}"
}