# [emerge] Compilation sur une autre machine.

## destroyedlolo

Bonjour,

Je suis en train de faire des tests avec Gentoo sur des machines relativement lentes (Gentre Duron 850Mhz) et a terme, ca sera sur des PI ou des 486 (ou compiler ne serait-ce que X relevera du masochime   :Laughing:  )

J'ai déjà installer DistCC qui accélère  grandement certaines compilations ... Certaines car si ca fonctionne bien sur les gros programmes en C ou en C++, le Duron montre ses limites lorsqu'il y a beaucoup de dependances et qu'elles utilisent beaucoup de scripts (donc execute en local). Par exemple, hier je me suis essaye avec l'excellentissime Midori mais au bout de 2.5h, il y etait encore ... beaucoup de dependances ont besoin de 'm4' et ... ccccaaaa rrraaaammmme.

Bref, j'envisage de faire la compilation sur une autre machine a base de P4, et de les installer sur le Duron en temps que Prebuilt Packages.

Donc questions :

Sur le P4, il y a deja gentoo evidemment configure pour le P4. Pour eviter les conflits entre les compiles P4 et Duron, j'envisage de 'chrooter' l'environment du second et d'y creer seulement le /etc/make.conf du le Duron. Est-ce la bonne solution ?

Sur le P4, Je rajoute buildpkgonly dans son FEATURES pour le Duron, c'est ca ?

 ou vont donc etre creer les prebuilds ? En clair, que doit-je mettre dans le PORTAGE_BINHOST comme directory ?

Si j'arrive a faire qq chose, je rajouterai sans doute quelques pages sur mon site   :Wink: 

Bye

Laurent

----------

## gglaboussole

Salut,

Je fais moi aussi de la cross compil pour mon eeepc à partir de mon i7

1- Ton chroot sur le "serveur" (le P4) doit etre une copie conforme de la machine "cliente" (ton duron) ...

2-dans les FEATURES du  make.conf du P4 : buildpkg tu sync et compiles exclusivement sur le p4

-3 tu montes le /usr/potage de ton P4 sur le duron (en nfs ou ssh )

4  il te suffit ensuite de mettre le -K (--usepkgonly) dans ton emerge ou dans ton make.conf sur le duron (pas besoin de spécifier de  bin host si tu modifies pas les chemins de portage par défaut) 

voilà le principe... tu peux ensuite alléger les commande de ton chroot en créant des alias pour chrooter dans ton bashrc, automatiser les montages en ssh ou nfs de /usr/portage ds le fstab de ton duron,etc....

Espérant que ça réponde à tes questions...

----------

## destroyedlolo

Ok, merci.

mais d'apres ce que j'ai compris de la doc, specifie le hosts m'evite de devoir monter un FS non ? (il risque d'avoir plusieurs machines clientes).

Maintenant, l'autre questions qui me vient a l'esprit c'est ... comment vont se passer les maj. Pour le P4, je vois bien mais quelles commandes dois-je lancer sur le Duron ?

----------

## gglaboussole

Ben en fait c'est très simple... tu installes dans ton chroot sur le P4 une gentoo toute neuve depuis un stage3 adapté au duron avec les options de compil, les CFLAGS, etc..,tout ce qui correspond à ton duron, comme si c'était un duron...

Comme je t'ai dis tu fais emerge --sync dans ton chroot du p4 et tu met à jour dans ton chroot du  p4.

