Passer au contenu principal

code. grind. sleep.

Bulk build partiel de pkgsrc

En suivant l'excellent tip de Mr GuiGui2, j’ai pu monter ma petite archi de bulk build personnelle pour fournir du package tout frais à pkgin.

J’ai donc ajouté le bloc magique suivant à mon /etc/mk.conf, qui permet de gérer la présence de commentaires dans pkgchk.conf :

# bulk build config
DEPENDS_TARGET= bulk-install
BATCH=          yes

BULK_PREREQ+=   pkgtools/lintpkgsrc
.if defined(SPECIFIC_PKGS)
PKGLIST!=               awk '$$1 !~ /^\\#/ {print $$1}' ${PKGCHK_CONF}
.       for _pkg_ in ${PKGLIST}
HOST_SPECIFIC_PKGS+=    ${_pkg_}
.       endfor
.endif

Pour aller plus loin, j’ai automatisé le process au maximum pour lancer des bulk build réguliers par cron, grâce au script [bulk-builder][]. Ce script remplace do-sandbox-build et do-sandbox-upload, il est également capable de gérer des chemins alternatifs, mettre à jour pkgsrc avant de lancer le bulk.

La procédure pour mettre ça en place est donc :

​1. Ajouter le bloc montré plus haut à /etc/mk.conf et y définir PKGCHK_CONF, il s’agit du chemin vers une liste de packages au format \“catetgorie/package\”, un par ligne, qu’on peut automatiquement créer avec pkg_chk -g.

​2. Créer la sandbox :

# cd /usr/pkgsrc/mk/bulk
# sh mksandbox --without-x /usr/sandbox

​3. Créer et configurer /usr/pkgsrc/mk/bulk/build.conf :

# cd /usr/pkgsrc/mk/bulk
# cp build.conf-example build.conf
# vi build.conf

​4. Lancer le bulk build :

# sh bulk-builder -u -R
  • -u demande de cvs up le répertoire /usr/pkgsrc avant de commencer
  • -R demande de ne pas uploader le résultat (les packages)

Enfin, il suffit d’utiliser la ligne suivante pour utiliser les packages avec pkgin, dans /usr/pkg/etc/pkgin/repositories.conf :

file:///usr/pkgsrc/packages/All