Kirjoittaja Aihe: pakettienhallinnan ulkopuolinen ohjelma: xlogical  (Luettu 2554 kertaa)

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
http://changeling.ixionstudios.com/xlogical/

Lähdekoodista: .configure sanoo että kirjastoja puuttuu, no ne löytyi kaikki apt-getillä. (Joten configuren sain loppuun asti). Make antaa paljon warningeja, ja lopulta pysähtyy erroriin. Miten voi jatkaa eteenpäin? A) yleisesti vastaavissa tilanteissa B) tässä nimenomaisessa tapauksessa?

Ekaksi tulee mieleen että onko liian uusi gcc, mites se ratkaistaan tai alkuun edes varmennetaan?

Marbo

  • Käyttäjä
  • Viestejä: 427
    • Profiili
    • Toimi.org
Vs: pakettienhallinnan ulkopuolinen ohjelma: xlogical
« Vastaus #1 : 05.03.08 - klo:13.52 »
Kannattaisi varmaan ekaks pastee tänne myös, että mitä erroreita yms se heittää?

Linux user #460798

Risto H. Kurppa

  • Käyttäjä
  • Viestejä: 3024
  • Useita Kubuntuja ajossa.
    • Profiili
    • http://risto.kurppa.fi
Vs: pakettienhallinnan ulkopuolinen ohjelma: xlogical
« Vastaus #2 : 05.03.08 - klo:21.54 »
Oma yritykseni:
http://pastebin.com/m6e1b32e3

