LINUX.ORG.RU

Не компилится Hedgewars

 , ,


0

2

Решил себе забэкпортить свежий Hedgewars 0.9.17 для Squeeze, уж очень хочется по сетке играть, а тот, что в stable (0.9.13), не поддерживается. Итак, скачал исходники из Wheezy:

apt-get source hedgewars
Поставил пакеты из Build-Depends, однако двух (а именно libghc-utf8-string-dev и libghc-bytestring-show-dev) не оказалось в Squeeze. Не беда, тоже собрал их из Wheezy, там уже все зависимости оказались удовлетворены. Итак, начал собирать:
fakeroot debian/rules binary
Напоролся на ошибку:
/home/eugeno/src/hedgewars-0.9.17/gameServer/ClientIO.hs:9:7:
    Could not find module `Network.Socket.ByteString':
      Use -v to see a list of the files searched for.
make[3]: *** [bin/hedgewars-server] Памылка 1
make[3]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[2]: *** [gameServer/CMakeFiles/hedgewars-server.dir/all] Памылка 2
make[2]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[1]: *** [all] Памылка 2
make[1]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make: *** [debian/stamp-makefile-build] Памылка 2
По ходу, ему не хватило пакета libghc6-network-bytestring-dev. Но его не было в Build-Depends! Ладно, поставил и его. Теперь выскакивает слегка другая ошибка:
/home/eugeno/src/hedgewars-0.9.17/gameServer/Utils.hs:16:17:
    Could not find module `Text.Show.ByteString':
      Use -v to see a list of the files searched for.
make[3]: *** [bin/hedgewars-server] Памылка 1
make[3]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[2]: *** [gameServer/CMakeFiles/hedgewars-server.dir/all] Памылка 2
make[2]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[1]: *** [all] Памылка 2
make[1]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make: *** [debian/stamp-makefile-build] Памылка 2
Теперь уже похоже на то, что не хватает пакета libghc-bytestring-show-dev, который я уже забэкпортил из Wheezy и установил. Господа, расскажите, ЧЯДНТ, без свеженьких ёжиков как-то грустно.

★★★★★

По компиляции предложить нечего. Только вопрос - нафига этот гемор, когда можно просто из тестинговых репов .deb поставить?

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

Только вопрос - нафига этот гемор, когда можно просто из тестинговых репов .deb поставить?

Беда в том, что он из тестинга тащит с собой полсистемы, поэтому я и выбрал более гладкий путь.

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

У вас что-то не так с кодировками.

Откуда это следует?

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

Ставь недостающие пакеты через утилиту cabal-install (вызывается как 'cabal') с флагом --global (можно и без флага попробовать, если не имеешь привычки компилировать софт под рутом). Все будет нормально :)

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

Если про раздел preferences - я об этом знаю, просто забываю. Когда на стейбле сидел было с этим лень разбираться, а сейчас я на сиде, так что это уже не важно. Вот и не вспоминал никогда.

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

Не помогло, точно так же кучу пакетов тащит.

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

Я, когда делал то же самое, просто выпилил сервер (Хаскелль нужен только для этого) из правил сборки и всё сконпелировалось.

GotF ★★★★★
()

Кай-то неправильный у тебя hedgewars

В моей уютненькой генте hedgewars писан на пасквиле, а не на хаскиле:

nkt@arnor ~ % emerge -pv hedgewars 
 * Last emerge --sync was 92d 3h 55m 46s ago.

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-lang/fpc-2.4.0  USE="-doc -source" 78,661 kB
[ebuild  N     ] media-libs/sdl-net-1.2.8  USE="-static-libs" 353 kB
[ebuild  N     ] games-strategy/hedgewars-0.9.17  135,683 kB

Total: 3 packages (3 new), Size of downloads: 214,696 kB

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

Я, когда делал то же самое, просто выпилил сервер (Хаскелль нужен только для этого) из правил сборки и всё сконпелировалось.

Так мне ведь как раз сервер и нужен, или это не для сетевой игры?

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

Серверная часть нужна для организации собственного сервера. Поиграть на стороннем можно и без этого.

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

Если через инет с друзьями поиграть, то можно и официальным сервером обойтись

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

