Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 17 utilisateurs en ligne, consultez le détail
Auteur Message
zakharov
#0 Message posté le : 16-10-2007 à 15:12:45


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 16-10-2007
Nombre de messages : 0
Voici un "petit" script (30Ko) pour compiler, installer localement (sans nécessiter le compte root) et gérer différents "projets". Un projet étant un ensemble de un ou plusieurs "produits". Ce que le script sait faire:
  • - télécharger / mettre à jour les sources et ce pour les dépots subversion, cvs, git, mercurial et les archives (tgz, tar.gz, tar.bz2 et zip... sans mise à jour pour elles)
  • - compiler les produits pour les compilations à base de cmake, autogen*, bootstrap* et bien sûr configure, mais aussi scons et jam. Les logs de compilation, de configuration et les warnings de chaque "produit" sont séparés et stockés dans des fichiers (et écrasés à la prochaine compilation). Les erreurs de compilation ou de configuration sont alors très facilement détectables
  • - gérer de manière simple les patches (seulement ceux en -p0 :/ ), en plaçant un fichier de patch dans une arborescence de répertoires on indique au script si le patch est à installer ou à supprimer, le script fera le reste, pratique quand on a plein de patches à appliquer puis à supprimer, etc.
  • - plein d'autres choses que je vous laisse découvrir en faisant
    $ ./compile help

./compile parle beaucoup (dans un shitty english du meilleur goût ;)). A la base il a été écrit pour me permettre de gérer avec un seul doigt les quatre composants de FlightGear que je compile sur mon système (OpenSceneGraph, SimGear, FlightGear et sa base) avec différentes "saveurs" (version de dev, version stable, patchée, etc.). Donc par défaut les produits installés si on ne dit pas quoi faire sont FlightGear avec OSG, le tout en version de dev. Aujourd'hui que j'ai (beaucoup) plus de projets, la meilleure utilisation que j'en fait c'est, avant d'aller rejoindre ma couette, de lancer:
$ for projet in `./compile list-projects`; do ./compile $projet; done &> ~/log
ce qui me permet d'avoir à jour le matin tous mes projets préférés et ce sans avoir eu à faire autre chose que d'appuyer sur "Entrée" :magie:
La syntaxe pour ajouter/modifier de nouveaux produits est assez simple (voir les quelques exemples fournis dans le script) et peut en général se résumer à
function builtin_produit () {

  generic "où aller chercher les sources" "options de compilation éventuelles"

}
et peuvent se décliner en trois "saveurs" (-dev, -testing et -stable).
le script ne fait ni le café ni la vérification des dépendances (librairies et "produits"), et oui... finalement la partie la plus difficile (dénicher la librairie de dev manquante) n'est pas encore automatisée (mais j'y songe ;)).

  • pour avoir la liste des produits inclus dans le script
    $ ./compile list
  • pour créer un nouveau projet qu'on appellera "zique", avec dedans disons Gimmix avec MPD en version de développement
    $ ./compile zique create add=MPD-dev,libmpd-dev,Gimmix-dev
    (libmpd est une dépendance de Gimmix et doit être de la même version que MPD). pour lancer vos MPD et Gimmix fraîchement compilés
    $ zique/install/bin/MPD &
    
    $ zique/install/bin/Gimmix
  • Ensuite, disons une semaine plus tard, pour mettre à jour le projet dans son ensemble
    $ ./compile zique

Le script va créer une arborescence dont la racine porte le nom du projet. A l'intérieur on trouve 3 répertoires:
monprojet/config: la configuration du projet et des produits
monprojet/src:les sources des produits
monprojet/install: le répertoire d'installation des produits (bin, include, lib, share)

espèrant que vous le trouverez utile...
zakh

Note: le script évolue constamment, la dernière version est située ici

--Message édité par Kernel le 20-10-2007 à 18:40:21--