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-1.0.

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.74.0, extra-cmake-modules-5.73.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, plasma-wayland-protocols-1.1.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.19, 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.1, 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.73/
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.73.0.md5 << "EOF"
c33040192815708c5f075b1dbd01a2be  attica-5.73.0.tar.xz
#3a3b7489583b9b412ff18316b7ab2912  extra-cmake-modules-5.73.0.tar.xz
342ec19fd7e65cafd3d58220f144ebc8  kapidox-5.73.0.tar.xz
33de1f53ec53e7112396ded8c3306d02  karchive-5.73.0.tar.xz
03107a85b830b212e268f51cf2cbe668  kcodecs-5.73.0.tar.xz
c1d584f109de507e91a357585bccd445  kconfig-5.73.0.tar.xz
f3e0b26a1b63fee56fb74b1bf972aac2  kcoreaddons-5.73.0.tar.xz
f6668c75a63f2b62997bde8c644244d0  kdbusaddons-5.73.0.tar.xz
756b06b64a324d9c930b560a6d082d06  kdnssd-5.73.0.tar.xz
7d68d806497104cd7febecdeb72b01f6  kguiaddons-5.73.0.tar.xz
b62f7fc855504f2372ee6c79a6bc40d7  ki18n-5.73.0.tar.xz
888748e6c1e7c706ab0620dd06881821  kidletime-5.73.0.tar.xz
fc9c81792d222bd82012ffea28508b09  kimageformats-5.73.0.tar.xz
c83f878fd79b5b2d03f89395d2e14986  kitemmodels-5.73.0.tar.xz
913b467848b103df05bbf95ea37ba9ec  kitemviews-5.73.0.tar.xz
34fef335c2070bfa0ac7bf468add65f6  kplotting-5.73.0.tar.xz
26d211cae109afaa5bc0510e857fdf28  kwidgetsaddons-5.73.0.tar.xz
80674f9e664040a9f25e2a762473fc0f  kwindowsystem-5.73.0.tar.xz
74bc1a1d23993391a481f3a4a1c016a1  networkmanager-qt-5.73.0.tar.xz
6121d847448048fe92b12264e82d8c9e  solid-5.73.0.tar.xz
05a961ee1ed39e1f4d98aab99c02930e  sonnet-5.73.0.tar.xz
927e8df5d6440cab69614a825e111c2d  threadweaver-5.73.0.tar.xz
aa1e7532c695d9e8b6a213fa725bae1e  kauth-5.73.0.tar.xz
7e5263945014cc97726ec1fd855bd331  kcompletion-5.73.0.tar.xz
40d87aa27174706e6df0b2807b114b56  kcrash-5.73.0.tar.xz
c7e7b638940c5f6abae59c1195ec37fe  kdoctools-5.73.0.tar.xz
ba450e3e2edf7679b140b64f1938feb2  kpty-5.73.0.tar.xz
2df82e84a1f22dc72121490e3c325de0  kunitconversion-5.73.0.tar.xz
f4f7c5f17f829e7df2395ab1dbd7243d  kconfigwidgets-5.73.0.tar.xz
22ad03ccdb3243e850ca30d16c6771f1  kservice-5.73.0.tar.xz
cf047279f13f72cd78784067fd1d6518  kglobalaccel-5.73.0.tar.xz
f39a62f40255dbe54295c72779bdbad3  kpackage-5.73.0.tar.xz
0042487aad83241f52c1116cc67fe470  kdesu-5.73.0.tar.xz
79781c58d3a8433ff8de5d5e1031cd7a  kemoticons-5.73.0.tar.xz
23d7226b57acbf5be919b3848592c624  kiconthemes-5.73.0.tar.xz
3a2282e410983f1847463cb7a4d8985e  kjobwidgets-5.73.0.tar.xz
b5b5b3b1482a880ca714ceac28624646  knotifications-5.73.0.tar.xz
508bdf33c3fb27bfb577d01599a69f39  ktextwidgets-5.73.0.tar.xz
1591c913577d800f03d079545c8d5411  kxmlgui-5.73.0.tar.xz
083059e5b6f2285d1e803de121d797da  kbookmarks-5.73.0.tar.xz
905c9d5f68ab24af1378b6373ff2136b  kwallet-5.73.0.tar.xz
3b51763b90c604f46b7be40e8e620d42  kded-5.73.0.tar.xz
9662956fa936f5784e72c56d3b92df84  kio-5.73.0.tar.xz
b7342c3e6d5d121a062a4fec0b12b440  kdeclarative-5.73.0.tar.xz
d5416a83f5fb657191943f78c3f53132  kcmutils-5.73.0.tar.xz
e48190fb43e340f4d8af0af761313ff5  kirigami2-5.73.0.tar.xz
3031ba0db06c655902c48149ebb0aa47  knewstuff-5.73.0.tar.xz
628f3ba2f966ea5853d7db7e89c1aa25  frameworkintegration-5.73.0.tar.xz
62352e83bcc895af5668ed350dfe6c9d  kinit-5.73.0.tar.xz
78ed1d6c89cfc50837b339fef0d1aa42  knotifyconfig-5.73.0.tar.xz
baea3312a026f6e7d0754b1d3c87d52c  kparts-5.73.0.tar.xz
83d12c191cb16343603710dd12549de9  kactivities-5.73.0.tar.xz
#7f77d7f55abc4ea9db3dd786b514ee58  kdewebkit-5.73.0.tar.xz
171ec7fbb842a65bc8c0ef8832bc1b0a  syntax-highlighting-5.73.0.tar.xz
0daa36a7e0440715bb9d028e3a6a79dd  ktexteditor-5.73.0.tar.xz
da21560291ac5ca797807017b690526c  kdesignerplugin-5.73.0.tar.xz
cce15d3618ccf85d66dd3ce00ef119bf  kwayland-5.73.0.tar.xz
3fb4c9624ccf587b9692b9f18bf8e78e  plasma-framework-5.73.0.tar.xz
#f05b39b8de0e8f17acdc52d266b39f95  modemmanager-qt-5.73.0.tar.xz
87528365a0f41fa9f65a8314b2b30b64  kpeople-5.73.0.tar.xz
b279ad2c0c188540f88b5291cccd12f4  kxmlrpcclient-5.73.0.tar.xz
81e1638b9915ef293a5fcb651679b025  bluez-qt-5.73.0.tar.xz
bf2731aca806de7d9e1f57eb164dccce  kfilemetadata-5.73.0.tar.xz
0ccd995814833ffeba852db8469d8ecd  baloo-5.73.0.tar.xz
#335cc472ede625d4c986601fa46a0de7  breeze-icons-5.73.0.tar.xz
#1a1b69517c3e5054e8c3fc5a863424d2  oxygen-icons5-5.73.0.tar.xz
527bb4e18d0c934c4ceb6bb888e27be6  kactivities-stats-5.73.0.tar.xz
b2c41005086aa5923396b76a97654b4e  krunner-5.73.0.tar.xz
#c5777bd5809f74a5595ab6b9d58c088c  prison-5.73.0.tar.xz
83485bd9da3a945de012707b1ee11f03  qqc2-desktop-style-5.73.0.tar.xz
2f25ea46a7ae7ff942a3b12457710bc9  kjs-5.73.0.tar.xz
7daadf02818f6e58853e151f5a246524  kdelibs4support-5.73.0.tar.xz
c79f45f59e5ddc53359d008dc1266c63  khtml-5.73.0.tar.xz
e4bc354a2908888098e9ca17a5888bc9  kjsembed-5.73.0.tar.xz
7652778ab2e57bb49d930450650c86da  kmediaplayer-5.73.0.tar.xz
9255465cc898c9e9e1afcc6876a725fd  kross-5.73.0.tar.xz
ca82fa202e9b6d7ebcf6c4f5c4bdfbe5  kholidays-5.73.0.tar.xz
16746901b71655898064984c4d1bd0fd  purpose-5.73.0.tar.xz
fdda5ee07fd893bca10b6e6c62ad4965  syndication-5.73.0.tar.xz
599b10ad4a5d110e996b6528b5165aeb  kcalendarcore-5.73.0.tar.xz
8f4e3826b4202ad0b006a7df67b0732e  kcontacts-5.73.0.tar.xz
714cedd448a555befc8da387ab5105b2  kquickcharts-5.73.0.tar.xz
766ddc42f378a4c69bf8bf9cedc18108  kdav-5.73.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.73.0 et oxygen-icons5-5.73.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.73.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.73.0
ln -sfvn kf5-5.73.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.73.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-08-22 00:00:59 +0000