Forum index VCMI Project - Heroes 3: WoG recreated
Forum of the project aiming to recreate best turn-based strategy ever!

FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  StatisticsStatistics
RegisterRegister  Log inLog in  AlbumAlbum  DownloadDownload

Previous topic :: Next topic
0.7 i Linux
Author Message
Skoruppa
Guest
Posted: 2009-02-06, 14:46   0.7 i Linux  

Jak co jakiś czas zerknąłem na stronę VCMI. Bardzo zaskoczył mnie fakt otwarcia źródeł :D. Od razu zrobiłem svn co aby co i jak :). Zauważyłem bardzo ciekawe pliki, a dokładniej to pliki od autotoolsa (makefile, configure itd).

Oczywiście musiałem sprawdzić czy uda mi się skompilować jednak nic mi nie wychodzi. Mogę parę błędów podać. Pierwsze to

Quote:
./configure: line 3200: AX_BOOST_SYSTEM: command not found
./configure: line 3201: AX_BOOST_FILESYSTEM: command not found
./configure: line 3202: AX_BOOST_THREAD: command not found

Ale zostają zignorowane. Następnie
Quote:
./configure: line 3199: syntax error near unexpected token `1.33'
./configure: line 3199: `AX_BOOST_BASE(1.33)'

I tu już nie chce iść dalej. Wywaliłem więc tą linijkę ( AX_BOOST_BASE(1.33) ) i poszlo.
To bardziej nie problem skryptu ale przydało by się ustalić jakąs zmienna dla lui ponieważ szuka llua a ja mam przynajmniej 3 lua na pc i żadna nie identyfikuję się jako llua (llua50, llua5.1 i llua5.1-svn). Wystarczy coś jak LUA_LDFLAGS
Poszło dalej, jednak zatrzymuję się na
Quote:
checking lstate.h usability... no
checking lstate.h presence... no
checking for lstate.h... no
configure: error: lstate.h header not found. Please install it.

Niestety ale nigdzie nie moge znaleźć tego pliku :P Może ktoś pomoże?

Mam jednak nadzieje, że kompilacja na Linuksie jest możliwa ^^. Tak czy siak postaram się jeszcze dzisiaj ponownie napisać o VCMI na gry.ubuntu.pl

Pozdrawiam
 
     
Tow 
Project Lead
VCMI Programmer


Joined: 01 Feb 2008
Posts: 810
Location: Kraków, Poland
Posted: 2009-02-06, 16:32     

W zakresie tych plików autotoolsa, to niestety nie jestem w stanie wiele pomóc, gdyż ich nie tworzyłem, nie utrzymywałem i nie używałem.
Okiem nieuzbrojonym jednak patrząc, to radziłbym po prostu wyharatać z tychże plików wszelkie wzmianki o Lui, w tym lstate.h. Nie powinna być już do niczego potrzeba.
Co do boosta, to nie wiem skąd to 1.33, skoro wymaganą wersją jest 1.36 lub nowsza.

VCMI powinno się dać w miarę gładko zbudować na Linuksie, zwłaszcza skoro pod MinGW-em się kompiluje (choć chyba z umiarkowanie szczęśliwymi owocami). Problemem mogą być właśnie te pliki konfiguracyjne, ale chyba nie jest wielkim problemem stworzenie ich w razie potrzeby od nowa.

Podzielę się jeszcze kompletem potrzebnych bibliotek i wersjami w jakich je posiadam, bo widzę, że dane z tych configure'ów są jakieś podejrzane:
* SDL 1.2.13 (od niedawna, wcześniej miałem 1.2.11 i nie było różnic)
* SDL_TTF 2.0.8 (nowszy też niby działa, ale jakoś inaczej wyświetla)
* SDL_Image 1.2.5
* SDL_Mixer 1.2.7
* zlib 1.2.3
* boost 1.37.0
_________________
VCMI is a work in progress.
VCMI is NOT an another mod.
 
     
Skoruppa
Guest
Posted: 2009-02-06, 18:23     

