Constructions de KDE Frameworks 5 (KF5)

KDE Frameworks 5 est une collection de bibliothèques basée sur Qt5 et dérivée de QML depuis les bibliothèques monolithiques de KDE 4. Elles peuvent être utilisées indépendamment de l'environnement d'affichage KDE (Plasma 5).

Ce paquet est connu pour se construire correctement sur une plateforme LFS-9.1.

Les instructions suivantes construisent tous les paquets de KDE Frameworks en une étape en utilisant un script bash.

Informations sur le paquet

Dépendances de KF5

Requises

Boost-1.73.0, extra-cmake-modules-5.70.0, docbook-xml-4.5, docbook-xsl-1.79.2, giflib-5.2.1, libepoxy-1.5.4, libgcrypt-1.8.6, libjpeg-turbo-2.0.5, libpng-1.6.37, libxslt-1.1.34, lmdb-0.9.24, phonon-4.11.1, shared-mime-info-2.0, URI-1.76 et Wget-1.20.3 (requis pour télécharger les paquets)

Recommandées

Facultatives

BlueZ-5.54 (requis pour construire Bluez-Qt), ModemManager-1.14.0 (requis pour construire ModemManager-Qt)

Dépendance à l'exécution de FrameworkIntegration

Oxygen fonts et Noto fonts

Dépendances à l'exécution de kapidox

Doxygen-1.8.18, Jinja2-2.11.2 et PyYAML-5.3.1

Support des formats d'images supplémentaires dans KImageFormats

JasPer-2.0.14 et OpenEXR

Dépendances facultatives de KIO

MIT Kerberos V5-1.18.2

Dépendances facultatives pour Solid

UDisks-2.9.0, UPower-0.99.11 et media-player-info (exécution)

Dépendance facultative pour KWallet

gpgmepp

Moteurs de dictionnaires facultatifs pour Sonnet

Hspell et Hunspell

Dépendances à l'exécution de Prison

Datamatrix et QRencode

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/kf5

Téléchargement de KDE Frameworks

La façon la plus facile d'obtenir les paquets de KDE Frameworks est d'utiliser wget pour les récupérer tous en une fois :

url=http://download.kde.org/stable/frameworks/5.70/
wget -r -nH -nd -A '*.xz' -np $url

The options used here are:
  -r            recurse through child directories
  -nH           disable generation of host-prefixed directories
  -nd           do not create a hierarchy of directories 
  -A '*.xz'     just get the *.xz files
  -np           don't get parent directories

Initialisation de l'ordre des paquets

L'ordre de constructions des fichiers est importants à cause de dépendances internes. Créez la liste des fichiers dans le bon ordre comme suit :

