Flatpak-збірка рушія Xash3D/FWGS з Half-Life на прикладі Radicle/Git
В прикладах наведено форк гілки `master` репозиторію Xash3D/FWGS з патчем маніфесту Flatpak:
https://github.com/FWGS/xash3d-fwgs/blob/master/scripts/flatpak/su.xash.Engine.Compat.i386.yml
Цей патч включає репозиторій Radicle зі знімками оригінальних ігрових наборів Half-Life:
https://store.steampowered.com/app/70/HalfLife/
modules:
- name: half-life-steam-id-70
buildsystem: simple
build-commands:
- |
mkdir -p /app/valve-default
cp -r ./valve/. /app/valve-default
cleanup:
- ./*.pak
- ./*.so*
- ./hl_linux
- ./hl.sh
- ./platform
- ./redist
- ./valve
- ./valve_hd
sources:
- type: git
# without radicle-node running, try following web-seeds:
# url: https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW
# url: https://app.radicle.xyz/nodes/rosa.radicle.xyz/rad%3Az3LRRg2os4mihf6n12P6m2Ukr4BfW
url: rad://z3LRRg2os4mihf6n12P6m2Ukr4BfW
branch: master
- технічно, рядок `url` можна замінити на Інтернет-адресу проксі: наприклад, rosa, iris або іншими - тоді наявність локальної ноди Radicle не є обов'язковою.
Динамічні файли профілю, які входять до теки `valve`, мають бути розташовані за рамками контейнера з доступом на запис. Тому форк включає також і патч лаунчера:
https://github.com/FWGS/xash3d-fwgs/blob/master/scripts/flatpak/run.sh
# ~48 рядок
readonly _VALVE_DST="${XASH3D_BASEDIR%/}/valve"
if [[ -d $_VALVE_DST ]]; then
echo "loading game profile from $_VALVE_DST..."
else
echo "valve directory not found, initializing defaults..."
mkdir -p $_VALVE_DST
cp -r /app/valve-default/. $_VALVE_DST
if [[ ! -d $_VALVE_DST ]]; then
echo "could not init valve directory!"
exit 1
fi
fi
Таким чином, якщо користувач не вказав вибірковий шлях XASH3D_BASEDIR або в його стандартній теці ($HOME/.local/share/xash3d-fwgs/valve) не встановлено ігрові набори valve вручну, то вони будуть скопійовані туди з "внутрішньої пам'яті" контейнера (/valve-default) при першому запуску гри.
Це також дозволятиме користувачеві встановлювати різні модифікації, редагувати файли конфігурації, переглядати журнали, тощо.
Готовий пакунок .flatpak
Мета цього гайду - розписати процес білду, тоді як пакунок містить ігрові асети Valve Corp., а отже розмістити його тут не можу. Утім, якщо у вас є мінімум CPU і 5 хвилин часу, можете зібрати і поширювати його для особистих потреб, користуючись інструкціями нижче.
Готовий маніфест
Якщо ви не хочете вручну правити згадані вище файли і вам не потрібна остання версія Xash3D/FWGS:
rad clone rad:zQwuiSABZkACpAYgn5mJvf7y4QNm
Або через Веб-проксі (сід підбирайте самі)
git clone https://iris.radicle.xyz/zQwuiSABZkACpAYgn5mJvf7y4QNm.git xash3d-fwgs
- тут вам все одно потрібно буде правити Веб-сорс в маніфесті, тому краще юзайте `rad`
Перед збіркою потрібно перемкнути гілку на radicle-bundle:
cd xash3d-fwgs git checkout radicle-bundle git submodule update --init --recursive
- останньою командою підтягуємо залежності .gitmodules (для них я поки не реалізував локальні дзеркала, тому поки використовуємо оригінальні джерела)
Системні залежності
Для збірки пакунків .flatpak, потрібно встановити flatpak-builder. На Fedora, це робиться командою:
sudo dnf install flatpak flatpak-builder
Надалі, я буду робити все в просторі користувача (--user). Якщо ви ставите глобально, то можете цей аргумент прибрати звідусіль.
Окремо додається стандартний репозиторій залежностей Flathub, якщо його не було додано раніше:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Збірка і встановлення
Перед продовженням, для резольву префіксів `rad://`, не забудьте запустити локальний вузол Radicle:
rad node start --foreground --verbose
З теки репозиторію:
flatpak-builder --force-clean build \
--install-deps-from=flathub \
--install \
--repo=repo \
--user \
scripts/flatpak/su.xash.Engine.Compat.i386.yml
Після завершення збірки, працюючий вузол Radicle більше не потрібен.
Запуск
Застосунок "Xash3D FWGS" буде доступним в меню системи, назву його поки не змінював. Опціонально, можна запустити командою, за необхідності вказавши там аргументи середовища типу --env=XASH3D_BASEDIR=/
flatpak run su.xash.Engine.Compat.i386
Якщо бачите помилку:
Can't find 32-bit runtime extension. Try running 'flatpak install org.freedesktop.Platform.Compat.i386//25.08'
довстановіть середовище `flathub org.freedesktop.Platform.Compat.i386`:
flatpak install --user flathub org.freedesktop.Platform.Compat.i386
Якщо:
Can't initialize any renderer. Check your video drivers!
довстановіть 32-бітну версію `org.freedesktop.Platform.GL.default`:
flatpak install --user flathub org.freedesktop.Platform.GL32.default
Створення пакунку
Можна згенерувати пакунок .flatpak і встановити через менеджер додатків або поділитись з іншими:
flatpak build-bundle repo Half-Life.flatpak su.xash.Engine.Compat.i386
- в корені поточної теки буде створено файл `Half-Life.flatpak` (~230 Мб)
Посилання
Інтернет-адаптація цього матеріалу з коментарями на DevZone
Дивіться також
Radicle: децентралізований P2P хостинг Git/DVCS
Дзеркалювання репозиторію Git з локальними залежностями .gitmodules в Radicle
Half-Life в Linux на базі рушія Xash3D / FWGS
Розвідка боєм: Xash3D (FWGS) / Half-Life в Haiku OS
/uk/