Files
obs-localvocal/flatpak/com.obsproject.Studio.Plugin.LocalVocal.yaml
NaGeL Bailey a5efaf9c79 Fix onnxruntime clash with BackgroundRemoval (#303)
* Fix onnxruntime clash with BackgroundRemoval

* Fix formatting of FetchOnnxruntime.cmake to make the linter happy

---------

Co-authored-by: Tabitha Cromarty <tabby@brightmoon.online>
2026-04-21 14:29:10 +01:00

289 lines
10 KiB
YAML

# Flatpak manifest for OBS LocalVocal plugin
# Uses system dependencies from SDK where possible to reduce build time
app-id: com.obsproject.Studio.Plugin.LocalVocal
branch: stable
runtime: com.obsproject.Studio
runtime-version: stable
# Use exactly the same SDK as OBS Studio for maximum compatibility
sdk: org.freedesktop.Sdk//25.08
# Use Rust extension instead of compiling toolchain (saves ~15-20 min)
sdk-extensions:
- org.freedesktop.Sdk.Extension.rust-stable
build-extension: true
separate-locales: false
build-options:
prefix: /app/plugins/LocalVocal
prepend-pkg-config-path: /app/plugins/LocalVocal/lib/pkgconfig
append-path: /usr/lib/sdk/rust-stable/bin
env:
CARGO_HOME: /run/build/obs-localvocal/cargo
ACCELERATION: generic
modules:
# OpenBLAS - BLAS (Basic Linear Algebra Subprograms) library
- name: openblas
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_SHARED_LIBS=ON
- -DBUILD_TESTING=OFF
- -DUSE_OPENMP=ON
- -DNUM_THREADS=64
sources:
- type: archive
url: https://github.com/OpenMathLib/OpenBLAS/archive/refs/tags/v0.3.32.tar.gz
sha256: f8a1138e01fddca9e4c29f9684fd570ba39dedc9ca76055e1425d5d4b1a4a766
x-checker-data:
type: json
url: https://api.github.com/repos/OpenMathLib/OpenBLAS/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# whisper.cpp - Speech recognition engine
- name: whispercpp
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_PREFIX_PATH=/app/plugins/LocalVocal
- -DBUILD_SHARED_LIBS=ON
- -DWHISPER_BUILD_TESTS=OFF
- -DWHISPER_BUILD_EXAMPLES=OFF
- -DGGML_BLAS=ON
- -DGGML_BLAS_VENDOR=OpenBLAS
- -DGGML_NATIVE=OFF
- -DGGML_BACKEND_DL=OFF
- -DGGML_VULKAN=OFF
- -DGGML_OPENCL=OFF
- -DGGML_CUDA=OFF
sources:
- type: archive
url: https://github.com/ggerganov/whisper.cpp/archive/refs/tags/v1.8.4.tar.gz
sha256: b26f30e52c095ccb75da40b168437736605eb280de57381887bf9e2b65f31e66
x-checker-data:
type: json
url: https://api.github.com/repos/ggerganov/whisper.cpp/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# CTranslate2 - Neural machine translation engine
- name: ctranslate2
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_PREFIX_PATH=/app/plugins/LocalVocal
- -DBUILD_SHARED_LIBS=OFF
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON
- -DOPENMP_RUNTIME=COMP
- -DWITH_MKL=OFF
- -DWITH_DNNL=OFF
- -DWITH_ACCELERATE=OFF
- -DWITH_OPENBLAS=ON
- -DOPENBLAS_INCLUDE_DIR=/app/plugins/LocalVocal/include/openblas
- -DOPENBLAS_LIBRARY=/app/plugins/LocalVocal/lib/libopenblas.so
- -DWITH_RUY=OFF
- -DWITH_CUDA=OFF
- -DWITH_CUDNN=OFF
- -DWITH_TENSOR_PARALLEL=ON
- -DENABLE_CPU_DISPATCH=ON
- -DENABLE_PROFILING=OFF
- -DBUILD_CLI=OFF
- -DBUILD_TESTS=OFF
sources:
- type: archive
url: https://github.com/OpenNMT/CTranslate2/archive/refs/tags/v4.7.1.tar.gz
sha256: 64beb499c1e33500a691dfbe10cc5def7b914413c7f7c2830b0e0d8d544a9f7e
x-checker-data:
type: json
url: https://api.github.com/repos/OpenNMT/CTranslate2/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# Submodule: cpu_features - CPU feature detection library
- type: archive
url: https://github.com/google/cpu_features/archive/refs/tags/v0.10.1.tar.gz
sha256: 52639b380fced11d738f8b151dbfee63fb94957731d07f1966c812e5b90cbad4
dest: third_party/cpu_features
x-checker-data:
type: json
url: https://api.github.com/repos/google/cpu_features/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# Submodule: spdlog - Logging library
- type: archive
url: https://github.com/gabime/spdlog/archive/refs/tags/v1.17.0.tar.gz
sha256: d8862955c6d74e5846b3f580b1605d2428b11d97a410d86e2fb13e857cd3a744
dest: third_party/spdlog
x-checker-data:
type: json
url: https://api.github.com/repos/gabime/spdlog/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
post-install:
- install -Dm644 third_party/cpu_features/libcpu_features.a
${FLATPAK_DEST}/lib/libcpu_features.a
# SentencePiece - Text tokenization library
- name: sentencepiece
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DSPM_ENABLE_SHARED=OFF
- -DSPM_BUILD_TEST=OFF
sources:
- type: archive
url: https://github.com/google/sentencepiece/archive/refs/tags/v0.2.1.tar.gz
sha256: c1a59e9259c9653ad0ade653dadff074cd31f0a6ff2a11316f67bee4189a8f1b
x-checker-data:
type: json
url: https://api.github.com/repos/google/sentencepiece/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# OpenCL Headers - OpenCL header files for GPU programming
- name: opencl-headers
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DOPENCL_HEADERS_BUILD_TESTING=OFF
- -DOPENCL_HEADERS_BUILD_CL_LINK=OFF
sources:
- type: archive
url: https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v2025.07.22.tar.gz
sha256: 98f0a3ea26b4aec051e533cb1750db2998ab8e82eda97269ed6efe66ec94a240
x-checker-data:
type: json
url: https://api.github.com/repos/KhronosGroup/OpenCL-Headers/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
# Qt UIC wrapper - Uses ICU from SDK instead of custom build
- name: qt-uic-wrapper
buildsystem: simple
build-commands:
- |
_uic=""
for _p in \
/usr/bin/uic \
/usr/lib/qt6/bin/uic \
/usr/lib/libexec/uic \
/usr/lib/x86_64-linux-gnu/qt6/bin/uic \
/usr/lib64/qt6/bin/uic; do
if [ -x "$_p" ]; then
_uic="$_p"
break
fi
done
if [ -z "$_uic" ]; then
_uic=/app/libexec/qt/uic
fi
echo "qt-uic-wrapper: using uic at ${_uic}"
case "${_uic}" in
/usr/*)
printf '#!/bin/sh\nexec "%s" "$@"\n' "${_uic}" > ${FLATPAK_DEST}/uic-wrapper
;;
*)
printf '#!/bin/sh\nexport LD_LIBRARY_PATH="/app/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"\nexec "%s" "$@"\n' \
"${_uic}" > ${FLATPAK_DEST}/uic-wrapper
;;
esac
chmod 755 ${FLATPAK_DEST}/uic-wrapper
sources: []
# patchelf - for direct so version linking
- name : patchelf
buildsystem: simple
build-commands:
- install -D patchelf ${FLATPAK_DEST}/bin/patchelf
sources:
- type: archive
url: https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz
strip-components: 2
sha256: ce84f2447fb7a8679e58bc54a20dc2b01b37b5802e12c57eece772a6f14bf3f0
cleanup:
- /bin/patchelf
- /bin
# OBS LocalVocal - Main plugin
- name: obs-localvocal
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_AUTOUIC_EXECUTABLE=/app/plugins/LocalVocal/uic-wrapper
- -DCMAKE_PREFIX_PATH=/app/plugins/LocalVocal
- -DENABLE_FRONTEND_API=ON
- -DENABLE_QT=ON
- -DUSE_SYSTEM_CURL=ON
- -DUSE_SYSTEM_CTRANSLATE2=ON
- -DUSE_SYSTEM_SENTENCEPIECE=ON
- -DLINUX_SOURCE_BUILD=OFF
- -DACCELERATION=generic
- -DENABLE_TESTS=OFF
- -DFETCHCONTENT_SOURCE_DIR_CORROSION=/run/build/obs-localvocal/corrosion-src
- -DFETCHCONTENT_SOURCE_DIR_WHISPERCPP_FETCH=/run/build/obs-localvocal/whispercpp-prebuilt
- -DFETCHCONTENT_SOURCE_DIR_ONNXRUNTIME=/run/build/obs-localvocal/onnxruntime-prebuilt
sources:
- type: dir
path: ..
- type: file
path: com.obsproject.Studio.Plugin.LocalVocal.metainfo.xml
- type: archive
url: https://github.com/corrosion-rs/corrosion/archive/refs/tags/v0.6.1.tar.gz
sha256: e9e95b1ee2bad52681f347993fb1a5af5cce458c5ce8a2636c9e476e4babf8e3
dest: corrosion-src
x-checker-data:
type: json
url: https://api.github.com/repos/corrosion-rs/corrosion/releases/latest
version-query: .tag_name | sub("^v"; "")
url-query: .tarball_url
- type: archive
only-arches:
- x86_64
url: https://github.com/locaal-ai/occ-ai-dep-whispercpp/releases/download/0.0.13/whispercpp-linux-x86_64-generic-Release.tar.gz
sha256: 5811798e245482597ad393fac7bab82f0df8664e6b82be6231d089af13de0656
dest: whispercpp-prebuilt
strip-components: 1
- type: archive
only-arches:
- x86_64
url: https://github.com/microsoft/onnxruntime/releases/download/v1.20.1/onnxruntime-linux-x64-gpu-1.20.1.tgz
sha256: 6bfb87c6ebe55367a94509b8ef062239e188dccf8d5caac8d6909b2344893bf0
dest: onnxruntime-prebuilt
strip-components: 1
- type: inline
contents: |
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "/run/build/obs-localvocal/cargo/vendor"
dest: cargo
dest-filename: config.toml
- cargo-sources.json
post-install:
- install -Dm644 --target-directory=${FLATPAK_DEST}/share/metainfo
${FLATPAK_BUILDER_BUILDDIR}/com.obsproject.Studio.Plugin.LocalVocal.metainfo.xml
cleanup:
- /uic-wrapper
- /include
- /lib/cmake
- /lib/pkgconfig
- /lib64/cmake
- /lib64/pkgconfig
- /share/aclocal
- "*.la"
- "*.a"