cat > frameworks-5.70.0.md5 << "EOF"
0662c42c9956ff85d5677d01b2be54ed  attica-5.70.0.tar.xz
#fa9d2abfdb2b1679787f3e695591eec3  extra-cmake-modules-5.70.0.tar.xz
4529cd343c8405a3c3125db10805740e  kapidox-5.70.0.tar.xz
5c759116a6fd6e9ccb760c8c7668f4be  karchive-5.70.0.tar.xz
2220c9c8f58d5fd2202ff1f11cb40d8e  kcodecs-5.70.0.tar.xz
8403c9c5cbbb8c96bec4cea4ce6bc764  kconfig-5.70.0.tar.xz
1a7001a1cacf0fdd96f0ac882c071503  kcoreaddons-5.70.0.tar.xz
0c875564917a3769ecb8695cdd87dfa6  kdbusaddons-5.70.0.tar.xz
2bd111b8aa228fcaed274f2de4d9d7d7  kdnssd-5.70.0.tar.xz
922b5bf6520a0f551f3a24fc44736017  kguiaddons-5.70.0.tar.xz
38fa408218a40d0c8d7d73d22bb8c74c  ki18n-5.70.0.tar.xz
754083ef1afac1c1d280ad9beff262c8  kidletime-5.70.0.tar.xz
c1d393754324f1654332ffd15bf0a04b  kimageformats-5.70.0.tar.xz
fb178ef04b48741b3a56a3eb9a464a88  kitemmodels-5.70.0.tar.xz
cc5e9c1716a816d8f18c8ceaf5995afa  kitemviews-5.70.0.tar.xz
c7a41b3eaabebcf33a0525b90daca561  kplotting-5.70.0.tar.xz
c9af5d1b21cb57fd882420f04e7bfb24  kwidgetsaddons-5.70.0.tar.xz
afe3c023d1ebd1f2cd1b48ad1bb77046  kwindowsystem-5.70.0.tar.xz
a8a8954d3cbb2721531e7c38ae9b92c0  networkmanager-qt-5.70.0.tar.xz
8389e1ecfb9eace6af471a6fdfc249e8  solid-5.70.0.tar.xz
3d9d72f36bb135b8de91497734c1a08e  sonnet-5.70.0.tar.xz
01ba09be43c32826cebdaab01ba257e1  threadweaver-5.70.0.tar.xz
4561d348d12a5be34c3b1c96ee1303e3  kauth-5.70.0.tar.xz
c97543ad15f56a355640abd3535974ce  kcompletion-5.70.0.tar.xz
8d013cac0a0d57417d3b69188700a4b8  kcrash-5.70.0.tar.xz
68ee037e6ab6c7956c4c988a629fd606  kdoctools-5.70.0.tar.xz
5421e4cf962aad7ff75dd2ab3ba8c588  kpty-5.70.0.tar.xz
3465dcb86a7d5247b2fc6504dc59f345  kunitconversion-5.70.0.tar.xz
3e1bddd47524d52b416a5f82c787eba9  kconfigwidgets-5.70.0.tar.xz
27fcd57a9d763f34b185052743795903  kservice-5.70.0.tar.xz
a2cbcb92d8afc66f9d398feaa5ef4fcc  kglobalaccel-5.70.0.tar.xz
428f94a21061feca57feff45af819d33  kpackage-5.70.0.tar.xz
6f9a92bf3d2cbe26c67f74a8357040b2  kdesu-5.70.0.tar.xz
44dfe3d667259135dd076072c26ad569  kemoticons-5.70.0.tar.xz
1f98c26216b7ef6507d16815a69ffec2  kiconthemes-5.70.0.tar.xz
6dbdea28bc66853bfebf11e8b0c882f4  kjobwidgets-5.70.0.tar.xz
dfb0042a3663fe09cc013490e4a63860  knotifications-5.70.0.tar.xz
d00a98ef67a05c7848b755c95ccbc062  ktextwidgets-5.70.0.tar.xz
c0c0eb42c6df61c56006dbda64674b98  kxmlgui-5.70.0.tar.xz
179a9b158eeb5e39eaa17c6bce86e1ff  kbookmarks-5.70.0.tar.xz
33a1dc6ab1be41fac3e81f6cb472a069  kwallet-5.70.0.tar.xz
ea2f82e35ee5cb1672b4acecdd5a2166  kio-5.70.1.tar.xz
e16156acbe112f2b8fbfa3bc1a475517  kdeclarative-5.70.0.tar.xz
1fe4198573ec914521b8fefee112db09  kcmutils-5.70.0.tar.xz
f47f6e6e8df0fcd14cd0d4da8d13c387  kirigami2-5.70.0.tar.xz
ddbb73118bfd298a0f0cf6229a8ea3e8  knewstuff-5.70.0.tar.xz
2d48b0b982c85a00dd668ce9a759b762  frameworkintegration-5.70.0.tar.xz
e23ae6b5edc1eab71bc9efb0e4478579  kinit-5.70.0.tar.xz
8094d4e3d2f4c4de15fc43a90745fec3  knotifyconfig-5.70.0.tar.xz
43786f6a1e6629d85eddfdebba5d5779  kparts-5.70.0.tar.xz
2210df63319591f07161603856c05a89  kactivities-5.70.0.tar.xz
de3b5bcc752bdccbb380e79e1bef9749  kded-5.70.0.tar.xz
#62137f9ac20b3ae834f9db364a8fc883  kdewebkit-5.70.0.tar.xz
79483ab26b782ead8d9937e055c5ab80  syntax-highlighting-5.70.0.tar.xz
f761f1b7876cecfc12cdb09c58a7cab2  ktexteditor-5.70.1.tar.xz
eda29268e2fcc487f9b5327f50b2a6a1  kdesignerplugin-5.70.0.tar.xz
a5bd12d4f453e7fa2873887f8b67ed24  kwayland-5.70.0.tar.xz
7c34a86d46a9579e3222a233de2deaee  plasma-framework-5.70.1.tar.xz
#93e77e5e267c588e1a9c02cef7b66344  modemmanager-qt-5.70.0.tar.xz
4928a1fb4f30033cfc773f7788469113  kpeople-5.70.0.tar.xz
b1e8cf4271ff15c2405ea53a1ad96770  kxmlrpcclient-5.70.0.tar.xz
1e4ed6723f2f4e26272a930be175b43f  bluez-qt-5.70.0.tar.xz
ec4f5d2b42c7681b8394a651f036d02c  kfilemetadata-5.70.0.tar.xz
d2e58f6ff05939c017f9f609bcd88bba  baloo-5.70.0.tar.xz
#3bb6310b57e2bec3c3703b8ecdda8c4e  breeze-icons-5.70.0.tar.xz
#7514480df86969c3a688317c7d8d57c3  oxygen-icons5-5.70.0.tar.xz
dc3f2f6e3c3da0c7dfcbbdab80bf4525  kactivities-stats-5.70.0.tar.xz
5fccfd29b83eec47982420fc8d96a608  krunner-5.70.0.tar.xz
#179e9c8572d45c1c4fa1c22d3329aa6e  prison-5.70.0.tar.xz
7e620abb50e6a65ae0aba63d7965246e  qqc2-desktop-style-5.70.0.tar.xz
5da6b3606f188b628df1e46fa04c2617  kjs-5.70.0.tar.xz
aabe7800a7c8add84efd8344b7582ffb  kdelibs4support-5.70.0.tar.xz
1428874c22d8af52caeffb67bf3a92c1  khtml-5.70.0.tar.xz
4bba2510b573812de49bccc2ee447cad  kjsembed-5.70.0.tar.xz
f277b1426f982845eb3c5ebc42c15b48  kmediaplayer-5.70.0.tar.xz
6d619e298ac3a8b8d6b30a5020b2c128  kross-5.70.0.tar.xz
c0ba868390673010348f72679b1f7e46  kholidays-5.70.0.tar.xz
18a5eb19df6992fe3f66767ce2ed7029  purpose-5.70.0.tar.xz
894e8902c34abebaf49c1a92d0d53011  syndication-5.70.0.tar.xz
87160c7e63e09d84576fa1a95758676a  kcalendarcore-5.70.0.tar.xz
fddabbc040e37213bca9b51870e5ce6d  kcontacts-5.70.0.tar.xz
e0cf77affa32c3301efc93c84ffa5d28  kquickcharts-5.70.0.tar.xz
EOF

