LINUX.ORG.RU
ФорумGames

Gentoo на Арм64, games-fps/urbanterror: несовместимый тип аргумента 4 функции «vsnprintf»

 ,


0

1

Попробовал на арм64 собрать игру, несколько других, например xonotic собирается без проблем.

Это чисто в арме проблема с GCC, или версию какую другую надо? У меня только 11-ый.

In file included from code/client/client.h:25,
                 from code/client/cl_ui.c:24:
code/client/cl_ui.c: В функции «CL_UISystemCalls»:
code/client/../qcommon/qcommon.h:377:16: ошибка: несовместимый тип аргумента 4 функции «vsnprintf»
  377 | #define VMA(x) VM_ArgPtr(args[x])
      |                ^~~~~~~~~~~~~~~~~~
      |                |
      |                void *
На x86-64 оно нормально собирается?

★★★★★

проверил, собрался. даже притом, что он в зависимостях требует media-libs/libsdl2[X], а у меня собрана без X. при попытке запустить сегфолтится, но непонятно, это из за отсутствия иксов или из за отсутсвия ресурсов игры. выкачивать полтора гига ресурсов мне лень.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от mittorn

C такими опциями вот так:

aarch64-unknown-linux-gnu-gcc: предупреждение: gcc: входные файлы компоновки не использованы, поскольку компоновка не выполнялась
aarch64-unknown-linux-gnu-gcc: ошибка: gcc: linker input file not found: Нет такого файла или каталога
make[2]: *** [Makefile:2077: build/release-linux-i686/client/cl_console.o] Ошибка 1
make[2]: *** Ожидание завершения заданий…

Падает даже раньше того места.

burato ★★★★★
() автор топика
Последнее исправление: burato (всего исправлений: 1)
Ответ на: комментарий от burato

-w в CFLAGS, CXXFLAGS будет достаточно.
/etc/portage/package.env и /etc/portage/env чтобы переопределять флаги для отдельных пакетов.
К примеру, создаёшь /etc/portage/env/nowarning, туда прописываешь эти сифлаги, потом в /etc/portage/package.env прописываешь games-fps/urbanterror nowarning
я правда не уверен что в твоём случае там -Werror виноват, надо посмотреть, что это за макрос

mittorn ★★★★★
()
Ответ на: комментарий от burato

Значит что-то в макросне. Возможно они полагаются что va_list это void*, что не верно и на arm работать не будет. посмотри как в других 3 кваках сделано, которые собираются

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

не запускается, либ каких то не хватает

ну и не собираюсь кросса компилятором пользоваться, надо нативно.

burato ★★★★★
() автор топика
Последнее исправление: burato (всего исправлений: 1)
Ответ на: комментарий от burato

для начала попробуй собрать без portage просто в хомяке последнюю версию. Я несистемный софт, который не полностью поддерживает платформу (видимо у тебя этот случай) обычно и не ставлю в систему, а собираю как есть, quake-based тем более, он довольно портабельный. Вполне возможно что баг уже исправлен или исправится после твоего репорта куда-нибудь на гитхаб (там, вероятно, надо подтянуть изменения с ioq3)

mittorn ★★★★★
()
Ответ на: комментарий от burato
diff --git a/code/client/cl_ui.c b/code/client/cl_ui.c
index 41ef3dd9..38002e48 100644
--- a/code/client/cl_ui.c
+++ b/code/client/cl_ui.c
@@ -1106,7 +1106,7 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
                return NET_StringToAdr( VMA(1), VMA(2), NA_IP);
 
        case UI_Q_VSNPRINTF:
-               return Q_vsnprintf( VMA(1), *((size_t *)VMA(2)), VMA(3), VMA(4));
+               return Q_vsnprintf( VMA(1), *((size_t *)VMA(2)), VMA(3), *(va_list*)VMA(4));
 
        case UI_NET_SENDPACKET:
undef ★★
()
Ответ на: комментарий от undef

Словом это на данном месте помогло и оно пошло дальше, но слетела линковка и какие-то заголовочные файлы теперь не видит, надо вспоминать, как патчить в Gentoo

burato ★★★★★
() автор топика
Ответ на: комментарий от undef

Блин, не знаю, как правильно патч офрмить

 * Applying urbanterror.patch ...                                                                                     
patching file code/client/cl_ui.c                                                                                     
Hunk #1 FAILED at 1106.                                                                                               
1 out of 1 hunk FAILED -- saving rejects to file code/client/cl_ui.c.rej

burato ★★★★★
() автор топика
Ответ на: комментарий от undef

Вобщем с огромным трудом сделал правильный патч, но оно теперь падает в другом месте

code/client/snd_codec_opus.c:34:10: фатальная ошибка: opusfile.h: Нет такого файла или каталога
   34 | #include <opusfile.h>
      |          ^~~~~~~~~~~~   
Файл есть, лежит в
/var/tmp/portage/games-fps/urbanterror-4.3.4_p20211208/work/ioq3-c988f7669bd70b59beb384563d4c8304062ae011/external/opusfile-0.9/include/opusfile.h
Что за херня творится? На х86-62 собирается без проблем.

burato ★★★★★
() автор топика

Так, фиг с ним, выкинул юз opus, прошло дальше, но упало на месте:

>>> Source compiled.
>>> Test phase [not enabled]: games-fps/urbanterror-4.3.4_p20211208

>>> Install games-fps/urbanterror-4.3.4_p20211208 into /var/tmp/portage/games-fps/urbanterror-4.3.4_p20211208/image
 * ERROR: games-fps/urbanterror-4.3.4_p20211208::gentoo failed (install phase):
 *   !!! newbin: build/release-linux-i386/Quake3-UrT.i386 does not exist
Что теперь не так!?

Если я верно понял, то оно скомпилило версию build/release-linux-i686, бинарник лежит там Quake3-UrT.i686 и Quake3-UrT_opengl2.i686, запустить, конечно, же, не могу, без инсталла.

Вопрос нафига оно хочет не ту версию тто?

burato ★★★★★
() автор топика
Последнее исправление: burato (всего исправлений: 1)
Ответ на: комментарий от burato

Неа, арм как хобби. Пробую собрать очередную игру на ARM Debian. Если запустилось, перехожу к следующей.)

Выше был быстрый фикс. Как разработчики добились нормальной сборки на x86 и ошибки на arm, еще предстоит выяснить.

Ну и не знаком с системой сборки gentoo, поэтому не могу ничего сказать за другие ошибки сборки. Могу предположить, что игра пытается использовать системную библиотеку libopusfile-dev (или аналог в gentoo), которая не установлена.

undef ★★
()
Последнее исправление: undef (всего исправлений: 1)
Ответ на: комментарий от undef

вот уж воистину по одиночке ничего невозможно, только вместе, здесь ты по чуть, там он, там ещё кто-то упорно потрудился, бац и портировали игру на арм)

burato ★★★★★
() автор топика