`meson.build:32` de mpv pide libass sin `required:` ⇒ no hay build de mpv sin esto. libunibreak es "opcional" para upstream (`default=check`) y obligatorio acá: sin él libass parte los renglones por espacios, que es justo lo que no sirve en japonés, chino o tailandés. Cuesta una receta leaf de C plano. `--enable-asm`: 234 símbolos SSE2/AVX2 en la `.a` sellada. Es la razón por la que `nasm` subió al corpus en el commit anterior. La lección de las deps, para la próxima receta que resuelva `.pc`: más de la mitad de `[deps]` no aparece en el `./configure`. La harfbuzz del corpus va `-Dglib=enabled` (por GTK4) ⇒ su `.pc` pide `glib-2.0`, que arrastra pcre2 y libffi. Y el fallo NO dice que falte glib: dice «Package requirements (harfbuzz >= 1.2.3) were not met», culpando a la lib que sí estaba. Selladas: libunibreak b3:a01fb6bd, libass b3:213df6b1.
41 lines
2.0 KiB
TOML
41 lines
2.0 KiB
TOML
# libass 0.17.5 — renderizador de subtítulos SSA/ASS. Dep DURA de mpv: su `meson.build` la pide sin
|
|
# `required:` (línea 32), o sea que no hay build de mpv sin esto.
|
|
#
|
|
# --enable-asm (default) y por eso `nasm` subió al corpus: el rasterizador de libass tiene rutas SSE2/
|
|
# AVX2 escritas a mano, y son las que sostienen subtítulos con karaoke o tipografía pesada a 1080p sin
|
|
# comerse el frame budget. Es la parte que sí conviene pagar en assembler.
|
|
#
|
|
# libunibreak: opcional para upstream (`default=check`), obligatorio acá. Ver su receta — sin él los
|
|
# renglones se parten por espacios y el CJK queda ilegible.
|
|
#
|
|
# LAS DEPS QUE NO SE VEN EN EL `./configure` salen de los `.pc` que resuelve, y son MÁS DE LA MITAD
|
|
# de la lista: `freetype2.pc` trae `Requires: zlib, libpng`, `fontconfig.pc` trae expat, y
|
|
# `harfbuzz.pc` trae `Requires: glib-2.0` —porque la harfbuzz del corpus se construyó
|
|
# `-Dglib=enabled` para GTK4— que a su vez arrastra pcre2 y libffi. Es el patrón
|
|
# `.pc Requires` → `[deps].build` del corpus. El fallo sin ellas no dice "falta glib": dice
|
|
# «Package requirements (harfbuzz >= 1.2.3) were not met», culpando a la lib que sí está.
|
|
#
|
|
# Estática (.a) como el resto de las libs del corpus: quien la consume es un EJECUTABLE (mpv), no un
|
|
# objeto compartido, así que la regla del `.a` no-PIC no aplica acá.
|
|
name = "libass"
|
|
version = "0.17.5"
|
|
license = "ISC"
|
|
|
|
[source]
|
|
tarball = "https://github.com/libass/libass/releases/download/0.17.5/libass-0.17.5.tar.xz"
|
|
sha256 = "2dca25c0e0c837ddf00b52011b3f82cac1e4ddd3ad018227806b0c2288864acc"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static --enable-fontconfig --enable-libunibreak --enable-asm'
|
|
compile = 'make -j"$(nproc)"'
|
|
install = 'make DESTDIR=/out install'
|
|
|
|
[deps]
|
|
build = ["freetype", "fribidi", "harfbuzz", "fontconfig", "libunibreak", "glib", "pcre2", "libffi", "expat", "libpng", "zlib", "nasm", "make", "pkgconf"]
|