2010-11-30 5 views
0

Nous utilisons Hudson-CI pour le serveur d'intégration continue pour les projets Python, qui utilisent tous Buildout pour gérer les dépendances. Presque tous nos projets utilisent lxml qui, à cause de Buildout, doit être construit/installé lors de chaque test et parce que cela prend tellement de temps qu'il réduit le nombre de builds que nous pouvons exécuter par jour.Comment puis-je accélérer la construction/installation de lxml?

Est-il possible d'accélérer la construction de lxml lors de l'utilisation de Buildout? Peut-être que certaines variables d'environnement peuvent être définies pour aider la construction à utiliser les deux cœurs sur le serveur? Ou quelque chose pour réduire la quantité d'optimisation effectuée?

Répondre

-1

Vous pouvez créer un fichier par défaut de buildout et définir un répertoire eggs pour partager des œufs entre plusieurs builds.

Ce poste il résume bien: http://plone.org/documentation/manual/developer-manual/managing-projects-with-buildout/creating-a-buildout-defaults-file

+0

Le problème du questionneur, hélas, n'est pas de télécharger un œuf, mais de compiler un .tar.gz. –

+0

Je ne suis pas d'accord. D'après ce que je comprends, le problème est l'installation de lxml, ce qui implique la compilation d'une extension C. FWIW, j'ai une buildout pour un projet qui a lxml comme dépendance. lxml est construit une fois, ce qui prend assez de temps, et est ensuite stocké dans le cache des œufs. –

1

Ma solution est de créer un moi-même oeuf et de garder cette version contrôlée oeuf avec mon buildout. Je recréer l'oeuf chaque fois que j'ai besoin de mettre à jour lxml. Vous pouvez presque toujours créer un oeuf binaire de n'importe quel projet Python en lançant un import setuptools dans le haut de son setup.py puis en disant python setup.py bdist_egg. Et tant que les machines sur lesquelles vous installez l'oeuf sont à peu près similaires (comme toutes étant la même distribution Linux), vous ne devriez pas avoir beaucoup de problèmes. Lisez sur la construction de lxml avec "static deps", comme les appellent, si vous voulez que votre oeuf ne dépende pas de libxml étant installé sur la boîte.