Le forum de livrotheque

Vous n'êtes pas identifié.

#26 23-11-2007 22:54:37

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Ca compile!

Chapeau bas: tu as vraiment bien écrit!

Bon, quand je lance j'ai une fenêtre grise et une foultitude d'erreurs gtk sad

J'y retourne...

Hors ligne

 

#27 24-11-2007 15:12:11

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Quelques questions:
Le fichier "config" est apparemment une base sqlite, n'est ce pas?
Ce fichier est-il créé par l'application si non existant au lancement ou doit-il exister?

Est-ce judicieux d'appeler la base de donnée "config"? Ou y'a qqch que j'ai pas compris?

Ca rame pas mal pour le moment... La compilation est allée assez vite (tu programmes proprement), mais y'aura quand même une foultitude de détails à régler...

Yannick

Hors ligne

 

#28 24-11-2007 18:38:49

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

le probleme de config c'est que j'ai fait ça au tout début. Ce n'est donc pas super nickel. Ca ne doit pas marcher parce qu'il y a \ en dur comme séparateur de fichier.

en remplaçant les "\\" par wxFileName::GetPathSeparators() tu résoudra certainement le probleme.

PAr contre ce n'est pas si propre que ça : j'ai un peu regardé le source et on retrouve pas mal d'antislash à pas mal d'endroit.

(et ça compile, non pas parce que le code est propre, mais parce que toutes les librairies utilisée sont cross-platform wink )

PS : pour le nom du fichier je l'ai appelé config pour ne pas que les gens le prenne pour une base de livre. (maintenant si tu veux un autre nom sous linux il ' a moyen (simplement) de savoir sous quelle OS on tourne avec wxwidget.

Hors ligne

 

#29 25-11-2007 00:40:09

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

fougny a écrit:

en remplaçant les "\\" par wxFileName::GetPathSeparators() tu résoudra certainement le probleme.