No to wszystko udało mi się ominąć... poza jednym

Quote:
configure.ac:65: required file `AI/Makefile.in' not found

Coś w 0.7 z AI było robione ale skoro mówisz, że ten autotools jest już zapomniany to też nikt nie zadbał aby odpowiednie rzeczy znalazły się w AI :). Jakieś rady?
 
     
Skoruppa
Guest
Posted: 2009-02-06, 18:36     

Dałem pusty makefile.in. Zobaczymy co z tego wyjdzie.
 
     
Skoruppa
Guest
Posted: 2009-02-06, 18:50     

Znów ja :P
Cały lib poszedł a client nie przeszedł. Mam ten sam boost co ty ale pełno błędów:
http://wklej.org/id/49518/txt
 
     
dikamilo 
Web Designer/Dev


Age: 21
Joined: 13 Aug 2008
Posts: 75
Location: Nowa Sól, Poland
Posted: 2009-02-06, 20:44     

Skoruppa wrote:
Znów ja :P
Cały lib poszedł a client nie przeszedł. Mam ten sam boost co ty ale pełno błędów:
http://wklej.org/id/49518/txt

Wydaje mi się że masz inne nazwy libów bosta niż te z makefile, u mnie np jest: libboost_thread-mgw34-mt-1_37.lib a w makefile jest o ile się nie mylę to zamiast mgw32 jest gcc.
 
 
     
Skoruppa
Guest
Posted: 2009-02-06, 22:34     

Rozwiązanie było oczywiste :P
dopisałem tylko na sztywno -lboost_system-mt -lboost_thread-mt -lboost_filesystem-mt oraz -I/usr/include/boost do makefile, ale niestety pusty makefile.in nie był genialnym pomysłem bo
Quote:
Making all in AI
make[2]: Wejście do katalogu `/home/skoruppa/Pulpit/vcmi/AI'
make[2]: *** Brak reguł do wykonania obiektu `all'. Stop.
make[2]: Opuszczenie katalogu `/home/skoruppa/Pulpit/vcmi/AI'
make[1]: *** [all-recursive] Błąd 1
make[1]: Opuszczenie katalogu `/home/skoruppa/Pulpit/vcmi'
make: *** [all] Błąd 2


chyba, że ich nie trzeba kompilować a są tylko icludowane. Jeśli tak to właśnie udało mi się skomplować bo mam 2 binarki :D vcmclient i vcmiserver. Nie wiem do końca po co vcmiserver ale client mam wgrać teraz do folderu heroes3 (z obiema dodatkami?) i z wogiem?
 
     
dikamilo 
Web Designer/Dev


Age: 21
Joined: 13 Aug 2008
Posts: 75
Location: Nowa Sól, Poland
Posted: 2009-02-06, 23:29     

Skoruppa wrote:
chyba, że ich nie trzeba kompilować a są tylko icludowane. Jeśli tak to właśnie udało mi się skomplować bo mam 2 binarki :D vcmclient i vcmiserver. Nie wiem do końca po co vcmiserver ale client mam wgrać teraz do folderu heroes3 (z obiema dodatkami?) i z wogiem?


obie binarki skopiuj, bo client uuchamia server w trakcie :)
 
 
     
Skoruppa
Guest
Posted: 2009-02-07, 00:34     

No i pupcia :P
Quote:
skoruppa@skoruppa-desktop:~/.wine/drive_c/Program Files/Heroes of Might and Magic III (copy)$ ./vcmiclient
Starting...
Creating console and logfile: 0
Loading settings: 30000
VCMI 0.7b (client)
Initializing screen: 40000
Initializing minors: 0
Initializing fonts: 0
Initializing sound: 20000
Initializing screen, fonts and sound handling: 90000
Loading .lod files: 90000
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Aborted (core dumped)

VCMI_Client_log.txt :
Quote:
Creating console and logfile: 0
Loading settings: 30000
VCMI 0.7b (client)
Initializing screen: 40000
Initializing minors: 0
Initializing fonts: 0
Initializing sound: 20000
Initializing screen, fonts and sound handling: 90000
Loading .lod files: 90000
Reading OBJNAMES
Reading ADVEVENT
Reading XTRAINFO
Reading MINENAME
Reading MINEEVNT

Jak w czymś mogę pomóc to piście.
 
     
Tow 
Project Lead
VCMI Programmer


Joined: 01 Feb 2008
Posts: 810
Location: Kraków, Poland
Posted: 2009-02-07, 04:54     

Skoruppa wrote:
chyba, że ich nie trzeba kompilować a są tylko icludowane.

AI to są osobne dynamiczne biblioteki. Obecnie są dwa AI, z czego jedno nic nie robi, więc zostaje drugie - GeniusAI.
Skryptów do budowania go nie ma, ale składa się z dwóch plików na krzyż, więc kompilacja nie powinna być problemem. Są to CGeniusAI.cpp DLLMain.cpp - zbudować, zlinkować z VCMI_lib i powinno starczyć.

Skoruppa wrote:
Jeśli tak to właśnie udało mi się skomplować bo mam 2 binarki :D vcmclient i vcmiserver.

Mało! Powinieneś mieć jeszcze VCMI_lib (libvcmi). Chyba, że Ci go statycznie włączyło w obręb pozostałych binarek. Sprawdź, co się dzieje z libem?


Skoruppa wrote:

[...]
Reading MINENAME
Reading MINEEVNT

Jak w czymś mogę pomóc to piście.

Wygląda, jakby znajdował więcej tekstów z opisem wydarzenia po wejściu do kopalni niż nazw kopalń. (Dość ewidentne wyjście poza zakres).
Możesz się tym plikom przyjrzeć i sprawdzić, czemu je źle łapie, albo doraźnie zablokować crasha dodając sprawdzanie zakresu przed wpisaniem tekstu wydarzenia w wektor (dodaj 'if(i < mines.size())' przed 'mines[i++].second = temp;').
_________________
VCMI is a work in progress.
VCMI is NOT an another mod.
 
     
Skoruppa
Guest
Posted: 2009-02-07, 13:54     

A mogę się spytać gdzie mam to dopisać? Tak przy okazji zaktualizowałem pliki dla autotoolsa i już ładnie configure oraz makefile generuję... mogę podesłać jak chcecie.
 
     
Tow 
Project Lead
VCMI Programmer


Joined: 01 Feb 2008
Posts: 810
Location: Kraków, Poland
Posted: 2009-02-07, 14:35     

Już nie musisz, sam dopisałem i wgrałem na repozytorium, wystarczy, że uaktualnisz źródła (r714). Sprawdzanie zakresu zawsze lepiej mieć. ;-)
Z plikami może zaczekajmy, aż całość będzie owocować działającymi binarkami.
_________________
VCMI is a work in progress.
VCMI is NOT an another mod.
 
     
Skoruppa
Guest
Posted: 2009-02-07, 15:22     

Niestety, dalej nic.

Code:
Creating console and logfile: 0
Loading settings: 30000
VCMI 0.7b (client)
    Initializing screen: 50000
    Initializing minors: 0
    Initializing fonts: 0
    Initializing sound: 20000
Initializing screen, fonts and sound handling: 100000
Loading .lod files: 90000
        Reading OBJNAMES
        Reading ADVEVENT
        Reading XTRAINFO
        Reading MINENAME
        Reading MINEEVNT


Code:
./vcmiclient
Starting...
Creating console and logfile: 10000
Loading settings: 20000
VCMI 0.7b (client)
    Initializing screen: 30000
    Initializing minors: 0
    Initializing fonts: 0
    Initializing sound: 30000
Initializing screen, fonts and sound handling: 90000
Loading .lod files: 90000
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr
Aborted (core dumped)


i jeszcze gdb (nie wiem czy w ogóle się przyda)
Code:
[Thread debugging using libthread_db enabled]
Starting...
[New Thread 0xb736b700 (LWP 8682)]
[New Thread 0xb736ab90 (LWP 8685)]
Creating console and logfile: 0
Loading settings: 30000
VCMI 0.7b (client)
[New Thread 0xb2a01b90 (LWP 8686)]
[Thread 0xb2a01b90 (LWP 8686) exited]
[New Thread 0xb2a01b90 (LWP 8687)]
    Initializing screen: 50000
    Initializing minors: 0
    Initializing fonts: 0
[New Thread 0xb66cdb90 (LWP 8688)]
[New Thread 0xb5eccb90 (LWP 8689)]
    Initializing sound: 20000
Initializing screen, fonts and sound handling: 100000
Loading .lod files: 90000
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr

Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb736b700 (LWP 8682)]
0xb7f3e430 in __kernel_vsyscall ()


Zastanawia mnie dlaczego te liczby w stosunku do wersji Windowsowej są tak wielkie... Windowsowa wersja wyrzuca
Code:
Creating console and logfile: 0
Loading settings: 5
VCMI 0.7 (client)
    Initializing screen: 365
    Initializing minors: 1
    Initializing fonts: 14
    Initializing sound: 61
Initializing screen, fonts and sound handling: 447
Loading .lod files: 105


Może pomoże coś fakt, że system plików w Linuksie widzi różnice między dużym a małym znakiem przez co Config to nie to samo co config. Może po prostu jakiegoś pliku nie potrafi znaleźć i przez to odczytać...
 
     
Tow 
Project Lead
VCMI Programmer


Joined: 01 Feb 2008
Posts: 810
Location: Kraków, Poland
Posted: 2009-02-07, 15:46     

Skoruppa wrote:
Zastanawia mnie dlaczego te liczby w stosunku do wersji Windowsowej są tak wielkie...

Zapewne inaczej zaimplementowano funkcję clock(), z której brane są te wartości. Ale to raczej niczego nie powinno psuć.

Skoruppa wrote:
Może pomoże coś fakt, że system plików w Linuksie widzi różnice między dużym a małym znakiem przez co Config to nie to samo co config. Może po prostu jakiegoś pliku nie potrafi znaleźć i przez to odczytać...

Nie, te wszystkie pliki są wewnątrz archiwum .lod. Jeżeli do samego archiwum się dobrał - a dobrał - to już jego obsługa jest w pełni z naszej strony.

Skoruppa wrote:
Niestety, dalej nic.

Ech, głupi jestem. Elegancko błąd wskazał na substr, a ja naiwnie kombinuję z wektorem. Coś z przetwarzaniem tych plików tekstowych jest nie tak.
Jaką wersję H3 masz tam wgraną? Zwykłą, angielską?

Najlepiej byłoby, jakbyś przeleciał to gdb. Ostatni wypis na log to hch/CGeneralTextHandler.cpp linia 237. Następny jest w linii 251. Nie dochodzi doń, wysypuje się więc gdzie pomiędzy tym. Sypie funkcja substr, więc może być to wywołanie 244. Crash może być, gdy string w tempie ma mniej niż dwa znaki, ale to zdecydowanie nie ma prawa mieć miejsca dla poprawnego tekstu. Alternatywnie błąd może jeszcze być wewnątrz wołanej linię wyżej funkcji loadToIt.
Przejedź po tym, sprawdź w którym momencie i miejscu następuje crash. Jakie w tym momencie są wartości zmiennych - i, it, buf, temp, mines (o ile gdb potrafi to jakoś ładnie wyświetlić).
_________________
VCMI is a work in progress.
VCMI is NOT an another mod.
 
     
skoruppa 
Linux Power


Age: 19
Joined: 19 May 2008
Posts: 14
Posted: 2009-02-07, 16:10     

Złota Edycja. Polska z CD Projektu. Wog angielski.

Na razie mam coś takiego
Quote:
Starting...
[New Thread 0xb741c700 (LWP 11747)]
[New Thread 0xb741bb90 (LWP 11748)]
Creating console and logfile: 0
Loading settings: 20000
VCMI 0.7b (client)
[New Thread 0xb2ab2b90 (LWP 11749)]
[Thread 0xb2ab2b90 (LWP 11749) exited]
[New Thread 0xb2ab2b90 (LWP 11750)]
Initializing screen: 50000
Initializing minors: 0
Initializing fonts: 0
[New Thread 0xb677eb90 (LWP 11751)]
[New Thread 0xb5f7db90 (LWP 11752)]
Initializing sound: 10000
Initializing screen, fonts and sound handling: 80000
Loading .lod files: 100000
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr

Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb741c700 (LWP 11747)]
0xb7fef430 in __kernel_vsyscall ()
(gdb) list
48 SDL_Surface * screen, * screen2;
49 extern SDL_Surface * CSDL_Ext::std32bppSurface;
50 std::queue<SDL_Event> events;
51 boost::mutex eventsM;
52 TTF_Font * TNRB16, *TNR, *GEOR13, *GEORXX, *GEORM, *GEOR16;
53 void processCommand(const std::string &message, CClient *&client);
54 #ifndef __GNUC__
55 int _tmain(int argc, _TCHAR* argv[])
56 #else
57 int main(int argc, char** argv)
(gdb) backtrace
#0 0xb7fb5430 in __kernel_vsyscall ()
#1 0xb79e86a0 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb79ea068 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7ca18e8 in __gnu_cxx::__verbose_terminate_handler ()
from /usr/lib/libstdc++.so.6
#4 0xb7c9f7c5 in ?? () from /usr/lib/libstdc++.so.6
#5 0xb7c9f802 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0xb7c9f93a in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0xb7c3691f in std::__throw_out_of_range () from /usr/lib/libstdc++.so.6
#8 0xb7c7c14a in std::string::substr () from /usr/lib/libstdc++.so.6
#9 0x082ab146 in CGeneralTextHandler::load (this=0xb542fbb0)
at ../hch/CGeneralTextHandler.cpp:244
#10 0x082a47d2 in LibClasses::init (this=0xb56b1090) at ./VCMI_Lib.cpp:153
#11 0x082a4cb2 in initDLL (b=0xb560f100, Console=0x8fdb2f0, Logfile=0x8fdb370)
at ./VCMI_Lib.cpp:31
#12 0x0815ae69 in main (argc=Cannot access memory at address 0x2dfb
) at ../CMT.cpp:112
(gdb) info frame
Stack level 0, frame at 0xbffd0a38:
eip = 0xb7fb5430 in __kernel_vsyscall; saved eip 0xb79e86a0
called by frame at 0xbffd0a48
Arglist at 0xbffd0a30, args:
Locals at 0xbffd0a30, Previous frame's sp is 0xbffd0a38
Saved registers:
ebp at 0xbffd0a28, eip at 0xbffd0a34


Nie wiem czy pomoże. Bardziej chyba debugować nie potrafię :P zobacze co jeszcze gdb potrafi...
_________________
http://gry.ubuntu.pl
http://skoruppa.jogger.pl
 
 
 
     
Display posts from previous:   
Reply to topic
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
Add this topic to your bookmarks
Printable version

Jump to:  
Quick Reply
Username: 


Expire Days
 
 
 
 
 
 
 

Powered by phpBB modified by Przemo © 2003 phpBB Group
Template Chronicles modified by Nasedo modified by Tow.
Š VCMI Team
Page generated in 0.1 second. SQL queries: 9