From c5f9158c5e189184eebc48ea28e32c611e0b58cc Mon Sep 17 00:00:00 2001 From: stornic56 <71296607+stornic56@users.noreply.github.com> Date: Thu, 8 Oct 2026 14:55:11 -0500 Subject: [PATCH] fix: trap del --extract borraba la extraccion exitosa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Causa raiz (validacion end-to-end del usuario, paso 6 'Unexpected tarball layout'): el trap 'rm -rf $DIRNAME' EXIT se registraba antes de tar y se disparaba en TODA salida del proceso hijo, incluida la exitosa (exit 0) -> la carpeta recien extraida se borraba -> el DEPS_SCRIPT de main.sh no la encontraba -> error + exit 1. El intento del trap era limpiar extracciones parciales en abort, pero un trap EXIT no distingue exito de aborto. Fix (ataca la causa raiz): el trap se desarma en el camino de éxito (trap - EXIT tras el tar) y se conserva para limpiar extracciones parciales si el tar falla (if ! tar + error explícito + exit 1). Extra: 'Moving $DIRNAME a $INSTALL_DIR' -> 'to' (residuo de español). Verificado sin root con tarball FAKE (mismo layout): extract exitoso -> exit=0 y la carpeta SOBREVIVE al exit (DEPS_SCRIPT existe); tarball corrupto -> exit=1 y la carpeta parcial limpiada; bash -n OK. --- core/openvino_logic.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/openvino_logic.sh b/core/openvino_logic.sh index e100fc1..bddee21 100644 --- a/core/openvino_logic.sh +++ b/core/openvino_logic.sh @@ -19,10 +19,17 @@ if [ "$1" = "--extract" ]; then # Known before tar (enables partial-extraction cleanup on abort) DIRNAME="${FILENAME%.tgz}" + # Cleanup ONLY on abort: the trap is set before tar and DISARMED on success — + # otherwise the EXIT trap deletes the just-extracted folder on 'exit 0' and + # the deps step (and the later --install) find nothing. trap 'rm -rf "$DIRNAME"' EXIT print_substep "Unzipping $FILENAME..." - tar -xf "$FILENAME" + if ! tar -xf "$FILENAME"; then + print_error "Extraction of $FILENAME failed." + exit 1 # trap fires: partial extraction is cleaned up + fi + trap - EXIT # success: keep the extracted folder for the deps and install steps # fallback if the extracted folder name differs from the tarball name if [ ! -d "$DIRNAME" ]; then @@ -71,7 +78,7 @@ if [ "$1" = "--install" ]; then DIRNAME="${TAR_LIST%%$'\n'*}" # first entry (no pipe, no SIGPIPE) DIRNAME="${DIRNAME%%/*}" fi - print_substep "Moving $DIRNAME a $INSTALL_DIR..." + print_substep "Moving $DIRNAME to $INSTALL_DIR..." mv "$DIRNAME" "$INSTALL_DIR" print_substep "Create symbolic link /opt/intel/openvino_2026..."