Un fois cela fait il te suffit de monter le /usr/portage sur le /usr/portage de ton duron, pas besoin de "syncé" (il a un portage tout frais puisque en fait c'est celui du chroot !)  et tu lances ton emerge avec les options que tu veux (-K obligatoire qd même puisque tu installes des binaires) sur le duron...et c'est tout !   :Wink: 

Un exemple pour être plus clair, tu veux gimp sur ton duron : tu vas d'abord faire un emerge gimp dans ton chroot du p4, il va donc te le compiler avec toutes les dépendances qu'il faut comme si c'était un duron (puisque le make.conf dans le chroot sera renseigné comme il faut hein?...) avec la vitesse d'un p4   :Very Happy:  .

ensuite, une fois /usr/portage monté (et peut importe qu'il y ait 1 ou 36 machines) sur le duron un simple emerge -K gimp t'installera gimp et ses dépendances en binaires, fraichement compilés depuis le p4...

----------

## boozo

'alute

je me permets juste une petite précision (ou complément devrais-je écrire) : comme décrit par gglaboussole, via le bind, l'arbre des ports gentoo est le même sur le P4, le chroot "du duron", le Duron lui-même. Mais en revanche pour produire les binaires dans le chroot "du duron", il me semble plus prudent de customiser le point de stockage dans son make.conf propre afin de ne pas se mélanger les pinceaux avec ceux produits sur et pour ton P4   :Wink: 

----------

## gglaboussole

effectivement...

C'est que moi je ne produit jamais de binaires pour mon i7, et c'est un tort d'ailleurs !!!

Ca m'aurait servi quelques fois ou j'ai pété des éléments importants du système et que j'étais dans l'impossibilité de les recompiler...  :Laughing: 

----------

## boozo

Oui et c'est pour çà que j'en parle même si c'est un peu "ceinture & bretelles" : la feature buildpkg est nécessaire dans le chroot pour le duron mais on peut simplement prendre buildsyspkg sur le P4 vu son utilité potentielle dans certains cas - faut juste pas se mélanger ensuite ; et mettre deux variables différentes dans les make.conf me semble le plus simple  :Wink:  -

(soit il y a toujours la tinderbox en cas de besoin mais bon, c'est pas pour la place ni le temps de compilation que çà prend de faire çà sur @system qu'il faut s'en priver à mon avis)

----------

## destroyedlolo

Bonjour et merci pour vos explications qui sont limpides mais ce n'est pas forcement une solution qui irait dans mon cas.

Je m'explique : mon but est d'utiliser des vieux portables recuperes du taf qui sont des 486, des PI et  des PII pour faire de la domotique. Des machines au top niveau rapidite comme vous pouvez le voir ... donc c'est pourquoi je fais mes armes sur le Duron qui est un peu plus rapide   :Wink: 

Donc en clair, j'aurai minimum 3 archis différentes (pis lorsque je maitriserai Gentoo, je ferai passer mon server de Dev a base d'Atlhon et ma prod a base Celeron ... ben ouai, ce n'est que de la recup mais a nouveau 2 architectures de plus).

Donc :

 *gglaboussole wrote:*   

> Ben en fait c'est très simple... tu installes dans ton chroot sur le P4 une gentoo toute neuve depuis un stage3 adapté au duron avec les options de compil, les CFLAGS, etc..,tout ce qui correspond à ton duron, comme si c'était un duron...

 

va me faire installer au moins 4 fois un systeme complet sur le P4 !

Donc apres avoir (essaye) de comprendre le man d'emerge, de make.conf et des packages binaires, et avoir parcouru le handbook sur les cross compilation, je me disais d'installer uniquement 3 portages distincts, avec les make.conf associes, et de passer de l'un a l'autre grace a PORTAGE_CONFIGROOT ou --config-root.

Pour les charger sur les clients, je passerai par PORTAGE_BINHOST ... sauf que je n'ai pas compris comment lui indiquer comment taper sur un portage ou un autre   :Confused:  En clair, s'ils sont stoques dans /data/portages/486, PI et PII, que dois-je mettre dans cette variable ?

Pis PORTAGE_BINHOST_HEADER_URI m'est totalement obscure. En ai-je besoin ????

----------

## xaviermiller

Non, tu n'as besoin que d'une installation en "generic" i686. Mets comme CFLAGS "-march=generic" et ça compilera pour i686.

Tu génères les paquets binaires avec ton Duron, et les utilise sur les autres machines.

Si elles sont VRAIMENT trop lentes pour déployer les paquets, crée un chroot dans ton Duron, et tar / untar ce chroot.

----------

