fix: blitz-run-context.service 失败

This commit is contained in:
2026-04-14 21:13:27 +08:00
parent e895cdc9de
commit 1c2cf157d2
7 changed files with 37 additions and 2 deletions

View File

@@ -7,6 +7,14 @@ source "${SCRIPT_DIR}/common.sh"
STEP="run-context" STEP="run-context"
on_error() {
local rc="$?"
blitz_log "${STEP}" "error" "failure" "line=${1:-unknown} cmd=${BASH_COMMAND:-unknown}" "${rc}"
exit "${rc}"
}
trap 'on_error "${LINENO}"' ERR
blitz_load_boot_env blitz_load_boot_env
blitz_require_root "${STEP}" blitz_require_root "${STEP}"
blitz_require_command python3 "${STEP}" blitz_require_command python3 "${STEP}"

View File

@@ -50,6 +50,10 @@ blitz_load_boot_env() {
fi fi
done done
if declare -F normalize_loaded_env_vars >/dev/null 2>&1; then
normalize_loaded_env_vars
fi
default_time_server="$(blitz_host_from_addr "${ROBOT_SIDE_OMNISOCKET_SERVER_ADDR:-}" || true)" default_time_server="$(blitz_host_from_addr "${ROBOT_SIDE_OMNISOCKET_SERVER_ADDR:-}" || true)"
export BLITZ_BOOT_DELAY_SEC="${BLITZ_BOOT_DELAY_SEC:-30}" export BLITZ_BOOT_DELAY_SEC="${BLITZ_BOOT_DELAY_SEC:-30}"

View File

@@ -2,6 +2,7 @@
Description=Blitz robot 5G link logger Description=Blitz robot 5G link logger
PartOf=blitz-robot.target PartOf=blitz-robot.target
After=blitz-run-context.service blitz-5g-dial.service After=blitz-run-context.service blitz-5g-dial.service
Requires=blitz-run-context.service
Wants=blitz-run-context.service blitz-5g-dial.service Wants=blitz-run-context.service blitz-5g-dial.service
[Service] [Service]

View File

@@ -2,6 +2,7 @@
Description=Blitz robot b-side omnid Description=Blitz robot b-side omnid
PartOf=blitz-robot.target PartOf=blitz-robot.target
After=blitz-run-context.service blitz-5g-dial.service blitz-ros-receiver.service After=blitz-run-context.service blitz-5g-dial.service blitz-ros-receiver.service
Requires=blitz-run-context.service
Wants=blitz-run-context.service blitz-5g-dial.service blitz-ros-receiver.service Wants=blitz-run-context.service blitz-5g-dial.service blitz-ros-receiver.service
[Service] [Service]
@@ -9,7 +10,7 @@ Type=simple
EnvironmentFile=-/run/blitz-robot/run-context.env EnvironmentFile=-/run/blitz-robot/run-context.env
ExecStartPre=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/prepare-runtime-dir.sh ExecStartPre=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/prepare-runtime-dir.sh
ExecStart=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/start-b-side-omnid-service.sh ExecStart=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/start-b-side-omnid-service.sh
ExecStopPost=/bin/bash -lc 'if [[ "${SERVICE_RESULT:-success}" != "success" ]]; then exec "@OMNISOCKETGO_ROOT@/scripts/boot/blitz-incident-capture-launch.sh" --source exec-stop-post --unit "%n" --result "${SERVICE_RESULT:-}" --exit-status "${EXIT_STATUS:-}" --reason b-side-service-exit; fi' ExecStopPost=/bin/bash -lc 'if [[ "${SERVICE_RESULT:-success}" != "success" ]]; then exec /bin/bash "@OMNISOCKETGO_ROOT@/scripts/boot/blitz-incident-capture-launch.sh" --source exec-stop-post --unit "%n" --result "${SERVICE_RESULT:-}" --exit-status "${EXIT_STATUS:-}" --reason b-side-service-exit; fi'
Restart=always Restart=always
RestartSec=2 RestartSec=2
StandardOutput=append:@BLITZ_LOG_FILE@ StandardOutput=append:@BLITZ_LOG_FILE@

View File

@@ -2,6 +2,7 @@
Description=Blitz robot ROS receiver Description=Blitz robot ROS receiver
PartOf=blitz-robot.target PartOf=blitz-robot.target
After=blitz-run-context.service blitz-5g-dial.service After=blitz-run-context.service blitz-5g-dial.service
Requires=blitz-run-context.service
Wants=blitz-run-context.service blitz-5g-dial.service Wants=blitz-run-context.service blitz-5g-dial.service
[Service] [Service]
@@ -12,7 +13,7 @@ EnvironmentFile=-/run/blitz-robot/run-context.env
ExecStartPre=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/prepare-runtime-dir.sh ExecStartPre=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/prepare-runtime-dir.sh
ExecStart=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/start-ros-receiver-service.sh ExecStart=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/start-ros-receiver-service.sh
ExecStartPost=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/wait-for-unix-socket.sh --step ros-receiver ExecStartPost=/bin/bash @OMNISOCKETGO_ROOT@/scripts/boot/wait-for-unix-socket.sh --step ros-receiver
ExecStopPost=/bin/bash -lc 'if [[ "${SERVICE_RESULT:-success}" != "success" ]]; then exec "@OMNISOCKETGO_ROOT@/scripts/boot/blitz-incident-capture-launch.sh" --source exec-stop-post --unit "%n" --result "${SERVICE_RESULT:-}" --exit-status "${EXIT_STATUS:-}" --reason ros-service-exit; fi' ExecStopPost=/bin/bash -lc 'if [[ "${SERVICE_RESULT:-success}" != "success" ]]; then exec /bin/bash "@OMNISOCKETGO_ROOT@/scripts/boot/blitz-incident-capture-launch.sh" --source exec-stop-post --unit "%n" --result "${SERVICE_RESULT:-}" --exit-status "${EXIT_STATUS:-}" --reason ros-service-exit; fi'
Restart=always Restart=always
RestartSec=2 RestartSec=2
StandardOutput=append:@BLITZ_LOG_FILE@ StandardOutput=append:@BLITZ_LOG_FILE@

View File

@@ -2,6 +2,7 @@
Description=Blitz robot health watchdog Description=Blitz robot health watchdog
PartOf=blitz-robot.target PartOf=blitz-robot.target
After=blitz-run-context.service blitz-b-side-omnid.service blitz-ros-receiver.service After=blitz-run-context.service blitz-b-side-omnid.service blitz-ros-receiver.service
Requires=blitz-run-context.service
Wants=blitz-run-context.service blitz-b-side-omnid.service blitz-ros-receiver.service Wants=blitz-run-context.service blitz-b-side-omnid.service blitz-ros-receiver.service
[Service] [Service]

View File

@@ -9,6 +9,23 @@ die() {
return 1 2>/dev/null || exit 1 return 1 2>/dev/null || exit 1
} }
normalize_loaded_env_vars() {
local var_name
local value
for var_name in $(compgen -A variable); do
case "${var_name}" in
BACKEND_*|BLITZ_*|B_SIDE_*|CONTROL_*|FRONTEND_*|OMNI_*|PYTHON3_BIN|PYTHON_VENV_PATH|ROBOT_*|ROS_DISTRO|VITE_*)
value="${!var_name}"
if [[ "${value}" == *$'\r' ]]; then
printf -v "${var_name}" '%s' "${value%$'\r'}"
export "${var_name}"
fi
;;
esac
done
}
is_omnisocketgo_root() { is_omnisocketgo_root() {
local dir="$1" local dir="$1"
[[ -f "${dir}/Makefile" && -f "${dir}/cmd/b_side_omnid.c" && -d "${dir}/ros-control-py" ]] [[ -f "${dir}/Makefile" && -f "${dir}/cmd/b_side_omnid.c" && -d "${dir}/ros-control-py" ]]
@@ -68,6 +85,8 @@ for env_file in "${ENV_FILES[@]}"; do
fi fi
done done
normalize_loaded_env_vars
if [[ "${omni_camera_device_was_set}" == "1" ]]; then if [[ "${omni_camera_device_was_set}" == "1" ]]; then
export OMNI_CAMERA_DEVICE="${preserved_omni_camera_device}" export OMNI_CAMERA_DEVICE="${preserved_omni_camera_device}"
fi fi