# [portage] prevoir le temps de compilation

## philpep-tlse

Ceci n'est pas une demande d'aide, mais plutôt une idée a implémenter dans genloop par exemple.

Je sais que genloop -c affiche un temps de compilation restant de l'ebuild. Mais comme beaucoup, j'ai parfois besoin d'un soft rapidement...

Ainsi il m'est arrivé d'avoir a émerger un compilateur (je sais plus comment il s'appelle) pour un simple lecteur de podcast console, ça a mis plus de 2h30   :Very Happy: 

Bref, si j'avais su avant, j'aurais peut être choisi une autre solution ou reporté a plus tard...

Donc je me demande s'il n'est pas possible de prévoir un temps de compilation de l'ensemble des ebuild qu'on emerge... (celui qui va dans world et toutes les dépendances)

A la base je ne suis pas codeur, donc je ne sais pas comment genloop s'en sort, mais j'imagine pouvoir créer un petit script qui va le calculer.

Les élément a prendre en compte sont ceux là je pense :

- Frequence du processeur : facile à avoir dans /proc/cpuinfo

- Taille de la source : ça c'est plus dur, est il possible d'avoir la taille d'un fichier sur un serveur distant sans le télécharger ?

- Nature des sources : en C, C++, python, simple script : ---> créer une base de données ?

- éventuellement traiter la variable CFLAGS, mais ça m'entonnerais que ce soit prévisible...

Ensuite un petit calcul savant devrait pouvoir sortir une approximation, avec une grosse marge d'erreur, mais on aurra une idée quand même.

Bref, si vous savez si un tel script existe ou si vous avez des élément a rajouter, ou même une ébauche de code \o/

Merci de votre attention   :Cool: 

EDIT : ce serait sympa un petit script qui se lance comme ça :

```
./super_genloop -av xterm

*******************

*******************

la compilation devrait prendre entre XhXX et XhXX, voulez vous continuer [y/n] ?
```

EDIT2 : sinon on pourrait créer une bdd de statistiques, a chaque fois qu'on emerge on evoie les info sur un serveur. Si on est beaucoup a le faire, ça peut devenir fiable avec le temps... (mais je sais pas si ça intéressera beaucoup de monde de participer a ces statistiques)

----------

## CryoGen

 *philpep-tlse wrote:*   

> 
> 
> EDIT2 : sinon on pourrait créer une bdd de statistiques, a chaque fois qu'on emerge on evoie les info sur un serveur. Si on est beaucoup a le faire, ça peut devenir fiable avec le temps... (mais je sais pas si ça intéressera beaucoup de monde de participer a ces statistiques)

 

Déjà fait, mais vite abandonné   :Confused: 

----------

## lgmar75

```
emerge -p world_or_whatyouwant | genlop -p
```

Ca donne deja une idée. Sauf si tu n'as jamais compilé la grosse partie   :Crying or Very sad: 

----------

## kopp

ça a déjà été maintes fois discuté. La possibilité de la chose reste très faible. CMake te donne une idée de l'avancement en pourcentage des sources compilés (j'ai l'impression que ça compte seulement les fichiers, pas leur longeur/complexité) mais c'est durant la compilation et il faut que ce soit fait avec CMake.

Sinon, une base de données, y avait eu l'idée. Mais les paramètres ont une telle variabilité que c'est impossible : le disque dur joue, le système de fichier, la charge processeur autre, le type de processeur, la taille de la ram, le type de ram, les flags, etc. Très difficile à modéliser...

----------

## mornik

Un temps moyen ne s'applique à personne. C'est juste moyen. Donc a partir du temps que l'on met pour compiler une bibliothèque de référence, on peu savoir ou l'on se trouve vis à vis du temps moyen.

C'est vrai que ce type de projet apparait régulièrement sur le forum, et se trouve vite abandonné. Je trouve ça dommage. J'aimerai bien parfois connaitre le temps moyen pour savoir si oui ou non j'ai envie d'attendre.

Pour moi cette base peut-être un bien. On a pas besoin de connaitre les détails de la compilation. Juste le compilateur.

----------

## Desintegr

LFS utilise la notion de SBU (Standard Build Unit) pour mesurer les temps de compilation

----------

## mornik

Voila un lien d'un post précédent sur le sujet

----------

