88 lines
2.8 KiB
Bash
Executable File
88 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -u
|
|
|
|
warnings=0
|
|
|
|
check_command() {
|
|
if command -v "$1" >/dev/null 2>&1; then
|
|
printf '[OK] %s: %s\n' "$1" "$(command -v "$1")"
|
|
else
|
|
printf '[WARN] команда %s не найдена\n' "$1"
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
}
|
|
|
|
if [[ -r /etc/os-release ]]; then
|
|
# shellcheck disable=SC1091
|
|
source /etc/os-release
|
|
printf '[INFO] OS: %s %s\n' "${NAME:-unknown}" "${VERSION_ID:-unknown}"
|
|
if [[ "${ID:-}" == ubuntu && "${VERSION_ID:-}" == 24.04 ]]; then
|
|
:
|
|
else
|
|
printf '[WARN] официальное окружение задания рассчитано на Ubuntu 24.04\n'
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
fi
|
|
|
|
for command_name in git python3 code ros2 colcon webots bun; do
|
|
check_command "$command_name"
|
|
done
|
|
|
|
for optional_name in node npm opencode; do
|
|
if command -v "$optional_name" >/dev/null 2>&1; then
|
|
printf '[OK] необязательная команда %s: %s\n' "$optional_name" "$(command -v "$optional_name")"
|
|
else
|
|
printf '[INFO] необязательная команда %s не установлена\n' "$optional_name"
|
|
fi
|
|
done
|
|
|
|
printf '[INFO] RMW_IMPLEMENTATION=%s\n' "${RMW_IMPLEMENTATION:-не задано}"
|
|
printf '[INFO] ROS_DOMAIN_ID=%s\n' "${ROS_DOMAIN_ID:-не задано}"
|
|
|
|
if [[ -r /opt/ros/jazzy/setup.bash ]]; then
|
|
set +u
|
|
# shellcheck disable=SC1091
|
|
source /opt/ros/jazzy/setup.bash
|
|
set -u
|
|
printf '[OK] ROS 2 Jazzy setup найден\n'
|
|
else
|
|
printf '[WARN] /opt/ros/jazzy/setup.bash не найден\n'
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
|
|
workspace_path="${ROS_WORKSPACE:-$HOME/ros2_ws}"
|
|
if [[ -r "$workspace_path/install/setup.bash" ]]; then
|
|
set +u
|
|
# shellcheck disable=SC1090
|
|
source "$workspace_path/install/setup.bash"
|
|
set -u
|
|
printf '[OK] workspace: %s\n' "$workspace_path"
|
|
else
|
|
printf '[WARN] workspace не собран: %s\n' "$workspace_path"
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
|
|
if command -v ros2 >/dev/null 2>&1; then
|
|
for package_name in ar_webots_fms_ros2 ar_arm95_moveit_config ar_aruco_detect_ros2; do
|
|
if ros2 pkg prefix "$package_name" >/dev/null 2>&1; then
|
|
printf '[OK] ROS-пакет: %s\n' "$package_name"
|
|
else
|
|
printf '[WARN] ROS-пакет не найден: %s\n' "$package_name"
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if python3 -c 'import rclpy, cv_bridge' >/dev/null 2>&1; then
|
|
printf '[OK] Python: rclpy и cv_bridge импортируются\n'
|
|
else
|
|
printf '[WARN] Python не импортирует rclpy/cv_bridge\n'
|
|
warnings=$((warnings + 1))
|
|
fi
|
|
|
|
if command -v glxinfo >/dev/null 2>&1; then
|
|
glxinfo -B 2>/dev/null | sed -n '/OpenGL vendor/p;/OpenGL renderer/p'
|
|
fi
|
|
|
|
printf '\nИтог: %d предупреждений. WARN не всегда означает поломку, но проверьте его до заезда.\n' "$warnings"
|