250 líneas de comentario en 151 scripts. Control verificado: el diff no toca NI UNA línea que no empiece por #, y la sintaxis de los 151 pasa. El barrido saltea heredocs y cadenas triples, y el guardián DISPARÓ 3 veces: las tres eran el MOTD que el script escribe DENTRO de la imagen construida — texto del producto, no comentario del script. Se cambiaron aparte y a propósito, que es rebranding, no limpieza. Y el hallazgo caro: casaba contra , que es el TARGET de tracing — o sea el module_path!, o sea el nombre del crate. La etapa 4 lo movió a y el script quedó casando NADA. No fallaba: imprimía cero atribuciones, indistinguible de un log sin problemas. Comprobado con el binario (RUST_LOG=info sobre zlib), no deducido. Ahora acepta las dos, y tiene que seguir aceptándolas porque los logs viejos en disco dicen la vieja. Además 14 rutas de módulo en docs, que el barrido anterior no tocó porque no es frontera de palabra.
43 lines
2.0 KiB
Bash
Executable File
43 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# alpine-import.sh <pkg> [main|community] — Etapa G, fuente #2: baja el APKBUILD de Alpine aports
|
|
# (y SUS PARCHES de musl), y emite la receta takana vía `takana import-alpine`. Alpine es la mejor
|
|
# semilla cuando importar de nix falla en musl: su receta YA incluye el trabajo de portabilidad.
|
|
#
|
|
# Ej: scripts/alpine-import.sh coreutils main > recipes/coreutils-alpine.toml
|
|
# (los .patch se bajan a $OUTDIR, default el dir actual)
|
|
# Env: ALPINE_BRANCH (default master), OUTDIR (default .), HAMMER (cmd del cli)
|
|
set -eu
|
|
|
|
PKG="${1:?uso: alpine-import.sh <pkg> [main|community]}"
|
|
REPO="${2:-main}"
|
|
BRANCH="${ALPINE_BRANCH:-master}"
|
|
OUTDIR="${OUTDIR:-.}"
|
|
HAMMER="${TAKANA:-${HAMMER:-cargo run -q -p takana-cli --}}"
|
|
BASE="https://gitlab.alpinelinux.org/alpine/aports/-/raw/${BRANCH}/${REPO}/${PKG}"
|
|
|
|
apk=$(curl -fsSL "${BASE}/APKBUILD") || { echo "no encontré ${REPO}/${PKG} en aports@${BRANCH}" >&2; exit 1; }
|
|
toml=$(printf '%s' "$apk" | $HAMMER import-alpine -)
|
|
|
|
# sha256 automático: Alpine publica sha512, pero takana pide sha256. Bajamos el tarball UNA vez y
|
|
# lo calculamos, reemplazando el FIXME ⇒ receta lista para `pack --build` sin tocar el hash a mano.
|
|
url=$(printf '%s\n' "$toml" | sed -n 's/^tarball = "\(.*\)"$/\1/p' | head -1)
|
|
if [ -n "$url" ]; then
|
|
sha=$(curl -fsSL "$url" 2>/dev/null | sha256sum | cut -d' ' -f1)
|
|
if [ -n "$sha" ] && [ "$sha" != "$(printf '' | sha256sum | cut -d' ' -f1)" ]; then
|
|
toml=$(printf '%s\n' "$toml" | sed "s|FIXME-sha256|$sha|")
|
|
echo " sha256 calculado: $sha" >&2
|
|
else
|
|
echo " ⚠ no pude bajar el tarball para sha256 (queda FIXME): $url" >&2
|
|
fi
|
|
fi
|
|
printf '%s\n' "$toml"
|
|
|
|
# Bajar los .patch referenciados (los parches de musl que hacen al paquete compilar).
|
|
printf '%s\n' "$toml" | grep -oE '"[^"]+\.(patch|diff)"' | tr -d '"' | while read -r p; do
|
|
if curl -fsSL "${BASE}/${p}" -o "${OUTDIR}/${p}" 2>/dev/null; then
|
|
echo " ✓ parche bajado: ${OUTDIR}/${p}" >&2
|
|
else
|
|
echo " ✗ no pude bajar ${p} (¿está en otra ruta del aport?)" >&2
|
|
fi
|
|
done
|