Установка движка графических квестов RenPy в Debian |
[исправить] |
RenPy не ставится в Debian Sid из пакетов из-за конфликта зависимостей. При
этом оригинальный RenPy вообще не рассчитан на установку, и setuptools там
используется для создания отдельно поставляемых бинарных сборок.
Инструкция действительна для коммита
"4957280f4c39446d1683accc02355b26848b88c2". Если патчи не применяются - то
склонируйте начиная с этого коммита, примените патчи к нему, и перебазируйте на
ветку "master".
1. Необходимо поставить зависимости, и dev-пакеты, указанные в README.rst в
репозитории, а также свежий Cython и пакет python3-ecdsa
sudo apt install python3-ecdsa
Ещё требуется поставить утилиту "b3sum", так как через неё мы проверяем
целостность (работает намного быстрее, чем sha256sum).
2. Выполняем скрипт руками и по-частям, проверяя, что делает каждый шаг:
set -e
git clone https://github.com/renpy/renpy --depth=1
cd renpy
git checkout -b fixed
mkdir patches
cd patches
# Патчи, требуемые для Debian (остальные уже приняты в основной состав).
curl -o 01_abspath.patch https://salsa.debian.org/games-team/renpy/-/raw/master/debian/patches/01_abspath.patch
curl -o 02_traceback.patch https://salsa.debian.org/games-team/renpy/-/raw/master/debian/patches/02_traceback.patch
curl -o 03_checkdir.patch https://salsa.debian.org/games-team/renpy/-/raw/master/debian/patches/03_checkdir.patch
curl -o read-write-permissions.patch https://salsa.debian.org/games-team/renpy/-/raw/master/debian/patches/read-write-permissions.patch
b3sum -c - << END
bd44121b2b9306a452746f3a7ba18994f80a247b386eda5cdb9756ba0d9de444 ./01_abspath.patch
42f4f7d6a2d8870641460f16b675bd969fe32e9cb44b2980d0d41b8ebdcc7cc9 ./02_traceback.patch
5d0a905b30eb69044c35b38074f9e55b1f1399bcab6c2b91490ad31f82232308 ./03_checkdir.patch
d5cfcafbf18a39c5994915d36fa20a3b213bcf6683c5440ee71d54f3c868e9c7 ./read-write-permissions.patch
END
git am ./*.patch
rm ./*.patch
# Патчи с улучшениями (ставятся на свой страх и риск, так как источник не проверен). Есть пожелание - заапстримьте патчи в https://github.com/renpy/renpy , если там не примут - то в Debian.
curl https://paste.debian.net/plainh/d75623bc -o 0001-Enable-usage-of-Limited-API-https-docs.python.org-3-.patch
curl https://paste.debian.net/plainh/f10de1ca -o 0002-Make-pefile-a-non-mandatory-import.-On-Linux-we-don-.patch
curl https://paste.debian.net/plainh/052354ff -o 0003-Fix-the-incompatibility-in-The-Question-demo.patch
curl https://paste.debian.net/plainh/b6045a63 -o 0004-Fix-the-problems-in-source-code-relying-on-the-hardc.patch
curl https://paste.debian.net/plainh/178cdd86 -o 0005-Move-the-bundled-system-modules-in-their-proper-plac.patch
curl https://paste.debian.net/plainh/28af4ca7 -o 0006-Add-package-metadata-and-create-a-proper-Python-pack.patch
curl https://paste.debian.net/plainh/93de5501 -o 0007-Add-a-command-to-easily-run-the-launcher.patch
curl https://paste.debian.net/plainh/3d481187 -o 0008-Define-macros-for-security-hardening-of-standard-lib.patch
b3sum -c - << END
1ed9ed915b52050ec1f68883510269a161021105158d53fcafa6d1cd6749140a ./0001-Enable-usage-of-Limited-API-https-docs.python.org-3-.patch
bf6521898d17de04a48aaaac5de4b9919000df6b73b3a87cdcbd31e10fd4ae94 ./0002-Make-pefile-a-non-mandatory-import.-On-Linux-we-don-.patch
de66d94a487f683224032303f3bd43267d3a9bda2d2710b640e338f45b09addd ./0003-Fix-the-incompatibility-in-The-Question-demo.patch
8ddc41a139366103f08be55c863236cccad60ddc1658240c5452b4086279edf2 ./0004-Fix-the-problems-in-source-code-relying-on-the-hardc.patch
adf26e49250fb07dcb860dd2d4f75740b957a165ff6bcd545aec24b1c262d905 ./0005-Move-the-bundled-system-modules-in-their-proper-plac.patch
5dd9a8833d0d9139f7ba28fa5f25d413aaf39303c8af8c18383a425c23500667 ./0006-Add-package-metadata-and-create-a-proper-Python-pack.patch
c326a3ab80eccb0c4cacd429551c44d94e0b5ad7171cd874fe88f43dd445386d ./0007-Add-a-command-to-easily-run-the-launcher.patch
3c3652f648acf54803c192c0e32f6b4093f5081cbbc55e6f5300c9f78fd82721 ./0008-Define-macros-for-security-hardening-of-standard-lib.patch
END
git am ./*.patch
rm ./*.patch
# временные патчи, не рассчитанные для передачи в основной проект
curl https://paste.debian.net/plainh/db96ffcc -o 0009-Upgrade-the-langs-used-C-C-to-fresh-versions.-Should.patch
curl https://0x0.st/8Hc0.patch -o ./0010-Tweak-config-for-using-system-fonts-and-lazily-loadi.patch
curl https://0x0.st/8HcD.patch -o ./0011-Hardcode-some-versions-of-freetype.-Because-the-disc.patch
b3sum -c - << END
7b98689b1ae71640d455576d596d9ecfaa40c6845fd045f68e821cfc2ab5a1eb ./0009-Upgrade-the-langs-used-C-C-to-fresh-versions.-Should.patch
3a70cf47b366a93286bc8727a25bebc02def95a410e2513068fe90a59572bff8 ./0010-Tweak-config-for-using-system-fonts-and-lazily-loadi.patch
7a4f14953827e1cb9d6a15b6934f59a47a96b10a6c24efcccb6cd331ab3905e4 ./0011-Hardcode-some-versions-of-freetype.-Because-the-disc.patch
END
git am ./*.patch
rm ./*.patch
cd ..
# Важно - вручную cython-изировать все файлы. Потому что иначе "setup.py" запустит ОДНОВРЕМЕННО огромное число процессов cython, и всё встанет (если у вас не серверный Xeon с 128 ядрами и огромным объёмом памяти). Я просто завершил по максимуму процессы в сеансе чтобы освободить память (шутка, на самом деле их прибил SysRQ + f), и через ЗАРАНЕЕ ЗАПУЩЕННЫЙ htop в отдельной виртуальной консоли прибил большую часть процессов.
# find ./renpy -name "*.pyx" -exec cythonize -3 тут ещё много флагов {} \\;
# важно - сгенерировать файл с версиями, он импортируется!
python3 -m renpy.versions --nightly
# Собираем бинарный пакет, рекомендуется использовать CC="clang -flto" CXX="clang++ -flto"
CC="clang -flto" CXX="clang++ -flto" python3 -m build -nwx .
sudo pip3 install --upgrade ./dist/*.whl
cd the_question/game
# Игра требует CJK-шрифт безусловно
ln -s ../../sdk-fonts ./fonts
cd ../..
В результате запускать игры можно как
renpy ./the_question/game
renpy ./tutorial/game
и лончер как
renpy.launcher
|
|
|
|
Раздел: Корень / Пользователю / Файлы, копирование, архивация |