Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

General Linux port discussion (Russian) #231

Closed
johndoe71rus opened this issue Aug 6, 2018 · 57 comments
Closed

General Linux port discussion (Russian) #231

johndoe71rus opened this issue Aug 6, 2018 · 57 comments

Comments

@johndoe71rus
Copy link

Буквально несколько дней назад, когда узнал о проекте в ридми была отметка что на линуксе собирается. Обновил гит и модули сегодня, получил ошибку при сборке.
https://paste.ubuntu.com/p/TMTsGmMDHD/ лог

@q4a
Copy link
Member

q4a commented Aug 7, 2018

Приветствую.
Основная работа над Linux-портом идет в бранче linux вот тут: https://github.com/q4a/xray-16
В https://github.com/OpenXRay/xray-16 изменения переносятся спустя некоторое время. Такую же ошибку при сборке я воспроизвел у себя и поправил. Скоро смержим и закроем тикет.

@johndoe71rus
Copy link
Author

да, как раз на той странице и видел плашку об успешной сборке. спутал потому что ссылка на issues ведет сюда же.
тот проект у меня тоже не собирается, https://paste.ubuntu.com/p/2JJsVzzMZh/

@q4a
Copy link
Member

q4a commented Aug 7, 2018

Расскажи пару слов про твой дистрибутив, какая версия SDL2 стоит, покажи вывод 2 команд:
pkg-config --cflags --libs sdl2
pkg-config --cflags sdl2

У меня вот такой вывод:
$ pkg-config --modversion sdl2
2.0.8
$ pkg-config --cflags sdl2
-D_REENTRANT -I/usr/include/SDL2

И посмотри внимательно на вот это файл:
https://github.com/q4a/xray-16/blob/linux/doc/howto/build-linux.txt
Я только что добавил туда описание грязного хака, от которого пока не не получается избавиться)
И любые мелкие вещи проще спросить в discord-е (можно прям из браузера): https://discord.gg/sjRMQwv

@johndoe71rus
Copy link
Author

johndoe71rus commented Aug 7, 2018

Calculate Linux Desktop 17.12.2 LXQt (gentoo based)
$ pkg-config --cflags --libs sdl2
-D_REENTRANT -I/usr/include/SDL2 -lSDL2
$ pkg-config --cflags sdl2
-D_REENTRANT -I/usr/include/SDL2
$ pkg-config --modversion sdl2
2.0.8
Тут практически все собирается, есть почти все нужные зависимости изкоробки. В отличии от убунту. Использую как полигон для сборки и запуска разных проектов

Если cmake .. отрабатывает без ошибок, значит зависимости для сборки удовлетворены?
без cryptopp
тоже ошибка https://paste.ubuntu.com/p/Hrctx3YZbW/

@q4a
Copy link
Member

q4a commented Aug 7, 2018

Странно. Версия SDL2 нормальная. Тогда посмотри, что система скажет на вот этот запрос:
apt-file search SDL_platform.h

Вот что выдает у меня:
$ apt-file search SDL_platform.h
emscripten: /usr/share/emscripten/system/include/SDL/SDL_platform.h
libsdl1.2-dev: /usr/include/SDL/SDL_platform.h
libsdl2-dev: /usr/include/SDL2/SDL_platform.h

И дальше проверь, стоит ли libsdl2-dev

@johndoe71rus
Copy link
Author

$ locate SDL_platform.h
/home/test/build/game/RealRTCW/code/SDL2/include/SDL_platform.h
/home/test/build/game/iortcw/MP/code/SDL2/include/SDL_platform.h
/home/test/build/game/iortcw/MP/code/SDL2/include-2.0.1/SDL_platform.h
/home/test/build/game/iortcw/SP/code/SDL2/include/SDL_platform.h
/home/test/build/game/iortcw/SP/code/SDL2/include-2.0.1/SDL_platform.h
/usr/include/SDL/SDL_platform.h
/usr/include/SDL2/SDL_platform.h

