From 731413f4ae52d6db4058dcd68a516693ebd04c31 Mon Sep 17 00:00:00 2001 From: uprightbass360 Date: Sat, 25 Oct 2025 19:50:59 -0400 Subject: [PATCH] Keep module rebuild sentinel in sync across local and shared storage --- scripts/manage-modules.sh | 10 +++++++++ scripts/rebuild-with-modules.sh | 40 +++++++++++++++++++++------------ setup.sh | 10 +++++++++ 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/scripts/manage-modules.sh b/scripts/manage-modules.sh index 3fe836a..403d799 100755 --- a/scripts/manage-modules.sh +++ b/scripts/manage-modules.sh @@ -822,14 +822,24 @@ if [ "$MODULES_LOCAL_RUN" = "1" ]; then else REBUILD_SENTINEL="/modules/.requires_rebuild" fi +HOST_REBUILD_SENTINEL="${MODULES_HOST_DIR:-}" +if [ -n "$HOST_REBUILD_SENTINEL" ]; then + HOST_REBUILD_SENTINEL="${HOST_REBUILD_SENTINEL%/}/.requires_rebuild" +fi if [ "$SQL_EXECUTION_FAILED" = "1" ]; then echo "⚠️ SQL execution encountered issues; review logs above." fi if [ "$REBUILD_REQUIRED" = "1" ] && [ -n "$ENABLED_MODULES" ]; then echo "$ENABLED_MODULES" > "$REBUILD_SENTINEL" + if [ -n "$HOST_REBUILD_SENTINEL" ]; then + echo "$ENABLED_MODULES" > "$HOST_REBUILD_SENTINEL" 2>/dev/null || true + fi else rm -f "$REBUILD_SENTINEL" 2>/dev/null || true + if [ -n "$HOST_REBUILD_SENTINEL" ]; then + rm -f "$HOST_REBUILD_SENTINEL" 2>/dev/null || true + fi fi # Optional: keep container alive for inspection in CI/debug contexts diff --git a/scripts/rebuild-with-modules.sh b/scripts/rebuild-with-modules.sh index 90e8c95..2e271b8 100755 --- a/scripts/rebuild-with-modules.sh +++ b/scripts/rebuild-with-modules.sh @@ -314,23 +314,35 @@ docker compose down --remove-orphans >/dev/null 2>&1 || true popd >/dev/null -if [ -n "$SENTINEL_FILE" ]; then - if ! rm -f "$SENTINEL_FILE" 2>/dev/null; then - if [ -f "$SENTINEL_FILE" ] && command -v docker >/dev/null 2>&1; then - DB_IMPORT_IMAGE="$(read_env AC_DB_IMPORT_IMAGE "acore/ac-wotlk-db-import:14.0.0-dev")" - if docker image inspect "$DB_IMPORT_IMAGE" >/dev/null 2>&1; then - docker run --rm \ - --entrypoint /bin/sh \ - --user 0:0 \ - -v "$MODULES_DIR":/modules \ - "$DB_IMPORT_IMAGE" \ - -c 'rm -f /modules/.requires_rebuild' >/dev/null 2>&1 || true - fi +remove_sentinel(){ + local sentinel_path="$1" + [ -n "$sentinel_path" ] || return 0 + [ -f "$sentinel_path" ] || return 0 + if rm -f "$sentinel_path" 2>/dev/null; then + return 0 + fi + if command -v docker >/dev/null 2>&1; then + local db_image + db_image="$(read_env AC_DB_IMPORT_IMAGE "acore/ac-wotlk-db-import:14.0.0-dev")" + if docker image inspect "$db_image" >/dev/null 2>&1; then + local mount_dir + mount_dir="$(dirname "$sentinel_path")" + docker run --rm \ + --entrypoint /bin/sh \ + --user 0:0 \ + -v "$mount_dir":/modules \ + "$db_image" \ + -c 'rm -f /modules/.requires_rebuild' >/dev/null 2>&1 || true fi fi - if [ -f "$SENTINEL_FILE" ]; then - echo "⚠️ Unable to remove rebuild sentinel at $SENTINEL_FILE. Remove manually if rebuild detection persists." + if [ -f "$sentinel_path" ]; then + echo "⚠️ Unable to remove rebuild sentinel at $sentinel_path. Remove manually if rebuild detection persists." fi +} + +remove_sentinel "$SENTINEL_FILE" +if [ -n "$SHARED_MODULES_DIR" ]; then + remove_sentinel "$SHARED_MODULES_DIR/.requires_rebuild" fi echo "" diff --git a/setup.sh b/setup.sh index e273d55..20a993a 100755 --- a/setup.sh +++ b/setup.sh @@ -1146,6 +1146,9 @@ fi export "$module_export_var" done + local host_modules_dir="${storage_abs}/modules" + export MODULES_HOST_DIR="$host_modules_dir" + # Prepare isolated git config for the module script so we do not mutate user-level settings local prev_git_config_global="${GIT_CONFIG_GLOBAL:-}" local git_temp_config="" @@ -1165,10 +1168,17 @@ fi export MODULES_LOCAL_RUN=1 if (cd "$local_modules_dir" && bash "$SCRIPT_DIR/scripts/manage-modules.sh"); then say SUCCESS "Module repositories staged to $local_modules_dir" + if [ -n "$host_modules_dir" ]; then + mkdir -p "$host_modules_dir" + if [ -f "$local_modules_dir/.modules_state" ]; then + cp "$local_modules_dir/.modules_state" "$host_modules_dir/.modules_state" 2>/dev/null || true + fi + fi else say WARNING "Module staging encountered issues, but continuing with rebuild" fi unset MODULES_LOCAL_RUN + unset MODULES_HOST_DIR if [ -n "$git_temp_config" ]; then rm -f "$git_temp_config"