Dans la liste précédente, notez que certains fichiers sont commentés avec un caractère dièse (#). L'entrée extra-cmake-modules est commentée car elle est construite plus tôt dans Introduction à KDE. Les paquets d'icônes sont traités séparément dans breeze-icons-5.70.0 et oxygen-icons5-5.70.0. Le paquet modemmanager-qt peut être construit si ses dépendances facultatives sont installées. Le paquet prison (lecteur de codes barres) peut être construit si les bibliothèques externes requises sont installées. Kdewebkit peut être construit si le paquet externe QtWebkit a été construit.

Installation de KDE Frameworks

[Note]

Note

Pour l'installation de paquets multiples dans un script, les installations doivent être faites en tant qu'utilisateur root. Il y a trois options générales qui peuvent être utilisées pour faire cela :

  1. Lancer le script entièrement en tant qu'utilisateur root (pas recommandé).

  2. Use the sudo command from the Sudo-1.9.2 package.

  3. Use su -c "command arguments" (guillemet requis) qui demandera le mot de passe root à chaque itération de la boucle.

Une façon de gérer cette situation est de créer une petite fonction bash qui sélectionne automatiquement la méthode appropriée. Une fois que la commande est initialisée dans l'environnement, il n'est plus nécessaire de le refaire.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}
export -f as_root
[Attention]

Attention

Si vous installez dans /opt et qu'il existe déjà un répertoire /opt/kf5 soit en tant que répertoire normal, soit en tant que lien symbolique, il devrait être supprimé (en tant que root) :

mv -v /opt/kf5 /opt/kf5.old                         &&
install -v -dm755           $KF5_PREFIX/{etc,share} &&
ln -sfv /etc/dbus-1         $KF5_PREFIX/etc         &&
ln -sfv /usr/share/dbus-1   $KF5_PREFIX/share

Pour commencer, démarrez un sous-shell qui sortira en cas d'erreur :

bash -e

Installez tous les paquets en lançant les commandes suivantes :


while read -r line; do

    # Get the file name, ignoring comments and blank lines
    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
    file=$(echo $line | cut -d" " -f2)

    pkg=$(echo $file|sed 's|^.*/||')          # Remove directory
    packagedir=$(echo $pkg|sed 's|\.tar.*||') # Package directory

    name=$(echo $pkg|sed 's|-5.*$||') # Isolate package name

    tar -xf $file
    pushd $packagedir

      case $name in
        kitemviews*) sed -i '/<QList>/a #include <QPersistentModelIndex>' \
          src/kwidgetitemdelegatepool_p.h ;;
        kplotting*) sed -i '/<QHash>/a #include <QHelpEvent>' \
          src/kplotwidget.cpp ;;
        knotifica*) sed -i '/<QUrl>/a #include <QVariant>' \
          src/knotification.h ;;
        kcompleti*) sed -i '/<QClipboard>/a #include <QKeyEvent>' \
          src/klineedit.cpp ;;
        kwayland*) sed -i '/<wayland-xdg-output-server-proto/a #include <QHash>' \
          src/server/xdgoutput_interface.cpp ;;
      esac  

      mkdir build
      cd    build

      cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \
            -DCMAKE_PREFIX_PATH=$QT5DIR        \
            -DCMAKE_BUILD_TYPE=Release         \
            -DBUILD_TESTING=OFF                \
            -Wno-dev ..
      make
      as_root make install
    popd

  as_root rm -rf $packagedir
  as_root /sbin/ldconfig

