Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
openbsd:bulk_build [2008/09/17 14:58]
gast0n created
openbsd:bulk_build [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Des fois, comme par miracle, une box avec plein de cycles cpu inutilisés vous tombe sur les bras, elle est déja rackée et idle gentiment. Bah, pourquoi pas lui faire builder des ports en continu ?
  
 +  * ca permet de remonter des erreurs (particulièrement si !i386), des MASTER_SITES qui ont disparu, des dépendances foireuses, etc..
 +  * ca permet aussi d'​avoir à dispo des packages (non officiels du coup) quand on trouve que les officiels sont trop en retard avec le snapshots courant (aka "si t'es pas content, do it yourself asshole"​)
 +  * ca permet de tester des diffs qui impactent plein de ports (genre une update majeure de gtk, de qt, de gettext..)
 +  * ca aide au réchauffement climatique
 +  * obiwan kenobi
 +
 +Pour ca quelques détails :
 +  * avoir de la place dans ''/​usr/​ports''​ et ''/​usr/​obj''​ (utiliser un ''/​usr/​obj''​ d'1Go en mfs est une mauvaise idée, il finira par être plein)
 +  * remplir ''/​usr/​ports/​infrastructure/​db/​hosts-`arch -s`''​ avec le hostname de la machine (ou plusieurs box si on est immensément riche/​chanceux). On devra pouvoir accéder aux boxes via clef ssh sans passphrase à partir de la machine maitre, et évidemment elles doivent partager ''/​usr/​ports''​ par nfs.
 +  * upgrader vers le dernier snapshot
 +  * updater /​usr/​ports ​
 +  * avoir un mk.conf correct
 +<​code>​
 +SUDO=/​usr/​bin/​sudo -E                                    ​
 +USE_SYSTRACE=Yes
 +CDIAGFLAGS=-Wall
 +WARNINGS=Yes
 +PLIST_DB=/​usr/​ports/​plistdb
 +WRKOBJDIR=/​usr/​obj/​ports
 +</​code>​
 +  * avoir sudo configuré sans mot de passe pour son user (+ user dans les groupes wsrc/wheel, ainsi que ''​chmod -R g+w /​usr/​ports''​ et ''​chgrp -R wsrc /​usr/​ports''​)
 +  * avoir du temps, et screen.
 +<​code>​
 +screen (what else)
 +mkdir -p /​usr/​ports/​logs/​`arch -s` # on crée le répertoire de logs
 +cd /usr/ports
 +./​infrastructure/​build/​dpb 2>&1 | tee bulkbuild.log
 +</​code>​
 +Et voilaaa.. reste plus qu'a attendre (10j pour un xserve g4 ppc, 1j pour un quad-core jackytuné) ...
 +On peut suivre l'​avancement avec ls -1 /​usr/​ports/​logs/​`arch -s` | wc -l.
 +dpb va tout d'​abord faire une liste de tout les ports avec leurs dépendances,​ puis distribuer les compilations via ssh sur les différentes machines.
 +
 +Et évidemment a la fin les packages sont dans ''/​usr/​ports/​packages/​`arch -s`/''​ .. reste plus qu'a configurer ftpd. Et nettoyer ''/​usr/​obj''​. Et désinstaller les 1200 packages qui ont été installés au passage pour builder tout ca. Hint: ''​rm -Rf /usr/local /​var/​db/​pkg''​ pour les bourrins, ''​cd /var/db/pkg && pkg_delete `ls -1`''​ pour ceux qui sont plus propres. Ca permet de voir si des ports laissent des trucs derrière eux quand on les désinstalle..
 +
 +Si on ne veut pas utiliser dpb (faut dire que c'est trop simple), la commande suivante devrait faire pareil:
 +<​code>​
 +cd /usr/ports
 +make package BULK=Yes BATCH=Yes REPORT_PROBLEM=true 2>&1 | /​usr/​ports/​infrastructure/​build/​portslogger /​usr/​ports/​logs/​`arch -s`
 +</​code>​
 +
 +thx ajacoutot pour les conseils au passage..
openbsd/bulk_build.txt · Last modified: 2010/01/12 13:29 (external edit)