Russian thread

Привет. Такое может возникнуть если запустить ./configure несколько раз с разными параметрами (вполне может быть - /usr/local/… это дефолтный путь)
В этом случае исправить можно через “make distclean” или стащив исходники заново (например из svn) и пересобрать сначала.

Если не исправится, то вопрос - как именно этот deb собираете?
Уже собранные .deb-ы есть тут: wiki.vcmi.eu/index.php?title=Ins … n_on_Linux

Ivan:
Те дебы для x86, а мы под ARMv7 собираем

Да, distclean не пробовал, ибо долго, как верно подметил kottt мы под арм собираем.
Но сегодня запустил чистую сборку с транка, посмотрим.
Но проблема основная вырисовывается в другом:
При загрузке карты клиент зависает. Попозже постараюсь выложить strace и дебаг.
собираем просто: dpkg-buildpackage и вперед. (:

Собрал из транка, работает. (:

Установил Героев 3 “Дыхание смерти” под wine (путь установки указал на английском: C:\Games\SoD). Затем установил WoG. После этого скомпилировал из исходников VCMI (система OpenSUSE последняя x64). Запускал vcmiclint нормально. Попробовал изменить разрешение на своё 1280х1024 и после перезапуска дальше главного меню не ухожу: Failed to find file AdRollvr1280.pcx
Никак не могу исправить разрешение. Помогите, кто знает, где можно вручную прописать нужное? Или где взять этот AdRollvr1280.pcx. Перекомпиляция и перезапись файлов в папке /usr/local/share/vcmi не помогает :frowning:

Надо распаковать этот архив в /usr/local/share/vcmi (кроме папки config)
download.vcmi.eu/vcmi-data_0.89.tar.gz

Ivan, спасибо! Попробую :slight_smile: Только что-то не нашёл тут раньше на сайте и форуме этого…

Привет!
Долго заставлял сие чудо компилиться под slackware… свершилось.
Запускается нормально, но при попытке запустить кампанию - виснит наглухо (после выбора бонуса и нажатия конопки “begin”).
То есть не вываливается, ошибок нет, просто висит, пока не кильнешь).
Проявляется на одиночном сценарии. В кампании же вываливается с: "vcmiclient: CLodHandler.cpp:26: std::string readString(const ui8*, int&): Assertion `len >= 0 && len <= 500000’ failed."
Использую исходники с trunk.
Так же (не помню когда) ругается на отсутствие NEUTRAL.H3C
Что может быть?

p.s. boost-1.49

Чего так долго? Вроде как привели в порядок ридми или что-то все еще не так?

Кампании еще недоделаны, багов там больше некуда - лучше сценарии запускать пока что.
Но падать при старте ни одни ни вторые не должны.

Что не так - не уверен. Возможно в процессах остался зависший сервер - в этом случае нужно убить vcmiserver и только потом запускать клиент (vcmiclient который)
Если в сценариях все равно зависает:

  • проверить есть ли в процессах vcmiserver (должен запуститься вместе со стартом сценария)
  • если есть возможность, то подключиться с gdb и снять стек с клиента и сервера:
$ gdb --pid={process id}
(gdb) set logging on
(gdb) thread apply all bt full
(gdb) quit

Вывод (gdb.txt) выложить сюда вместе с логами (текстовики в папке ~/.vcmi)

NEUTRAL.H3C это кампания Spoils of War / Трофеи Войны - тут похоже опечатка у нас. Должно быть NEUTRAL1.H3C, исправлю

Долго, в основном из за того что моя система давно не видела апгрейда.
И либы старые, и компилятор и coreutils. Сначала конфигуратор никак не хотетл видеть libSDL и boost, потом вылетал при начале компиляции… но это такое, старая система, работает на машине уже лет 6 или 7… последний апгрейд года 2 назад был, так что простительно :wink:

Сейчас все компилится без проблем, за исключением ворнингов. И есть еще один момент.
Вроде как при сборке ERMParser.lo (точно не помню, но что-то из ERM) - машина начинала уходить в трэшинг. То есть активно юзать своп. И я просто через 10 минут этого убийственного процесса вырубал компилятор. Видать 1 гига памяти для компиляции маловато. Добавил еще гиг оперативы и все собралось без проблем, при этом памяти было занято 1,2-1,3 гига.

Ага, благодарю за совет!
Как раз сервер то и не стартует. В процессах ничего. Причем в логах даже нет VCMI_Server_log.txt
Лог сервера появляется только после запуска его вручную. Но он тут же благополучно падает:
Port 3030 will be used.
Loading .lod files: 90
General text handler: 40
…skipped…
Spell handler: 0
CVCMIServer created!
Function not implemented
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception’
what(): Function not implemented

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

Свопинг при компиляции ERM - возможно. Уж слишком активно там используется всякая магия буста. Наверно стоит как-нибудь сделать его компиляцию опциональной - в игре это пока нигде не используется.

А падает похоже и вправду буст.
Ругается на boost::interprocess. Гуглением нашел такую же ошибку:
slackwiki.com/ATI_Graphics#I … the_Driver
Стоит попробовать /etc/fstab поправить.

Ivan благодарю!
Включил tmpfs в fstab. Клиент и сервер стартуют, все работает…
Да… еще на счет свопинга в ERM - если конфигурить через cmake а потом собирать - то в трэшинг машина не уходит.

Ivan, а оно должно тормозить?
Герои передвигаются мучительно медленно, а ждать пока походит комп можно почти минуту (если много противников).
При этом загрузка проца всего процентов на 15.
И вот это постоянно:
Warning: Cannot open /path_to_vcmi/Mp3/CstleTown.mp3: Module format not recognized
если подкинуть mp3 с порта от loki - тоже самое. Хотя в общем-то звуки и кое-какая музыка в игре есть.

Какой-либо сильной оптимизацией еще не занимались, так что ИИ тормозить и вправду может - его писать начали сравнительно недавно.
Ну и конечно зависит от системы и карты. Можно пересобрать vcmi включив оптимизацию - это должно несколько ускорить игру.

Скорость героя можно поменять в настройках. Или это не помогает?

mp3 - подозреваю что или sdl mixer был скомпилен без поддержки mp3 или же в системе нет нужной библиотеки (кажется smpeg)
Звуки есть ибо они все в wav, а не mp3.

Ivan, вечер/день добрый!
Раз уж Вы курируете эту ветку… то подскажите по поводу новых версий (rev 2831).
Компилится без вопросов, но при старте:
Starting…
Creating console and logfile: 0 Initialization: 10
terminate called after throwing an instance of 'std::runtime_error’
what(): Resource with name ALL/CONFIG/FILESYSTEM and type TEXT wasn’t found.
Похоже надо обновить конфиг-пак?
Но где его взять, если это так.

Скопировать из папки с исходниками. (папка trunk/config/)

Добрый день Иван!
Подскажите пожалуйста, какой переменной cmake, определить собственный rpath?
CMAKE_INSTALL_RPATH="%_libdir/%name/" почему-то не работает.

Хмм… Должно работать. В доках cmake пишут что rpath применяется только после установки (make install и тому подобные).
Проверю, если что не так - исправлю.

Ну а как вариант - поправить флаги:
cmake -DCMAKE_CXX_FLAGS="-rpath,/path/to/lib"

Спасибо, однако не помогло добавить опцию в cmake. При elf проверке в
альте, выводит следующее

Verifying ELF objects in /usr/src/tmp/vcmi-buildroot (arch=normal,fhs=normal,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH ends with ":": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal absolute entry "/usr/src/RPM/BUILD/vcmi-0.9/lib": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal entry "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libvcmiERM.so: RPATH starts with ":": :::::::::::::::::::
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog1
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI10CGCreature
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZN7CLogger18FILE_LOGGING_LEVELE
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: console
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog4
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI14CGHeroInstance
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog0

А после установки? В самом rpm или уже установленные в систему?

CMake ссылки на папки правит в момент установки - бинарники, которые валяются в папке сборки будут указывать на эту самую папку - замена на пути вида /usr/lib/vcmi делается позже.

UPD:

Проверил. CMAKE_INSTALL_RPATH не используется, но выставлен правильно:
до установки: ~/src/vcmi/build/lib
после: /usr/lib/vcmi

Посмотрю что с первым сделать можно.