diff --git a/recipes/incoming-kde/gmp.toml b/recipes/incoming-kde/gmp.toml new file mode 100644 index 00000000..1338eac6 --- /dev/null +++ b/recipes/incoming-kde/gmp.toml @@ -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 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"] diff --git a/recipes/incoming-kde/mpfr.toml b/recipes/incoming-kde/mpfr.toml new file mode 100644 index 00000000..d50de7fb --- /dev/null +++ b/recipes/incoming-kde/mpfr.toml @@ -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"] diff --git a/recipes/incoming-kde/qrencode.toml b/recipes/incoming-kde/qrencode.toml new file mode 100644 index 00000000..4b338e6d --- /dev/null +++ b/recipes/incoming-kde/qrencode.toml @@ -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"] diff --git a/recipes/incoming-kde/qtspeech.toml b/recipes/incoming-kde/qtspeech.toml new file mode 100644 index 00000000..e03ff42d --- /dev/null +++ b/recipes/incoming-kde/qtspeech.toml @@ -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"] diff --git a/recipes/incoming-kde/syntax-highlighting.toml b/recipes/incoming-kde/syntax-highlighting.toml new file mode 100644 index 00000000..524fadef --- /dev/null +++ b/recipes/incoming-kde/syntax-highlighting.toml @@ -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"]