Closed johndoe71rus closed 5 years ago
Приветствую. Основная работа над Linux-портом идет в бранче linux вот тут: https://github.com/q4a/xray-16 В https://github.com/OpenXRay/xray-16 изменения переносятся спустя некоторое время. Такую же ошибку при сборке я воспроизвел у себя и поправил. Скоро смержим и закроем тикет.
да, как раз на той странице и видел плашку об успешной сборке. спутал потому что ссылка на issues ведет сюда же. тот проект у меня тоже не собирается, https://paste.ubuntu.com/p/2JJsVzzMZh/
Расскажи пару слов про твой дистрибутив, какая версия 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
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/
Странно. Версия 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
$ 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
Хорошо. Про 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: Нет такого файла или каталога
^~~~~~~~~~~~~~~~
компиляция прервана.
UPD: попробуй сделать не просто make, а VERBOSE=1 make
https://paste.ubuntu.com/p/rvMKF8VTgp/ в каталоге /usr/include/x86_64-pc-linux-gnu/SDL2/ только один файл SDL_config.h
У нас походу в xrMiscMath не прописаны SDL инклюды. Вечером постараюсь поправить
Попробуй заменить содержимое файла src/utils/xrMiscMath/CMakeLists.txt на вот это: https://paste.ubuntu.com/p/DTZttcnv6f/ - там добавлена только 1 строка: в список директорий инклюдов добавлен ${SDL_INCLUDE_DIR}
то место проехали, но затык на новом https://paste.ubuntu.com/p/jVnxT77DyV/ но тоже SDL2.
Добавил сдл инклюды для OPCODE, перестяни.
https://paste.ubuntu.com/p/8RFwMCbSJX/ есть прогресс, но снова ошибка. кстати, хак про Externals/cryptopp может тоже в коде закрепишь. Модуль снова скачался и я его удалял.
Переделал поиск SDL, указал в зависимых проектах инклуды. Перед проверкой удали папку сборки и заново её создай, и выполни из нее cmake ..
теперь все собралось. Лог где нибудь пишется? в терминале не хватило буфера на полный лог. Правильно понимаю что на линукс пока только сборка отдельных модулей. Играть нельзя. А судя по вики, на видеокартах ATI тем более.
Лог, который виден на экране вроде не пишется. Всегда можно сделать >> output.log Есть лог cmake-а: bin/CMakeFiles/CMakeOutput.log - но там другое На Linux идет почти полная сборка (за исключением отдельных модулей). Запуск идет через бинарник bin/src/xr_3da/xr_3da Я пробовал его запускать - он начинает искать файлы с игрой, конфиги игры и т.п. Дальше этого места я пока не прошел)
если лог нужен, могу пересобрать.
Посмотрел, кроме бинарника по папкам модулей раскиданы *.so файлы которые надо скопировать на свои места. Этот движок для Зова Припяти?
Да нет, логов сборки полно. *.so файлы собираются и пока не перемещаются в нужную папку. Сначала хочется избавиться от ошибок сборки вроде: https://clbin.com/z9IEF И грязных хаков вроде: https://github.com/q4a/xray-16/commit/9d9b1e770f30bf20d591420418ca7668a33d56c7 А движок этот для Зова Припяти.
когда собирал последний раз не удалял cryptopp. хотя возможно он где то в конфигах просто отключен уже был
можно наверно тут про запуск продолжить. Игры пока нет, не нашел источник чистый без модов. Просто сделал папаку, туда скопировал бинарник и в папку so модули. Не знаю куда их правильно размещать. Запустил бинарник, он ругнулся на файл https://i.imgur.com/8ZEiLZO.png скачал отдельно этот файл, в нем поправил путь $app_data_root$ = true | false | ./SCoP при запуске создалась папка scop но в нижнем регистре. И папка и файл лога со \ в названии. https://i.imgur.com/c0TqHqe.png Хотя они должны быть созданы в папке scop. Создает их xr_3da, надо в нем пути пофиксить.
Да, проблема известная, нужно будет на лету слеши править. И с папкой сохраненок что-то делать...
как в моем случае, можно сохраненки назначить в папку игры, и в винде тоже должно работать.
Не, это плохая идея, для любой из операционок. И в винде и в линуксе рекомендуется данные возникающие в процессе работы отдельно от бинарей хранить. В линуксе ещё и потому, что если игру опакетить, то у пользователя может не быть прав для сохранения в папку установки.
так делают практически все портабл приложения. Не важно на какой системе их запустили, все настройки и данные на месте. Такую игру никто опакечивать не будет. Вариант получить данные игры - папка уже установленной игры из винды или установка через wine. Возможность играть на 2 системах и иметь единые сохраненки думаю будет востребована.
или придумать префикс домашней директории, и обрабатывать его в зависимости от системы. Но может поломаться совместимость конфига между системами.
Возможность играть на 2 системах и иметь единые сохраненки думаю будет востребована.
Думаю не очень-то.
Такую игру никто опакечивать не будет
Я как раз собираюсь в виде пакетов через ppa распространять. Среди пользователей linux не так уж много людей способны собрать игру сами.
Вариант получить данные игры - папка уже установленной игры из винды или установка через wine.
Уже в текущем варианте можно либо указать расположение fgame.ltx через командную строку, либо запустить бинарь из папки с этим файлом. Также думаю над вариантом автоматического поиска этого файла через mlocate на линуксе и WindowsSearch на винде. Для владельцев игры в Steam напишу скрипт для steamcmd для получения ресурсов напрямую из стима
Сомнительная идея насчёт переносимого пакета.. Прав на игру у нас нет: возьмёт GSC да как даст нам по башке...
Кстати, если искать fsgame.ltx поиском, то он может не тот файл найти, ибо их может быть несколько.
Кстати, если искать fsgame.ltx поиском, то он может не тот файл найти, ибо их может быть несколько.
Ну тут уже пользователю можно диалог с выбором показать.
обычно портированные бинарники просто копируются рядом с родными. И с путями ничего мудрить не надо
Тогда, да, хорошо. Я думаю сделать лучше так:
../
../../
git submodule update --init --recursive error: Сервер не поддерживает запрос необъявленного объекта b025b01c5b9d23f6218c7d72b7aafa3f1ab1e08a Получен по пути подмодуля «Externals/LuaJIT», но не содержит b025b01c5b9d23f6218c7d72b7aafa3f1ab1e08a. Сбой при прямом получении коммита.
я не правильно обновляю подмодули. или надо исправить.
мы можем положить бинарники просто в директорию bin-linux или bin_linux?
попробовал, не работает. Правки искать fsgame.ltx уровнем выше еще не было? положил xr_3da в папку игры рядом с fsgame.ltx стало ругаться что нет папки scop и scop/logs. в конфиге написал $app_data_root$ = true| false| .\scop Папки не создаются при необходимости. А раньше создавались, пусть и со слешем в названии. сделал, запустил https://paste.ubuntu.com/p/JWPQRkzg3b/
Для подмодулей надо сделать так:
cd Externals/LuaJIT
git reset --hard origin/HEAD
И тоже самое, только для luabind
Правки на поиск уровнем выше ещё не было. только вручную запускать из нужной рабочей папки. И да: а что если взять fsgame.ltx из Steam версии игры?
эта виндовс версия и виндовый бинарник собраны из "одного кода"? Слышал что вы рефакторили код. Но изначально был один источник. Тогда виндовая версия из игры без проблем сразу находит конфиг уровнем выше бинарника. Потому что виндовый бинарник лежит в /bin у меня сейчас вроде как gog версия. Не думаю что будет разница в конфигах. Как понял в fsgame.ltx прописаны приоритеты где искать ресурсы игры и путь для папки с логом и сейвами. при установке $app_data_root$ прописывается самим установщиком. Еще до запуска игры там путь в папку пользователя. У меня был случай запуска ShOC в wine. Не сохранялись настройки. Потом вспомнил что виндовс стояла на разделе Е и путь $app_data_root$ был прописан на Е. А в конфигурации wine не было этого диска. Поправил в конфиге Е на С и все стало отлично.
Неа, виндовая версия тоже не находит конфиг уровнем выше. Код, конкретно в этом месте, не рефакторился)
Не совсем понял про из "одного кода"
и один источник
.
В fsgame.ltx прописаны не приоритеты (не совсем понял, что имелось ввиду), а просто пути к необходимым папкам..
В стимовской версии папка $appdata$
лежит прямо в папке с игрой. Посоветовал её именно из-за этого.
Не совсем понял про из "одного кода" и один источник.
изначально для виндовой версии был тот же код который тут. это потом вы его как слышал "причесали" немного. удаляли лишнее
В fsgame.ltx прописаны не приоритеты (не совсем понял, что имелось ввиду), а просто пути к необходимым папкам..
Если не путаю то в fsgame.ltx надо делать правки что бы данные ресурсов брались из gamedata а не из архивов. это и назвал приоритетом.
В стимовской версии папка $appdata$ лежит прямо в папке с игрой. Посоветовал её именно из-за этого.
Так выше я делал примерно тоже самое. правил путь https://i.imgur.com/c0TqHqe.png вот при запуске рядом с бинарником была создана папка scop и scop\logs. А сегодняшний билд уже не создает папку для логов и сейвов. Пришлось самому сделать.
изначально для виндовой версии был тот же код который тут. это потом вы его как слышал "причесали" немного. удаляли лишнее
А, ты имеешь ввиду, что в главном репозитории код не менялся, но в этом репозитории его причесали?
Если не путаю то в fsgame.ltx надо делать правки что бы данные ресурсов брались из gamedata а не из архивов. это и назвал приоритетом.
Либо это было нужно в очень старой версии версии ТЧ либо это просто миф. Тут не могу сказать, откуда это взялось, но ни в одной игре ничего менять не надо. Всё прекрасно читается и так) @KRodinn, можешь подсказать, нужно ли было в старых версиях менять fsgame или оно всегда читало приоритно из геймдаты и непонятно почему решили, что надо менять?
А сегодняшний билд уже не создает папку для логов и сейвов. Пришлось самому сделать.
Странно это, надо сказать)
вроде как до сих пор рекомендуют https://steamcommunity.com/sharedfiles/filedetails/?l=russian&id=302750759 раздел II. Preparations
вобщем не важно, в одном из видео про openxray было упомянуто что вы провели работу по "чистке кода".
Главное, fsgame.ltx лежит в папке игры. бинарник xr_3da.exe в папке bin рядом с fsgame.ltx. Игра запускается ярлыком в папке игры. если только в ярлыке прописан путь к fsgame.ltx. а так получается что xr_3da.exe отлично находит конфиг fsgame.ltx уровнем выше.
test@test ~/build/game/xray-16/Externals/LuaJIT $ git reset --hard origin/HEAD HEAD сейчас на a3b6904 remove unused cmake file test@test ~/build/game/xray-16/Externals/luabind $ git reset --hard origin/HEAD HEAD сейчас на 735481f Update all CMakeLists.txt from Linux branch
так нормально?
Да.
как тогда обновить подмодули пачкой? git submodule update --init --recursive получаю то же сообщение что выше. пробовал удалять эти подмодули, что бы скачало снова, так же ошибка. где то нашел команду git checkout -f в пустую папку скачивает какой то код.
мне подсказали что забыли сделать что то типа git rm или mv. Но я точно не знаю.
А не надо второй раз вызывать git submodule update --init --recursive
Это если грубо говоря))
хорошо. Git pull обновляет только этот проект. Как обновить связанные подмодули?
Ты их уже обновил же
Вообще, у меня есть предположения, что эти ошибки возникают из-за того, что я сделал force push в эти подмодули, в результате чего, некоторые коммиты затёрлись.. Слушай, а можешь заново склонировать? (если у тебя там своих изменений нет)
Если изменения есть, то git submodule update --recursive
(приставка --init
нужна если подмодули ещё не скачаны, поэтому она особо-то не нужна)
Потом, после этого, сделай те reset --hard, о которых я писал выше и подмодули будут в обновленном состоянии..
нет, у меня на собственные правки кода знаний не хватает. попробую заново скачать. Можешь сам попробовать, в другую папку или на другой системе/пользователе. Я как то удалял подмодуль целиком, и потом запускал git submodule update --init --recursive с логикой что гит проверит какие подмодули подключены, какие в наличии и если есть отсутствующие докачает. И так сработало, скачалось 2 подмодуля без сообщений.
https://paste.ubuntu.com/p/n4pQHdz3Yj/ stack trace печатает
Угу, отлично. Работаем дальше.
https://paste.ubuntu.com/p/2Fpvpvcjp9/ свежие патчи. изменилась строка в xr_ini.cpp
Буквально несколько дней назад, когда узнал о проекте в ридми была отметка что на линуксе собирается. Обновил гит и модули сегодня, получил ошибку при сборке. https://paste.ubuntu.com/p/TMTsGmMDHD/ лог