Liens connexes

Dépêche modérée par

Dépêche éditée par

: Waf - un système de construction de logiciels

Posté par Tramo Piere (). Modéré le 23 décembre 2008.
11
Après trois ans de développement, le projet Waf vient de présenter une version stable numérotée 1.5.2. Il s'agit d'un système de construction de logiciel généraliste et minimaliste (license BSD), basé sur Python, utilisé par de nombreux projets libres (xmms2, midori...) ou propriétaires, sur plateformes de type Linux.

Né du constat d'un manque de flexibilité d'un grand nombre de systèmes, Waf présente un système d'extensions basé sur les aspects qui lui permet d'être extrêmement adaptable tout en mettant en avant d'excellentes performances par comparaison avec d'autres outils basés sur la génération de Makefiles (comme les Autotools) ou sur l'utilisation directe d'un langage (Scons).

Les principaux éléments de cette version sont l'intégration d'exemples similaires à Make, l'ajout d'exemples pour la compilation par lots, l'utilisation de GCC en complément du préprocesseur interne à Waf, la documentation des API par le biais du Waf Book, et diverses améliorations pour le support de plateformes autres que Linux.

Waf reprend plusieurs idées principales d'autres systèmes de construction de logiciels tels que les Autotools, Scons ou Jam :
  • Configuration, compilation, installation et distribution d'un projet ;
  • Compilation en parallèle ;
  • Support pour divers langages tels que Ocaml, C, C++ ou Java ;
  • Abstraction pour la compilation sur d'autres systèmes d'exploitation ;
  • Utilisations de scripts en langage Python.

> Lire les commentaires (27 commentaires, moyenne: 1,8).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Intéressant

Posté par Gnurou (page perso, ) le 23/12/2008 à 06:04. (lien). Évalué à 2.

Ce système a l'air intéressant - j'utilise actuellement scons pour une appli utilisant qt4, devant compiler sous linux et mac et en cross-compilation linux->windows. Scons est assez limité dans ce domaine (pour le support de qt4 surtout). Est-ce qu'un des experts Waf pourrait me dire s'il pense que cet outil conviendrait mieux? (preuves à l'appui ;))

[+] Y a des amateurs de guateau dans la salle ?

Posté par totof2000 () le 23/12/2008 à 11:53. (lien). Évalué à -6.

Virez-moi cette horreur SVP ...

Diverses fôtes

Posté par Sylvain Sauvage () le 23/12/2008 à 12:49. (lien). Évalué à 2.

1. Améliorations est féminin, donc diverses.

2. Plateformes ou plates-formes (2 fois).

3. « Waf présent un système d’extensions basés », si c’est le système : basé.

4. Il manque pas mal de virgules dans la 1re phrase (apposition de qualificatifs).

5. « compilation en batches » → compilation par lots.

Les modos sont en vacances ?

Pour GNOME

Posté par Étienne Bersac (Jabber id, page perso, ) le 23/12/2008 à 20:30. (lien). Évalué à 1.

Ave,

Qu'en est-il pour le support des techno GNOME comme gtk-doc et gnome-doc ? Quel est le remplaçant d'autoheader ?

Je suis également intéressé par waf, mais j'ai pas envie de perdre la matûrité des autotools. Pour ma part, je me débrouille bien avec automake et autoconf.

Saint Noël,

Cordialement,
Étienne.

--
E Ultreïa !

Ant like. A quand un maven like ?

Posté par Miguel Moquillon (Jabber id, page perso, ) le 25/12/2008 à 18:37. (lien). Évalué à 1.

Ok, au vue des exemples que j'ai pu voir, on reste encore à des choses du type Ant pour Java qui a été une solution très intéressante de remplacement des Makefile dans le dév Java.
Or, depuis quelques année est apparue sur la plate-forme Java un remplacement à ce genre de système de construction de logiciels : maven.
http://maven.apache.org/

Pour ceux qui ne connaissent pas, maven est un système de construction de logiciel de plus haut niveau au sens où d'une part il impose une structure du projet et d'autre par il parcours différentes phases dans l'écriture de code : validate, compile, test, package, integration-test, install, deploy pour ne citer que quelques uns.
(Voir http://www.oqube.com/formations/maven/lifecycle.html pour une vision plus complète des phases.)
Il n'y pas plus la définition de tâches mais des plugins avec différentes cibles d'exécutions : un pour la compilation de code, un autre pour dérouler des tests, un pour archiver, etc. Chacun va s'exécuter dans une ou plusieurs phases selon son objectif.
Un autre avantage, et un gros, de Maven, est la gestion des dépendances : les dépendances en bibliothèques sont automatiquement téléchargées de dépôts maven sur le Web et intégrées dans les phases de compilation, de tests, etc. Les dépendances transitives sont aussi prises en compte. Ce qui est aussi intéressant, c'est que seul les plugins définis dans le POM (Project Object Model, le descripteur du projet), sont chargés (et récupérés du Web s'ils ne sont pas présents dans le cache local (un dépôt local)).

Malgré les défauts de Maven, après avoir travaillé avec aussi bien sur des petits que des plus gros projets, je ne reviendrais pas en arrière sur des systèmes de construction logicielle à la Ant ou Makefile ou Cons (dont SCons est un clone pour Python) ... Le principe de définition de tâches dans de tels systèmes peut devenir trop lourd avec de gros projets et de plus il faut soit même s'embêter à gérer les dépendances.

Il est dommage qu'il n'y ait pas encore de projet du style Maven pour gérer la construction logicielle pour la plate-forme C/C++ ou Python.

Sinon, il existe un concurrent à Maven : Raven, http://raven.rubyforge.org/

"waf"

Posté par totof2000 () le 26/12/2008 à 00:17. (lien). Évalué à 3.

Quand j'ai lu ça j'ai cru entendre mon chien aboyer .... Et d'un coup je me suis rappelé que je n'ai pas de chien ...

Revenir en haut de page