gentoo ориентирована на сборку из исходников. так что нет отдельных *-dev пакетов как в дебиане/убунту.
eix libsdl2
[I] media-libs/libsdl2
Доступные версии: 2.0.4 2.0.8-r1 ~2.0.8-r2 {X alsa altivec aqua custom-cflags dbus fusionsound gles haptic +joystick kms libsamplerate nas opengl oss pulseaudio +sound static-libs +threads tslib udev +video wayland xinerama xscreensaver ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" CPU_FLAGS_X86="3dnow mmx sse sse2" VIDEO_CARDS="vc4"}
Установленные версии: 2.0.8-r1(13:40:46 28.06.2018)(X alsa dbus gles haptic joystick opengl pulseaudio sound threads udev video xinerama -altivec -aqua -custom-cflags -libsamplerate -nas -oss -static-libs -tslib -wayland -xscreensaver ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="32 64 -x32" CPU_FLAGS_X86="3dnow mmx sse sse2")
Домашняя страница: http://www.libsdl.org
Описание: Simple Direct Media Layer

@q4a
Copy link
Member

q4a commented Aug 7, 2018

Хорошо. Про Calculate Linux я ничего не знаю, поэтому просто ориентируюсь на ошибку из https://paste.ubuntu.com/p/2JJsVzzMZh/ - файл SDL_config.h содержит инклюд SDL_platform.h , но не видит его. Попробую поспрашивать у коллег-линуксоидов, но как-то странно выглядит.

/usr/include/x86_64-pc-linux-gnu/SDL2/SDL_config.h:33:10: фатальная ошибка: SDL_platform.h: Нет такого файла или каталога
#include "SDL_platform.h"
^~~~~~~~~~~~~~~~
компиляция прервана.

UPD: попробуй сделать не просто make, а VERBOSE=1 make

@johndoe71rus
Copy link
Author

johndoe71rus commented Aug 7, 2018

https://paste.ubuntu.com/p/rvMKF8VTgp/
в каталоге /usr/include/x86_64-pc-linux-gnu/SDL2/ только один файл SDL_config.h

@q4a
Copy link
Member

q4a commented Aug 7, 2018

У нас походу в xrMiscMath не прописаны SDL инклюды. Вечером постараюсь поправить

@q4a
Copy link
Member

q4a commented Aug 7, 2018

Попробуй заменить содержимое файла src/utils/xrMiscMath/CMakeLists.txt на вот это:
https://paste.ubuntu.com/p/DTZttcnv6f/ - там добавлена только 1 строка: в список директорий инклюдов добавлен ${SDL_INCLUDE_DIR}

@johndoe71rus
Copy link
Author

то место проехали, но затык на новом https://paste.ubuntu.com/p/jVnxT77DyV/ но тоже SDL2.

@eagleivg
Copy link
Contributor

eagleivg commented Aug 7, 2018

Добавил сдл инклюды для OPCODE, перестяни.

@johndoe71rus
Copy link
Author

https://paste.ubuntu.com/p/8RFwMCbSJX/
есть прогресс, но снова ошибка.
кстати, хак про Externals/cryptopp может тоже в коде закрепишь. Модуль снова скачался и я его удалял.

@eagleivg
Copy link
Contributor

eagleivg commented Aug 7, 2018

Переделал поиск SDL, указал в зависимых проектах инклуды. Перед проверкой удали папку сборки и заново её создай, и выполни из нее cmake ..

@johndoe71rus
Copy link
Author

теперь все собралось. Лог где нибудь пишется? в терминале не хватило буфера на полный лог.
Правильно понимаю что на линукс пока только сборка отдельных модулей. Играть нельзя. А судя по вики, на видеокартах ATI тем более.

@q4a
Copy link
Member

q4a commented Aug 8, 2018

Лог, который виден на экране вроде не пишется. Всегда можно сделать >> output.log
Есть лог cmake-а: bin/CMakeFiles/CMakeOutput.log - но там другое
На Linux идет почти полная сборка (за исключением отдельных модулей). Запуск идет через бинарник bin/src/xr_3da/xr_3da
Я пробовал его запускать - он начинает искать файлы с игрой, конфиги игры и т.п. Дальше этого места я пока не прошел)

@johndoe71rus
Copy link
Author

если лог нужен, могу пересобрать.

Посмотрел, кроме бинарника по папкам модулей раскиданы *.so файлы которые надо скопировать на свои места.
Этот движок для Зова Припяти?

@q4a
Copy link
Member

q4a commented Aug 8, 2018

