spectacle 6.7.2 (7a6db883) → /usr/bin/spectacle. Cierre VERIFICADO, los 6 componentes de la cadena:
libKPipeWireRecord.so.6 + libopencv_core.so.410 + libopencv_imgproc.so.410 + libtesseract.so.5.5 +
libKF6PrisonScanner.so.6 + libKQuickImageEditor.so.1.
Cadena nueva completada en esta tanda:
ffmpeg 7.1 faafef5e libavcodec/avutil/avformat/avfilter/swscale — kpipewire los exige los
4 REQUIRED. ffmpeg NO usa autotools: su configure toma --cc/--ar/
--ranlib, y hay que darle wrappers de UN SOLO TOKEN (--ar="zig ar" con
espacio se ejecutaría como binario único — mismo gotcha que el AR de
los crates 'cc'). **--disable-autodetect** = determinismo: sin él
configure escanea el sandbox y activa libs a discreción.
libva 2.22.0 121cd0de libva.so + libva-drm.so, REQUIRED por kpipewire. Sólo la capa de
despacho; los drivers reales son RUNTIME (dlopen). Sólo backend DRM.
kpipewire 6.7.2 745665f3 KPipeWire + KPipeWireRecord. Deps: pipewire + ffmpeg + libva + gbm/EGL
(mesa) + libepoxy.
kquickimageeditor 0a4f8156 **BUMP 0.5.0 → 0.6.2.1**: spectacle 6.7 incluye
<KQuickImageEditor/AnnotationDocument>, que NO existe en la serie 0.5
(no tiene src/annotations). La 0.6.x suma deps propias: KF6Config
REQUIRED + OpenCV 4.7 (stack blur, WITH_OPENCV=TRUE por defecto).
Por qué era cara: TODO en spectacle es REQUIRED y casi nada degradable. En particular **KPipeWire no se
puede esquivar**: find_package va sin REQUIRED y set_package_properties lo marca TYPE REQUIRED (eso sí se
degrada con sed), pero src/CMakeLists.txt:101 linkea K::KPipeWireRecord INCONDICIONALMENTE.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
1.9 KiB
TOML
56 lines
1.9 KiB
TOML
# ffmpeg 7.1 — libavcodec/libavutil/libavformat/libavfilter (+swscale/swresample). Campaña KDE (ADR 0011):
|
|
# **kpipewire** los exige los cuatro REQUIRED (`pkg_check_modules(AVCodec ... libavcodec REQUIRED)` etc.)
|
|
# para KPipeWireRecord (grabar streams a fichero), y spectacle linkea K::KPipeWireRecord duro.
|
|
#
|
|
# ffmpeg NO usa autotools: trae su propio `configure` con --cc/--ar/--nm/--ranlib. Se le pasan wrappers de
|
|
# UN SOLO TOKEN (`$PWD/.zwrap/*`): un `--ar="zig ar"` con espacio se ejecutaría como un binario único
|
|
# (mismo gotcha que el AR de los crates `cc` en las recetas Rust).
|
|
#
|
|
# **--disable-autodetect** es clave para el determinismo: sin él, configure escanea el sandbox y activa
|
|
# libs a discreción. Con él, ffmpeg queda auto-contenido (sus códecs nativos, sin x264/x265/vpx/etc.).
|
|
# Sin programas (ffmpeg/ffplay/ffprobe) ni doc: kpipewire sólo consume las libs.
|
|
name = "ffmpeg"
|
|
version = "7.1"
|
|
|
|
[source]
|
|
tarball = "https://ffmpeg.org/releases/ffmpeg-7.1.tar.xz"
|
|
sha256 = "40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
configure = '''
|
|
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
|
cat > "$ZW/cc" <<'W'
|
|
#!/bin/sh
|
|
exec /opt/zig/zig cc -mcpu=baseline "$@"
|
|
W
|
|
cat > "$ZW/cxx" <<'W'
|
|
#!/bin/sh
|
|
exec /opt/zig/zig c++ -mcpu=baseline "$@"
|
|
W
|
|
cat > "$ZW/ar" <<'W'
|
|
#!/bin/sh
|
|
exec /opt/zig/zig ar "$@"
|
|
W
|
|
cat > "$ZW/ranlib" <<'W'
|
|
#!/bin/sh
|
|
exec /opt/zig/zig ranlib "$@"
|
|
W
|
|
chmod +x "$ZW/cc" "$ZW/cxx" "$ZW/ar" "$ZW/ranlib"
|
|
./configure --prefix=/usr \
|
|
--cc="$ZW/cc" --cxx="$ZW/cxx" --ar="$ZW/ar" --ranlib="$ZW/ranlib" \
|
|
--enable-shared --disable-static \
|
|
--disable-autodetect --disable-doc --disable-programs --disable-debug \
|
|
--disable-x86asm
|
|
'''
|
|
compile = 'make -j"$(nproc)"'
|
|
install = "make DESTDIR=/out install"
|
|
|
|
[deps]
|
|
build = ["pkgconf", "zlib-shared"]
|