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 :)

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 ;).
- Si l'erreur que vous avez reçu est :
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.
Si l'erreur reçu est :
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&
Si l'erreur est :
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 :)

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