fix(scripts): honor gtimeout in host setup wrappers

This commit is contained in:
Vincent Koc
2026-06-20 20:07:50 +02:00
parent 0f67474251
commit 62b2e9ef14
5 changed files with 46 additions and 50 deletions

View File

@@ -3,6 +3,7 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
source "$ROOT_DIR/scripts/lib/docker-build.sh"
source "$ROOT_DIR/scripts/lib/host-timeout.sh"
COMPOSE_FILE="$ROOT_DIR/docker-compose.yml"
EXTRA_COMPOSE_FILE="$ROOT_DIR/docker-compose.extra.yml"
IMAGE_NAME="${OPENCLAW_IMAGE:-openclaw:local}"
@@ -52,15 +53,7 @@ run_docker_build() {
run_docker_pull() {
local image="$1"
if command -v timeout >/dev/null 2>&1; then
if timeout --kill-after=1s 1s true >/dev/null 2>&1; then
timeout --kill-after=30s "$DOCKER_PULL_TIMEOUT" docker pull "$image"
else
timeout "$DOCKER_PULL_TIMEOUT" docker pull "$image"
fi
return
fi
docker pull "$image"
openclaw_host_timeout_cmd "$DOCKER_PULL_TIMEOUT" docker pull "$image"
}
require_local_docker_image() {

View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bash
openclaw_host_timeout_bin() {
if command -v timeout >/dev/null 2>&1; then
printf '%s\n' timeout
elif command -v gtimeout >/dev/null 2>&1; then
printf '%s\n' gtimeout
else
return 1
fi
}
openclaw_host_timeout_cmd() {
local timeout_value="$1"
shift
local timeout_bin
if ! timeout_bin="$(openclaw_host_timeout_bin)"; then
"$@"
return
fi
if "$timeout_bin" --kill-after=1s 1s true >/dev/null 2>&1; then
"$timeout_bin" --kill-after=30s "$timeout_value" "$@"
else
"$timeout_bin" "$timeout_value" "$@"
fi
}

View File

@@ -17,6 +17,7 @@
set -euo pipefail
REPO_PATH="${OPENCLAW_REPO_PATH:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
source "$REPO_PATH/scripts/lib/host-timeout.sh"
RUN_SCRIPT_SRC="$REPO_PATH/scripts/run-openclaw-podman.sh"
QUADLET_TEMPLATE="$REPO_PATH/scripts/podman/openclaw.container.in"
OPENCLAW_USER="$(id -un)"
@@ -47,27 +48,11 @@ fail() {
run_podman_pull() {
local image="$1"
if command -v timeout >/dev/null 2>&1; then
if timeout --kill-after=1s 1s true >/dev/null 2>&1; then
timeout --kill-after=30s "$PODMAN_PULL_TIMEOUT" podman pull "$image"
else
timeout "$PODMAN_PULL_TIMEOUT" podman pull "$image"
fi
return
fi
podman pull "$image"
openclaw_host_timeout_cmd "$PODMAN_PULL_TIMEOUT" podman pull "$image"
}
run_podman_build() {
if command -v timeout >/dev/null 2>&1; then
if timeout --kill-after=1s 1s true >/dev/null 2>&1; then
timeout --kill-after=30s "$PODMAN_BUILD_TIMEOUT" podman build "$@"
else
timeout "$PODMAN_BUILD_TIMEOUT" podman build "$@"
fi
return
fi
podman build "$@"
openclaw_host_timeout_cmd "$PODMAN_BUILD_TIMEOUT" podman build "$@"
}
validate_single_line_value() {

View File

@@ -14,6 +14,9 @@
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=scripts/lib/host-timeout.sh
source "$SCRIPT_DIR/lib/host-timeout.sh"
PLATFORM_NAME="$(uname -s 2>/dev/null || echo unknown)"
resolve_user_home() {
@@ -37,15 +40,7 @@ fail() {
}
run_podman_detached() {
if command -v timeout >/dev/null 2>&1; then
if timeout --kill-after=1s 1s true >/dev/null 2>&1; then
timeout --kill-after=30s "$PODMAN_RUN_TIMEOUT" podman run "$@"
else
timeout "$PODMAN_RUN_TIMEOUT" podman run "$@"
fi
return
fi
podman run "$@"
openclaw_host_timeout_cmd "$PODMAN_RUN_TIMEOUT" podman run "$@"
}
validate_single_line_value() {