kde/Plasma: sub-deps gmp/mpfr/qrencode/syntax-highlighting/qtspeech (blockers de libqalculate/prison/ktexteditor)

This commit is contained in:
2026-07-13 14:32:36 -04:00
parent 4039762194
commit 8a903b9cf0
5 changed files with 195 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# GNU GMP 6.3.0 — aritmética de enteros/racionales/floats de precisión arbitraria (libgmp.so + libgmpxx.so).
# Campaña KDE (ADR 0011): sustrato de libqalculate (motor matemático de KCalc/KRunner), que exige el
# interfaz C++ gmpxx.h además del C. También base de mpfr (#2 de esta tanda).
#
# compiler=gcc: GMP trae ensamblador x86_64 a mano (mpn/x86_64) muy afinado; zig-cc tropieza con esos
# .asm. gcc nativo los consume igual que Alpine (gmp-dev). link=dynamic (libtool descarta -static igual).
#
# --enable-cxx: construye libgmpxx.so (interfaz C++). libqalculate hace #include <gmpxx.h> y linkea
# -lgmpxx, así que SIN esto el consumidor re-bloquea. gcc compila el C++ de gmp sin problema.
# La descarga es del mirror GNU (ftp.gnu.org): gmplib.org rechaza curl/hammer-fetch (cuelga en TLS).
name = "gmp"
version = "6.3.0"
[source]
tarball = "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz"
sha256 = "a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898"
[build]
compiler = "gcc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-static --enable-shared --enable-cxx'
compile = 'make -j"$(nproc)"'
install = "make install DESTDIR=/out && find /out -name '*.la' -delete"
[deps]
build = ["m4", "pkgconf"]
+29
View File
@@ -0,0 +1,29 @@
# GNU MPFR 4.2.2 — floats de precisión arbitraria con redondeo correcto (libmpfr.so), sobre GMP.
# Campaña KDE (ADR 0011): sustrato de libqalculate (motor matemático). Depende de gmp (#1 de esta tanda).
#
# compiler=gcc: MPFR se apoya en el asm de GMP y en modos de coma flotante que zig-cc traduce mal; gcc
# nativo lo construye idéntico a Alpine (mpfr-dev). link=dynamic (libtool descarta -static).
#
# --with-gmp=/usr: apunta al GMP sellado (headers en /usr/include, libgmp.so en /usr/lib). El flag exacto
# de MPFR es --with-gmp=DIR (NO --with-gmp-prefix); con GMP en el prefix estándar /usr lo hallaría solo,
# pero se explicita para determinismo.
name = "mpfr"
version = "4.2.2"
[source]
tarball = "https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.xz"
sha256 = "b67ba0383ef7e8a8563734e2e889ef5ec3c3b898a01d00fa0a6869ad81c6ce01"
[build]
compiler = "gcc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-static --enable-shared --with-gmp=/usr'
compile = 'make -j"$(nproc)"'
install = "make install DESTDIR=/out && find /out -name '*.la' -delete"
[deps]
build = ["gmp", "pkgconf"]
+38
View File
@@ -0,0 +1,38 @@
# libqrencode 4.1.1 — generador de códigos QR (libqrencode.so). Campaña KDE (ADR 0011): sustrato de
# prison (KF6 barcode), que a su vez alimenta KRunner/Plasma. C puro, CMake (4.1.1 trae CMakeLists.txt).
#
# WITH_TOOLS=NO: el ejecutable `qrencode` sólo lo usa la CLI de ejemplo y es lo único que necesita
# PNG::PNG (líneas 139-147 del CMakeLists); prison sólo enlaza la lib, así que sin tools no hace falta
# libpng (no sellado aún). WITHOUT_PNG=YES lo confirma. BUILD_SHARED_LIBS=ON (default del proyecto es
# NO → estático). find_package(PNG)/find_package(Iconv) NO son REQUIRED; iconv lo aporta musl.
name = "qrencode"
version = "4.1.1"
[source]
tarball = "https://github.com/fukuchi/libqrencode/archive/refs/tags/v4.1.1.tar.gz"
sha256 = "5385bc1b8c2f20f3b91d258bf8ccc8cf62023935df2d2676b5b67049f31a049c"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
zig_version = "0.13.0"
flags = []
[build.phases]
configure = '''
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > "$ZW/cc"
printf '#!/bin/sh\nexec /opt/zig/zig c++ -mcpu=baseline "$@"\n' > "$ZW/cxx"
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_SHARED_LIBS=ON -DWITH_TOOLS=NO -DWITHOUT_PNG=YES -DWITH_TESTS=NO
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf"]
+45
View File
@@ -0,0 +1,45 @@
# qt6-qtspeech 6.11.1 — módulo Qt TextToSpeech (Qt6::TextToSpeech). Campaña KDE (ADR 0011): habilita
# accesibilidad/TTS en apps KDE. Molde Qt del gate H-Qt (dinámico, wrappers zig, Qt6 vía PREFIX_PATH).
#
# Backends (src/tts/configure.cmake): flite y speechd son FEATURES autodetectadas (CONDITION *_FOUND),
# NO REQUIRED → sin las libs construye el plugin dummy (mock). Se desactivan explícitos con
# -DQT_FEATURE_flite=OFF -DQT_FEATURE_speechd=OFF para no picar libs del host y ser deterministas.
#
# ⚠️ BLOCKER DURO: el CMakeLists raíz hace `if(NOT TARGET Qt6::Multimedia) ... return()`, y el módulo
# TextToSpeech lista Qt::Multimedia en PUBLIC_LIBRARIES. Sin qtmultimedia sellado, la build sale VACÍA
# (no produce libQt6TextToSpeech.so). 'qtmultimedia' NO está sellado → esta pieza no rinde hasta tenerlo.
# Es el sub-blocker nuevo de qtspeech (no speech-dispatcher, que es opcional).
name = "qt6-qtspeech"
version = "6.11.1"
[source]
tarball = "https://download.qt.io/official_releases/qt/6.11/6.11.1/submodules/qtspeech-everywhere-src-6.11.1.tar.xz"
sha256 = "c035c318012025875a653245701a23d3807e8e46b8bf7987877842219c273f14"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
printf '#!/bin/sh\nexec /opt/zig/zig cc -mcpu=baseline "$@"\n' > "$ZW/cc"
printf '#!/bin/sh\nexec /opt/zig/zig c++ -mcpu=baseline "$@"\n' > "$ZW/cxx"
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_INTERPROCEDURAL_OPTIMIZATION=OFF -DCMAKE_PREFIX_PATH=/usr \
-DINSTALL_BINDIR=lib/qt6/bin -DINSTALL_PUBLICBINDIR=bin -DINSTALL_LIBEXECDIR=lib/qt6/libexec \
-DINSTALL_ARCHDATADIR=lib/qt6 -DINSTALL_DATADIR=share/qt6 -DINSTALL_INCLUDEDIR=include/qt6 \
-DINSTALL_MKSPECSDIR=lib/qt6/mkspecs \
-DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF \
-DQT_FEATURE_flite=OFF -DQT_FEATURE_speechd=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "qtmultimedia", "mesa", "libdrm", "libxkbcommon"]
@@ -0,0 +1,53 @@
# syntax-highlighting 6.27.0 — KDE Frameworks 6 (KSyntaxHighlighting, KF6::SyntaxHighlighting).
# Campaña KDE (ADR 0011): sustrato de ktexteditor (el motor de Kate/KWrite) y de KTextEditor-consumers.
# Molde KF6 (kxmlgui): dynamic, wrapper zig que filtra -Wl,--fatal-warnings, CMAKE_PREFIX_PATH=/usr, ECM.
#
# find_package del CMakeLists: Qt6 Core+Network+Test REQUIRED, Qt6::Gui REQUIRED (KSYNTAXHIGHLIGHTING_USE_GUI
# ON por defecto), Qt6::Quick OPCIONAL (→ qtdeclarative, para los bindings QML). PrintSupport/Widgets sólo
# para el ejemplo (BUILD_TESTING=OFF los evita). XercesC/Python OPCIONALES (omitidos).
#
# ⚠️ find_package(Perl REQUIRED): perl regenera las definiciones de sintaxis (data/generators/*.pl,
# PHP auto-gen). Es dep de build DURA. 'perl' NO está sellado todavía → esta receta NO construye hasta
# tener recipes/…/perl. Es el único blocker nuevo de esta pieza.
#
# rm -rf po poqm: no hay carpeta po en 6.27.0, pero se limpia poqm defensivamente (gettext-tiny/msgfmt
# crashea con catálogos grandes; ecm_install_po_files_as_qm(poqm) quedaría inerte).
name = "syntax-highlighting"
version = "6.27.0"
[source]
tarball = "https://download.kde.org/stable/frameworks/6.27/syntax-highlighting-6.27.0.tar.xz"
sha256 = "cbff001b9f00d032feb254313ecfee9a6e0a0b3c5a8c82a7e0806c5f1915a545"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
rm -rf po poqm
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 -DBUILD_PYTHON_BINDINGS=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "perl", "qtbase", "qtdeclarative", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "gettext-tiny"]