Вызывается примерно так:

cabal install bytestring-show --global

Спасибо, кажется помогло, но теперь снова ошибка:

/home/eugeno/src/hedgewars-0.9.17/gameServer/ClientIO.hs:25:17:
    Not in scope: `state'
make[3]: *** [bin/hedgewars-server] Памылка 1
make[3]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[2]: *** [gameServer/CMakeFiles/hedgewars-server.dir/all] Памылка 2
make[2]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make[1]: *** [all] Памылка 2
make[1]: выхад з тэчкі "/home/eugeno/src/hedgewars-0.9.17/obj-x86_64-linux-gnu"
make: *** [debian/stamp-makefile-build] Памылка 2

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

Да я уж сам как-то :)

Даже и не знал, спасибо за игрушку, достойная альтернатива червячкам :)

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

Товарищ автор, объясни пожалуйста, чем обусловлен выбор столь маргинальных технологий, как хаскелл и паскаль?

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

Паскаль просто потому, что я знал его лучше других ЯП, когда начинал (2004й год). Хаскель просто так, начал изучать и решил для практики написать сервер на нём.

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

Зависимости в виде хаскельных либ лучше брать из кабала, как подсказал delete83

Так что это за либа?

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

Это mtl, а полный список зависимостей можно подсмотреть в hedgewars-server.cabal в исходниках. Кстати, рекомендую компилить сервер из репы, с моменты релиза было порядочно багфиксов.

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

Забыл про одну важную деталь, хотя cabal-install вам наверняка уже подсказал. Перед установкой библиотек через эту утилиту, нужно обновить ей список библиотек:

cabal update

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

hackage говрит, что нужна более свежая версия библиотеки mtl:

Что за hackage и с чем его едят? А то mtl поставил, ещё что-то ему не понравилось, как узнать, какая библиотека нужна?

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

http://hackage.haskell.org, но вам оно сейчас не надо. Вот вам готовый список, какие библиотеки вам нужно установить:

Build-depends:
    base >= 4,
    unix,
    containers,
    array,
    bytestring,
    network-bytestring,
    network,
    time,
    stm,
    mtl,
    dataenc,
    hslogger,
    process,
    utf8-string
По очереди устанавливайте их с помощью cabal-install. После этого все должно завестись. Если все библиотеки успешно пставятся.

delete83 ★★
()
Ответ на: комментарий от delete83
$ sudo cabal install base --global
Resolving dependencies...
cabal: Distribution/Client/Dependency/TopDown.hs:169:37-73: Non-exhaustive patterns in lambda

Что не так?

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

Кстати, какая у вас версия ghc?

6.12.1

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

В общем, половина библиотек не поставилась, теперь, когда компилирую, выдаётся следующее:

/home/eugeno/src/hedgewars-0.9.17/gameServer/Utils.hs:109:33:
    Couldn't match expected type `BL.ByteString'
           against inferred type `bytestring-0.9.1.5:Data.ByteString.Lazy.Internal.ByteString'
    In the second argument of `(.)', namely `BS.show'
    In the second argument of `(.)', namely `BL.toChunks . BS.show'
    In the expression: BW.concat . BL.toChunks . BS.show

Я подумал, лучше соберу без сервера, вот только как это сделать?

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

Всё, собрал без сервера, вроде работает, всем спасибо за помощь!

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

>> Да я уж сам как-то :)

> Даже и не знал, спасибо за игрушку, достойная альтернатива червячкам :)

Текущий разработчик Worms Armageddon в одном из патчей наладил работу игры в Wine ещё несколько лет назад.

По теме - собирал два года назад в GCC 4.1 в старом дистрибутиве. Всё скомпилировалось.

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

Не скомлилилось скорее всего потому, что ghc старенький очень. Можно было попробовать хотя бы с 7.0.4, а лучше с 7.4.1. Ну да ладно :)

delete83 ★★
()
20 декабря 2012 г.
Ответ на: комментарий от eugeno

столкнулся с такой же проблемой, оказалось что стоит два пакета bytestring. вылечилось удалением одного ghc-pkg unregister bytestring-0.10.0.1

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