Да нет, логов сборки полно. *.so файлы собираются и пока не перемещаются в нужную папку. Сначала хочется избавиться от ошибок сборки вроде: https://clbin.com/z9IEF
И грязных хаков вроде: q4a@9d9b1e7
А движок этот для Зова Припяти.

@johndoe71rus
Copy link
Author

когда собирал последний раз не удалял cryptopp. хотя возможно он где то в конфигах просто отключен уже был

@johndoe71rus
Copy link
Author

можно наверно тут про запуск продолжить. Игры пока нет, не нашел источник чистый без модов.
Просто сделал папаку, туда скопировал бинарник и в папку so модули. Не знаю куда их правильно размещать. Запустил бинарник, он ругнулся на файл https://i.imgur.com/8ZEiLZO.png
скачал отдельно этот файл, в нем поправил путь
$app_data_root$ = true | false | ./SCoP
при запуске создалась папка scop но в нижнем регистре. И папка и файл лога со \ в названии.
https://i.imgur.com/c0TqHqe.png
Хотя они должны быть созданы в папке scop. Создает их xr_3da, надо в нем пути пофиксить.

@eagleivg
Copy link
Contributor

Да, проблема известная, нужно будет на лету слеши править. И с папкой сохраненок что-то делать...

@johndoe71rus
Copy link
Author

как в моем случае, можно сохраненки назначить в папку игры, и в винде тоже должно работать.

@eagleivg
Copy link
Contributor

Не, это плохая идея, для любой из операционок. И в винде и в линуксе рекомендуется данные возникающие в процессе работы отдельно от бинарей хранить. В линуксе ещё и потому, что если игру опакетить, то у пользователя может не быть прав для сохранения в папку установки.

@johndoe71rus
Copy link
Author

johndoe71rus commented Aug 17, 2018

так делают практически все портабл приложения. Не важно на какой системе их запустили, все настройки и данные на месте.
Такую игру никто опакечивать не будет. Вариант получить данные игры - папка уже установленной игры из винды или установка через wine.
Возможность играть на 2 системах и иметь единые сохраненки думаю будет востребована.

или придумать префикс домашней директории, и обрабатывать его в зависимости от системы. Но может поломаться совместимость конфига между системами.

@eagleivg
Copy link
Contributor

eagleivg commented Aug 17, 2018

Возможность играть на 2 системах и иметь единые сохраненки думаю будет востребована.

Думаю не очень-то.

Такую игру никто опакечивать не будет

Я как раз собираюсь в виде пакетов через ppa распространять. Среди пользователей linux не так уж много людей способны собрать игру сами.

Вариант получить данные игры - папка уже установленной игры из винды или установка через wine.

Уже в текущем варианте можно либо указать расположение fgame.ltx через командную строку, либо запустить бинарь из папки с этим файлом. Также думаю над вариантом автоматического поиска этого файла через mlocate на линуксе и WindowsSearch на винде. Для владельцев игры в Steam напишу скрипт для steamcmd для получения ресурсов напрямую из стима

@Xottab-DUTY
Copy link
Member

Сомнительная идея насчёт переносимого пакета.. Прав на игру у нас нет: возьмёт GSC да как даст нам по башке...

@Xottab-DUTY
Copy link
Member

Кстати, если искать fsgame.ltx поиском, то он может не тот файл найти, ибо их может быть несколько.

@eagleivg
Copy link
Contributor

Кстати, если искать fsgame.ltx поиском, то он может не тот файл найти, ибо их может быть несколько.

Ну тут уже пользователю можно диалог с выбором показать.

@johndoe71rus
Copy link
Author

обычно портированные бинарники просто копируются рядом с родными. И с путями ничего мудрить не надо

@Xottab-DUTY
Copy link
Member

Тогда, да, хорошо. Я думаю сделать лучше так:

  1. Как обычно, попробовать взять файл из рабочей папки.
  2. Если он не нашёлся, попытаться взять его из папки ../
  3. Если он опять не нашёлся, то взять его уже из папки ../../
  4. И только последним вариантом использовать поиск.. При этом предусмотреть, тот факт, что он может быть медленный, что-то с этим сделать...

@Xottab-DUTY
Copy link
Member

Да.

@johndoe71rus
Copy link
Author

johndoe71rus commented Aug 21, 2018

