diff --git a/scripts/install-arje-as-init.sh b/scripts/install-arje-as-init.sh index fbe0ba7..25314a0 100755 --- a/scripts/install-arje-as-init.sh +++ b/scripts/install-arje-as-init.sh @@ -59,8 +59,31 @@ if [ ! -e /sbin/init ] && [ ! -e /lib/systemd/systemd ] && [ ! -e /usr/lib/syste [ "$ans" = "y" ] || exit 3 fi +# Chequeo de prerrequisitos antes de arrancar la compilación, así un +# fallo da un mensaje accionable en vez de irse silencioso a /dev/null. +echo "[install-arje] paso 0/5: chequeo de prerrequisitos" +missing=() +command -v cargo >/dev/null 2>&1 || missing+=("cargo (rustup: curl https://sh.rustup.rs -sSf | sh)") +command -v musl-gcc >/dev/null 2>&1 || missing+=("musl-gcc (Fedora: dnf install musl-gcc musl-libc-static · Debian: apt install musl-tools)") +command -v busybox >/dev/null 2>&1 || missing+=("busybox-static (Fedora: dnf install busybox · Debian: apt install busybox-static)") +command -v cpio >/dev/null 2>&1 || missing+=("cpio") +command -v gzip >/dev/null 2>&1 || missing+=("gzip") +if [ "${#missing[@]}" -gt 0 ]; then + echo "[install-arje] faltan prerrequisitos:" >&2 + printf " - %s\n" "${missing[@]}" >&2 + exit 6 +fi +SYSROOT="$(rustc --print sysroot 2>/dev/null || true)" +if [ -z "$SYSROOT" ] || [ ! -d "$SYSROOT/lib/rustlib/$TARGET" ]; then + echo "[install-arje] falta el target Rust '$TARGET' (sysroot=$SYSROOT)" >&2 + echo " Instalalo con: rustup target add $TARGET" >&2 + exit 7 +fi + echo "[install-arje] paso 1/5: compilar binarios musl-static" -"$SCRIPT_DIR/build-arje-initrd.sh" "$SEED" /tmp/arje-noop.cpio.gz >/dev/null +echo " (la PRIMERA vez tarda 10-20 minutos en una VPS de 4 GB; la salida" +echo " de cargo va a fluir directo a esta terminal — no es un cuelgue)" +"$SCRIPT_DIR/build-arje-initrd.sh" "$SEED" /tmp/arje-noop.cpio.gz rm -f /tmp/arje-noop.cpio.gz BIN_DIR="$REPO_DIR/target/$TARGET/release" EX_DIR="$BIN_DIR/examples"