Sat Nov 18 18:09:48 2017 UTC

Mise en place d'un serveur de compilation

Introduction

[Important] [Important] [Important] [Important] Cet article s'adresse à un public qui maîtrise parfaitement sa NuTyX et la construction de binaires.
Toutes les manipulations DOIVENT se faire dans un MÊME terminal. Ne pas utiliser plus d'un terminal

Les étapes

On va:

  1. Installer les outils.
  2. Choisir la collection en spécifiant les bonnes variables.
  3. Mettre en place le dossier utilisateur.
  4. Récupérer les recettes depuis le projet git.
  5. Mettre en place les dossiers pour le script de compilation.
  6. Récupérer les binaires disponibles depuis le serveur de dépot.
  7. Mettre en place le fichier de configuration /etc/fstab.
  8. Et enfin lancer le script.

Les outils (paquets à installer)

On part du principe que votre NuTyX est vierge de tout paquet de développement. On commence donc par installer les utilitaires:

get rsync git

Configuration de l'architecture

La première variable pour notre travail définit l'architecture (32 ou 64 Bits):

ARCH=`uname -m`

Choix de la version

Les paquets de NuTyX sont disponibles dans 3 versions. Une fois votre choix fait, copiez-collez les variables définies dans la dernière colonne.

Liste des version disponibles, copiez-collez les variables en fonction de votre choix:
stable stable
VERSION=stable
BRANCH=stable
current current
VERSION=current
BRANCH=current
development master
VERSION=development
BRANCH=master

Structure des projets disponibles

Choisissez la collection et le projet que vous souhaitez travailler. Une fois votre choix fait, copiez-collez les variables définies dans la dernière colonne.

Liste des collections disponibles par projet, copiez-collez les variables en fonction de votre choix:
base base-sysV
PROJECT=base-sysV
COLLECTION=base
RSYNC=(base)
cli core
PROJECT=core
COLLECTION=cli
RSYNC=(base cli)
gui core
PROJECT=core
COLLECTION=gui
RSYNC=(base cli gui)
cli-extra extra
PROJECT=extra
COLLECTION=cli-extra
RSYNC=(base cli cli-extra)
gui-extra extra
PROJECT=extra
COLLECTION=gui-extra
RSYNC=(base cli gui cli-extra gui-extra)
mate et mate-extra mate
PROJECT=mate
COLLECTION=mate
RSYNC=(base cli gui mate mate-extra)
gnome et gnome-extra gnome
PROJECT=gnome
COLLECTION=gnome
RSYNC=(base cli gui gnome gnome-extra)
xfce4 et xfce4-extra xfce4
PROJECT=xfce4
COLLECTION=xfce4
RSYNC=(base cli gui xfce4 xfce4-extra)
kde5 et kde5-extra kde5
PROJECT=kde5
COLLECTION=kde5
RSYNC=(base cli gui kde5 kde5-extra)
nonfree nonfree
PROJECT=nonfree
COLLECTION=nonfree
RSYNC=(base cli gui nonfree)

Le dossier git utilisateur à créer

La mise en place d'un serveur de compilation demande beaucoup d'espace disque.

Il faut prévoir un bon 10 Gb pour être tranquille.

Tous les dossiers nécessaires pour la compilation se trouvent sous:

/srv/www/
et
/home/$USER/git/$VERSION

Les recettes se trouvent dans son dossier personnel.

On peut maintenant créer le dossier necessaire, sous son propre compte:

 mkdir -pv /home/$USER/git/$VERSION
mkdir: created directory '/home/moi/git'
mkdir: created directory '/home/moi/git/current'

Récupération des ports de "$COLLECTION" depuis le projet git

On récupère les ports de la collection $COLLECTION pour la compilation:

git clone -b $BRANCH https://github.com/NuTyX/$PROJECT.git ~/git/$VERSION/$PROJECT

On crée maintenant les dossiers nécessaires pour le script:

sudo mkdir -pv \
/srv/www/{logs/$ARCH/$VERSION/$COLLECTION,$ARCH/$VERSION/$COLLECTION,sources}

Récupération des collections définies dans la variable $RSYNC

Cette commande peut prendre un certain temps si votre connection internet n'est pas très rapide:

[Note] Tapez cette commande à chaque fois que vous souhaitez mettre à jour votre copie des collections définies par la variable $RSYNC dans leur état originale.
for i in ${RSYNC[@]}
do
  sudo rsync -av --delete rsync://downloads.nutyx.org/nutyx/$ARCH/$VERSION/$i/ \
  /srv/www/$ARCH/$VERSION/$i/
done

Le fichier de configuration /etc/fstab

Nous devons adapter 1 fichier de configuration:
sudo echo "
#    PROJECT $PROJECT
##   COLLECTION $COLLECTION
###  VERSION $VERSION
#### GIT
/home/$USER/git/$VERSION/$PROJECT \
/$VERSION/$COLLECTION/root/$PROJECT none noauto,bind" \
| sudo tee --append /etc/fstab

Finalisation et manipulations à reproduire

Vous êtes enfin prêt pour travailler avec le script de compilation. La commande ci-dessous est à reproduire:

  • La première fois.
  • Quand vous cassez votre chroot et donc par conséquent vos binaires.
  • Quand vous souhaitez revenir sur les collections originales.
for i in ${RSYNC[@]}
do
  sudo rsync -av --delete rsync://downloads.nutyx.org/nutyx/$ARCH/$VERSION/$i/ \
  /srv/www/$ARCH/$VERSION/$i/
done

Lancement du script

Si vous avez bien suivi ce tutoriel, vous pouvez maintenant lancer la compilation de l'ensemble des ports du projet $PROJECT:

sudo ROOTMOUNT=/srv/www build-collection /$VERSION/$COLLECTION
CHROOT: <your collection>
COLLECTION: <your collection>
VERSION: <your version>
The command: KERNEL=NONE LFS=/<your version>/<your collection> DEPOT=/DEPOT install-nutyx
DEVEL: cards.devel &&
cd /root/<your collection> &&
bash scripts/<your collection> -a &&
bash scripts/<your collection>-extra -a  OK ? (y)
y