kde/Plasma: spectacle SELLA — la CAPTURA DE PANTALLA (la app más cara de la campaña)
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>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 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"]
|
||||
@@ -0,0 +1,52 @@
|
||||
# kpipewire 6.7.2 — captura de streams PipeWire para Plasma (KPipeWire + **KPipeWireRecord**).
|
||||
# Campaña KDE (ADR 0011): es el último blocker de spectacle, que linkea `K::KPipeWireRecord` de forma
|
||||
# INCONDICIONAL (src/CMakeLists.txt:101). También lo usan la compartición de pantalla y los portales.
|
||||
#
|
||||
# Deps REQUIRED (pkg_check_modules): libpipewire-0.3 (receta pipewire) + libavcodec/libavutil/libavformat/
|
||||
# libavfilter (receta ffmpeg) + gbm (mesa) + EGL (mesa). Qt6: DBus OpenGL Quick (+GuiPrivate). KF6: I18n
|
||||
# CoreAddons.
|
||||
name = "kpipewire"
|
||||
version = "6.7.2"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/plasma/6.7.2/kpipewire-6.7.2.tar.xz"
|
||||
sha256 = "68bd246f4d403d3d7f49bd2ffcd4e0d12bc55fa81554533f750ac2e4bb5aa61e"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
rm -rf po
|
||||
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
||||
cat > "$ZW/cc" <<'W'
|
||||
#!/bin/sh
|
||||
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
|
||||
exec /opt/zig/zig cc -mcpu=baseline $a
|
||||
W
|
||||
cat > "$ZW/cxx" <<'W'
|
||||
#!/bin/sh
|
||||
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
|
||||
exec /opt/zig/zig c++ -mcpu=baseline $a
|
||||
W
|
||||
chmod +x "$ZW/cc" "$ZW/cxx"
|
||||
cmake -B build -G Ninja -Wno-dev \
|
||||
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
|
||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
|
||||
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_TESTING=OFF
|
||||
'''
|
||||
compile = "cmake --build build"
|
||||
install = "DESTDIR=/out cmake --install build"
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools",
|
||||
"gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols",
|
||||
"plasma-wayland-protocols", "qtwayland", "qtdeclarative",
|
||||
"pipewire", "ffmpeg", "libva", "alsa-lib", "libsndfile", "pulseaudio",
|
||||
"glib-shared", "pcre2-shared", "libffi", "libudev-zero", "expat",
|
||||
"ki18n", "kcoreaddons", "kwayland", "zlib-shared", "libepoxy",
|
||||
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
|
||||
"libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", "xcb-util-renderutil"]
|
||||
@@ -1,11 +1,16 @@
|
||||
# kquickimageeditor 0.5.0 — editor de imágenes simple para QtQuick (org.kde.kquickimageeditor).
|
||||
# Campaña KDE (ADR 0011): spectacle lo marca TYPE REQUIRED (recorte/anotación de la captura).
|
||||
# kquickimageeditor 0.6.2.1 — editor de imágenes para QtQuick (org.kde.kquickimageeditor) + la API de
|
||||
# ANOTACIONES. Campaña KDE (ADR 0011): spectacle lo marca TYPE REQUIRED (recorte/anotación de la captura).
|
||||
#
|
||||
# **La versión importa**: spectacle 6.7 incluye <KQuickImageEditor/AnnotationDocument>, que NO existe en
|
||||
# 0.5.0 (esa serie no tiene src/annotations) ⇒ "fatal error: KQuickImageEditor/AnnotationDocument file not
|
||||
# found". Hay que usar la serie 0.6.x. Esa serie además suma deps: KF6Config REQUIRED y OpenCV 4.7
|
||||
# (core+imgproc, para el "stack blur" — WITH_OPENCV es TRUE por defecto en UNIX); ambas ya selladas.
|
||||
name = "kquickimageeditor"
|
||||
version = "0.5.0"
|
||||
version = "0.6.2.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/kquickimageeditor/kquickimageeditor-0.5.0.tar.xz"
|
||||
sha256 = "8ebbfdce39efbbb63679badc3320fe06eb3aa68a4da5f50740197645c985ad0f"
|
||||
tarball = "https://download.kde.org/stable/kquickimageeditor/kquickimageeditor-0.6.2.1.tar.xz"
|
||||
sha256 = "6d37a479463dcd16e4746d8b43d4adb05640e8b49056baabc82c865e2e1a4c85"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
@@ -38,4 +43,5 @@ install = "DESTDIR=/out cmake --install build"
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools",
|
||||
"gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative", "kirigami"]
|
||||
"gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative", "kirigami",
|
||||
"kconfig", "kcoreaddons", "opencv", "zlib-shared"]
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# libva 2.22.0 — Video Acceleration API (libva.so + libva-drm.so). Campaña KDE (ADR 0011): **kpipewire**
|
||||
# los exige REQUIRED (`pkg_check_modules(LIBVA ... libva REQUIRED)` + libva-drm), para codificar por
|
||||
# hardware los streams que graba KPipeWireRecord.
|
||||
#
|
||||
# Es sólo la capa de despacho: los drivers reales (intel-media-driver / mesa gallium VA) son RUNTIME y
|
||||
# se cargan por dlopen — no hacen falta para compilar. Sólo backend DRM: sin X11/Wayland/GLX (evita
|
||||
# arrastrar más cadena; el driver DRM es el que usa kpipewire).
|
||||
name = "libva"
|
||||
version = "2.22.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/intel/libva/archive/refs/tags/2.22.0.tar.gz"
|
||||
sha256 = "467c418c2640a178c6baad5be2e00d569842123763b80507721ab87eb7af8735"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release \
|
||||
-Ddefault_library=shared \
|
||||
-Dwith_x11=no -Dwith_glx=no -Dwith_wayland=no -Dwith_win32=no -Ddisable_drm=false \
|
||||
-Denable_docs=false
|
||||
'''
|
||||
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
|
||||
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
|
||||
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "libdrm"]
|
||||
@@ -1,22 +1,17 @@
|
||||
# spectacle 6.7.2 — la herramienta de CAPTURA DE PANTALLA de Plasma. Campaña KDE (ADR 0011).
|
||||
# Captura en Wayland es notoriamente difícil: no hay X11 grab; va por los protocolos de KWin
|
||||
# (plasma-wayland-protocols + layer-shell-qt) y/o portales. **NO está en release-service** (migró): vive
|
||||
# en download.kde.org/stable/plasma/.
|
||||
#
|
||||
# ⛔ BLOCKER VIVO (dep no sellada): **KPipeWire**. `find_package(KPipeWire)` va sin REQUIRED y
|
||||
# set_package_properties lo marca TYPE REQUIRED (degradable con sed), PERO src/CMakeLists.txt:101 linkea
|
||||
# `K::KPipeWireRecord` INCONDICIONALMENTE ⇒ no hay forma de compilar sin él:
|
||||
# CMake Error: Target "spectacle" links to: K::KPipeWireRecord but the target was not found
|
||||
# Falta la cadena **pipewire → (ffmpeg, para KPipeWireRecord) → kpipewire**. Hasta sellarla, NO construye.
|
||||
#
|
||||
# TODO LO DEMÁS DE SU CADENA YA ESTÁ RESUELTO Y SELLADO en esta cola (por eso se commitea la receta):
|
||||
# - opencv (79526f4b, core+imgproc) — find_package(OpenCV 4.7 REQUIRED), lo usa src/QtCV.h
|
||||
# - prison-scanner (cbfd6dcc) + zxing-cpp (c98afd82) — spectacle corta con SEND_ERROR si falta
|
||||
# KF6::PrisonScanner, y el prison canónico va con WITH_ZXING=OFF/WITH_MULTIMEDIA=OFF
|
||||
# - tesseract (08c05238) + leptonica (e80a5d36) — pkg_check_modules(TESSERACT REQUIRED), OCR, sin flag
|
||||
# - kquickimageeditor (3d4bd904) — TYPE REQUIRED (recorte/anotación)
|
||||
# - xcb-util-cursor — sin él: "No suitable backend platform was found ... XCB-CURSOR"
|
||||
#
|
||||
# NO está en release-service (migró): vive en download.kde.org/stable/plasma/.
|
||||
# Captura en Wayland es notoriamente difícil: no hay X11 grab; va por protocolos de KWin
|
||||
# (plasma-wayland-protocols + layer-shell-qt) y/o portales.
|
||||
# Es la app más cara de la campaña en deps nuevas. Todo REQUIRED, casi nada degradable:
|
||||
# - **kpipewire** (→ pipewire → ffmpeg + libva): src/CMakeLists.txt:101 linkea `K::KPipeWireRecord`
|
||||
# INCONDICIONALMENTE. Degradar KPipeWire a TYPE OPTIONAL con sed NO alcanza (el link es duro).
|
||||
# - **opencv** (core+imgproc): find_package(OpenCV 4.7 REQUIRED), lo usa src/QtCV.h.
|
||||
# - **prison-scanner** (+zxing-cpp): corta con SEND_ERROR si falta KF6::PrisonScanner, y el prison
|
||||
# canónico va con WITH_ZXING=OFF/WITH_MULTIMEDIA=OFF.
|
||||
# - **tesseract** (+leptonica): pkg_check_modules(TESSERACT REQUIRED) en CMakeLists:111, sin option().
|
||||
# - **kquickimageeditor**: TYPE REQUIRED (recorte/anotación).
|
||||
# - **xcb-util-cursor**: sin él, "No suitable backend platform was found ... XCB-CURSOR".
|
||||
name = "spectacle"
|
||||
version = "6.7.2"
|
||||
|
||||
@@ -36,10 +31,6 @@ rm -rf po doc
|
||||
sed -i '/add_subdirectory(doc)/d' CMakeLists.txt
|
||||
sed -i '/kdoctools_install/d' CMakeLists.txt
|
||||
sed -i '/set_package_properties(KF6DocTools/,/)/ s/TYPE REQUIRED/TYPE OPTIONAL/' CMakeLists.txt
|
||||
# KPipeWire: find_package SIN REQUIRED pero set_package_properties lo marca TYPE REQUIRED ⇒ feature_summary
|
||||
# aborta. Sirve para GRABAR VIDEO de streams pipewire; spectacle es capturador de PANTALLA (imagen), así
|
||||
# que se degrada a OPTIONAL en vez de arrastrar toda la cadena PipeWire. Deuda: sin grabación de video.
|
||||
sed -i '/set_package_properties(KPipeWire/,/)/ s/TYPE REQUIRED/TYPE OPTIONAL/' CMakeLists.txt
|
||||
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
||||
cat > "$ZW/cc" <<'W'
|
||||
#!/bin/sh
|
||||
@@ -66,6 +57,7 @@ build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtsvg", "dbus", "e
|
||||
"wayland-protocols", "plasma-wayland-protocols", "qtwayland", "layer-shell-qt", "qtmultimedia",
|
||||
"opencv", "prison-scanner", "zxing-cpp", "qt5compat",
|
||||
"tesseract", "leptonica", "kquickimageeditor", "libpng-shared", "libjpeg-turbo-shared",
|
||||
"kpipewire", "pipewire", "ffmpeg", "libva", "libepoxy", "kwayland",
|
||||
"kcoreaddons", "kwidgetsaddons", "kdbusaddons", "knotifications", "kconfig", "ki18n", "kio",
|
||||
"kwindowsystem", "kglobalaccel", "kxmlgui", "kguiaddons", "kirigami", "kirigami-addons",
|
||||
"kstatusnotifieritem", "kcrash", "kpackage",
|
||||
|
||||
Reference in New Issue
Block a user