Bonjour Ă tous,
Je vous parle Ă vous, barbus assis dans vos fauteuils.
J'ai comme projet de compiler toutes les versions de la Bataille pour Wesnoth pour l'architecture arm64. Je fais tout sur un Raspberry Pi 4B 4Go, et ça marche pas trop mal pour l'instant.
- Mais, si ça marche, pourquoi tu postes dans le forum ?
Parce que ça marchait bien pour les derniÚres versions, soit 1.16-1.17.
J'ai décidé ensuite de commencer du début, avec la 1.0. Pour l'instant tout va bien.
Du coup, je tente naĂŻvement la 1.2. Ăa foire monumentalement.
C'est Ă©crit en c++, un langage auquel je ne comprends goutte.
J'ai donc ouvert une entrée sur le forum du jeu, là , ici.
Comme vous pouvez le voir, on s'émerveille de l'évolution des langages, on tente un patch, on propose des solutions. La meilleure pour l'instant est je trouve de compiler le bazar avec un g++ d'époque (soit fin 2007 début 2008).
Vous vous doutez bien que c'est compliquĂ© de trouver un truc aussi vieux, compilĂ© pour l'arm64 (ou mĂȘme armhf).
Je me tourne donc vers vous, chers linuxiens, pour trouver une solution.
Si vous avez une idĂ©e, arrivez Ă corriger le bug de maniĂšre 'propre', ou que sais-je encore, merci de nous le partager ici mĂȘme.
Sinon, vous pouvez toujours aller voir des jolies nimages. (et en plus c'est drÎle !)
# mais?
PostĂ©Â par octane . ĂvaluĂ©Â Ă Â 4.
Mais pourquoi? en vrai, pourquoi vouloir recompiler wesnoth en version 1.2Â ?
bin, euh, oui. Tu compiles avec les libs d'Ă©poque et les compilos d'Ă©poque.
Mais en vrai, je comprends pas bien le but du truc???
Ensuite, si tu veux vraiment faire ce genre de choses, tu prends une distro linux qui date de l'Ă©poque du logiciel (genre une debian de 2007), tu l'installes sans mettre Ă jour, tu compiles le bazar.
[^] # Re: mais?
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 3.
Voyons voir, quelles pourrait ĂȘtre les raisons ?
-
c'est utile !-
ça sert à une large communauté !- c'est fun !
Déjà , redécouvrir le plaisir de jouer sur un bon vieux jeu, plonger dans les origines du gaming, c'est une expérience extraordinaire !
Et, plus concrÚtement, ça pourrait aussi permettre de jouer sur du vieux matériel qui ne supporte pas forcément les derniÚres versions.
En gros, ça ne sert à rien.
L'objectif, ne l'oublions pas, et de compiler pour l'architecture arm64. Les premiers OS arm64 datent d'il y a Ă peine un an.
MĂȘme si on se rabat sur de l'armhf, la premiĂšre version de Raspbian date de 2013. La Debian qu'il nous faudrait est etch (4.0), mais je n'arrive pas Ă trouver l'image dans le serveur d'archive : http://archive.debian.org/debian/dists/etch/. Si quelqu'un arrivait Ă trouver oĂč est cachĂ©e l'image, ça pourrait en effet faire bien avancer le schmilblick.
On pourrait aussi tenter de compiler un vieux g++, mais quand je vois le ramdam qu'il faut faire pour compiler une version récente, je crains le pire pour un truc qui date d'il y a 15 ans.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: mais?
PostĂ©Â par octane . ĂvaluĂ©Â Ă Â 4.
alors, c'est une noble motivation :D
ceci dit, je pense vraiment que compiler un vieux truc sur une distrib rĂ©cente, c'est chercher plein d'ennuis. Surtout que tu changes de CPUâŠ. Rien que compiler des softs prĂ©vu pour intel 32 bits en 64 bits ça peut ĂȘtre tristouille, je te recommande plutĂŽt de tout faire en Ă©mulation:
un KVM est raisonnablement rapide, tu installes une debian d'Ă©poque, et tu joues sur la distrib d'Ă©poque.
[^] # Re: mais?
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Si on utilise un Ă©mulateur, alors autant passer par wine et utiliser l'installeur exe comme tout le monde.
Non, mon but est vraiment de chercher le maximum d'ennuis :)
Notons néanmoins que si ça marche (c'est beau les conditions) ça permettrait de jouer nativement sur arm avec bon gain de perfs car compilateur plus récent, et le jeu pourrait tourner ainsi sur des systÚmes atrophiés !
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
# solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 5.
pour la premiĂšre erreur
tu vires le "const" de gauche (le premier mot de la ligne) qui ne sert Ă rien.
pour la seconde, tu ajoutes un
en tĂȘte du fichier unit_map.hpp, en fin des autres "#include"
ça va résoudre les 2 soucis de compilation que j'ai vu postés par ton pseudo sur le forum (tu aurais pu les mettre ici au passage)
Par contre tu risques d'en avoir plein d'autres. Le C++ évolue, mais pas seulement, les compilateurs aussi, et deviennent de plus en plus strictes avec les versions, ce qui fait que du code qui compilait avec un ancien compilateur se retrouve souvent avec des tas d'erreurs de compilation "triviales" (pour un habitué) mais parfois un peu plus complexes avec un compilateur récent.
Cela Ă©tant dit, je ne pense pas que ce soit une bonne idĂ©e de te lancer la dedans si tu n'es pas un dĂ©veloppeur c++ et que tu ne comptes pas soumettre un patch. Et mĂȘme dans ce cas, si la version 1.2 n'est plus maintenue, ton patch risque simplement de ne pas ĂȘtre acceptĂ©.
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Merci beaucoup pour ces indications et ton aide, je teste tout ça et remets un post dÚs que c'est fait.
J'ai préféré ne pas remettre le bug ici pour vous obliger à aller voir les réponses déjà apportées. (je vous manipule)
Si jamais j'arrive Ă une solution qui marche, je mettrai une PR sur la branche 1.2 et advienne que pourra, mais je pense qu'elle sera plutĂŽt bien accueillie.
J'avais déjà essayé de m'intéresser au C++, mais j'ai du mal à trouver des cours bien faits qui ne repartent pas de zéros et me refassent toute la partie algorithmique générale commune à tous les langages.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Re-bonjour,
Désolé, mais ta suggestion ne résout pas la deuxiÚme erreur affichée par le compilateur (la premiÚre erreur n'est qu'une goutte d'eau dans une mer de warnings violets).
Merci quand mĂȘme d'avoir essayĂ©.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4.
en effet, c'est le type "unit" qui n'est pas défini, j'ai lu un peu vite désolé.
Du coup il faut les sources pour résoudre ça, tu trouves dans quel fichier "unit" est défini, cherche un truc du genre :
ouclass unit {
et tu inclues le fichier correspondant Ă la place de utility.struct unit {
J'avais prévenu que ça n'étais pas une bonne idée de se lancer dedans si tu n'as pas l'habitude de faire du c++
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4. DerniĂšre modification le 31 octobre 2022 Ă 20:34.
ok, je suis allĂ© voir le code comme un grand, et il y a une dependance circulaire, je me demande comment ce code a pu compiler un jourâŠ
Si demain j'ai la motiv je me lance dans la correction et je le fais compiler. Bien noter le gros SI au dĂ©but de la phraseâŠ
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
La magie des compilateursâŠ
Ne t'embĂȘte pas Ă compiler le code, il faut les bonnes libs, l'envirronnement kivabien, freetype2 pas celui du dĂ©pot mais un que tu a compilĂ© toi-mĂȘme avec les options kivonbiens s'il vous plaitâŠetc.
Envoie-moi juste les fichirers modifiĂ©s (ou un patch) et je le testerai. Je t'envoie demain les commandes pour bien dĂ©marrer ta compil si jamais tu veux quand mĂȘme essayer, je les ais pas sous la main ce soir.
Que la nuit nous porte conseil.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Voici quelques commandes qui devraient t'aider Ă compiler si tu veux :
sudo apt update && sudo apt install libsdl1.2debian libsdl-image1.2 libsdl-mixer1.2 libsdl-net1.2 libfreetype6 libvorbis-dev cmake g++ make gettext autoconf automake libzipios++-dev -y
echo installing freetype-2.12.1
cd ~/
wget http://downloads.sourceforge.net/freetype/freetype-2.12.1.tar.xz && tar -xf freetype-2.12.1.tar.xz && cd freetype-2.12.1/ && sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg && sed -r "s:.*(#.*SUBPIXEL_RENDERING) .*:\1:" -i include/freetype/config/ftoption.h && ./configure --prefix=/usr --enable-freetype-config --disable-static && make && sudo make install
cd ~/
sudo mkdir /usr/include/freetype/
sudo mkdir /usr/include/freetype/internal/
sudo cp -r freetype-2.12.1/include/freetype/internal/* /usr/include/freetype/internal/
echo done.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4.
j'ai réussi à m'emmerder plus de 10 minutes, du coup j'ai fait compiler, au moins une partie, je me suis arreté au soucis de compatibilité avec freetype2 car un peu la flemme de le compiler (et pas plus de 10 minutes à investir)
oĂč est ce que je peux te poster un patch sans avoir Ă crĂ©er de compte ?
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Tu peux me l'envoyer à alberic89ATgmx.com (AT=@ pour tromper les bots), je m'occuperait de le tester et le publier en te créditant si ça marche.
Merci beaucoup d'essayer en tout cas.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4.
Finalement je te mets le patch ici, ne me crédite pas tu peux mettre ton nom ça me va, (il est en licence "BCET" : Balec Complet Et Total)
c'est un patch git sur le tag 1.2.8
Si tu as d'autres soucis de compilation aprĂšs ça, je compilerai freetype2 pour alle rau bout du build et les fixer aussi. Quand j'aurais la motivâŠ
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 2.
Merci beaucoup pour ce patch.
D'aprÚs git, le fichier patch est corromput, il faut passer manuelement la section qui coince et aprÚs ça va.
Je l'ai testé à l'instant, et il y a une nouvelle erreur (mais ç'a compilé beaucoup plus longtemps, donc je pense plus une erreur cachée qui a été révélée par la résolution de la premiÚre).
Je te met le log :
make[2]: Entering directory '/home/pi/wesnoth-1.2.8/src'
depbase=`echo server/game.o | sed 's|[^/]*`{mathjax} |.deps/&|;s|\.o`||'`;\
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/freetype2 -I/usr/include/libpng16 -I ./sdl_ttf -I../intl -I../intl -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DWESNOTH_PATH=\"/usr/local/share/wesnoth\" -DLOCALEDIR=\"translations\" -DHAS_RELATIVE_LOCALEDIR=1 -DFIFODIR=\"/usr/local/var/run/wesnothd\" -O2 -W -Wall -ansi -D_X11 -MT server/game.o -MD -MP -MF $depbase.Tpo -c -o server/game.o server/game.cpp &&\
mv -f $depbase.Tpo $depbase.Po
server/game.cpp: In member function âbool game::is_observer(network::connection) constâ:
server/game.cpp:53:25: error: no matching function for call to âfind(std::vector<int>::const_iterator, std::vector<int>::const_iterator, network::connection&)â
53 | return std::find(observers_.begin(),observers_.end(),player) != observers_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/12/bits/locale_facets.h:48,
from /usr/include/c++/12/bits/basic_ios.h:37,
from /usr/include/c++/12/ios:44,
from /usr/include/c++/12/istream:38,
from /usr/include/c++/12/sstream:38,
from server/../util.hpp:18,
from server/game.cpp:18:
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:53:25: note: â__gnu_cxx::__normal_iterator<const int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
53 | return std::find(observers_.begin(),observers_.end(),player) != observers_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
server/game.cpp: In member function âbool game::is_muted_observer(network::connection) constâ:
server/game.cpp:58:25: error: no matching function for call to âfind(std::vector<int>::const_iterator, std::vector<int>::const_iterator, network::connection&)â
58 | return std::find(muted_observers_.begin(), muted_observers_.end(), player) != muted_observers_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:58:25: note: â__gnu_cxx::__normal_iterator<const int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
58 | return std::find(muted_observers_.begin(), muted_observers_.end(), player) != muted_observers_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
server/game.cpp: In member function âbool game::is_player(network::connection) constâ:
server/game.cpp:63:25: error: no matching function for call to âfind(std::vector<int>::const_iterator, std::vector<int>::const_iterator, network::connection&)â
63 | return std::find(players_.begin(),players_.end(),player) != players_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:63:25: note: â__gnu_cxx::__normal_iterator<const int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
63 | return std::find(players_.begin(),players_.end(),player) != players_.end();
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
server/game.cpp: In member function âvoid game::add_player(network::connection, bool)â:
server/game.cpp:652:21: error: no matching function for call to âfind(std::vector<int>::iterator, std::vector<int>::iterator, network::connection&)â
652 | if(std::find(users.begin(),users.end(),player) != users.end()) {
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:652:21: note: â__gnu_cxx::__normal_iterator<int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
652 | if(std::find(users.begin(),users.end(),player) != users.end()) {
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
server/game.cpp: In member function âvoid game::remove_player(network::connection, bool)â:
server/game.cpp:704:61: error: no matching function for call to âfind(std::vector<int>::iterator, std::vector<int>::iterator, network::connection&)â
704 | const user_vector::iterator itor = std::find(players_.begin(),players_.end(),player);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:704:61: note: â__gnu_cxx::__normal_iterator<int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
704 | const user_vector::iterator itor = std::find(players_.begin(),players_.end(),player);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
server/game.cpp:711:61: error: no matching function for call to âfind(std::vector<int>::iterator, std::vector<int>::iterator, network::connection&)â
711 | const user_vector::iterator itor = std::find(observers_.begin(),observers_.end(),player);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: candidate: âtemplate<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)â
434 | find(istreambuf_iterator<_CharT> __first,
| ^~~~
/usr/include/c++/12/bits/streambuf_iterator.h:434:5: note: template argument deduction/substitution failed:
server/game.cpp:711:61: note: â__gnu_cxx::__normal_iterator<int*, std::vector<int> >â is not derived from âstd::istreambuf_iterator<_CharT, std::char_traits<_CharT> >â
711 | const user_vector::iterator itor = std::find(observers_.begin(),observers_.end(),player);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [Makefile:1428: server/game.o] Error 1
make[2]: Leaving directory '/home/pi/wesnoth-1.2.8/src'
make[1]: *** [Makefile:536: all-recursive] Error 1
make[1]: Leaving directory '/home/pi/wesnoth-1.2.8'
make: *** [Makefile:442: all] Error 2
ou un asciinema si tu préfÚre les couleurs : https://asciinema.org/a/534202.
Si tu veux compiler toi-mĂȘme, j'ai mis plus haut les commandes pour compiler et installer freetype2.
Pour le reste, il faut faire
./autogen.sh && ./configure --build=<ça dépend du pc. moi ç'est aarch64-unknown-linux-gnu. si tu teste à vide, il te donne des pistes> --enable-campaign-server --enable-editor --enable-tools --enable-server --enable-dummy-locales && make
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 3.
au début du fichier src/server/game.cpp (avec les autres #includes, mets le en dernier)
SĂ©rieux quel message d'erreur Ă la con, j'ai bugguĂ© 10 minutes avant de comprendreâŠ
je résiste encore et toujours à l'envahisseur freetype2 des années 2000, tu ne m'auras pas si facilement :p
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4.
au passage, il manque aussi un #include dans src/campaign_server/campaign_server.cpp et un #include "../unit_map.hpp" dans src/editor/editor_main.cpp (à ajouter au premier patch, j'avais pas activé les tools à la compilation du coup je ne l'avais pas vu)
Une fois ces problÚmes fixés, je tombe sur un souci d'api avec la libpng de ma machine, et pas trop le temps de creuser là ⊠tu peux toujours compiler une vieille libpng comme tu as fait pour freetype2, mais à mon avis c'est simplement fixable avec une libpng plus récente (mais est-ce que c'est ce que tu veux faire ?)
[^] # Re: solutions ...mais
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 4. DerniĂšre modification le 02 novembre 2022 Ă 11:05.
je m'auto-auto répond (pour une auto-auto-satisfaction récursive !)
c'est un
qui manque dans src/campaign_server/campaign_server.cpp
[^] # Re: solutions ...mais
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 1.
Salut,
J'ai testĂ©, le code compile, mais on a un nombre incroyable de bugs qui ne draient pas y ĂȘtre. Pour arriver Ă un rĂ©sultat potable, je pense qu'il faudrait rĂ©soudre tous les warnings que signale g++ et peut-ĂȘtre aussi les notes.
J'avais l'impression que clang-tidy permettait de mettre à niveau un code c++ automatiquement, mais il faut faire tous les paliers pour passer de c03 à c20, et je n'arrive déjà pas à faire une premiÚre passe.
Quelqu'un connaitrait-il un outil qui permettrait de faire tout ça tout seul ? Un peu comme 2to3 pour python.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: Solution !!! đ
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 1.
ĂA MARCHE !!! AllĂ©luia ! Gloire au manchot tout-puissant !
J'ai fini par réussir à compiler une version correcte. Globalement, tout a l'air de fonctionner à part les traductions. J'ai eu des messages bizarres à la compilation, voir ici.
J'ai tout compilé sur une version 32 bit du RPi OS, avec juste les libsdl1.2-dev, en appliquant préalablement le patch ci-dessous. Il faut lancer le fichier src/wesnoth depuis la racine du dossier du jeu pour qu'il trouve tous les dossiers de ressources et de config.
Seuls petits points négatifs, il faut un environnement graphique, et quand j'essaie de le lancer sur un systÚme 64-bit, le terminal m'informe gentiment que mon fichier n'existe pas (alors qu'il l'a sous les yeux !).
Voici le patch pour ceux que ça intéresse :
```diff --git a/Makefile.am b/Makefile.am
index 0d878c4..2950977 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,4 @@
+CXXFLAGS=-std=c++03
ISUBDIRS = icons
SUBDIRS = po m4 src doc $(ISUBDIRS)
pkgdatadir=$(datadir)/@DATADIR@
diff --git a/src/actions.hpp b/src/actions.hpp
index 0191f8b..0a9a287 100644
--- a/src/actions.hpp
+++ b/src/actions.hpp
@@ -23,6 +23,7 @@ struct combatant;
#include "map.hpp"
#include "unit.hpp"
+#include "unit_map.hpp"
#include
diff --git a/src/ai_dfool.hpp b/src/ai_dfool.hpp
index ec043c4..d0f4076 100644
--- a/src/ai_dfool.hpp
+++ b/src/ai_dfool.hpp
@@ -5,6 +5,7 @@
#include "ai_interface.hpp"
#include "map.hpp"
+#include "unit_map.hpp"
#include
#include
#include
diff --git a/src/config_adapter.cpp b/src/config_adapter.cpp
index 9fd56ae..2726804 100644
--- a/src/config_adapter.cpp
+++ b/src/config_adapter.cpp
@@ -12,6 +12,7 @@
*/
#include "global.hpp"
+#include "unit_map.hpp"
#include
#include "config_adapter.hpp"
diff --git a/src/game_events.hpp b/src/game_events.hpp
index 4e0280d..dd2b8cc 100644
--- a/src/game_events.hpp
+++ b/src/game_events.hpp
@@ -21,6 +21,7 @@ class display;
#include "map.hpp"
#include "team.hpp"
#include "unit.hpp"
+#include "unit_map.hpp"
#include "variable.hpp"
#include
diff --git a/src/pathfind.cpp b/src/pathfind.cpp
index 6a61b4b..4f2c841 100644
--- a/src/pathfind.cpp
+++ b/src/pathfind.cpp
@@ -19,6 +19,7 @@ See the COPYING file for more details.
#include "log.hpp"
#include "pathfind.hpp"
#include "util.hpp"
+#include "unit_map.hpp"
#include "wassert.hpp"
class gamestatus;
diff --git a/src/preferences.cpp b/src/preferences.cpp
index c71ffef..e3f8d85 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -24,6 +24,7 @@
#include "preferences.hpp"
#include "sound.hpp"
#include "util.hpp"
+#include "unit_map.hpp"
#include "video.hpp" // non_interactive()
#include "wassert.hpp"
#include "wesconfig.h"
diff --git a/src/unit.hpp b/src/unit.hpp
index c23006d..dbc31cf 100644
--- a/src/unit.hpp
+++ b/src/unit.hpp
@@ -19,9 +19,9 @@
#include "team.hpp"
#include "unit_types.hpp"
#include "image.hpp"
-#include "unit_map.hpp"
class unit;
+class unit_map;
class display;
class gamestatus;
@@ -396,16 +396,7 @@ void sort_units(std::vector< unit > &);
int team_units(const unit_map& units, unsigned int team_num);
int team_upkeep(const unit_map& units, unsigned int team_num);
-unit_map::const_iterator team_leader(unsigned int side, const unit_map& units);
-std::string team_name(int side, const unit_map& units);
-unit_map::iterator find_visible_unit(unit_map& units,
- const gamemap::location loc,
- const gamemap& map,
- const std::vector& teams, const team& current_team);
-unit_map::const_iterator find_visible_unit(const unit_map& units,
- const gamemap::location loc,
- const gamemap& map,
- const std::vector& teams, const team& current_team);
+
struct team_data
{
diff --git a/src/unit_abilities.cpp b/src/unit_abilities.cpp
index 4fa0f6a..8bd4460 100644
--- a/src/unit_abilities.cpp
+++ b/src/unit_abilities.cpp
@@ -12,6 +12,7 @@
*/
#include "unit.hpp"
+#include "unit_map.hpp"
#include "unit_abilities.hpp"
#include "wassert.hpp"
diff --git a/src/unit_map.hpp b/src/unit_map.hpp
index e71203a..d8b8059 100644
--- a/src/unit_map.hpp
+++ b/src/unit_map.hpp
@@ -14,6 +14,7 @@
#define UNIT_MAP_H_INCLUDED
#include
+#include
#include "map.hpp"
#include "unit.hpp"
@@ -149,4 +150,15 @@ private:
std::mapgamemap::location,std::pair<gamemap::location,unit*> map_;
};
+unit_map::const_iterator team_leader(unsigned int side, const unit_map& units);
+std::string team_name(int side, const unit_map& units);
+unit_map::iterator find_visible_unit(unit_map& units,
+ const gamemap::location loc,
+ const gamemap& map,
+ const std::vector& teams, const team& current_team);
+unit_map::const_iterator find_visible_unit(const unit_map& units,
+ const gamemap::location loc,
+ const gamemap& map,
+ const std::vector& teams, const team& current_team);
+
#endif // UNIT_MAP_H_INCLUDED
diff --git a/src/upload_log.cpp b/src/upload_log.cpp
index 0718249..bcf38fc 100644
--- a/src/upload_log.cpp
+++ b/src/upload_log.cpp
@@ -23,6 +23,7 @@
#include "upload_log.hpp"
#include "wesconfig.h"
#include "wml_separators.hpp"
+#include "unit_map.hpp"
#include "SDL_net.h"
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
[^] # Re: Solution !!! đ
PostĂ©Â par moi1392 . ĂvaluĂ©Â Ă Â 3.
bien joué :)
T'as fait comment pour libpng ? je l'ai fixé chez moi si tu as besoin.
ça c'est une erreur classique pas classique du tout, c'est généralement quand tu fais l'édition de lien dans un environnement chelou, et que la lib ld.so référencée par ton executable n'est pas trouvée ou n'est pas de la bonne plateforme (32 vs 64 bits).
tu peux essayer de l'ouvrir (l'executable, pour toi le fichier "wesnoth") avec un éditeur de texte (évite les trucs graphique, less est trÚs bien pour ça) et pas loin du début tu vas voir le chemin en dur vers la lib "ld.so.quelquechose" (par exemple /lib64/ld-linux-x86-64.so.2 pour les binaires de ma distribution)
vérifie que le chemin existe et qu'il pointe bien vers un loader 64 bits (c'est souvent un lien symbolique)
s'il n'existe pas, facile, tu crĂ©es un lien symbolique vers le bon fichier, s'il existe et pointe vers du 32 bits⊠hheeuu⊠bonne chance. Je te dĂ©conseille fortement de le remplacer, tu auras juste TOUS tes binaires 32bits qui ne dĂ©marrerons plus, y compris les outils standards (ls, cp, âŠ) ton systĂšme deviendra juste complĂštement inutilisable.
[^] # Re: Solution !!! đ
PostĂ©Â par alberic89 đ§ . ĂvaluĂ©Â Ă Â 1.
Merci, si j'ai réussi, c'est aussi grùce à toi !
En utilisant le code source sur la branche 1.2 plutÎt que des tar-balles, et ne mettant aucune option aprÚs ./configure, je n'ai eu besoin d'installer ni freetype ni aucune autre lib bizarre. Apparemment, le bug freetype avait été fixé en 2018.
Mais je vais refaire une sĂ©rie de compilations en activant diverses options, donc je vais peut-ĂȘtre avoir besoin de ta solution pour libpng. Mets-la ici au cas oĂč.
En effet, j'ai au début de l'exécutable (pour arm32) une ligne qui fait référence à un ld-linux-armhf.so.3, inexistant dans mon systÚme arm64. Un lien symbolique génÚre une erreur encore plus bizarre, donc je vais laisser tout ça tranquille et attendre que RPi OS gÚre nativement les deux architectures.
Si tu veux toi aussi faire des tests divers sur le jeu, le patch a été mergé dans une pull-request, donc il suffit de récupérer le code en .zip déjà patché sur github à la branche 1.2.
L'informatique n'est pas une science exacte, on n'est jamais Ă l'abri d'un succĂšs
# Commentaire supprimé
PostĂ©Â par Anonyme . ĂvaluĂ©Â Ă Â 0. DerniĂšre modification le 17 novembre 2022 Ă 17:38.
Ce commentaire a Ă©tĂ© supprimĂ© par lâĂ©quipe de modĂ©ration.
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.