jonka viimeiset korinat:
Koodia: [Valitse]
make[1]: Siirrytään hakemistoon "/home/rhk/Ohjelmat/xlogical-1.0"
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"xlogical\" -DVERSION=\"1.0\" -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1-DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -I.   -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT  -DDATA_DIR=\"/usr/local/share/xlogical\" -DSCORE_DIR=\"/usr/local/var/xlogical\"  -g -O2 -Wall -MT anim.o -MD -MP -MF .deps/anim.Tpo -c -o anim.o anim.cpp
graph.h:38: warning: ‘class Cgraph’ has virtual functions but non-virtual destructor
anim.h:57: error: ISO C++ forbids declaration of ‘list’ with no type
anim.h:57: error: expected ‘;’ before ‘<’ token
anim.h:58: error: ISO C++ forbids declaration of ‘list’ with no type
anim.h:58: error: expected ‘;’ before ‘<’ token
anim.h:59: error: ISO C++ forbids declaration of ‘list’ with no type
anim.h:59: error: expected ‘;’ before ‘<’ token
anim.cpp: In constructor ‘anim::anim()’:
anim.cpp:30: error: ‘frames’ was not declared in this scope
anim.cpp:31: error: ‘repeatStart’ was not declared in this scope
anim.cpp:32: error: ‘currentFrame’ was not declared in this scope
anim.cpp: In member function ‘void anim::clear_frames()’:
anim.cpp:58: error: ‘frames’ was not declared in this scope
anim.cpp:59: error: ‘repeatStart’ was not declared in this scope
anim.cpp:60: error: ‘currentFrame’ was not declared in this scope
anim.cpp: In member function ‘int anim::advance()’:
anim.cpp:73: error: ‘currentFrame’ was not declared in this scope
anim.cpp:76: error: ‘frames’ was not declared in this scope
anim.cpp:79: error: ‘repeatStart’ was not declared in this scope
anim.cpp: In member function ‘void anim::reset_anim()’:
anim.cpp:97: error: ‘currentFrame’ was not declared in this scope
anim.cpp:97: error: ‘frames’ was not declared in this scope
anim.cpp: In member function ‘void anim::set_repeat_start(int)’:
anim.cpp:105: error: ‘list’ was not declared in this scope
anim.cpp:105: error: expected primary-expression before ‘int’
anim.cpp:105: error: expected `;' before ‘int’
anim.cpp:107: error: ‘it’ was not declared in this scope
anim.cpp:107: error: ‘frames’ was not declared in this scope
anim.cpp:111: error: ‘repeatStart’ was not declared in this scope
anim.cpp: In member function ‘void anim::add_frame(int)’:
anim.cpp:121: error: ‘frames’ was not declared in this scope
anim.cpp: In member function ‘void anim::set_frame_range(int, int)’:
anim.cpp:135: error: ‘frames’ was not declared in this scope
anim.cpp:139: error: ‘currentFrame’ was not declared in this scope
anim.cpp:139: error: ‘frames’ was not declared in this scope
anim.cpp:140: error: ‘repeatStart’ was not declared in this scope
anim.cpp: In member function ‘int anim::get_current_frame()’:
anim.cpp:146: error: ‘currentFrame’ was not declared in this scope
make[1]: *** [anim.o] Virhe 1
make[1]: Poistutaan hakemistosta "/home/rhk/Ohjelmat/xlogical-1.0"
make: *** [all-recursive] Virhe 1
rhk@rubert:~/Ohjelmat/xlogical-1.0$



Joskus kphotoalbumia käännellessä tuli jotain autoconf-herjoja vastaan: herjaili versioista. Ongelman sai kierrettyä jotain tiedostoa muokkaamalla - tai tekemällä oikein, asentamalla sen tarvitsemat paketit :) Mutta tästä en osaa nyt sanoa mitään..



Tosin tällä sivulla sanotaan tällaista: http://changeling.ixionstudios.com/xlogical/faq.html
Lainaus
The XLogical automake makefile was built using automake 1.4. Later versions of automake (1.5+) have added new functionality while breaking old functionality that used to work. Until someone submits a fix to Makefile.am that works with automake 1.4 and automake 1.5+, you can perform the following work around.
Ja ubussahan on automake 1.6 eli se voipi olla vika.

r
« Viimeksi muokattu: 05.03.08 - klo:22.00 kirjoittanut Risto H. Kurppa »
UUSI UBUNTUN KÄYTTÄJÄ: SÄÄSTÄ AIKAASI LUKEMALLA  -> TÄMÄ <-

Randelin

  • Käyttäjä
  • Viestejä: 3
    • Profiili
Vs: pakettienhallinnan ulkopuolinen ohjelma: xlogical
« Vastaus #3 : 23.03.08 - klo:22.43 »

Sivutietona mainittakoon, että tuo xlogical on nyt jossain ubuntupeleissä mukana : http://playubuntu.com/linux-games-/4467.html.
Löytyy siis _melkein_ jo perusrepoista.

Sain tuon xlogicalin toimimaan ubuntussa siten, että laitoin fedora 8:n virtualboxiin ja asensin seuraavat rpm:t:
alla olevassa järjestyksessä.

xlogical-1.0-7.i386.rpm
libalsa1-0.5.10b-1mdk.i586.rpm
smpeg-0.4.4-9.lvn5.i386.rpm
libvorbis0-1.0rc3-2.i386.rpm
libSDL_image1.1-1.1.0-4mdk.i586.rpm
SDL_mixer-1.1.0-2.i386.rpm
SDL-1.2.5-1.rh62-rh73.i386.rpm (tämä --force:lla)

Humpan juonena oli siis, että haeskelin rpm:iä virheilmoitusten perusteella: http://rpm.pbone.net/index.php3 ja valitsin Redhat 7.1 tai Mandrake 8.0:n paketin.

Seuraavaksi käänsin sitten nuo rpm:t debeiksi ja murjaisin vastaavassa järjestyksessä oikean koneen ubuntussa. Se ei sitten toiminutkaan ja käteen
jäi vinkki, että olis kannattanut tehdä tuo kokeilu virtuaaliubuntussa. Ubuntussa siis smpeg-0.4.4-9.lvn5.i386.rpm jäi kääntymättä, mutta pakotin kaikki paketit
kuitenkin paikoilleen. Xlogicalia käynnistettäessä vinkui se aina jotakin puuttuvaksi ja kaiken kun sain sille lopuksi haettua ei se muuten vain toiminut.
Virheilmoituksia ei enää herunut.

Tyylipuhtaampaa olisi ehkä kuitenkin ollut kääntää xlogical suoraan sourcesta, mutta se on kirjoitettu osittain c++:lla ja ainakin g++:n ja stl:n versiot ovat muuttuneet
useaan kertaan. C++:lle tyypillisesti tiedostonnimiä ei ole vaivauduttu muuttamaan uudistusten myötä. Siitäkin kokeilusta tulisi pitkä sepustus, mutta käytännössä
käteen jäi tieto, että sekin tuherrus olisi kannattanut tehdä virtuaaliubuntussa.

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Hiphei, vihdoinkin tämä taipui. Ei ehkä kaunein ratkaisu, mutta puolen vuoden miettimisen jälkeen sentään jotakin. Lyhyesti: asennetaan järjestelmään vanhempi gcc-versio rinnalle ja käännetään sillä.
Testattu Ubuntu 7.10:llä, jossa gcc-3.3 löytyy repoista suoraan. Xlogicalista versio 1.0.8 http://changeling.ixionstudios.com/xlogical/
Vaatii joitakin sdl-kirjastoja, onkohan tossa kaikki mitä se vaati:
Koodia: [Valitse]
sudo apt-get install  gcc-3.3 g++-3.3 libsdl-dev libsdl-image1.2-dev libsdl-mixer1.2-dev

Makefileen gcc:n vaihtaminen ei tuota tulosta, vaihdetaan hetkeksi parin symbolisen linkin suuntaa:

Koodia: [Valitse]
sudo rm /usr/bin/g++
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/g++-3.3 /usr/bin/g++
sudo ln -s /usr/bin/gcc-3.3 /usr/bin/gcc

Ja nyt menee configure, make, sudo make install läpi.

Ja symboliset linkit takas:
Koodia: [Valitse]
sudo rm /usr/bin/g++
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.1 /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc

(Olettaen, että 4.1 on käyttämäsi gcc. Ubuntu 8.04:ssa on gcc4.2 ja 8.10:ssä vissiin gcc4.3)

P.S. Peliä pitää hetki tuijottaa ja toinen hetki ohjetta, ennenkuin edes älyää, mitä pelissä pitää tehdä.
« Viimeksi muokattu: 14.09.08 - klo:19.01 kirjoittanut aapo »

Randelin

  • Käyttäjä
  • Viestejä: 3
    • Profiili
Vs: pakettienhallinnan ulkopuolinen ohjelma: xlogical
« Vastaus #5 : 15.09.08 - klo:13.28 »

Toimii Aapon esittämien ohjeiden mukaisesti myös 8.04:ssa. Miulla oli käytössä puhdas asennus ja se vaati tietysti myös automaken asennuksen. Lisäksi miulla oli hieman häikkää käyttöoikeuksien kanssa ja joitakin asennushakemistoja piti tehdä käsipelissä. Sourcesta kääntäminen on sata kertaa helpompaa kuin pelleillä noitten vanhojen ja väärille alustoille käännettyjen kirjastojen kanssa.


aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Vs: pakettienhallinnan ulkopuolinen ohjelma: xlogical
« Vastaus #6 : 14.10.08 - klo:18.05 »
Palaan tähän aiheeseen vielä. Käänsin pykälä kerrallaan uudemmalla gcc:llä ja paikansin koodista mitä pitää päivittää. Sain aikaiseksi patchin, jolla saa käännettyä gcc 4.2 ja 4.3:lla.

Eli tässä ohjeet täysin alusta (juuri asennetulle Ubuntu 8.04 / 8.10 )
Koodia: [Valitse]
sudo apt-get install build-essential libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev automake autoconf

Pelin lähdekoodit:
Koodia: [Valitse]
wget http://changeling.ixionstudios.com/xlogical/downloads/xlogical-1.0-8.tar.bz2
tar -xvf xlogical-1.0-8.tar.bz2
cd xlogical-1.0-8

Lataa liitteenä olevat patchit (lähetin ne myös alkuperäiselle tekijälle, mutta ehkä on jo hylännyt projektin)
Aja patchit sisään (korjaa sijainti, jos latasit muualle). Tuo patch_one_button on täysin valinnainen ja mahdollistaa pelin pelaamisen käyttäen vain yhtä hiiren nappia. (esim kosketusnäytön kanssa, kun ei ole kuin yksi nappi)
Koodia: [Valitse]
patch < ../gcc43.patch
patch < ../one_button.patch

Sitten aja seuraavanlaiset komennot:
Koodia: [Valitse]
./autogen.sh
make

Ubuntu 8.10 sanoo autogenistä:
acinclude.m4:11: warning: underquoted definition of AM_PATH_SDL
acinclude.m4:11:   run info '(automake)Extending aclocal'
acinclude.m4:11:   or see http://sources.redhat.com/automake/automake.html#Extending-aclocal

Mutta toimii. Ei hajua mitä meinasi ja tuleeko tästä myöhemmin ongelmia.


Peli ei käynnisty suoraan käännetystä binaarista. Sillä pitää olla tietty ryhmä yms. Lisäksi se ei löydä pelin data-tiedostoja elleivät ole tietyssä paikassa. Ja lisäksi makefilessä on ilmeisesti virhe, kun itse binaari ei siirry. (eli helpoimmalla pääset kun ajat, mutta kerro jos keksit mikä vialla)
Koodia: [Valitse]
sudo cp xlogical /usr/local/bin/xlogical
sudo make install

Nyt pelin voi käynnistää
Koodia: [Valitse]
xlogical


Pakettivarastoista löytyy muuten samaa sarjaa oleva peli, nimeltään pathological (pythonilla tehty)
Koodia: [Valitse]
sudo apt-get install pathological


[ylläpito on poistanut liitteen]
« Viimeksi muokattu: 14.10.08 - klo:22.46 kirjoittanut aapo »