File rosagram-wrapper.sh of Package rosagram-docker

#!/bin/bash
# Wrapper скрипт для запуска Rosagram

ROSAGRAM_DIR="/opt/rosagram"
LOG_DIR="/var/log/rosagram-docker"
STATUS_FILE="/var/lib/rosagram-docker/status"
BUILD_SCRIPT="/usr/bin/rosagram-build"
LOG_FILE="$LOG_DIR/rosagram.log"

# Создаем директорию для логов если нет
mkdir -p "$LOG_DIR"

# Функция логирования
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Проверка статуса сборки
check_build_status() {
    if [ ! -f "$STATUS_FILE" ]; then
        echo "not_installed"
    else
        cat "$STATUS_FILE"
    fi
}

# Проверка наличия собранного Rosagram
if [ ! -f "$ROSAGRAMA_DIR/Telegram/Telegram" ] && [ ! -f "$ROSAGRAMA_DIR/rosagram" ]; then
    STATUS=$(check_build_status)
    
    if [ "$STATUS" = "building" ]; then
        log "Rosagram уже собирается в другом процессе"
        log "Отслеживайте прогресс: tail -f $LOG_DIR/build.log"
        exit 1
    fi
    
    if [ "$STATUS" = "failed" ]; then
        log "Предыдущая сборка завершилась ошибкой"
        log "Запустите принудительную пересборку:"
        log "  sudo rosagram-build --clean"
        log "  rosagram"
        exit 1
    fi
    
    # Запускаем сборку
    log "=========================================="
    log "Первый запуск Rosagram"
    log "=========================================="
    log "Начинаем сборку в Docker контейнере..."
    log "Это займет 5-10 минут."
    log "Статус: tail -f $LOG_DIR/build.log"
    
    # Запускаем сборку
    "$BUILD_SCRIPT" 2>&1 | tee -a "$LOG_DIR/build.log"
    
    BUILD_RESULT=${PIPESTATUS[0]}
    
    if [ $BUILD_RESULT -ne 0 ] || [ ! -f "$ROSAGRAMA_DIR/Telegram/Telegram" ]; then
        log "❌ Ошибка сборки!"
        echo "failed" > "$STATUS_FILE"
        exit 1
    fi
    
    log "✅ Сборка успешно завершена!"
    echo "installed" > "$STATUS_FILE"
    
    # Обновляем кэш KDE
    if command -v kbuildsycoca6 &>/dev/null; then
        kbuildsycoca6 --noincremental &>/dev/null || true
    fi
    
    log "Rosagram готов к запуску!"
fi

# Определяем путь к исполняемому файлу
if [ -f "$ROSAGRAMA_DIR/rosagram" ]; then
    ROSAGRAM_BIN="$ROSAGRAMA_DIR/rosagram"
elif [ -f "$ROSAGRAMA_DIR/Telegram/Telegram" ]; then
    ROSAGRAM_BIN="$ROSAGRAMA_DIR/Telegram/Telegram"
else
    log "ERROR: Исполняемый файл Rosagram не найден!"
    exit 1
fi

# Настройки для KDE Plasma 6
export XDG_CURRENT_DESKTOP="KDE"
export XDG_SESSION_DESKTOP="KDE"
export XDG_SESSION_TYPE="wayland"

# Для Wayland
if [ "$XDG_SESSION_TYPE" = "wayland" ] || [ -n "$WAYLAND_DISPLAY" ]; then
    export WAYLAND_DISPLAY=${WAYLAND_DISPLAY:-wayland-0}
    export MOZ_ENABLE_WAYLAND=1  # Для совместимости с некоторыми библиотеками
    log "Запуск в режиме Wayland"
fi

# Для корректного отображения в KDE
export QT_QPA_PLATFORM="wayland;xcb"  # Пробуем Wayland, падаем на X11
export QT_STYLE_OVERRIDE="breeze"
export QT_PLUGIN_PATH="/usr/lib64/qt5/plugins:/usr/lib64/qt6/plugins"

# Запускаем Rosagram
log "Запуск Rosagram с параметрами: $*"
exec "$ROSAGRAM_BIN" "$@"
openSUSE Build Service is sponsored by