6.3. Ncurses-6.4-20230520

Le paquet Ncurses contient les bibliothèques pour gérer les écrans type caractère indépendamment des terminaux.

Temps de construction approximatif: 0,3 SBU
Espace disque requis: 51 Mo

6.3.1. Installation de Ncurses

Tout d'abord, assurez-vous que gawk est trouvé pendant la configuration :

sed -i s/mawk// configure

Ensuite, lancez les commandes suivantes pour construire le programme « tic » sur l'hôte :

mkdir build
pushd build
  ../configure
  make -C include
  make -C progs tic
popd

Préparez la compilation de Ncurses :

./configure --prefix=/usr                \
            --host=$LFS_TGT              \
            --build=$(./config.guess)    \
            --mandir=/usr/share/man      \
            --with-manpage-format=normal \
            --with-shared                \
            --without-normal             \
            --with-cxx-shared            \
            --without-debug              \
            --without-ada                \
            --disable-stripping          \
            --enable-widec

Voici la signification des nouvelles options de configure :

--with-manpage-format=normal

Cela évite que Ncurses n'installe les pages de manuel compressées, ce qui peut arriver si la distribution hôte elle-même a des pages de manuel compressées.

--with-shared

Cette option fait construire et installer les bibliothèques C partagées de Ncurses.

--without-normal

Cette option empêche Ncurses de construire et d'installer les bibliothèques C statiques.

--without-debug

Cette option empêche Ncurses de construire et d'installer les bibliothèques de débogage.

--with-cxx-shared

Cela fait construire et installer les liaisons C++ partagées de Ncurses. Cela l'empêche également de construire et d'installer les liaisons C++ statiques.

--without-ada

Cela s'assure que Ncurses ne construise pas la prise en charge du compilateur Ada qui peut être présent sur l'hôte mais qui ne sera pas disponible une fois dans l'environnement chroot.

--disable-stripping

Ce paramètre évite que le système de construction n'utilise le programme strip de l'hôte. L'utilisation des outils hôtes sur les programmes compilés de manière croisée peut causer des échecs.

--enable-widec

Cette option amène les bibliothèques « wide-character » (comme libncursesw.so.6.4-20230520) à être compilées au lieu des bibliothèques normales (comme libncurses.so.6.4-20230520). Ces bibliothèques « wide-character » sont utilisables à la fois en locales multibyte et 8-bit traditionnelles, alors que les bibliothèques normales ne fonctionnent correctement que dans les locales 8-bit. Les bibliothèques « Wide-character » et normales sont compatibles entre leurs sources mais pas entre leurs binaires.

Compilez le paquet :

make

Installez le paquet :

make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
    -i $LFS/usr/include/curses.h

Voici la signification des options d'installation :

TIC_PATH=$(pwd)/build/progs/tic

Nous devons passer le chemin du tic tout juste construit qui peut être lancé sur la machine de construction, pour pouvoir créer la base de données de terminaux sans erreur.

ln -sv libncursesw.so $LFS/usr/lib/libncurses.so

La bibliothèque libncurses.so est requise par quelques paquets que nous allons bientôt construire. Nous créons ce lien symbolique pour utiliser libncursesw.so à la place.

sed -e 's/^#if.*XOPEN.*$/#if 1/' ...

Le fichier d'en-tête curses.h contient les définitions de plusieurs structures de données de Ncurses. À cause des différentes définitions de macro du préprocesseur, deux ensembles de définitions de structures de données peuvent être utilisées : la définition 8-bits est compatible avec libncurses.so et la définition wide-character est compatible avec libncursesw.so. Comme nous utilisons libncursesw.so en remplacement de libncurses.so, modifiez le fichier d'en-tête pour qu'il utilise toujours le définition de la structure de données wide-character compatible avec libncursesw.so.

Les détails sur ce paquet sont disponibles dans Section 8.29.2, « Contenu de Ncurses. »