LINUX.ORG.RU

Компилирование love

 ,


0

1

Когда вышел Mari0, он требовал версию библиотеки love 0.8 из SVN. А она не компилировалась. Сначала захотела libIL, установил. Потом liblua5, установил.

checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for library containing sqrt... -lm
checking for library containing SDL_Init... -lSDL
checking for library containing glLoadIdentity... -lGL
checking for library containing alSourcePlay... -lopenal
checking for library containing lua_pcall... -llua
checking for library containing ilInit... -lIL
checking for library containing FT_Load_Glyph... -lfreetype
checking for library containing PHYSFS_init... -lphysfs
checking for library containing ModPlug_Load... -lmodplug
checking for library containing mpg123_open_feed... -lmpg123
checking for library containing mpg123_seek_64... none required
checking for library containing ov_open... -lvorbisfile
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
zenitur@linux-athlon64x2:~/love-0.8.0> make
make  all-recursive
make[1]: Вход в каталог `/home/zenitur/love-0.8.0'
Making all in src
make[2]: Вход в каталог `/home/zenitur/love-0.8.0/src'
make[3]: Вход в каталог `/home/zenitur/love-0.8.0/src'
depbase=`echo modules/window/sdl/Window.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I..  -I. -I./modules -I./libraries -I/usr/include/AL -I/usr/include/freetype2   -I/usr/include/SDL -D_FILE_OFFSET_BITS=64   -g -O2 -MT modules/window/sdl/Window.o -MD -MP -MF $depbase.Tpo -c -o modules/window/sdl/Window.o modules/window/sdl/Window.cpp &&\
mv -f $depbase.Tpo $depbase.Po
In file included from ./common/Module.h:25:0,
                 from ./modules/window/Window.h:28,
                 from modules/window/sdl/Window.h:25,
                 from modules/window/sdl/Window.cpp:32:
./common/runtime.h:87:9: error: ‘luaL_Reg’ does not name a type
./common/runtime.h:194:66: error: ‘luaL_Reg’ does not name a type
./common/runtime.h:194:81: error: ISO C++ forbids declaration of ‘f’ with no type
./common/runtime.h: In function ‘T* love::luax_getmodule(lua_State*, const char*, love::bits)’:
./common/runtime.h:366:24: error: there are no arguments to ‘lua_getfield’ that depend on a template parameter, so a declaration of ‘lua_getfield’ must be available
./common/runtime.h:366:24: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
make[3]: *** [modules/window/sdl/Window.o] Ошибка 1
make[3]: Выход из каталога `/home/zenitur/love-0.8.0/src'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/home/zenitur/love-0.8.0/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/home/zenitur/love-0.8.0'
make: *** [all] Ошибка 2
zenitur@linux-athlon64x2:~/love-0.8.0>

Создавал баг - баг закрыли «У вас просто не установлен LUA». С релизом love 0.8.0 то же самое, я решил попробовать скомпилировать его спустя несколько месяцев после предыдущей попытки в связи с выходом этой игры. Но релиз, в отличие от версии из SVN, появился в пакетной системе, и я решил установть RPM-ку:

http://img525.imageshack.us/img525/7800/45108591.png

Дело в том, что в репозитории «openSUSE BuildService - Игры» для openSUSE 11.4 есть библиотеки libphysfs1 и libphysfs2. Они конфликтуют. Все игры репозитория собраны с libphysfs1, кроме supertux2, который собран с libphysfs2. Поэтому при попытке установить, например, Neverball мне предлагают удалить supertux2. И я пересобрал Neverball из SRPM, поэтому теперь он тоже зависит от libphysfs2, и проблема решена. Теперь я решил пересобрать love с libphysfs2:

zenitur@linux-athlon64x2:~/Загрузки> rpmbuild --rebuild love-0.8.0-9.3.src.rpm
Устанавливается love-0.8.0-9.3.src.rpm
ошибка: Неудовлетворенные зависимости сборки:
        pkgconfig(lua) < 5.2 нужен для love-0.8.0-9.3.x86_64
        pkgconfig(lua) >= 5.1 нужен для love-0.8.0-9.3.x86_64
zenitur@linux-athlon64x2:~/Загрузки>

Это как так, какую версию lua ему нужно?! SRPM брал отсюда: http://ftp.uni-erlangen.de/pub/mirrors/packman/suse/openSUSE_Tumbleweed/Games...

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 4)

Ответ на: комментарий от megabaks

Ты оказался прав. Обновил lua50 до lua51 из пакета, теперь эта ошибка:

zenitur@linux-athlon64x2:~/Загрузки> rpmbuild --rebuild love-0.8.0-9.3.src.rpm
Устанавливается love-0.8.0-9.3.src.rpm
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.Cy5T8X
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd /usr/src/packages/BUILD
+ rm -rf love-0.8.0
+ /bin/tar -xf -
+ /usr/bin/gzip -dc /usr/src/packages/SOURCES/love-0.8.0-linux-src.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd love-0.8.0
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ sed -i 's/\r$//' changes.txt license.txt
+ echo 'Patch #2 (love-modplug.patch):'
Patch #2 (love-modplug.patch):
+ /bin/cat /usr/src/packages/SOURCES/love-modplug.patch
+ /usr/bin/patch -s -p0 --fuzz=0
1 out of 1 hunk FAILED -- saving rejects to file src/modules/sound/lullaby/ModPlugDecoder.cpp.rej
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.Cy5T8X (%prep)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.Cy5T8X (%prep)
zenitur@linux-athlon64x2:~/Загрузки>

Похоже, пакет с love просто кривой. В таком случае буду устанавливать не из Tumbleweed, а из 11.4 или 12.1 или 12.2.

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

Из 12.1 и 12.2 не собрались - та же самая ошибка на этапе наложения патча. Собрался пакет для моей же openSUSE 11.4, играю.

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

Под Wine и в Windows - жуткие тормоза. Наверное потому что у меня не видеокарта, а NVIDIA GeForce 7025. Странно, но в Linux-версии FPS огромен! Наверное, Windows-версия love собрана с поддержкой OpenGL, а Linux (собранная мной) - нет.

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

1 out of 1 hunk FAILED — saving rejects to file src/modules/sound/lullaby/ModPlugDecoder.cpp.rej

Патч не лег. Попробуй удалить его из спека

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

Я написал ответ не туда - сообщение про Wine адресовано Стрелку.

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

Не знаю что там у тебя с видеокартой, но у меня под wine бегало очень даже шустро (к тому времени love нужной версии еще не был доступен под линукс).

StReLoK ☆☆
()

Дело в том, что в репозитории «openSUSE BuildService - Игры» для openSUSE 11.4 есть библиотеки libphysfs1 и libphysfs2. Они конфликтуют. Все игры репозитория собраны с libphysfs1, кроме supertux2, который собран с libphysfs2. Поэтому при попытке установить, например, Neverball мне предлагают удалить supertux2. И я пересобрал Neverball из SRPM, поэтому теперь он тоже зависит от libphysfs2, и проблема решена.

Лучше бы ты пересобрал supertux2 в libphysx1, если из всех игр действительно только он зависит от новой версии библиотеки. Тогда бы не пришлось пересобирать ни Neverball, ни love. Просто установил бы оба из готовых пакетов без перекомпиляции.

anonymous
()

А ещё лучше сообщи о баге куда следует, раз умеешь и для love уже создавал. Возможно, libphysfs2 в openSUSE 11.4 вообще не нужен, а supertux2 с ним собрали случайно.

anonymous
()

С разрешения модератора воссоздаю удалённый комментарий.

В Убунте 12.04 работает без красноглазия и компиляции. Love 0.8.0 легко ставится из репы 12.10. Для этого я временно подключил репы Ubuntu Quantal, установил оттуда love и отключил репы Quantal обратно. На всё про всё не более пяти минут.

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

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

> В Убунте 12.04 работает без красноглазия и компиляции.

А в Ubuntu 10.04?

> Love 0.8.0 легко ставится из репы 12.10.

Что, и версия из SVN тоже устанавливается оттуда?

> Для этого я временно подключил репы Ubuntu Quantal, установил оттуда love и отключил репы Quantal обратно.

«без красноглазия и компиляции»!

> На всё про всё не более пяти минут.

«Каждая переустановка занимает двадцать минут!»

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

Обычная практика Debian. И именно это я и описывал в исходном сообщении: установка love из openSUSE 12.2 в 11.4 из пакета SRPM. В итоге я установил свой же пакет для openSUSE 11.4, который, ты удивишься, был. Причина того, что я не сделал этого сразу была в том, что были конфликтующие зависимости, и просто хотелось пакет посвежее.

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

А в Ubuntu 10.04?

Не знаю, глупо сидеть на десктопе с очень старой версией ОС.

Что, и версия из SVN тоже устанавливается оттуда?

Это и есть версия из SVN, откуда ж ещё.

«без красноглазия и компиляции»!

Именно! Пять минут не красноглазие.

«Каждая переустановка занимает двадцать минут!»

Переустановка чего?

firestarter ★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.