Wed May 8 17:39:07 2019 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 2 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:
fixed fixed
VERSION=fixed
BRANCH=fixed
rolling rolling
VERSION=rolling
BRANCH=rolling
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 nutyx-packages
PROJECT=nutyx-packages
COLLECTION=base
RSYNC=(base)
cli nutyx-packages
PROJECT=nutyx-packages
COLLECTION=cli
RSYNC=(base cli)
gui nutyx-packages
PROJECT=nutyx-packages
COLLECTION=gui
RSYNC=(base cli gui)
cli-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=cli-extra
RSYNC=(base cli)
gui-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=gui-extra
RSYNC=(base cli gui)
mate et mate-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=mate
RSYNC=(base cli gui mate mate-extra)
lxde et lxde-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=lxde
RSYNC=(base cli gui lxde lxde-extra)
xfce4 et xfce4-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=xfce4
RSYNC=(base cli gui xfce4 xfce4-extra)
lxqt et lxqt-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=lxqt
RSYNC=(base cli gui lxqt lxqt-extra)
kde5 et kde5-extra nutyx-packages
PROJECT=nutyx-packages
COLLECTION=kde5
RSYNC=(base cli gui kde5 kde5-extra)
nos nutyx-packages
PROJECT=nutyx-packages
COLLECTION=nos
RSYNC=(base cli gui nos)

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/rolling'

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 git://git.tuxfamily.org/gitroot/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 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