kde/Plasma: gwenview 25.04.3 (7ma app, visor imágenes) + phonon/exiv2 + shared image libs + fix zlib versionado
gwenview sella (1d2bb09d). NEEDED verificado: libexiv2.so.28 + libjpeg.so.62 + libpng16.so.16 + liblcms2.so.2 + libphonon4qt6.so.4. Deps nuevas: phonon 4.12.0 (f0cdba38, multimedia REQUIRED, recorte Qt6-mín) + exiv2 0.28.5 (3eebcce9, EXIF REQUIRED vía FindLibExiv2 de ECM, minimal sólo-zlib + fix -Wno-error=date-time). kImageAnnotator degradado a OPTIONAL. Más deuda Capa 0 (static→shared/PIC): libjpeg-turbo-shared (2c0dca7f, libjpeg.so.8) + libpng-shared (bf8f7724, libpng16.so.16) — el .a canónico no enlaza en gwenviewlib.so. FIX SOBERANÍA zlib versionado: zlib-shared re-hecho con -Wl,--version-script,zlib.map ⇒ ahora exporta compressBound@@ZLIB_1.2.0 e inflateReset2@@ZLIB_1.2.3.4. Qt6 (libQt6Core/Gui) NEEDED esos @tags; el libz.so previo (--whole-archive sin mapa) sólo daba nombres pelados → ld.lld fallaba con --no-allow-shlib-undefined y Qt caía en runtime a la libz de Alpine (fuga). El .so versionado satisface consumidores versionados y no-versionados. Apps: konsole+dolphin+kate+kcalc+ark+filelight+gwenview. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# exiv2 0.28.5 — lectura/escritura de metadatos de imagen EXIF/IPTC (libexiv2.so). Campaña KDE (ADR 0011):
|
||||
# gwenview lo exige TYPE REQUIRED (soporte de metadatos de imagen).
|
||||
#
|
||||
# CMake + wrapper zig. Minimal: sólo PNG(zlib). XMP(expat+brotli), BMFF/Brotli, inih y NLS OFF ⇒ única dep
|
||||
# runtime = libz.so (zlib-shared). Sin CLI ni samples.
|
||||
name = "exiv2"
|
||||
version = "0.28.5"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/Exiv2/exiv2/archive/refs/tags/v0.28.5.tar.gz"
|
||||
sha256 = "e1671f744e379a87ba0c984617406fdf8c0ad0c594e5122f525b2fb7c28d394d"
|
||||
|
||||
[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
|
||||
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_CXX_FLAGS="-Wno-error=date-time" \
|
||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
|
||||
-DBUILD_SHARED_LIBS=ON -DEXIV2_ENABLE_PNG=ON \
|
||||
-DEXIV2_ENABLE_XMP=OFF -DEXIV2_ENABLE_BMFF=OFF -DEXIV2_ENABLE_BROTLI=OFF \
|
||||
-DEXIV2_ENABLE_INIH=OFF -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_WEBREADY=OFF \
|
||||
-DEXIV2_BUILD_SAMPLES=OFF -DEXIV2_BUILD_EXIV2_COMMAND=OFF -DEXIV2_BUILD_UNIT_TESTS=OFF
|
||||
'''
|
||||
compile = "cmake --build build"
|
||||
install = "DESTDIR=/out cmake --install build"
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "samurai", "python3", "pkgconf", "zlib-shared"]
|
||||
@@ -0,0 +1,57 @@
|
||||
# gwenview 25.04.3 — el visor de imágenes de KDE. 7ma APP del escritorio.
|
||||
# Patrón KF6 app (dynamic, wrapper zig, ECM). Deps nuevas: phonon (sonido slideshow, REQUIRED) + exiv2
|
||||
# (metadatos EXIF, REQUIRED; localizado por el FindLibExiv2.cmake de ECM). Imagen: libjpeg-turbo-shared +
|
||||
# libpng-shared (variantes .so/PIC; el .a canónico no enlaza en gwenviewlib.so) + lcms2 (color, REQUIRED).
|
||||
# kImageAnnotator (anotación, ksnip) se degrada a OPTIONAL (el código guarda con KIMAGEANNOTATOR_FOUND).
|
||||
name = "gwenview"
|
||||
version = "25.04.3"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/release-service/25.04.3/src/gwenview-25.04.3.tar.xz"
|
||||
sha256 = "59bf9fc4a4be87260781ccb5872212484b697caa53fa0ee7e128bdb08eaf5e87"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = '''
|
||||
rm -rf po doc
|
||||
sed -i '/add_subdirectory(doc)/d' CMakeLists.txt
|
||||
sed -i '/kdoctools_install/d' CMakeLists.txt
|
||||
# kImageAnnotator-Qt6: REQUIRED → OPTIONAL (no lo tenemos; anotación deshabilitada).
|
||||
sed -i '/kImageAnnotator-Qt6 PROPERTIES/ s/TYPE REQUIRED/TYPE OPTIONAL/' CMakeLists.txt
|
||||
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", "qtsvg", "qtwayland", "dbus",
|
||||
"extra-cmake-modules", "qttools", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland",
|
||||
"wayland-protocols", "plasma-wayland-protocols", "qtdeclarative",
|
||||
"phonon", "exiv2", "libjpeg-turbo-shared", "libpng-shared", "zlib-shared", "lcms2",
|
||||
"kio", "kitemmodels", "ki18n", "kparts", "kwindowsystem", "kiconthemes", "knotifications",
|
||||
"kguiaddons", "kwidgetsaddons", "kcrash",
|
||||
"kcoreaddons", "kservice", "kbookmarks", "kjobwidgets", "kcompletion", "kcodecs", "kcolorscheme",
|
||||
"kconfig", "kconfigwidgets", "kxmlgui", "kitemviews", "solid", "sonnet", "karchive", "attica",
|
||||
"kglobalaccel", "kauth", "icu4c", "ktextwidgets", "kirigami",
|
||||
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
|
||||
"libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", "xcb-util-renderutil"]
|
||||
@@ -0,0 +1,24 @@
|
||||
# libjpeg-turbo-shared 3.1.3 — variante DINÁMICA (libjpeg.so.8 + libturbojpeg.so.0, PIC) para el
|
||||
# escritorio KDE. El canónico (recipes/incoming-kde/libjpeg-turbo.toml) es ENABLE_SHARED=0 (sólo .a sin
|
||||
# PIC) ⇒ no enlaza dentro de un .so ('R_X86_64_32S ... recompile with -fPIC', jpeg_nbits_table). Como
|
||||
# zlib-shared/bzip2-shared. Nombre distinto para no colisionar con el canónico. gwenview lo linkea.
|
||||
name = "libjpeg-turbo-shared"
|
||||
version = "3.1.3"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.3/libjpeg-turbo-3.1.3.tar.gz"
|
||||
sha256 = "075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = "cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release -DENABLE_SHARED=1 -DENABLE_STATIC=0 -DWITH_SIMD=0"
|
||||
compile = "cmake --build build"
|
||||
install = "DESTDIR=/out cmake --install build"
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "samurai"]
|
||||
@@ -0,0 +1,23 @@
|
||||
# libpng-shared 1.6.58 — variante DINÁMICA (libpng16.so.16, PIC) para el escritorio KDE. El canónico
|
||||
# (recipes/libpng.toml) es --disable-shared (sólo libpng16.a sin PIC) ⇒ no enlaza dentro de un .so. Como
|
||||
# zlib-shared/xz-shared: autotools --enable-shared, zig-cc, contra zlib-shared (libz.so). gwenview linkea.
|
||||
name = "libpng-shared"
|
||||
version = "1.6.58"
|
||||
|
||||
[source]
|
||||
tarball = "https://downloads.sourceforge.net/libpng/libpng-1.6.58.tar.gz"
|
||||
sha256 = "8c9b05b675ca7301a458df2c2e46f26e1d41ff36b8863f8c33530bc58c2e6225"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
|
||||
compile = 'make -j"$(nproc)"'
|
||||
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
|
||||
|
||||
[deps]
|
||||
build = ["zlib-shared", "pkgconf"]
|
||||
@@ -0,0 +1,48 @@
|
||||
# phonon 4.12.0 — framework multimedia de KDE (libphonon4qt6.so). Abstracción sobre backends de audio/
|
||||
# video (vlc/gstreamer, RUNTIME). Campaña KDE (ADR 0011): gwenview lo exige REQUIRED (sonido de slideshow).
|
||||
#
|
||||
# CMake + wrapper zig. Se recorta a la lib Qt6 mínima: sin designer-plugin (Qt6Designer), sin experimental
|
||||
# (Qt6Core5Compat), sin Qt5, sin settings-GUI. Sólo Core/Gui/Widgets. Sin backend: silencioso pero enlaza.
|
||||
name = "phonon"
|
||||
version = "4.12.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.kde.org/stable/phonon/4.12.0/phonon-4.12.0.tar.xz"
|
||||
sha256 = "3287ffe0fbcc2d4aa1363f9e15747302d0b080090fe76e5f211d809ecb43f39a"
|
||||
|
||||
[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
|
||||
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 \
|
||||
-DPHONON_BUILD_QT5=OFF -DPHONON_BUILD_QT6=ON \
|
||||
-DPHONON_BUILD_EXPERIMENTAL=OFF -DPHONON_BUILD_DESIGNER_PLUGIN=OFF \
|
||||
-DPHONON_BUILD_DEMOS=OFF -DPHONON_BUILD_SETTINGS=OFF -DPHONON_BUILD_DOC=OFF
|
||||
'''
|
||||
compile = "cmake --build build"
|
||||
install = "DESTDIR=/out cmake --install build"
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "extra-cmake-modules", "qttools",
|
||||
"qt5compat", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland",
|
||||
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
|
||||
"libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", "xcb-util-renderutil"]
|
||||
@@ -6,8 +6,14 @@
|
||||
# soberanía, deuda static↔dinámico de Capa 0). Esta variante sella el `libz.so.1` soberano: los `.so` de
|
||||
# KDE ya tienen NEEDED libz.so.1 (mismo soname), así que basta hidratar este artefacto — sin rebuild de KDE.
|
||||
#
|
||||
# Build shared: el configure a mano de zlib genera libz.so.1.3.1 + symlinks libz.so.1/libz.so por defecto
|
||||
# (sin --static). -fPIC/-O2/-fno-sanitize=undefined igual que la canónica (evita el runtime UBSan de zig).
|
||||
# Build shared: el configure de zlib aborta bajo zig cc ("compiler error reporting too harsh"), así que se
|
||||
# fabrica el libz.so.1 a mano del libz.a PIC con --whole-archive. CLAVE (fix soberanía): se pasa el
|
||||
# --version-script=zlib.map del propio tarball ⇒ el .so exporta los símbolos VERSIONADOS (ZLIB_1.2.0
|
||||
# compressBound, ZLIB_1.2.3.4 inflateReset2, …). Qt6 (libQt6Core/Gui) fue enlazado contra un zlib
|
||||
# versionado y NEEDED esos @tags; sin el mapa, un libz.so con nombres pelados no resolvía
|
||||
# inflateReset2@ZLIB_1.2.3.4 al enlazar gwenview (--no-allow-shlib-undefined) y Qt caía en runtime a la
|
||||
# libz.so.1 de Alpine (fuga). El .so versionado satisface consumidores versionados Y no-versionados.
|
||||
# -fPIC/-O2/-fno-sanitize=undefined igual que la canónica (evita el runtime UBSan de zig).
|
||||
|
||||
name = "zlib-shared"
|
||||
version = "1.3.1"
|
||||
@@ -21,10 +27,7 @@ compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
# zlib configure a-mano no construye el .so con el CC multi-palabra de zig ⇒ fabricamos libz.so.1 del
|
||||
# libz.a PIC con --whole-archive (truco documentado de Capa 0). El soname libz.so.1 es el que NEEDED todo
|
||||
# el stack KDE. Symlinks libz.so.1→.1.3.1 y libz.so→.1 para el loader y el linker.
|
||||
[build.phases]
|
||||
configure = "CFLAGS='-fPIC -O2 -fno-sanitize=undefined' ./configure --prefix=/usr --static"
|
||||
compile = "make -j\"$(nproc)\" && ${CC:-zig cc} -shared -Wl,-soname,libz.so.1 -Wl,--whole-archive libz.a -Wl,--no-whole-archive -o libz.so.1.3.1"
|
||||
compile = "make -j\"$(nproc)\" && ${CC:-zig cc} -shared -Wl,-soname,libz.so.1 -Wl,--version-script,zlib.map -Wl,--whole-archive libz.a -Wl,--no-whole-archive -o libz.so.1.3.1"
|
||||
install = "make install DESTDIR=/out && install -Dm755 libz.so.1.3.1 /out/usr/lib/libz.so.1.3.1 && ln -sf libz.so.1.3.1 /out/usr/lib/libz.so.1 && ln -sf libz.so.1 /out/usr/lib/libz.so"
|
||||
|
||||
Reference in New Issue
Block a user