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 12.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.84.0, extra-cmake-modules-5.115.0, docbook-xml-4.5, docbook-xsl-nons-1.79.2, giflib-5.2.1, libepoxy-1.5.10, libgcrypt-1.10.3, libical-3.0.17, libjpeg-turbo-3.0.1, libpng-1.6.42, libxslt-1.1.39, lmdb-0.9.31, qca-2.3.8, qrencode-4.1.1, phonon-4.12.0, plasma-wayland-protocols-1.12.0, shared-mime-info-2.4, URI-5.27 et Wget-1.21.4 (requis pour télécharger les packages)

Recommandées

Facultatives

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

Dépendance à l'exécution de FrameworkIntegration

polices Noto

Dépendances recommandées supplémentaires pour kapidox

Support des formats d'images supplémentaires dans KImageFormats

JasPer-4.2.0, libavif-1.0.4, libraw-0.21.2, libheif, libjxl et OpenEXR

Dépendances facultatives de KIO

MIT Kerberos V5-1.21.2

Dépendances facultatives pour Solid

UDisks-2.10.1, UPower-1.90.2 et media-player-info (exécution)

Dépendance facultative pour KWallet

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

Dépendance facultative pour kdewebkit

QtWebkit

Moteurs de dictionnaires facultatifs pour Sonnet

