Fri Sep 15 17:43:30 2017 UTC

Scénario D

Introduction

Vous souhaitez utiliser les binaires disponibles des collections base, cli, cli-extra, gui et gui-extra.

Vos nouvelles recettes doivent utiliser les dépendances provenant des binaires existants.

Ce scénario est un peu long à mettre en oeuvre mais une fois tout en place, l'ajout de paquets personnels se fait très rapidement.

Le fichier /etc/cards.conf

Un dossier contenant mes recettes personnelles est ajouté, ce dossier ainsi que les collections ne doivent jamais être mis à jour par la commande cards sync. On ne spécifie donc aucune URL.

Seule la collection base doit rester active le temps de récupérer la commande rsync si pas encore installée.

Le dossier contenant les logs de compilation est défini.

Je n'ai pas besoin de spécifier les locales, elles seront toujours toutes installées.

Les dossiers définissant le système de base, en cas de retour à un système de base sont définis.

Le contenu typique de votre fichier /etc/cards.conf pour le scénario D:

dir /srv/www/nutyx/x86_64/personnel
dir /srv/www/nutyx/x86_64/stable/gui
dir /srv/www/nutyx/x86_64/stable/cli
dir /srv/www/nutyx/x86_64/stable/base|http://downloads.nutyx.org
logdir /var/log/pkgbuild
base /srv/www/nutyx/x86_64/stable/base
base /srv/www/nutyx/x86_64/aconserver

Installation des outils de développement

On peut maintenant commencer par installer les outils de développement, cad compilateur, librairies C et C++ etc.

get cards.devel

On peut maintenant supprimer les lignes pointant sur l'url du miroir de NuTyX pour déactiver définitivement la commande cards sync.

Le nouveau fichier /etc/cards.conf:

dir /srv/www/nutyx/personnel
dir /srv/www/nutyx/x86_64/stable/gui
dir /srv/www/nutyx/x86_64/stable/cli
dir /srv/www/nutyx/x86_64/stable/base
logdir /var/log/pkgbuild
base /srv/www/nutyx/x86_64/stable/base
base /srv/www/nutyx/aconserver

Synchronisation des binaires via rsync

Cette opération consiste à rapatrier les paquets contenus dans les collections base, cli et gui disponibles en binaires. Elle peut durer entre quelques minutes et quelques heures en fonction de votre connection.

Heureusement, cette opération n'est longue que la première fois Laughing Laughing Laughing.

Notez bien le dossier de destination, j'ai choisi de "déposer" les binaires à la racine du serveur http. Tongue out

Il faut commencer par créer les dossiers.

sudo mkdir -p /srv/www/nutyx/x86_64/stable/{personnel,aconserver}

On peut maintenant synchroniser l'ensemble des binaires:

for i in base cli gui; do sudo rsync -avz --delete-after rsync://downloads.nutyx.org/nutyx/x86_64/stable/$i/ \
/srv/www/nutyx/x86_64/stable/$i/;done

Allez peut-être boire un café, manger une pizza ou un bon paquet de frites Laughing, ça peut-être long...

Le fichier /etc/pkgmk.conf

Pour ce scénario, il est indispensable de vérifier toutes les variables nécéssaires pour le bon fonctionnement du duo pkgmk/cards.

Mon processeur est un double coeur et je suis en 64bits.

Les sources sont stockées dans un dossier commun, je ne souhaite pas qu'elles soient effacées. Pour ne pas polluer ni perdre le travail effectué lors d'un: for i in base cli gui; do sudo rsync -avz --delete-after rsync://downloads.nutyx.org/nutyx/8.0/x86_64/$i /srv/www/nutyx/x86_64/$i;done, je préfère utiliser un dossier de travail temporaire:

PKGMK_SOURCE_DIR="/srv/www/sources"
PKGMK_KEEP_SOURCES="yes"
PKGMK_WORK_DIR="/tmp/work"

Dans ce scénario, je souhaite que les dépendances soient installées mais non compilées. J'ai besoin du fichier .PKGREPO généré dans le dossier du port. Je souhaite pouvoir utiliser la commande cards install ou get pour pouvoir réinstaller mes binaires disponibles. La commande pkgmk doit donc générer le .PKGREPO de ma collection personnelle.

PKGMK_IGNORE_REPO="no"
PKGMK_IGNORE_COLLECTION="no"

Puisque les dépendances proviennent des binaires existants et que ces binaires sont splités. Il est préférable de conserver cette fonctionnalité pour les paquets personnels. Les locales produites seront les 11 locales produites par défaut.

PKGMK_GROUPS=(devel man doc service)
PKGMK_LOCALES=(fr de it es nl pt da nn sv fi)

Les binaires produits seront dans le même format de compression que les binaires officiels, même si ce n'est pas une obligation, on veut garder une certaine cohérence entre les binaires. Je ne souhaite pas supprimer mes binaires produits une fois installés.

PKGMK_COMPRESS_PACKAGE="yes"
PKGMK_COMPRESSION_MODE="xz"
PKGMK_CLEAN="no"

Voici à quoi peut ressembler votre fichier /etc/pkgmk.conf pour le scénario D:

export CFLAGS="-O2 -pipe"
export CXXFLAGS="${CFLAGS}"
case ${PKGMK_ARCH} in
    "x86_64"|"")
       export MAKEFLAGS="-j2"
       ;;
    "i686")
       export CFLAGS="${CFLAGS} -m32"
       export CXXFLAGS="${CXXFLAGS} -m32"
       export LDFLAGS="${LDFLAGS} -m32"
       ;;
    *)
       echo "Unknown architecture selected! Exiting."
       exit 1
       ;;
esac
PKGMK_SOURCE_DIR="/srv/www/sources"
PKGMK_KEEP_SOURCES="yes"
PKGMK_WORK_DIR="/tmp/work"
PKGMK_IGNORE_REPO="no"
PKGMK_IGNORE_COLLECTION="no"
PKGMK_GROUPS=(devel man doc service)
PKGMK_LOCALES=(fr de it es nl pt da nn sv fi)
PKGMK_COMPRESS_PACKAGE="yes"
PKGMK_COMPRESSION_MODE="xz"
PKGMK_CLEAN="no"

Conclusion

Pour ce scénario, les commandes à retenir sont:

cards level
cards base -r
cards create
for i in base cli gui;do rsync -avz --delete-after rsync://downloads.nutyx.org/nutyx/x86_64/stable/$i/ \
/srv/www/nutyx/x86_64/stable/$i/;done