A compile of SIRIUS


Ce petit document décrit les problèmes que j'ai eu ou que vous pouvez avoir lors de l'installation de SIRIUS v0.1.


La distribution sur lequel j'ai effectué la compilation est la "MDK 9.1" (libqt3 3.1.1, kde 3.1, kernel 2.4.21)


Après le download du tar gz, et le décompression. J'y jette un coup d'oeil.


Tiens il y a un binaire dans les sources :), je le lance (...ne le faite pas, il contient peut être un Trojan :))


#./sirius

./sirius: relocation error: ./sirius: undefined symbol: __ti7QWidget


je trouve aussi un bz2 , je le décompresse et le lance


#./sirius

./sirius: error while loading shared libraries: libpng.so.2: cannot open shared object file: No such file or directory


je récupère la lib par rpmfind (libpng-1.0.3-1.i386.rpm ), l'install et ressaye, et je reçoit le même message d'erreur (relocation error: ./sirius: undefined symbol: __ti7QWidget)


Qu'est ce qu'on peut être faignant ;)


Tant pis alors , je le recompile


# ./configure

...


sconfigure: creating ./config.status

config.status: creating Makefile

config.status: creating sirius/Makefile

config.status: creating sirius/docs/Makefile

config.status: creating sirius/docs/en/Makefile

config.status: creating config.h


# make

apres 10 min de compile (occupation moyenne 60% (xmms était lancé ;)) du CPU (un vieux duron 700MHz ;))........une petit déception :(


g++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/lib/qt3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -O2 -fno-exceptions -fno-check-new -c -o identdlg.o `test -f identdlg.cpp || echo './'`identdlg.cpp


identdlg.cpp: In constructor `IdentDlg::IdentDlg(QWidget*, const char*, bool, unsigned int)':

identdlg.cpp:4159: class `IdentDlg' does not have any field named `image0'

identdlg.cpp:4169: `image0' undeclared (first use this function)

identdlg.cpp:4169: (Each undeclared identifier is reported only once for each function it appears in.)

identdlg.cpp:4228: `languageChange' undeclared (first use this function)

identdlg.cpp: At global scope:

identdlg.cpp:4254: no `void IdentDlg::languageChange()' member function declared in class `IdentDlg'

make[3]: *** [identdlg.o] Erreur 1

make[3]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1/sirius'

make[2]: *** [all-recursive] Erreur 1

make[2]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1/sirius'

make[1]: *** [all-recursive] Erreur 1

make[1]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1'

make: *** [all] Erreur 2


c koi cette image0 encore ? L'équipe dev n'a comme même pas pu oublié une erreur ! Ils sont des geeks quand même :)


Étant pressé de vouloir voir sirius, j'ouvre donc kdevelop pour essayer de voir kski cloche, après une vue rapide sur le code, tout me parait bien. je recompile sous kdev même erreur....hmmm.


et si c'était makefile qui déconnait ?

je refais donc un rebuild (Menu Build -> Rebuild, ou l'icône "fenêtre vide avec deux flèches...recyclable " :p)

aprés 10 min ;)


g++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/lib/qt3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -O2 -fno-exceptions -fno-check-new -c -o identdlg.o `test -f identdlg.cpp || echo './'`identdlg.cpp

/usr/lib/qt3/bin/moc groupeform.h -o groupeform.moc


Super ! la phase critique est passé :), pas le temps de comprendre pourquoi :p (mailler moi si vous avez une idée)

5 min plus tard


g++ -O2 -fno-exceptions -fno-check-new -o sirius moduleEtudiantModPropre.o moduleEtudiantSlotToutModule.o sportEtudiantSaveDocument.o sportEtudiantGetDocument.o artisteEtudiantSaveDocument.o artisteEtudiantGetDocument.o moduleEtudiantSlotTDroite2.o moduleSlotEtudiantTGauche2.o moduleEtudiantSlotGauche2.o moduleEtudiantSlotDroite2.o moduleEtudiantSlotTGauche1.o moduleEtudiantSlotTDroite1.o moduleEtudiantSlotGauche1.o moduleEtudiantGetDocument.o moduleEtudiantSaveDocument.o moduleEtudiantSlotDroite1.o moduleetudiant.o siriusAppSetPwd.o getParam.o siriusAppSetLogin.o siriusAppSlotAuthentification.o artisteetudiant.o siriusViewSaveDocAnnexe.o sportetudiant.o docannexe.o siriusViewRemplirCombos.o siriusDocEffacer.o siriusDocUpdate.o siriusDocInsert.o siriusDocLast.o siriusDocFirst.o siriusDocPrevious.o siriusDocAfficheStatutEnregCourant.o siriusDocNext.o siriusAppSlotStatusMessage.o siriusAppMousePressEvent.o siriusViewView2Doc.o siriusViewDoc2View.o createConnection.o siriusDocSearch.o siriusViewSlotVueModifie.o siriusViewInitFields.o siriusViewGetDocument.o siriusDocFormatter.o siriusDocInitDescriptionChamps.o siriusDocIsModified.o siriusAppSlotParamEtab.o siriusAppSlotParamTables.o siriusAppSlotHelpAbout.o siriusAppSlotEditGroupe.o siriusAppSlotEditEmploi.o siriusAppSlotEditEtudiant.o siriusAppSlotFileQuit.o siriusAppSlotFileLast.o siriusAppSlotFileNext.o siriusAppSlotFilePrevious.o siriusAppSlotFileFirst.o siriusAppSlotFilePrint.o siriusAppSlotFileDelete.o siriusAppSlotFileSearch.o siriusAppSlotFileSave.o siriusAppSlotFileUpdate.o siriusAppSlotFileNew.o siriusAppQueryExit.o siriusAppInitDoc.o siriusAppInitStatusBar.o siriusAppInitToolBar.o siriusAppInitMenuBar.o siriusAppInitActions.o siriusAppInitView.o champdescription.o siriusview.o siriusdoc.o sirius.o main.o identdlg.o groupeform.o emploiform.o saisiecodedlg.o etudiantform.o artisteetudiant.moc.o siriusview.moc.o moduleetudiant.moc.o sirius.moc.o sportetudiant.moc.o docannexe.moc.o siriusdoc.moc.o -L/usr/X11R6/lib -L/usr/lib/qt3/lib -lqt-mt -lpng -lz -lm -lXext -lX11 -lSM -lICE -lpthread -lresolv

gmake[3]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1/sirius'

gmake[2]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1/sirius'

gmake[2]: Entering directory `/home/aissam/Dev/sirius/sirius-0.1'

gmake[2]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1'

gmake[1]: Leaving directory `/home/aissam/Dev/sirius/sirius-0.1'

*** success ***


c'est pas beau la vie ?

amusez-vous a compter le nombre d'objets qui ont contribué a ce super binaire.


un clic sur run et ça marche :)

fenetere d'authentification

tout est bien à part un p'tit problème de police (trop grosse) et les caractères à droite (devait être en arabe) dû sûrement à l'UTF-8


l'application marche maintenant, mais quel login mettre ?

n'importe lequel :) , car de toute façon ça marchera pas.

faut apprendre à lire le fichier INSTALL ;).

les données saisies doivent bien être stocké dans une BD :)


Donc si c pas déjà fait, installer postgresql (package postgresql-7.3.2-5mdk de mdk 9.1) puis initialiser la base

(en root) # su - postgres

# initdb

# postmaster&


créer ensuite la base sirius


# createdb -E UNICODE sirius


puis créer l'utilisateur en répondant aux questions

# createuser -W sirius


connecter vous ensuite avec cet utilisateur


# psql sirius -U sirius


si vous recevez le message suivant :


FATAL: IDENT authentication failed for user "sirius"

psql: FATAL: IDENT authentication failed for user "sirius"


c'est que vous n'avez pas le droit d'y accedez, veuillez donc contacter votre fournisseur d'ordinateur ou le support technique micro$oft ;) (100 DH la minute)

editer le fichier data/pg_hba.conf

et activer la ligne suivante (en enlevant le #)


local all all trust


chatouillez postmaster avec un signal HUP

# killall -HUP postmaster

et ressayer ca devrai marcher ;)


quitter l'invite SQL avec \q et metter vous dans le répertoire sirius :


# cd /chemin/vers/sirius-0.1/sirius/


revenez à l'invite sql


# psql sirius -U sirius


puis dans l'invite lancer le script de création de la base.

sirius=# \i sirius.sql


la liste de commande doit défiler rapidement, il est entrain de formater votre disque dur :)

.......

setval

--------

1

(1 ligne)


et c fini, vous pouvez quitter l'invite


sirius=# \q


lancer l'application , saisissez 'sirius' comme login et le mot de passe que vous avez fourni à la commande "createuser".


si ça passe, envoyer un mail de remerciement à l'équipe de dev ;) sinon spammer les ;).


QSqlDatabase warning: QPSQL7 driver not loaded

QSqlDatabase: available drivers:

Failed to open sirius database: Driver not loaded

Driver not loaded

Connexion refusé


Alors le driver postgresql pour QT n'est pas installé.

Installer le alors, et réessayer.

Il s'agit en fait du paquetage "libqt3-psql-3.1.1-13.1mdk" sous mdk.



Failed to open sirius database: QPSQL: Unable to connect

n'a pas pu connecter au serveur: Connection refused

Est-ce que le serveur est en éxecution à l'hôte localhost

et en acceptant des connexions TCP/IP au port 5432?


Connexion refusé


alors postgresql n'est pas en écoute, achetons lui des écouteurs alors ;)

(en root) # su - postgresql

# vi data/postgresql.conf


assurer vous de l'existence des deux lignes suivantes :

tcpip_socket = true

port=5432


arrêter postmaster

# killall -TERM postmaster


et relancer le

# postmaster&



Failed to open sirius database: QPSQL: Unable to connect

FATAL: No pg_hba.conf entry for host 127.0.0.1, user sirius, database sirius


c'est qu'il vous aime toujours pas postgres (même si vous lui avez acheté des écouteurs ;)).


(en root) # su - postgresql

# vi data/pg_hba.conf

et ajouter le droit d'accès pour la base sirius

host sirius sirius 127.0.0.1 255.255.255 trust


traduction :

l'accés par tcp/ip(host) sur la base sirius et utilisateur sirius de la part de l'ip 127.0.0.1 avec le masque 255.255.255.255 est autorisé(trust)


fait sursauter ensuite postmaster avec un signal HUP ;)

# killall -HUP postmaster


postgres ne doit plus vous embêtez maintenant.


lancer sirius et admirer le travail fait :)

acceuil sirius

Vous pouvez télécharger le fichier binaire produit ici, ou les sources produits après un rebuild de kdevelop. Ce document est également disponible au format OpenOffice ici.


Si vous avez rencontrés d'autres problèmes que vous avez pu résoudre n'hésiter à me l'envoyer pour que je la rajouter a cette page.


Aissam (PM)
aissam@linux-maroc.org


Copyright (c) 2003 Aissam BAZZAOUI
Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation.
Une copie de cette Licence est disponible ici.