Hspell et Hunspell

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.115/
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.115.0.md5 << "EOF"
28643b6e6d1883390ba8cc138f98e4e0  attica-5.115.0.tar.xz
#125bbaa9cd2853caf029b67b48a3b3d9  extra-cmake-modules-5.115.0.tar.xz
6db6b6fef4a89e40a97cfaf121b7bb39  kapidox-5.115.0.tar.xz
0c22e60234f50e95d76a45d6a8135bba  karchive-5.115.0.tar.xz
c87402505994a05fbf4c368a22016ef5  kcodecs-5.115.0.tar.xz
fcb77cb2d9349b33e9e085ca4d2ebe7f  kconfig-5.115.0.tar.xz
159559a9fcc0812b4145acdd073a73d7  kcoreaddons-5.115.0.tar.xz
8c5b4a9555618c620a2e94a5d45798df  kdbusaddons-5.115.0.tar.xz
2327fbcd8dea339ca3ef24b889a71e63  kdnssd-5.115.0.tar.xz
c89c04e2ec19cab40c023f70e58dc941  kguiaddons-5.115.0.tar.xz
50ba903da49c6b9acf8d2e3881164787  ki18n-5.115.1.tar.xz
#abe7fcdfce4a066fdef6236ab15d11b2  ki18n-5.115.0.tar.xz
1bf59dbd22248f150f3b9c977af8b51f  kidletime-5.115.0.tar.xz
63e0fd1101429ab4dd94130074e732bb  kimageformats-5.115.0.tar.xz
49a623828ead35d4fa2d3255bbdca470  kitemmodels-5.115.0.tar.xz
c134615e17dd472b93230f6712f9f01b  kitemviews-5.115.0.tar.xz
a4ff537eb676fc53db9b3b7b8ecdc2ac  kplotting-5.115.0.tar.xz
148cb8009939e1ae53928d0d75111efb  kwidgetsaddons-5.115.0.tar.xz
7ff6c4358016468807c4d8c9ab9e0f5e  kwindowsystem-5.115.0.tar.xz
ec9afc8825fe4ffed7fdc69954682bd3  networkmanager-qt-5.115.0.tar.xz
4bc3f8554b526f0e39d8c2a6f228a988  solid-5.115.0.tar.xz
fe0e704f92fd43e6748ace4146616ef3  sonnet-5.115.0.tar.xz
4115012f00ffed36c9939f23cfb677ea  threadweaver-5.115.0.tar.xz
637f364c6e5ce6fbbca7a14e56f04c64  kauth-5.115.0.tar.xz
f0c3fc3ad2f0ad70c612d672d0ecb980  kcompletion-5.115.0.tar.xz
e4d7458f0df9c5adbe4e01dc2c917839  kcrash-5.115.0.tar.xz
bb297f2112003546b94c89c705578316  kdoctools-5.115.0.tar.xz
4efa94dabf55b53594a44efce08af107  kpty-5.115.0.tar.xz
c01766f3867f156ae2869031be469a5f  kunitconversion-5.115.0.tar.xz
22f355d87607bc76b9257724048ca73e  kconfigwidgets-5.115.0.tar.xz
1fc0908df48b8041271b88350b1f59f0  kservice-5.115.0.tar.xz
97f8e0b90a7c2ae352a9c6b3442e1a1f  kglobalaccel-5.115.0.tar.xz
e4bbae93076e4cc5f1f05c555d982837  kpackage-5.115.0.tar.xz
871278a972963eb6242688de2c3abc2e  kdesu-5.115.0.tar.xz
2c2978ff806b9a4a3e7eed141e7fae06  kemoticons-5.115.0.tar.xz
818c95b686e9257db6b4cdf007e2c49b  kiconthemes-5.115.0.tar.xz
e7bcd0c302c603e51ec20f9777ba1c0b  kjobwidgets-5.115.0.tar.xz
e3951d19de26c6b83e0fd2dc46b9ed55  knotifications-5.115.0.tar.xz
94a3182125744d25654f2c507dea6614  ktextwidgets-5.115.0.tar.xz
30270996c70d97fbda952aa2f822339f  kxmlgui-5.115.0.tar.xz
ae18d83dae4dd64ab4a728d26a6d79de  kbookmarks-5.115.0.tar.xz
1101eaf6d63a1c873cf21ee091821592  kwallet-5.115.0.tar.xz
4bc257fbce10119918d48593b203cf2e  kded-5.115.0.tar.xz
502f27350ad2538c843c6bdf4031ef8a  kio-5.115.0.tar.xz
934c4f217a34a44a82704be7f47a6ef6  kdeclarative-5.115.0.tar.xz
011fc001cffe0fd611ea516ced255578  kcmutils-5.115.0.tar.xz
a6b54d0321cecb9b9ce4fe8bdc2bdf75  kirigami2-5.115.0.tar.xz
0b47f08e5502871d9d7a483b75bb6ac4  syndication-5.115.0.tar.xz
32e234371b5454850f17441d15b5748e  knewstuff-5.115.0.tar.xz
c1cc6f7cb0b35ec6e1ef691ec4b1943b  frameworkintegration-5.115.0.tar.xz
7ae60737e857a72bf8af9859a65886f0  kinit-5.115.0.tar.xz
a1593f1c8024c1287b44e0035d00f2c6  kparts-5.115.0.tar.xz
b7b6252b2414fb108617f8cf73f0a810  kactivities-5.115.0.tar.xz
#dd11151488180073a39557afa9a1907e  kdewebkit-5.115.0.tar.xz
813461682389193e4fd0e589ffad866b  syntax-highlighting-5.115.0.tar.xz
e30c868032b7d722b75695b8f1eae46b  ktexteditor-5.115.0.tar.xz
474caf85f2b192e7f2bb68cce60aa273  kdesignerplugin-5.115.0.tar.xz
5031ae48f5214293ca8484e719a78895  kwayland-5.115.0.tar.xz
553e0499f311ad2cf96177e3e76abf64  plasma-framework-5.115.0.tar.xz
45d49e1ef3d42dc35fe07c36a45c612e  modemmanager-qt-5.115.0.tar.xz
a21b59445d190328cad46c6e8d5e48b0  kpeople-5.115.0.tar.xz
76e6ec2b6740ec77ff958fbe86d40932  kxmlrpcclient-5.115.0.tar.xz
872b72db316483eb4fcfb013de091403  bluez-qt-5.115.0.tar.xz
27eee2497d1e878693cd4cbeaf571379  kfilemetadata-5.115.0.tar.xz
d145b146adf0ae1d3c104d17a79e156a  baloo-5.115.0.tar.xz
#8a90f95057b7ab8ab03f3e4140b7adff  breeze-icons-5.115.0.tar.xz
#98931250d009db3750132d74447a030a  oxygen-icons-5.115.0.tar.xz
7f2a7726a6bba2f0a9c0474175fc69f6  kactivities-stats-5.115.0.tar.xz
021a50470de1860b96bc5edb8f3ef11c  krunner-5.115.0.tar.xz
abf08dfa6dd1d274e7834964e5cd23c5  prison-5.115.0.tar.xz
476bf46c139885de38b717e229f9a39d  qqc2-desktop-style-5.115.0.tar.xz
7af70230b69f0de4bb76c585b2af5733  kjs-5.115.0.tar.xz
51d2788c1bff19b532d4208dd5e778a2  kdelibs4support-5.115.0.tar.xz
d11bceb4cb9104d900a90708d6197bed  khtml-5.115.0.tar.xz
97bdb8d6a40d3dd499e1fb1297656f97  kjsembed-5.115.0.tar.xz
795fcee43ff4be908389f60942e8cba3  kmediaplayer-5.115.0.tar.xz
95fef271cb5197f9a0f009e41e2072c9  kross-5.115.0.tar.xz
06ab59b2662a0ddb5b77b0cc43173b7d  kholidays-5.115.0.tar.xz
27623b7ac58f7ed7d0a42208dc18aad2  purpose-5.115.0.tar.xz
ffacabefa59d96ac6d2fef1f9d33176f  kcalendarcore-5.115.0.tar.xz
ea0c60ec29421be2c26be53b0f6d135e  kcontacts-5.115.0.tar.xz
6ae56540d6d56086701a5dc130917e32  kquickcharts-5.115.0.tar.xz
0fdec6499fe1bfdf5ba509d0d9874f0a  knotifyconfig-5.115.0.tar.xz
7ec159103a24ed3d72b4680de952db20  kdav-5.115.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. Le paquet ki18n-5.115.0 a été remplacé par ki18n-5.115.1. Les paquets d'icônes sont traités séparément dans breeze-icons-5.115.0 et oxygen-icons-5.115.0. Le paquet 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.15p5 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

      # kapidox is a python module
      case $name in
        kapidox)
          pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir $PWD
          as_root pip3 install --no-index --find-links=dist --no-cache-dir --no-user kapidox
          popd
          rm -rf $packagedir
          continue
          ;;
      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.115.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.115.0
ln -sfvn kf5-5.115.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.115.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