Building KDE Frameworks 5 (KF5)

KDE Frameworks 5 is a collection of libraries based on top of Qt5 and QML derived from the monolithic KDE 4 libraries. They can be used independent of the KDE Display Environment (Plasma 5).

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

The instructions below build all of the KDE Frameworks packages in one step by using a bash script.

Package Information

KF5 Dependencies

Required

Boost-1.60.0, extra-cmake-modules-5.19.0, docbook-xml-4.5, docbook-xsl-1.79.1, giflib-5.1.2, libepoxy-1.3.1, libgcrypt-1.6.5, libjpeg-turbo-1.4.2, libpng-1.6.21, libxslt-1.1.28, lmdb-0.9.18, phonon-4.8.3 (built with qt5), shared-mime-info-1.5, URI-1.71, and Wget-1.17.1 (required to download the packages)

Recommended

Optional

BlueZ-5.37 (needed to build Bluez-Qt), ModemManager (needed to build ModemManager-Qt)

Runtime dependency for FrameworkIntegration

oxygen-fonts-5.4.3 and noto-fonts

Runtime dependencies for kapidox

Doxygen-1.8.11, Jinja2, and PyYAML

Additional image formats support in KImageFormats

JasPer-1.900.1 and OpenEXR

Optional dependencies for KIO

MIT Kerberos V5-1.14

Optional dependencies for ModemManager-QT

ModemManager

Optional dependencies for Solid

UDisks-2.1.6, UPower-0.9.23 and media-player-info (runtime)

Optional dictionary backends for Sonnet

Hspell and Hunspell

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

Downloading KDE Frameworks

The easiest way to get the KDE Frameworks packages is to use a single wget to fetch them all at once:

url=http://download.kde.org/stable/frameworks/5.19/
wget -r -nH --cut-dirs=3 -A '*.xz' -np $url

The options used here are:
  -r            recurse through child directories
  -nH           disable generation of host-prefixed directories
  --cut-dirs=3  remove three levels of directories when saving
  -A '*.xz'     just get the *.xz files
  -np           don't get parent directories

Setting Package Order

The order of building files is important due to internal dependencies. Create the list of files in the proper order as follows:

cat > frameworks-5.19.0.md5 << "EOF"
3b4b45a3e250cec426890735089c7fcf  attica-5.19.0.tar.xz
#c18b4e3ad6e37ce1fe372931d2b269fb  extra-cmake-modules-5.19.0.tar.xz
ed50b3908baef964e14266477133e3ea  kapidox-5.19.0.tar.xz
de8678f38303699cf66303f29bb06748  karchive-5.19.0.tar.xz
7569f06a767ddd08ece025fe50197eba  kcodecs-5.19.0.tar.xz
79953233cd7d507f4f8394bf62e23078  kconfig-5.19.0.tar.xz
996db46c7e3b6a3b1837a0cc9373bcdd  kcoreaddons-5.19.0.tar.xz
4ef9082483a46d04f531d1dce8be4232  kdbusaddons-5.19.0.tar.xz
678deda3ac690b5cc43f398504211273  kdnssd-5.19.0.tar.xz
b423159cec98dbac442bdb88e1daeda4  kguiaddons-5.19.0.tar.xz
281cfa08356179d250b67b6d19b85b46  ki18n-5.19.0.tar.xz
945cd1f8bf3b5b34c7db3d7693274314  kidletime-5.19.0.tar.xz
678b42ebec88ce18ac0c85d539fada01  kimageformats-5.19.0.tar.xz
acf477f070df240248cb7eab316ff370  kitemmodels-5.19.0.tar.xz
ab98c10a12f67c437a8918ebfcf1ac80  kitemviews-5.19.0.tar.xz
7487f642bc0c0ed9a38e68c4ef21ff2c  kplotting-5.19.0.tar.xz
b1b37d5c240ad5dea9c43012282beb7e  kwidgetsaddons-5.19.0.tar.xz
5e4a9cbe3d4217062c8656833db641f8  kwindowsystem-5.19.0.tar.xz
327dc9c1ec64e59357545e842d29e5da  networkmanager-qt-5.19.0.tar.xz
d664fa2d968c6d6a273881e90f749c7e  solid-5.19.0.tar.xz
08106da14942ebdfe0b901e649c20d7c  sonnet-5.19.0.tar.xz
fb9848428899fa10c46121810cf3a022  threadweaver-5.19.0.tar.xz
ab6498a04ed69236cb582677df829c91  kauth-5.19.0.tar.xz
e0542f7b67153e79efcdbb0877979775  kcompletion-5.19.0.tar.xz
6ede0e1e87a9009d9b24b3a824543dc9  kcrash-5.19.0.tar.xz
6c05f13822f918abf26b56510861d392  kdoctools-5.19.0.tar.xz
09e682b3395c9eb5f1a63203564c7d99  kpty-5.19.0.tar.xz
989c83f68e01d4f3bdc13fbe8299816a  kunitconversion-5.19.0.tar.xz
ce0c538d90c1753fea03be8beacfc648  kconfigwidgets-5.19.0.tar.xz
b1d5dc66f1ab4320b92b792203d3737a  kglobalaccel-5.19.0.tar.xz
fb28532a75361e3c8b26bf4acad7b158  kpackage-5.19.0.tar.xz
ca272f22047a121d3e21f2bad845295c  kservice-5.19.0.tar.xz
adcff09780e4b64d1148825f452ded1d  kdesu-5.19.0.tar.xz
9126afb4d6d54090f0b72ff08f396d96  kemoticons-5.19.0.tar.xz
234f1a331fcda7425061cc0667b62fc9  kiconthemes-5.19.0.tar.xz
3b27494142b2a8eb01c85ad811f1ba02  kjobwidgets-5.19.0.tar.xz
c5efd59dd9f2687aa2efae4a5356ce9f  knotifications-5.19.0.tar.xz
c4f03d70c30725e636eaf43b5dcfd893  ktextwidgets-5.19.0.tar.xz
1c6c9aac635b623ab78368dd8617ca4e  kwallet-5.19.0.tar.xz
8e29c5073c871cb1a2128c717500b325  kxmlgui-5.19.0.tar.xz
95e4a58669b64aff6b4341ec3438eac4  kbookmarks-5.19.0.tar.xz
f7a87528e9f0fba984323d26773cd553  kio-5.19.0.tar.xz
045ed4200129ee96b8ca521a005ac33c  kdeclarative-5.19.0.tar.xz
3b94a572bc0d4ca9acff03f6f37421d3  kcmutils-5.19.0.tar.xz
5ff469c4b86c11bae91b1ee43a8fe386  frameworkintegration-5.19.0.tar.xz
3c40a568bfe04957ad68b9fa1afe54fd  kinit-5.19.0.tar.xz
d5855a91bf2579f9faafce0563fa658f  knewstuff-5.19.0.tar.xz
6acd427037e73e23f3087db88ed11ecc  knotifyconfig-5.19.0.tar.xz
d1472c82637f2eecd4561b815b96c5e4  kparts-5.19.0.tar.xz
b5ceb59e0b354858849c6728d7df2c3d  kactivities-5.19.0.tar.xz
941612d0df418b20981dfe9430f94263  kded-5.19.0.tar.xz
a6a871e08809693934ea8f4b255f8065  kdewebkit-5.19.0.tar.xz
165cc67fc95363ffa6e247b230965b09  ktexteditor-5.19.0.tar.xz
be9704c908fe4a7d8ab04b14192f9948  kdesignerplugin-5.19.0.tar.xz
dbb2096267291d4a36482575c00a3c58  plasma-framework-5.19.0.tar.xz
#a7cdce5f943c6bf9b5190f96942d3042  modemmanager-qt-5.19.0.tar.xz
bb7bc4b9d6f1433538692d63506bac86  kpeople-5.19.0.tar.xz
590e3f07e6e47564208f1d1f94df4315  kxmlrpcclient-5.19.0.tar.xz
58377c34045907d67140df9167417919  bluez-qt-5.19.0.tar.xz
dc869a38e8dcde117d91b9de656be324  kfilemetadata-5.19.0.tar.xz
58351139c7bf473b08ab7fa3220ede8b  baloo-5.19.0.tar.xz
#f5a4a9776492c8438524fad00ba606cc  breeze-icons-5.19.0.tar.xz
#dc41677e256fbe7b853e4d9568b1a5c9  oxygen-icons5-5.19.0.tar.xz
c81cc309513c4c7f075e0e922a3bceff  portingAids/kjs-5.19.0.tar.xz
7b6b02db93202ba8948d47a6b6b1abff  portingAids/kdelibs4support-5.19.0.tar.xz
ff9f526613bec9cae31aab8856624266  portingAids/khtml-5.19.0.tar.xz
39ca8356ee4646146030a38ac831a33c  portingAids/kjsembed-5.19.0.tar.xz
fb28b85be8a78b276bbcadc7c6166a69  portingAids/kmediaplayer-5.19.0.tar.xz
3ed3ca232a3b6a2859a37a7b0017ded9  portingAids/kross-5.19.0.tar.xz
c43cef2cc5b9322dd34c849ba3474c89  portingAids/krunner-5.19.0.tar.xz
EOF

In the above list, notice that some files have been commented out with a hash (#) character. The extra-cmake-modules entry has been commented out because it was built earlier in the Introduction to KDE. The icon packages are covered separately at breeze-icons-5.19.0 and oxygen-icons5-5.19.0. The modemmanager-qt package may be built if its optional dependency has been installed.

Installation of KDE Frameworks

[Note]

Note

When installing multiple packages in a script, the installation needs to be done as the root user. There are three general options that can be used to do this:

  1. Run the entire script as the root user (not recommended).

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

  3. Use su -c "command arguments" (quotes required) which will ask for the root password for every iteration of the loop.

One way to handle this situation is to create a short bash function that automatically selects the appropriate method. Once the command is set in the environment, it does not need to be set again.

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

export -f as_root
[Caution]

Caution

If inatalling in /opt and there is an existing /opt/kf5 either as a regular directory or a symbolic link, it should be removed (as root):

rm -rf /opt/kf5

First, start a subshell that will exit on error:

bash -e

Install all of the packages by running the following commands:

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

    tar -xf $file
    pushd $packagedir

      mkdir build
      cd    build

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

  rm -rf $packagedir
  as_root /sbin/ldconfig

done < frameworks-5.19.0.md5

exit
[Note]

Note

Any modules that have been omitted can be installed later by using the same mkdir build; cd build; cmake; make; make install procedure as above.

Sometimes the installation paths are hardcoded into installed files. If the installed directory is not /usr, rename the directory and create a symlink:

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

Command Explanations

-DCMAKE_PREFIX_PATH=$QT5DIR: This switch is used to allow cmake to find the proper Qt libraries.

-DCMAKE_BUILD_TYPE=Release: This switch is used to apply higher level of the compiler optimizations.

-DLIB_INSTALL_DIR=lib: This switch is used to get libraries to install to $KF5_PREFIX/lib instead of $KF5_PREFIX/lib64 on a 64 bit system.

-DBUILD_TESTING=OFF: This switch is used to prevent building test programs and libraries that are of no use to an end user.

Contents

Installed Programs: There are 53 programs installed in /opt/kf5/bin.
Installed Libraries: There are too many kf5 libraries (79) to list separately.
Installed Directories: /opt/kf5 (symlink to /opt/kf5-5.19.0)

Short Descriptions

checkXML5

is a tool to check for syntax errors in KDE DocBook XML files.

depdiagram-generate

is a tool to generate a dependency diagram.

depdiagram-generate-all

is a tool to generate a dependency diagram for all frameworks at once..

depdiagram-prepare

is a tool to prepare dot files.

desktoptojson

is a tool to convert a .desktop file to a .json file.

kactivitymanagerd

is the KDE Plasma Workspace Activity Manager.

kbuildsycoca5

rebuilds the KService desktop file system configuration cache.

kcookiejar5

is a command line interface to the HTTP cookie store used by KDE, a D-BUS service to store/retrieve/clean cookies.

kded5

consolidates several small services in one process.

kdeinit5

is a process launcher somewhat similar to the famous init used for booting UNIX.

kf5-config

is a command line program used to retrieve information about KDE installation or user paths.

kf5kross

executes kross scripts written in KDE Javascript, Python, Ruby, Java and Falcon.

kgenapidox

is a tool to generate API documentation in the KDE style.

kgendesignerplugin

generates widget plugins for Qt(TM) Designer.

kglobalaccel5

is a daemon use to register the key bindings and for getting notified when the action triggered.

kjs5

is KDE ECMAScript/JavaScript engine.

kjscmd5

is a tool for launching KJSEmbed scripts from the command line.

kjsconsole

is a console for kjs5.

kmailservice5

is a mail service.

kpackagelauncherqml

is a commandline tool for launching kpackage QML application

kpackagetool5

is a command line kpackage tool.

kreadconfig5

is a command line tool to retrieve values from KDE configuration files.

kshell5

start applications via kdeinit.

ktelnetservice5

is a telnet service.

ktrash5

is a helper program to handle the KDE trash can.

kwalletd5

is the wallet manager daemon.

kwriteconfig5

is a command line tool to write values in KDE configuration files.

meinproc5

converts DocBook files to HTML.

plasmapkg2

is a tool to install, list, remove Plasma packages

preparetips5

is a script to extract the text from a tips file.

solid-hardware5

is a command line tool to investigate available devices.

Last updated on 2016-02-28 12:29:40 -0800