как тогда обновить подмодули пачкой?
git submodule update --init --recursive
получаю то же сообщение что выше.
пробовал удалять эти подмодули, что бы скачало снова, так же ошибка.
где то нашел команду git checkout -f в пустую папку скачивает какой то код.

мне подсказали что забыли сделать что то типа git rm или mv. Но я точно не знаю.

@Xottab-DUTY
Copy link
Member

Xottab-DUTY commented Aug 21, 2018

А не надо второй раз вызывать git submodule update --init --recursive
Это если грубо говоря))

@johndoe71rus
Copy link
Author

хорошо. Git pull обновляет только этот проект. Как обновить связанные подмодули?

@Xottab-DUTY
Copy link
Member

Ты их уже обновил же

@Xottab-DUTY
Copy link
Member

Xottab-DUTY commented Aug 21, 2018

Вообще, у меня есть предположения, что эти ошибки возникают из-за того, что я сделал force push в эти подмодули, в результате чего, некоторые коммиты затёрлись..
Слушай, а можешь заново склонировать? (если у тебя там своих изменений нет)

Если изменения есть, то git submodule update --recursive
(приставка --init нужна если подмодули ещё не скачаны, поэтому она особо-то не нужна)
Потом, после этого, сделай те reset --hard, о которых я писал выше и подмодули будут в обновленном состоянии..

@johndoe71rus
Copy link
Author

нет, у меня на собственные правки кода знаний не хватает.
попробую заново скачать. Можешь сам попробовать, в другую папку или на другой системе/пользователе.
Я как то удалял подмодуль целиком, и потом запускал git submodule update --init --recursive
с логикой что гит проверит какие подмодули подключены, какие в наличии и если есть отсутствующие докачает. И так сработало, скачалось 2 подмодуля без сообщений.

@johndoe71rus
Copy link
Author

https://paste.ubuntu.com/p/n4pQHdz3Yj/
stack trace печатает

@Xottab-DUTY Xottab-DUTY added this to the Linux port milestone Aug 22, 2018
@Xottab-DUTY Xottab-DUTY changed the title build linux failed General Linux port discussion (Russian) Aug 22, 2018
@eagleivg
Copy link
Contributor

Угу, отлично. Работаем дальше.

@johndoe71rus
Copy link
Author

https://paste.ubuntu.com/p/2Fpvpvcjp9/
свежие патчи. изменилась строка в xr_ini.cpp

@s1nka
Copy link

s1nka commented Aug 24, 2018

Тоже самое получаю.

@eagleivg
Copy link
Contributor

Да, я знаю о проблеме. Косяк в том, что realpath() почему-то в данной части выдает относительный путь вместо абсолютного, пока не разобрался почему. Ещё сломал виндовую сборку, так как убрал приведение к нижнему регистру, перестали грузиться шейдеры из архивов, нужно добавить приведение только для архивов.

@johndoe71rus
Copy link
Author

johndoe71rus commented Aug 29, 2018

ура, большой прогресс, уже читаем user.ltx
https://paste.ubuntu.com/p/m9zJ3FCG8Z/
Возможно меню скоро запустим. Поиграть на этом железе у меня не получится.

если файла нет
https://paste.ubuntu.com/p/6Bgh9MCkwb/
то не достает его из архива или пока не доходит до процедуры генерации.

@johndoe71rus
Copy link
Author

Обновил систему. При обновлении были удалены "ненужные пакеты". После cmake стал ругаться что не хватает библиотек. Установил. сборка почти в самом конце прерывается ошибкой.
https://paste.ubuntu.com/p/dJDmt2QYWC/
В системе что то не хватает еще?

@eagleivg
Copy link
Contributor

eagleivg commented Sep 6, 2018

Похоже на кривой билд luajit. Попробуй удалить папку сборки и заново запустить cmake.

@johndoe71rus
Copy link
Author

johndoe71rus commented Sep 6, 2018

я всегда чищу bin потом cmake .. и make

странно, пересобрал нормально.

@Xottab-DUTY
Copy link
Member

Xottab-DUTY commented Jul 5, 2019

Закрываю по двум причинам:

  1. Нет активности.
  2. Обсуждение данной темы, в основном, происходит в нашем Дискорде.

Присоединяйтесь к нашему Discord-серверу: https://discord.gg/sjRMQwv

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

5 participants