Si tu regardes mon commit 17 (http://svn.gna.org/viewcvs/livrotheque/ … &r2=17), tu verras que c'est un peu ce que je suis en train de faire...

fougny a écrit:

PAr contre ce n'est pas si propre que ça : j'ai un peu regardé le source et on retrouve pas mal d'antislash à pas mal d'endroit.

Je verrai; pour le moment y'a un problème wx beaucoup plus grave:

Code:

(livrotheque:22162): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -9 and height 1

Le programme démarre, mais apparaît une fenêtre grise et vide avec juste une barre de menue qui clignote très vite au dessus (inutilisable).

fougny a écrit:

PS : pour le nom du fichier je l'ai appelé config pour ne pas que les gens le prenne pour une base de livre. (maintenant si tu veux un autre nom sous linux il ' a moyen (simplement) de savoir sous quelle OS on tourne avec wxwidget.

Avant de savoir comment le nommer, je voudrais déjà réponse à mes questions précédentes (et quelques autres):
- c'est bien du sqlite?
- C'est généré par le programme si absent ou ca doit impérativement être présent?
- Ca contient quoi et ca sert à quoi?

Mais ce problème d'erreur gtk est vraiment bloquant: tant que j'aurai pas compris ça n'ira pas. Crées-tu des objets à partir de descriptions dans des fichiers de ressources que je pourrais ne pas ou mal lire?

Merci,

Yannick

Hors ligne

 

#30 25-11-2007 12:31:48

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

YannickPatois a écrit:

Avant de savoir comment le nommer, je voudrais déjà réponse à mes questions précédentes (et quelques autres):
- c'est bien du sqlite?
- C'est généré par le programme si absent ou ca doit impérativement être présent?
- Ca contient quoi et ca sert à quoi?

Mais ce problème d'erreur gtk est vraiment bloquant: tant que j'aurai pas compris ça n'ira pas. Crées-tu des objets à partir de descriptions dans des fichiers de ressources que je pourrais ne pas ou mal lire?

Pour répondre qux questions :
Le fichier de config est bien fait en sqlite.

Normalement si il n'existe pas je n'en tiens pas compte (il n'est pas indispensable au démarrage de l'appli).
il est généré par le programme lorsqu'on le quitte

Je te conseillerai (au début) d'enlever la gestion de config si ça te pose probleme (en gros tu vides les fonction sauve_config et load_congig -> elles ne feront plus rien(ou tu mets un return au début de la fonction). Je ne m'en sert que pour me rappeler la taille et la position du programme et le nom du fichier ouvert lors de la dernière utilisation.

Et c'est le seul fichier de config que j'ai!

Sinon la fenêtre de début est initialiséedans la fonction void biblioFrame::CreateGUIControls(void) donc si tu as un probleme au démarrage ça doit être la (mais je ne vois pas pourquoi ça te ferait cette erreur).

Hors ligne

 

#31 25-11-2007 14:43:23

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Salut,

Merci de tes résponses!

Moi non plus je ne vois pas pourquoi ça déconne dans le GTK. Ce que je soupçonne c'est que tu ais laissé quelque part une valeur non initialisée et que linké sous windows ca passe mais pas sous Linux. Mais j'ai encore rien de concret...

Question bidon, par contre: dans ton code, j'ai vu des indentations avec 4 espaces et des indentations en tab (\t). Que préfères tu? Je suis plutôt partisan du 4 espaces, pour ma part, mais si tu préfères autre choses, je modifierai...


Yannick

Hors ligne

 

#32 25-11-2007 14:51:49

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

Je suis partisan des 4 espaces à 100%

Les tabs doivent venir de la génération automatique de wxdevcpp.

Hors ligne

 

#33 26-11-2007 14:23:35

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

J'ai essayé de regarder dans le code ou je pouvais générer ceci

Code:

(livrotheque:22162): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -9 and height 1

Mais je ne vois nulle part ou je donnerais une valeur négative à une fenêtre quelconque.

Je donne partout soit des valeurs positive soit wxDefaultSize
et d'apres la doc :

doc_wxwidget a écrit:

If the size passed to the constructor is the default wxDefaultSize, or if the size is not fully specified (such as wxSize(150,-1)) then most controls will fill in the missing size components using the best size and will set the initial size of the control to the resulting size.

Tu n'as pas moyen de faire passer le code pas à pas sous linux histoire de voir ou se passe le probleme??

Sinon perso la méthode (bourrin) que j'aime bien c'est de mettre un peu partout des
    wxMessageBox("pouet1","tralala", wxOK | wxICON_INFORMATION, this);
    wxMessageBox("pouet2","tralala", wxOK | wxICON_INFORMATION, this);

et de voir apres quel pouet le probleme se fait.
(voui c'est bourrin mais ça marche tres bien!! )

Hors ligne

 

#34 26-11-2007 15:32:07

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

fougny a écrit:

J'ai essayé de regarder dans le code ou je pouvais générer ceci

Code:

(livrotheque:22162): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -9 and height 1

Mais je ne vois nulle part ou je donnerais une valeur négative à une fenêtre quelconque.

J'ai passé un débugger, mon sentiment est que j'ai eu un problème en recompilant wxwidgets (je n'avais pas la version non unicode), et que quelque part y'a une déclaration incohérente de wxSize (si je me souviens bien, je n'ai pas le code sous les yeux).

En effet, le code sous le débugger semble tout a fait propre, et une affectation de deux int membre (x et y) provoque une écriture  sans rapport... Ca ressemble a un problème d'adresse à la compilation (par exemple avec deux versions incompatibles du même header, l'un étant OK, l'autre ayant été pêché je ne sais où).

Je vais regarder ça de nouveau, mais probablement pas aujourd'hui... Trop occupé.

Yannick

Hors ligne

 

#35 27-11-2007 00:45:51

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

Sinon tu pourrais essayer de compiler avec le build unicode.
Cela limiterai peut être les problèmes.
mais je n'ai absolument aucune idée des impacts que cela peut avoir sur le programme.

Je serais peut être obligé d'y passer vu qu'en 3.0 il n'existera plus qu'une seule build de wxwidgets (et il n'y a pas beaucoup de chances que ce soit l'ansi smile )

Hors ligne

 

#36 27-11-2007 10:35:46

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

fougny a écrit:

Sinon tu pourrais essayer de compiler avec le build unicode.
Cela limiterai peut être les problèmes.
mais je n'ai absolument aucune idée des impacts que cela peut avoir sur le programme.

C'est beaucoup de travail, hélas. Comme je l'avais essayé au début, cela casse la plupart des déclarations de chaines statiques...

fougny a écrit:

Je serais peut être obligé d'y passer vu qu'en 3.0 il n'existera plus qu'une seule build de wxwidgets (et il n'y a pas beaucoup de chances que ce soit l'ansi smile )

Dans ce cas, tu pourrais passer à l'unicode de ton coté (à partir de ton code qui marche). Commit ça sur GNA, et je le récupère pour mon build. Mais ça risque d'être assez long, ça dépend du temps dont tu disposes.
Mais pour que de mon coté je le fasse en ansi, ça dépendra du temps que moi je peux consacrer wink

Je vais essayer de trouver le temps de recompiler encore une fois wxwidgets, en ayant au préalable bien nettoyé les autres versions qui se cachaient ailleurs dans mon système (seule raison que je vois pour un tel comportement).

Yannick

Hors ligne

 

#37 27-11-2007 11:20:22

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

Autant passer la version linux en unicode ne me générais pas à priori, autant passer la version windows est problématique.
Il faut prendre en compte toutes les bases de données existante et passer en unicode changeant la manière de gérer les chaines de caractères, ces anciennes bases risquent de donner des affichages bizarres pour tous les caractère accentués.

Hors ligne

 

#38 27-11-2007 12:28:16

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Hum,

On ne peut pas trop diverger entre les versions. En particulier, des utilisateurs voudront passer des bases de windows à Linux et inversement.
Le format doit donc rester le même.

Si le passage à Unicode doit être fait (et je pense qu'il le doit), il faudra prévoir un test de la version de la base et une mise à jour...

D'autre part, je viens de faire de nouveau tests: je n'en suis qu'au début, mais j'ai une erreur assez semblable sur une autre machine avec une autre installation de wxwidgets... Je suis donc très perplexe...

Yannick

Hors ligne

 

#39 27-11-2007 12:51:37

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

tu sais sur quelle ligne du code cela arrive?

Hors ligne

 

#40 27-11-2007 14:33:29

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Bon, voilà ce que ca donne ici:

Code:

Breakpoint 2, 0x021ec346 in gtk_window_resize () from /usr/lib/libgtk-x11-2.0.so.0
(gdb) backtrace
#0  0x021ec346 in gtk_window_resize () from /usr/lib/libgtk-x11-2.0.so.0
#1  0x00f04567 in wxTopLevelWindowGTK::DoSetSize (this=0x99517f8, x=-1, y=-1, width=648, height=180, sizeFlags=0)
    at ../src/gtk/toplevel.cpp:945
#2  0x00f046dc in wxTopLevelWindowGTK::DoSetClientSize (this=0x99517f8, width=648, height=180) at ../src/gtk/toplevel.cpp:978
#3  0x00f622ef in wxFrame::DoSetClientSize (this=0x99517f8, width=648, height=180) at ../src/gtk/frame.cpp:320
#4  0x00d3d028 in wxWindowBase::SetClientSize (this=0x99517f8, width=648, height=180) at ../include/wx/window.h:252
#5  0x00d5423a in wxSplashScreen (this=0x99517f8, bitmap=@0xbfef8180, splashStyle=5, milliseconds=6000, parent=0x0, id=-1, pos=@0x826b4a8,
    size=@0x826b4d0, style=33587200) at ../src/generic/splash.cpp:67
#6  0x080672e7 in biblioFrame (this=0x9754ad8, parent=0x0, id=1, title=@0xbfef81e0, position=@0x826b4a8, size=@0x826b4d0, style=537140800)
    at src/biblioFrame.cpp:154
#7  0x0806be75 in biblioFrameApp::OnInit (this=0x9951b58) at /usr/local/wxgtk/include/wx-2.8/wx/string.h:368
#8  0x0806bf93 in wxAppConsole::CallOnInit (this=0x9951b58) at /usr/local/wxgtk/include/wx-2.8/wx/app.h:76
#9  0x005c6149 in wxEntry (argc=@0xbfef82a0, argv=0xbfef8324) at ../src/common/init.cpp:436
#10 0x0806be28 in main (argc=1, argv=0xbfef8324) at src/biblioFrameApp.cpp:45

J'ai hacké wxTopLevelWindowGTK::DoSetSize pour y coller quelques print:

Code:

width:  648
height: 180
1- m_width:  100
1- m_height: 100
2- m_width:  648
2- m_height: 180
3- minWidth:  15714338
3- maxWidth:  15714252
4- m_width:  15714252
4- m_height: -1208823096
5- m_width:  15714252
5- m_height: -1208823096

Ca commence raisonnablement, et fini bizarrement.

Ce qui semble déconner, ce sont les appels ici:

Code:

    int minWidth = GetMinWidth(),
    minHeight = GetMinHeight(),
    maxWidth = GetMaxWidth(),
    maxHeight = GetMaxHeight();

Ils sont difficile à suivre car visiblement inlinés...

OK, on est hors de ton code, et dans l'implémentation GTK de wxwigdets. Alors, bug dans cette implémentation? Ca me parait difficile à croire... Mais quoi, alors?

C'est pas gagné.

Yannick

Hors ligne

 

#41 27-11-2007 15:30:25

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

oui alors c'est vraiment tres tres bizarre, parce que d'apres ton premier dump on plante sur la ligne 45 de biblioframeApp.cpp quiest : IMPLEMENT_APP(biblioFrameApp).
Ce qui me semble tout à fait surréaliste (l'appli n'a encore rien fait à ce niveau la). La compilation d'un sample de wxwidget (de type hello world) fonctionne??
(trouvable ici : http://www.wxwidgets.org/docs/tutorials/hello.htm )

tiens d'ailleurs en parcourant cet exemple j'y ai trouvé cela :

If you get an instant error from your X server and then a crash, then you compiled your library with thread support although your system doesn't support it. You'll have to configure --without-threads and recompile all of wxGTK after a "make clean".

Qui pourrait ressembler à ton probleme

Hors ligne

 

#42 27-11-2007 16:39:15

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

fougny a écrit:

oui alors c'est vraiment tres tres bizarre, parce que d'apres ton premier dump on plante sur la ligne 45 de biblioframeApp.cpp quiest : IMPLEMENT_APP(biblioFrameApp).
Ce qui me semble tout à fait surréaliste (l'appli n'a encore rien fait à ce niveau la).

Pas vraiment: c'est une macro de fou là derrière. Là dedans, se planque le main(), et une foultitude d'initialisation et de bidules, dont la création de ta main window et avant ça du splash-screen: y'a donc de la place pour des bugs!

fougny a écrit:

La compilation d'un sample de wxwidget (de type hello world) fonctionne??
(trouvable ici : http://www.wxwidgets.org/docs/tutorials/hello.htm )

Ca compile et ca tourne sans erreur.


fougny a écrit:

tiens d'ailleurs en parcourant cet exemple j'y ai trouvé cela :

If you get an instant error from your X server and then a crash, then you compiled your library with thread support although your system doesn't support it. You'll have to configure --without-threads and recompile all of wxGTK after a "make clean".

Qui pourrait ressembler à ton probleme

Je doute que mon système ne supporte pas les threads, mais des variables qui se marchent sur les pieds, ça pourrait être causé par ça aussi... Je vais essayer.

Edit: même résultat.

Yannick

Dernière modification par YannickPatois (27-11-2007 17:13:07)

Hors ligne

 

#43 27-11-2007 17:48:47

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

et bien à ce niveau la je ne sais plus trop quoi dire.

Si ce n'est essayer de 'castrer' le programme bout par bout pour voir d'ou vient le problème. (style virer le splash pour commencer)

Mais c'est vraiment bizarre tout ça (j'ai essayer de faire une recherche sur le net de personnes ayant eut ce genre de problème sous linux et je n'ai rien trouvé)

PS : dans les idées saugrenues, ce ne serait pas un probleme avec la gestion des fichiers xpm (qui contiennent les images?)

PPS : en regardant le makefile.linux : j'ai du mal à voir comment la dernière ligne :

Code:

o/livrotheque_private.res: o/livrotheque_private.rc 
    $(WINDRES) --input-format=rc -o o/livrotheque_private.res $(RCINCS) o/LIVROT~1.RC -O coff

peut fonctionner : à ma connaissance ce genre de ficheir n'est pas utilisée sous unix. (mais je peux me tromper) de plus je ne vois pas ou la variable $(WINDRES) est définie

Hors ligne

 

#44 28-11-2007 20:41:12

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

fougny a écrit:

et bien à ce niveau la je ne sais plus trop quoi dire.
Si ce n'est essayer de 'castrer' le programme bout par bout pour voir d'ou vient le problème. (style virer le splash pour commencer)

Oui, je vais faire ça... Ca va demander du temps!

fougny a écrit:

Mais c'est vraiment bizarre tout ça (j'ai essayer de faire une recherche sur le net de personnes ayant eut ce genre de problème sous linux et je n'ai rien trouvé)

Je connais rien à wxwidgets, je vais essayer d'appeler à l'aide sur leurs lidies, mais avant cela, je vais quand même devoir simplifier le problème, donc couper grave dans le code..

fougny a écrit:

PS : dans les idées saugrenues, ce ne serait pas un probleme avec la gestion des fichiers xpm (qui contiennent les images?)

Je ne pense pas, mais je verrai bien smile

fougny a écrit:

PPS : en regardant le makefile.linux : j'ai du mal à voir comment la dernière ligne :

Code:

o/livrotheque_private.res: o/livrotheque_private.rc 
    $(WINDRES) --input-format=rc -o o/livrotheque_private.res $(RCINCS) o/LIVROT~1.RC -O coff

peut fonctionner : à ma connaissance ce genre de ficheir n'est pas utilisée sous unix. (mais je peux me tromper) de plus je ne vois pas ou la variable $(WINDRES) est définie

Cette ligne est inutile, en effet, "o/livrotheque_private.res" n'étant plus une dépendance de exe/livrotheque, le makefile n'appelle jamais ce bout de code. Je vais l'enlever.

Yannick

Hors ligne

 

#45 29-11-2007 08:10:28

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Bon, y'a bien un problème sur ma version de wxwidgets!

Je compile sur RedHat (au boulot) et sur Debian (à la maison). Au boulot, j'ai compilé le hello world sans problème, mais à la maison, avec la version 2.6 c'est bon, mais avec la 2.8 j'ai un problème d'affichage des menus qui ressemble à ce que j'ai avec livrothèque...

Y'a donc bien un problème avec la version 2.8-gtk, du moins dans mon environnement.

Je continue à creuser...


Yannick

Hors ligne

 

#46 29-11-2007 11:32:57

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

Bin c'est plutot une bonne nouvelle (enfin de mon point de vue wink ) : y'aura pas tout le code à casser!

Hors ligne

 

#47 01-12-2007 23:04:18

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Enfin, partiellement:
Le problèmes vu précédemment (Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width -9 and height 1) existe toujours mais maintenant c'est cohérent entre mes deux plate formes ce qui n'était pas le cas auparavant.

En effet, aujourd'hui en mettant à jour mes packages [1], j'ai vu arriver une nouvelle version de wxwidget-dev 2.8: elle corrige les erreurs précédentes (je peux compiler hworld, qui marche correctement [2]) et y'a maintenant la version ansi smile

Évidemment, ça ne résout rien...

Par contre, au boulot, là j'ai beaucoup de travail, et à la maison aussi: je vais pas avoir beaucoup de temps à consacrer à Livrothèque la semaine prochaine...

   Yannick

[1] Deux commandes pour mettre à jour plus de 2000 packages, du noyau du système jusqu'au traitement de texte, en passant, bien sur par mes outils de dev, dont wxwidgets; ca me scie toujours que l'on prétende que la mise à jour logicielle puisse être plus simple sous win.

[2] Hummm, je vais tester d'autres exemples, je crains qu'il n'y ait encore des trucs zarbis...

Hors ligne

 

#48 08-12-2007 22:34:21

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Bon sad

Mettre à jour un pkg windows est peut être moins facile, mais au moins ça marche: je pédale toujours dans la choucroute là, sous Linux... Beaucoup de taf, alors très peu de temps pour cela la semaine passée. J'espère avoir quelques heures ce WE encore...

Hors ligne

 

#49 09-12-2007 00:02:45

YannickPatois
débutant
Date d'inscription: 17-11-2007
Messages: 34

Re: Portage sous Linux?

Yeah!

Grande victoire, j'ai eu une fenêtre sans trop d'erreurs.

J'ai pas touché au code, mais j'ai viré toutes les optimisations de compilation (quand on comprend pas ce que fais le programme sous le débugger  par rapport au code qu'on a sous les yeux, c'est une chose à faire, j'aurais du y penser plus tôt).

Voilà ce que j'obtiens:

http://www.altespace.org/tmp/shot1.png

OK, c'est sûrement pas tout à fais ça wink Mais au moins c'est quelque chose!

Bon, ca plante vite ensuite quand je me balade dans les menus, mais les erreurs semblent plus compréhensibles...

A bientôt!

Hors ligne

 

#50 09-12-2007 13:56:53

fougny
Administrator
Date d'inscription: 30-07-2006
Messages: 533

Re: Portage sous Linux?

N'hésite pas à me donner les erreurs que tu obtiens. J'aurais peut être des idées sur le pourquoi ça plante.

Sinon j'ai pas mal utilisé une mailing list au début : wx-users@lists.wxwidgets.org. Il y a pas mal de personnes pleins de bons conseil la bas. l'adresse du site ou ils en parlent : http://www.wxwidgets.org/support/maillst2.htm (c'est la première de la liste qui est intéressante).

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson