Makefile / svn

• 14 Avr. 2010 - 08:29

Bonjour

Aujourd'hui, je mets à jour la version 0.9.6 que j'ai installé hier. Je suis fort surpris par le fait que je doive tout effacer (make clean) afin de pouvoir faire un make. En effet, un des intérêts d'un découpage d'un projet en plein de petits programmes et du Makefile est de n'avoir à compiler que les petits bouts de programme (les fichiers) qui ont été mis à jour depuis la dernière compilation.
Cette remarque est d'autant plus importante que le projet est important. MuseScore est un gros projet qui demande un certain temps pour être compilé. Donc, ce serait important pour lui !


Commentaires

En réponse à par [DELETED] 5

Supprimer le répertoire buid est assez simple : il y a jusye un peu de script bash à modifier, je l'ai fait, mais pas testé.
Le principal problème, c'est qu'il suffit que le Makefile ne soit pas bien fait : manque de référence aux .h pour la compilation d'un .c(pp) par exemple pour que ça ne passe pas correctement. Ce problème étant régler de façon bourine avec le make clean qui impose une recompilation massive de tout sans réfléchir.

Le make install compile aussi ?

En réponse à par [DELETED] 5

Je n'avais pas fait le "make clean" ! Mais, par contre, mon nouveau test avec la librairie portaudio-dev vient de me dire que tout était à jour. Je ne comprends pas ces deux comportements différents ! J'utilise toujours le même script :

$ cat maj.sh
svn update
cd trunk
su -c "make install"

En réponse à par Troumad

Encore moi...
Je donne l'impression d'exagérer !

La version d'aujourd'hui plante dangereusement !

[troumad@localhost][~/Téléchargement/musescore/mscore]
$ cd trunk/
[troumad@localhost][~/Téléchargement/musescore/mscore/trunk]
$ make
if test ! -d build;                              \
         then                                          \
            mkdir build;                               \
            cd build;                                  \
            cmake -DCMAKE_BUILD_TYPE=RELEASE	       \
            	  -DCMAKE_INSTALL_PREFIX=""/usr/local"" \
            	   ../mscore; 			       \
            make lrelease;                             \
            make -j `grep -c processor /proc/cpuinfo`;                           \
         else                                          \
            echo "build directory does already exist, please remove first with 'make clean'"; \
         fi;
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Doxygen: /usr/bin/doxygen
found Doxygen
-- configured /home/bs/Téléchargement/musescore/mscore/trunk/mscore/Doxyfile.in --> /home/bs/Téléchargement/musescore/mscore/trunk/build/Doxyfile
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.6.2 (using /usr/bin/qmake)
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
Qt lib found at /usr/lib64
Alsa detected.
-- jack (jack audio connection kit) >= 0.98.0 found
portaudio detected /usr/include /usr/lib64 -lportaudio -lm -lpthread
-- Configuring done
CMake Error in sfont/CMakeLists.txt:
  Cannot find source file "all.h.pch".  Tried extensions .c .C .c++ .cc .cpp
  .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx


-- Build files have been written to: /home/bs/Téléchargement/musescore/mscore/trunk/build
make[1]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/trunk/build »
make[1]: *** Pas de règle pour fabriquer la cible « lrelease ». Arrêt.
make[1]: quittant le répertoire « /home/bs/Téléchargement/musescore/mscore/trunk/build »
make[1]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/trunk/build »
make[1]: *** Pas de cibles spécifiées et aucun makefile n'a été trouvé. Arrêt.
make[1]: quittant le répertoire « /home/bs/Téléchargement/musescore/mscore/trunk/build »
make: *** [release] Erreur 2
[troumad@localhost][~/Téléchargement/musescore/mscore/trunk]

Le make install direct sous root m'a saturé le système (genre un programme qui s'appelle lui-même) et j'ai du rebooter un peu durement !

En réponse à par Troumad

Si tu as fait un "svn up", il y a peu de chance que le trunk compile tel quel. Il y a de nouvelles dépendences. J'ai pas encore regardé en détail. Depuis quelques jours, on a créé un branche 0.9.6 dans le SVN. Tu dois pouvoir continuer a compiler celle là sans problème. Make install n'est pas récursif autant que je sache.

En réponse à par [DELETED] 5

Si je lance un make install, voici ce que je récupère si je fais immédiatement un Ctrl-C :

[troumad@localhost][~/Téléchargement/musescore/mscore/branches/mscore-0-9-6]
$ su -c "make install"
Password: 
cd build; make install
/bin/sh: line 0: cd: build: Aucun fichier ou dossier de ce type
make[1]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/branches/mscore-0-9-6 »
cd build; make install
/bin/sh: line 0: cd: build: Aucun fichier ou dossier de ce type
make[2]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/branches/mscore-0-9-6 »
cd build; make install
/bin/sh: line 0: cd: build: Aucun fichier ou dossier de ce type
[...]
make[83]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/branches/mscore-0-9-6 »
cd build; make install
/bin/sh: line 0: cd: build: Aucun fichier ou dossier de ce type
make[84]: entrant dans le répertoire « /home/bs/Téléchargement/musescore/mscore/branches/mscore-0-9-6 »
cd build; make install
/bin/sh: line 0: cd: build: Aucun fichier ou dossier de ce type
^Cmake[84]: *** wait: Aucun processus enfant. Arrêt.
make[84]: *** Attente des tâches non terminées....
make[84]: *** wait: Aucun processus enfant. Arrêt.
make[83]: *** [install] Erreur 2
make[82]: *** [install] Interrompre
make[81]: *** [install] Interrompre
[...]
make[2]: *** [install] Interrompre
make[1]: *** [install] Interrompre
make: *** [install] Interrompre

Si j'attends bien plus longtemps ça va bien plus loin. Et même le Ctrl-C prend très longtemps pour stopper la commande.

Par contre, le make tout simple commence bien la longue compilation ;)

nb : où peut-on avoir une info sur les branches et les systèmes à compiler ? On dirait qu'il y a plusieurs versions en parallèle non ?

En réponse à par [DELETED] 5

Deux points :

  1. Le make install direct ne semble pas pouvoir se faire sur un svn fraîchement récupéré. Il faut avoir fait au moins un make avant.
  2. S'il faut des nouvelles librairies encore plus nouvelles que celle de la 0.9.6, chapeau ! Les développeurs doivent récupérer les librairies derniers cris ! En effet, déjà la 0.9.6 a besoin de librairies non disponibles sur la dernière Mandriva stable !
  3. Le lien vers https://lists.sourceforge.net/lists/listinfo/mscore-developer demande un mot de passe

Do you still have an unanswered question? Please log in first to post your question.