diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 763b482..24d6116 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -22,12 +22,7 @@ jobs: python-version: "3.13" - name: Install Qt runtime libraries - run: | - if [ "$(id -u)" -eq 0 ]; then - apt-get update && apt-get install -y libgl1 libegl1 - else - sudo apt-get update && sudo apt-get install -y libgl1 libegl1 - fi + run: bash scripts/install-qt-runtime-deps.sh - name: Install dependencies run: | diff --git a/.gitea/workflows/release-dev.yml b/.gitea/workflows/release-dev.yml index ebdb7b1..b52d46e 100644 --- a/.gitea/workflows/release-dev.yml +++ b/.gitea/workflows/release-dev.yml @@ -71,13 +71,7 @@ jobs: - name: Install Qt runtime libraries if: steps.check_release.outputs.publish == 'true' shell: bash - run: | - set -euo pipefail - if [ "$(id -u)" -eq 0 ]; then - apt-get update && apt-get install -y libgl1 libegl1 - else - sudo apt-get update && sudo apt-get install -y libgl1 libegl1 - fi + run: bash scripts/install-qt-runtime-deps.sh - name: Install test dependencies if: steps.check_release.outputs.publish == 'true' diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 824a3e2..820316d 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -68,13 +68,7 @@ jobs: - name: Install Qt runtime libraries if: steps.check_release.outputs.publish == 'true' shell: bash - run: | - set -euo pipefail - if [ "$(id -u)" -eq 0 ]; then - apt-get update && apt-get install -y libgl1 libegl1 - else - sudo apt-get update && sudo apt-get install -y libgl1 libegl1 - fi + run: bash scripts/install-qt-runtime-deps.sh - name: Install test dependencies if: steps.check_release.outputs.publish == 'true' diff --git a/docs/release-linux.md b/docs/release-linux.md index 49410f9..6fe70ea 100644 --- a/docs/release-linux.md +++ b/docs/release-linux.md @@ -8,6 +8,7 @@ Workflow `.gitea/workflows/release.yml` запускается вручную и - В Docker Compose сейчас есть `GITEA_RUNNER_LABELS: "ubuntu-latest,docker,self-hosted"`. Удалите эту переменную или задайте в ней ту же явную схему `ubuntu-latest:docker://...`: при запуске daemon значение переменной может переопределить `runner.labels`, а голая метка `ubuntu-latest` означает выполнение шагов внутри контейнера `gitea-runner`. - Ваше монтирование `/var/run/docker.sock:/var/run/docker.sock` в контейнер раннера оставьте. Job-контейнеру также нужен доступ к этому сокету через настройки `container.docker_host` (значение по умолчанию — автоопределение). Workflow при необходимости установит Docker CLI в job-контейнер. - Docker host должен быть x86_64 и иметь достаточно места. `actions/setup-python` устанавливает Python 3.13 в job-контейнер. +- `scripts/install-qt-runtime-deps.sh` ставит системные runtime-библиотеки OpenGL, XCB и X11 для PySide6; список составлен по [требованиям Qt для Linux](https://doc.qt.io/qt-6/linux-requirements.html). - В секретах репозитория нужен `API_TOKEN` с правами записи тегов и релизов. Checkout также должен иметь право отправить git tag в `origin`. - Первый запуск скачает образы `batonogov/pyinstaller-windows:latest` и `amake/innosetup:innosetup6` и установит зависимости Python внутри контейнера Wine. Для образов и артефактов потребуется несколько гигабайт свободного места. Сборка передаёт файлы через `docker cp`, поэтому пути внутри job-контейнера и Docker host могут различаться. diff --git a/scripts/install-qt-runtime-deps.sh b/scripts/install-qt-runtime-deps.sh new file mode 100644 index 0000000..cff3aed --- /dev/null +++ b/scripts/install-qt-runtime-deps.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Runtime libraries used by PySide6/QtGui on Ubuntu, including XCB and OpenGL. +qt_runtime_packages=( + libgl1 libegl1 libxkbcommon0 libxkbcommon-x11-0 + libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 + libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-shm0 + libxcb-sync1 libxcb-xfixes0 libxcb-xkb1 libxcb-xinerama0 + libxcb-util1 libxcb-glx0 + libx11-6 libx11-xcb1 libxext6 libxrender1 libsm6 libice6 libxi6 + libfontconfig1 libfreetype6 libglib2.0-0 +) + +if [ "$(id -u)" -eq 0 ]; then + apt-get update + apt-get install -y --no-install-recommends "${qt_runtime_packages[@]}" +else + sudo apt-get update + sudo apt-get install -y --no-install-recommends "${qt_runtime_packages[@]}" +fi