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

This package is known to build and work properly using an LFS-11.1 platform.

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.78.0, extra-cmake-modules-5.91.0, docbook-xml-4.5, docbook-xsl-1.79.2, giflib-5.2.1, libepoxy-1.5.9, libgcrypt-1.10.0, libical-3.0.14, libjpeg-turbo-2.1.2, libpng-1.6.37, libxslt-1.1.35, lmdb-0.9.29, qrencode-4.1.1, phonon-4.11.1, plasma-wayland-protocols-1.6.0, shared-mime-info-2.1, URI-5.10 et Wget-1.21.2 (requis pour télécharger les packages)

Recommandées

Facultatives

BlueZ-5.63 (requis pour construire Bluez-Qt), ModemManager-1.18.6 (requis pour construire ModemManager-Qt), Datamatrix (recommandé pour Prison par les développeurs en amont)

Dépendance à l'exécution de FrameworkIntegration

Oxygen fonts et Noto fonts

Dépendances recommandées supplémentaires pour kapidox

Autres modules python requis par kapidox

requests, doxyqml, doxypypy, urllib3, idna, charset-normalizer et certifi (ils seront tous installés automatiquement à la construction s'ils ne sont pas présents sur le système)

Support des formats d'images supplémentaires dans KImageFormats

JasPer-2.0.33 et OpenEXR

Dépendances facultatives de KIO

MIT Kerberos V5-1.19.2

Dépendances facultatives pour Solid

UDisks-2.9.4, UPower-0.99.13 et media-player-info (exécution)

Dépendance facultative pour KWallet

GPGME-1.17.0, construit avec les liaisons C++ (ce qui est le cas par défaut).

Moteurs de dictionnaires facultatifs pour Sonnet

Hspell et Hunspell

Notes utilisateur : https://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=https://download.kde.org/stable/frameworks/5.91/
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.91.0.md5 << "EOF"
5d9784ee2bd02ca0764c6bd1d8589dff  attica-5.91.0.tar.xz
#65a71fbf53cda26166fa315c496f16ca  extra-cmake-modules-5.91.0.tar.xz
f2a6670f535225cee132b0862af157ad  kapidox-5.91.0.tar.xz
c1bd7b16fd4b488f38d008574871e7a6  karchive-5.91.0.tar.xz
643759d7e8b7edafcd96fe57a31f65ba  kcodecs-5.91.0.tar.xz
503fb86945377cc4e6824526083a03c2  kconfig-5.91.0.tar.xz
4d39a971050164eca9cfd17267fbd49d  kcoreaddons-5.91.0.tar.xz
df8c55668581077a980ac34b97533a6a  kdbusaddons-5.91.0.tar.xz
4a39910f9fffa41bf636108046d11a62  kdnssd-5.91.0.tar.xz
d35d659076a7e693f534b075e977938c  kguiaddons-5.91.0.tar.xz
8def96f2eecd9351350f749344bfb6e7  ki18n-5.91.0.tar.xz
0277a06b454a12cb9081238acc20d9ff  kidletime-5.91.0.tar.xz
54ad4bf2891c9b83b368efd5e5ed0320  kimageformats-5.91.0.tar.xz
40cc3a14e1c2b30d0daf1a09946886cf  kitemmodels-5.91.0.tar.xz
7fccfc2d2f03620933623e2a92fb31d5  kitemviews-5.91.0.tar.xz
46fdbec50f3947966d25cbaa69abd727  kplotting-5.91.0.tar.xz
53ef80abdb614eb4b3db80299a648303  kwidgetsaddons-5.91.0.tar.xz
3741a8dd1af123a48f8f622c5000457f  kwindowsystem-5.91.0.tar.xz
022818490366c1c84b099855135882b3  networkmanager-qt-5.91.0.tar.xz
59f5148ddc67455188c81d570167147f  solid-5.91.0.tar.xz
ca8498069ae692512a7a884492898db9  sonnet-5.91.0.tar.xz
de397b8183b1c0827f0a541aa5d5f770  threadweaver-5.91.0.tar.xz
9771c45d5646210509a1f336f080db8a  kauth-5.91.0.tar.xz
e4ad9f872cddaa3deef16fcc202e8b53  kcompletion-5.91.0.tar.xz
f8444d0caacd92799fc9d869331899bb  kcrash-5.91.0.tar.xz
f49f6f134a370add0e901aae468c2164  kdoctools-5.91.0.tar.xz
77c52f14f2e49ff18d030c7284308389  kpty-5.91.0.tar.xz
37338dd3c41623cdf4e305966d497a49  kunitconversion-5.91.0.tar.xz
c29c3835fc89c0004c5d9586efdca8ee  kconfigwidgets-5.91.0.tar.xz
b45f86503ff166a69a7cd2fc2f3fdca2  kservice-5.91.0.tar.xz
da8b36e6c834f7181983fba73828ee42  kglobalaccel-5.91.0.tar.xz
6e72bd9c68eba7a05c735e4b17238ec9  kpackage-5.91.0.tar.xz
cf6a45110d6f7a5b3e74d133262c65a8  kdesu-5.91.0.tar.xz
f0872d10bc2caaf7eb3add7ce9e6546c  kemoticons-5.91.0.tar.xz
49df446c1150b92021c42e1d0ca70cc2  kiconthemes-5.91.0.tar.xz
eca731f12d135cc92d53cc95f9598d24  kjobwidgets-5.91.0.tar.xz
392da2d1e13bdfbbe9f799f8b6ffd216  knotifications-5.91.0.tar.xz
f67fa515f50c11fcb376d26f2197a4d8  ktextwidgets-5.91.0.tar.xz
6331ab56636c38cf9ca59ac3f43e4aa3  kxmlgui-5.91.0.tar.xz
4d76d18f66b841a5198d9e5449478bba  kbookmarks-5.91.0.tar.xz
890904a43d90486126cdc08ca32aabb4  kwallet-5.91.0.tar.xz
a272d2e425e1bcda33151c89d68b806b  kded-5.91.0.tar.xz
b1ce633d68b986a917cf81132927e574  kio-5.91.0.tar.xz
bd47095a50a31c273f48e5b0a0178f02  kdeclarative-5.91.0.tar.xz
393d52ba4883d61dd9b1f06df04b2f27  kcmutils-5.91.0.tar.xz
c0c4e2f09fea4440da5c1777cc3605b3  kirigami2-5.91.0.tar.xz
1fb3cce028aefdd1db4d613b300d7edf  syndication-5.91.0.tar.xz
140700c804ef89f06024524c8a51daa5  knewstuff-5.91.0.tar.xz
d6e68519c97992610722b0a68c563a34  frameworkintegration-5.91.0.tar.xz
aa0a82faf3749e707565bc0172ced5d3  kinit-5.91.0.tar.xz
fe2d0dbf070991d7ae51779db4fa8fd2  kparts-5.91.0.tar.xz
9f80142ffe37b515b34dc0889126fe65  kactivities-5.91.0.tar.xz
#27062fb86be35c87443e680721e8fa56  kdewebkit-5.91.0.tar.xz
d8c472435f2e7025e73cadc57d822bf0  syntax-highlighting-5.91.0.tar.xz
a6bfff981c61753c508cc5c45543cb58  ktexteditor-5.91.0.tar.xz
f8c2992823438e3800e5fa814194e178  kdesignerplugin-5.91.0.tar.xz
ceb9a445c9c074cd922c929454dfcf05  kwayland-5.91.0.tar.xz
0e8698ea83e84bfc6709f378a32b6ba3  plasma-framework-5.91.0.tar.xz
#996e0521066cf5c5cf73a23b5d24acc6  modemmanager-qt-5.91.0.tar.xz
aced764828de66a63eeb9c1226a2a36c  kpeople-5.91.0.tar.xz
e952784913e584b0764eaa8b277d7394  kxmlrpcclient-5.91.0.tar.xz
6603e4e589a0701526b620f6cbb76b49  bluez-qt-5.91.0.tar.xz
1e6fe97a90bf20bb5443f730426dd163  kfilemetadata-5.91.0.tar.xz
07e81669af7cec4d3ed04fa237aef72c  baloo-5.91.0.tar.xz
#864c1dde4188c17b02dac7fb71dd8695  breeze-icons-5.91.0.tar.xz
#e5608a99e4bc7a3320ad047feec69bb4  oxygen-icons5-5.91.0.tar.xz
645b3974745de2cfc3a12096088cb3fd  kactivities-stats-5.91.0.tar.xz
a2c3256fcb5784405328a306aecfd034  krunner-5.91.0.tar.xz
76b4b3595295fda99eedf9cd39ea9187  prison-5.91.0.tar.xz
baaec24cc963ca6667336b55a2b4f6c7  qqc2-desktop-style-5.91.0.tar.xz
e9f719f8b00c9339db2a85cc26218d85  kjs-5.91.0.tar.xz
c366867d52842fa7b720dafb5fb76b40  kdelibs4support-5.91.0.tar.xz
68ef440aa83a691f35210db7124d163f  khtml-5.91.0.tar.xz
18f7d38c4bf120c256dda9445119a08c  kjsembed-5.91.0.tar.xz
0cda6ca0293714bb966a3b500d2ecee1  kmediaplayer-5.91.0.tar.xz
38c919168a2156b1ee8028059e42f07c  kross-5.91.0.tar.xz
fbdffe1ebe8b4b64df7860ec551e7b96  kholidays-5.91.0.tar.xz
dbf82286cc4bd94226c1f587ae97ecf2  purpose-5.91.0.tar.xz
f93809564a2a94b69eede7d7b3c6b0de  kcalendarcore-5.91.0.tar.xz
7864dea3081e33463aa477359bf426de  kcontacts-5.91.0.tar.xz
4e66810dd1a30dc3cf9ba4704cf1fb0c  kquickcharts-5.91.0.tar.xz
d89c0336fb388a584210cb26f746b171  knotifyconfig-5.91.0.tar.xz
3dc723d9345877a478980f3892c144c6  kdav-5.91.0.tar.xz
EOF

Dans la liste précédente, remarquez 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.91.0 et oxygen-icons5-5.91.0. Le paquet modemmanager-qt peut être construit si sa dépendance facultative est installée. 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.9 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       &&
ln -sfv /usr/share/polkit-1 $KF5_PREFIX/share

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

bash -e

Installez tous les paquets en exécutant 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

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

Des unités systemd inutiles ont été installées dans $KF5_PREFIX/lib. Supprimez-les maintenant (en root) :

rm -rf $KF5_PREFIX/lib/systemd

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.91.0
ln -sfvn kf5-5.91.0 /opt/kf5

Explication des commandes

-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 un plus haut niveau d’optimisation à la compilation.

-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: balooctl, baloo_file, baloo_file_extractor, baloosearch, balooshow, checkXML5, depdiagram-generate, depdiagram-generate-all, depdiagram-prepare, desktoptojson, gentrigrams, kactivities-cli, kapidox_generate, kate-syntax-highlighter, kbuildsycoca5, kcookiejar5, kdebugdialog5, kded5, kdeinit5, kdeinit5_shutdown, kdeinit5_wrapper, kf5-config, kf5kross, kgendesignerplugin, kglobalaccel5, kiconfinder5, kjs5, kjscmd5, kjsconsole, knewstuff-dialog, kpackagelauncherqml, kpackagetool5, kquitapp5, kreadconfig5, kshell5, ktelnetservice5, ktrash5, kwalletd5, kwallet-query, kwrapper5, kwriteconfig5, meinproc5, parsetrigrams, plasmapkg2, preparetips5, protocoltojson et solid-hardware5
Bibliothèques installées: libkdeinit5_klauncher.so, libKF5Activities.so, libKF5ActivitiesStats.so, libKF5Archive.so, libKF5Attica.so, libKF5AuthCore.so, libKF5Auth.so, libKF5Baloo.so, libKF5BluezQt.so, libKF5Bookmarks.so, libKF5CalendarCore.so, libKF5CalendarEvents.so, libKF5Codecs.so, libKF5Completion.so, libKF5ConfigCore.so, libKF5ConfigGui.so, libKF5ConfigWidgets.so, libKF5Contacts.so, libKF5CoreAddons.so, libKF5Crash.so, libKF5DAV.so, libKF5DBusAddons.so, libKF5Declarative.so, libKF5DNSSD.so, libKF5DocTools.so, libKF5Emoticons.so, libKF5FileMetaData.so, libKF5GlobalAccel.so, libKF5GuiAddons.so, libKF5Holidays.so, libKF5I18n.so, libKF5IconThemes.so, libKF5IdleTime.so, libKF5ItemModels.so, libKF5ItemViews.so, libKF5JobWidgets.so, libKF5JSApi.so, libKF5JsEmbed.so, libKF5JS.so, libKF5KCMUtils.so, libKF5KDELibs4Support.so, libKF5KHtml.so, libKF5KIOCore.so, libKF5KIOFileWidgets.so, libKF5KIOGui.so, libKF5KIONTLM.so, libKF5KIOWidgets.so, libKF5Kirigami2.so, libKF5KrossCore.so, libKF5KrossUi.so, libKF5MediaPlayer.so, libKF5NetworkManagerQt.so, libKF5NewStuffCore.so, libKF5NewStuff.so, libKF5Notifications.so, libKF5NotifyConfig.so, libKF5Package.so, libKF5Parts.so, libKF5PeopleBackend.so, libKF5People.so, libKF5PeopleWidgets.so, libKF5PlasmaQuick.so, libKF5Plasma.so, libKF5Plotting.so, libKF5Prison.so, libKF5Pty.so, libKF5Purpose.so, libKF5PurposeWidgets.so, libKF5QuickAddons.so, libKF5Runner.so, libKF5Service.so, libKF5Solid.so, libKF5SonnetCore.so, libKF5SonnetUi.so, libKF5Style.so, libKF5Su.so, libKF5SyntaxHighlighting.so, libKF5TextEditor.so, libKF5TextWidgets.so, libKF5ThreadWeaver.so, libKF5UnitConversion.so, libKF5Wallet.so, libKF5WaylandClient.so, libKF5WaylandServer.so, libKF5WidgetsAddons.so, libKF5WindowSystem.so, libKF5XmlGui.so, libKF5XmlRpcClient.so et libkwalletbackend5.so
Répertoires installés: /opt/kf5 (lien symbolique vers /opt/kf5-5.91.0) si vous installez dans /opt

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

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

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

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