done < frameworks-5.70.0.md5

exit
[Note]

Note

Tous les modules qui auront été oubliés peuvent être installés plus tard en utilisant la même procédure mkdir build; cd build; cmake; make; make install qu'au dessus.

Parfois les chemins d'installation sont codés en dur dans les fichiers installés. Si le répertoire d'installation n'est pas /usr, renommez le répertoire et créez un lien symbolique :

mv -v /opt/kf5 /opt/kf5-5.70.0
ln -sfvn kf5-5.70.0 /opt/kf5

Explication des commandes

case … : ces modifications sont requises pour construire avec Qt-5.15.0.

-DCMAKE_PREFIX_PATH=$QT5DIR : Ce paramètre est utilisé pour permettre à cmake de trouver les bonnes bibliothèques Qt.

-DCMAKE_BUILD_TYPE=Release: Ce paramètre est utilisé pour appliquer le plus haut niveau d'optimisation du compilateur.

-DBUILD_TESTING=OFF : Ce paramètre est utilisé pour empêcher la construction des bibliothèques et des programmes de test qui ne sont pas utiles pour un utilisateur final.

Contenu

Programmes installés: Il y a 48 programmes installés dans /opt/kf5/bin.
Bibliothèques installées: Il y a trop de bibliothèques kf5 (191) pour les lister séparément.
Répertoires installés: /opt/kf5 (lien symbolique vers /opt/kf5-5.70.0)

Descriptions courtes

checkXML5

est un outil pour vérifier les erreurs de syntaxe dans les fichiers DocBook XML de KDE.

depdiagram-generate

est un outil pour générer un diagramme de dépendances.

depdiagram-generate-all

est un outil pour générer un diagramme de dépendance pour tous les frameworks en même temps.

depdiagram-prepare

est un outil pour préparer les fichiers dot.

desktoptojson

est un outil pour convertir un fichier .desktop en fichier .json.

kactivitymanagerd

est le gestionnaire d'activité du bureau KDE Plasma.

kbuildsycoca5

reconstruit le cache des fichiers de configuration système de KService.

kcookiejar5

est une interface en ligne de commandes pour enregistrer les cookies HTTP utilisés par KDE, un service D-BUS pour enregistrer, retrouver, nettoyer les cookies.

kded5

consolide plusieurs petits services en un processus.

kdeinit5

est un lanceur de processus similaire au fameux init utilisé pour le démarrage d'UNIX.

kf5-config

est un programme en ligne de commande utilisé pour retrouver des informations sur l'installation de KDE ou les chemins des utilisateurs.

kf5kross

éxecute des scripts kross écrit en KDE Javascript, Python, Ruby, Java et Falcon.

kgenapidox

est un outil pour générer la documentation API dans un style KDE.

kgendesignerplugin

génère des greffons pour Qt(TM) Designer.

kglobalaccel5

est un démon utilisé pour enregistrer les raccourcis clavier et pour obtenir une notification quand l'action est réalisée.

kjs5

est le moteur KDE ECMAScript/JavaScript.

kjscmd5

est un outil pour lancer les scripts KJSEmbed depuis la ligne de commandes.

kjsconsole

est une console pour kjs5.

kmailservice5

est un service de courriel.

kpackagelauncherqml

est un outil en ligne de commande pour le lancement des applications kpackage QML.

kpackagetool5

est un outil en ligne de commande pour kpackage.

kreadconfig5

est un outil en ligne de commande pour retrouver les valeurs des fichiers de configuration de KDE.

kshell5

démarre des applications via kdeinit.

ktelnetservice5

est un service telnet.

ktrash5

est un programme d'aide pour gérer la poubelle de KDE.

kwalletd5

est le démon de gestion de portefeuille.

kwriteconfig5

est un outil en ligne de commande pour écrire des valeurs dans les fichiers de configuration de KDE.

meinproc5

convertit les fichiers DocBook en HTML.

plasmapkg2

est un outil pour installer, lister et supprimer les paquets Plasma.

preparetips5

est un script pour extraire le texte depuis un fichier d'astuces.

solid-hardware5

est un outil en ligne de commande pour chercher les périphériques disponibles.

Last updated on 2020-05-20 02:18:50 +0000