#!/bin/sh
# Lanzador de atuq. Va a /usr/bin/atuq.
#
# ── POR QUÉ NO ES UN SYMLINK (que es lo que era en la v0.1) ────────────────────────────────────
# El motor carga sus propias librerías —libnspr4, libnss3, libmozsandbox…— desde `/usr/lib/atuq`, y
# ni el binario ni esas `.so` traen `RPATH`/`RUNPATH`: se comprobó con `readelf -d` y no hay
# ninguno. Con el symlink, el navegador moría antes de pintar nada:
#
#     XPCOMGlueLoad error for file /usr/lib/atuq/libmozsandbox.so:
#     Error loading shared library libnspr4.so: No such file or directory
#
# El `LD_LIBRARY_PATH` es además lo que necesitan los procesos HIJOS: Firefox lanza un proceso por
# pestaña y todos cargan las mismas librerías, así que tiene que heredarse.
#
# La alternativa más limpia sería grabar `RPATH=$ORIGIN` en los ELF —es lo que hace el APKBUILD de
# Alpine, que trae `patchelf` en sus makedepends—, pero `patchelf` no existe todavía como receta del
# corpus. Cuando exista, esto se puede simplificar a un symlink otra vez.
#
# `exec` y no una llamada normal: así el proceso que queda es el motor, `/proc/self/exe` apunta a
# `/usr/lib/atuq/atuq` y Gecko resuelve su appdir correctamente. Con un `sh` de por medio quedaría
# un proceso zombi de más y el nombre en `ps` sería el del script.
LD_LIBRARY_PATH="/usr/lib/atuq${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH
exec /usr/lib/atuq/atuq "$@"
