diff --git a/recipes/waterfox.toml b/recipes/waterfox.toml index 3566179e..6c188625 100644 --- a/recipes/waterfox.toml +++ b/recipes/waterfox.toml @@ -43,6 +43,28 @@ # Se aparca a propósito: la prioridad pasó a `firefox` con la cadena de optimización y a `atuq` # (SDD 26). Cuando se retome, el primer paso es mirar si `browser/locales` existe en el commit # pineado — un minuto de `git ls-tree`, no un build. +# ══ ⚠ DOS COSAS MEDIDAS EN EL ARTEFACTO, SIN RESOLVER — SON DECISIÓN, NO BUG ══════════════════ +# Del `application.ini` del artefacto `b3:e65c0221` (2026-09-06), leído del sellado, no de la doc: +# +# Vendor=BrowserWorks Name=Firefox RemotingName=firefox-default +# Profile=Waterfox ID={ec8030f7-c20a-464f-9b0e-13a3a9e97384} +# +# 1) EL BRANDING «OFICIAL» DE ESTE COMMIT ES EL DE MOZILLA, NO EL DE WATERFOX. El comentario de +# más abajo dice que `browser/branding/official` es «la marca del propio Waterfox»; en ESTE +# commit no lo es. Comprobado en el árbol: `branding/official/configure.sh` pone +# `MOZ_APP_DISPLAYNAME=Firefox`, y `brand.ftl` da `-brand-short-name = Firefox` y +# `-brand-full-name = Mozilla Firefox`. El `ID` es además el ID canónico de Firefox. O sea que +# hoy esto sella un binario parcheado que se presenta como «Mozilla Firefox» — justo lo que +# `firefox.toml` evita a propósito yendo SIN marca (la historia de Iceweasel). La salida +# probable es `unofficial`, pero es una decisión de política de marcas, no una perilla técnica, +# y por eso se deja escrita en vez de cambiada. +# +# 2) COLISIONA DE RUTA CON `firefox`. El artefacto instala en `usr/lib/firefox/` y `usr/bin/firefox` +# —las MISMAS rutas que la receta `firefox`— porque el árbol no fija `MOZ_APP_NAME`. Hoy no +# rompe nada porque ninguna imagen incluye las dos, pero el día que una lo haga, las dos capas +# overlay se pelean el mismo fichero y gana una en silencio. El arreglo es `MOZ_APP_NAME` en el +# mozconfig, que es un rebuild y puede arrastrar branding: su propia unidad de trabajo. +# name = "waterfox" version = "6.7.1.1" license = "MPL-2.0" @@ -118,6 +140,7 @@ strip_debug = true [build.phases] configure = ''' export MOZBUILD_STATE_PATH="$PWD/.mozbuild" +export MOZ_BUILD_DATE="$(date -u -d "@${SOURCE_DATE_EPOCH:-1}" +%Y%m%d%H%M%S)" # ver el guardián del install export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZ_NOSPAM=1 # ── RUST_TARGET: lo EXIGE el parche de Alpine, no Firefox ───────────────────────────────────── @@ -180,6 +203,7 @@ MOZ compile = ''' export RUST_TARGET=x86_64-alpine-linux-musl # ver la nota en la fase configure export MOZBUILD_STATE_PATH="$PWD/.mozbuild" +export MOZ_BUILD_DATE="$(date -u -d "@${SOURCE_DATE_EPOCH:-1}" +%Y%m%d%H%M%S)" # ver el guardián del install export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZ_NOSPAM=1 gib=$(awk "/MemTotal/{printf \"%d\", \$2/1024/1024}" /proc/meminfo) @@ -211,8 +235,24 @@ exit 1 install = ''' export RUST_TARGET=x86_64-alpine-linux-musl # ver la nota en la fase configure export MOZBUILD_STATE_PATH="$PWD/.mozbuild" +export MOZ_BUILD_DATE="$(date -u -d "@${SOURCE_DATE_EPOCH:-1}" +%Y%m%d%H%M%S)" # ver el guardián del install export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system DESTDIR=/out ./mach install + +# ── GUARDIÁN: QUE EL BuildID NO SEA UNA FECHA ──────────────────────────────────────────────── +# Copiado de `firefox.toml`, y no por simetría: SIN ESTO YA SELLÓ MAL. El artefacto +# `b3:e65c0221` del 2026-09-06 salió con `BuildID=20260906062042` —la hora del build— o sea que +# NO REPRODUCE. Y selló en VERDE: el ArtifactHash es input-addressed y no se mueve por esto, así +# que `build-state.json` lo contaba como bueno. Es exactamente el modo de fallo que el comentario +# de firefox describe, ocurriendo en la receta de al lado por no haber copiado las cuatro líneas. +esperado="$(date -u -d "@${SOURCE_DATE_EPOCH:-1}" +%Y%m%d%H%M%S)" +real="$(sed -n 's/^BuildID=//p' /out/usr/lib/firefox/application.ini)" +if [ "$real" != "$esperado" ]; then + echo "guardián: BuildID=$real y esperaba $esperado — el artefacto NO reproduce." >&2 + echo " Revisá que MOZ_BUILD_DATE se exporte en TODAS las fases." >&2 + exit 1 +fi +echo "guardián: BuildID = $real (determinista, de SOURCE_DATE_EPOCH)" ''' [deps]