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.10 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.61.0, extra-cmake-modules-5.25.0, docbook-xml-4.5, docbook-xsl-1.79.1, giflib-5.1.4, libepoxy-1.3.1, libgcrypt-1.7.3, libjpeg-turbo-1.5.0, libpng-1.6.24, libxslt-1.1.29, lmdb-0.9.18, QtWebkit-5.7.0, phonon-4.9.0, shared-mime-info-1.6, URI-1.71, and Wget-1.18 (required to download the packages)

Recommended

Optional

BlueZ-5.41 (needed to build Bluez-Qt), ModemManager-1.6.0 (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.3

Optional dependencies for Solid

UDisks-2.1.7, UPower-0.99.4 and media-player-info (runtime)

Optional dependency for KWallet

gpgmepp

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.25/
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.25.0.md5 << "EOF"
000a8c34e6c4e548f53493c4519c3c1c  attica-5.25.0.tar.xz
#043c08482bf7cf951e18d32e16238fb4  extra-cmake-modules-5.25.0.tar.xz
892840e6b323ba1d4687e75678cf9493  kapidox-5.25.0.tar.xz
7205f46ad213e85a736da5f808b5b8df  karchive-5.25.0.tar.xz
089c46445618fbc36c11de7eccd61256  kcodecs-5.25.0.tar.xz
03112534b86d98716cf61865d0ea2497  kconfig-5.25.0.tar.xz
25a40738d380e465ae5161cbaa2b282c  kcoreaddons-5.25.0.tar.xz
cd6d6dbfc47cb82a7fb0b81adc24aad7  kdbusaddons-5.25.0.tar.xz
31c35cb2b97f150d103484501cc55aca  kdnssd-5.25.0.tar.xz
bfba32b6ee6f1288fef0d7156bf81961  kguiaddons-5.25.0.tar.xz
051c7cab151f9d361d6da83968fb68d2  ki18n-5.25.0.tar.xz
aba67367441db87daf4705e5cd0b4449  kidletime-5.25.0.tar.xz
610989615ba775f55bf07f1b5f5b3bf9  kimageformats-5.25.0.tar.xz
83b9a034bbfaedf0cc12191157899006  kitemmodels-5.25.0.tar.xz
324c058163bb418b26d9cba403e5133d  kitemviews-5.25.0.tar.xz
6906f6da8a6d680cd86d1ee96f80bf2b  kplotting-5.25.0.tar.xz
c4b6185dac9cecd6af6eea3b56f2271f  kwidgetsaddons-5.25.0.tar.xz
ae52891201ea66b15d94a4f5a2717a5f  kwindowsystem-5.25.0.tar.xz
45b8586afc97200ea687996fc5ce2327  networkmanager-qt-5.25.0.tar.xz
3ca487d5660ee83d0b2165e525ea5795  solid-5.25.0.tar.xz
1863877132650a61510ee37c894a43c5  sonnet-5.25.0.tar.xz
6e0e0668f25d508aca4c527f762e7701  threadweaver-5.25.0.tar.xz
059033f3a41d6733bc92ed6f3fece2ef  kauth-5.25.0.tar.xz
ce3839d146dc522a3595085833bf10ea  kcompletion-5.25.0.tar.xz
ecf5dde757c1cf5e3d00d3cfe661474d  kcrash-5.25.0.tar.xz
9dc819d8f5402b252b71610102685939  kdoctools-5.25.0.tar.xz
904db48ad9e21de2df42738775261b23  kpty-5.25.0.tar.xz
e4a9229d95ae7ebaa094d104eb8bc633  kunitconversion-5.25.0.tar.xz
03bc05f0c72386a143d1b002178f95f6  kconfigwidgets-5.25.0.tar.xz
3cc65c5082a9bdaa2c93ea01323fb814  kservice-5.25.0.tar.xz
8b2a252d99308aece33663cf9522c43a  kglobalaccel-5.25.0.tar.xz
237995199b61f5dd48e862c12fe7779e  kpackage-5.25.0.tar.xz
f85faafcbdbf994bdb8b4cbcd7c85f03  kdesu-5.25.0.tar.xz
7a38172342fa120969b73d868e2b4211  kemoticons-5.25.0.tar.xz
45eb7f6ad57eca1f2f5ad3d58a56bef8  kiconthemes-5.25.0.tar.xz
edbdaa821afa328331e46e3d959924ca  kjobwidgets-5.25.0.tar.xz
4ef30449b46b701ddf6482d36378e1ec  knotifications-5.25.0.tar.xz
b7455b06e270b9e057f1ebe137676687  ktextwidgets-5.25.0.tar.xz
d64ee5eb63d0490b36a1cc9c0ebf126d  kwallet-5.25.0.tar.xz
5ca8391964c2743c32e3eb46c975943c  kxmlgui-5.25.0.tar.xz
73827857016fb3444101929fbd9fcd83  kbookmarks-5.25.0.tar.xz
0077d90029c34f734fb661912f2213d1  kio-5.25.0.tar.xz
c76d293ffa8bcae4771b78e553d26f53  kdeclarative-5.25.0.tar.xz
139af7a01a29e7dbd81f25adae1df9b2  kcmutils-5.25.0.tar.xz
d63e9454ee42955c44cad1cc78a98d44  frameworkintegration-5.25.0.tar.xz
0b8fcc6d1ef2ff1775ec23dfa34b5de6  kinit-5.25.0.tar.xz
2ea7e17162776681193f67d66821182d  knewstuff-5.25.0.tar.xz
61f5e3d3095a7b0cb87d1693c9b1ad05  knotifyconfig-5.25.0.tar.xz
52ddaccaa5848bdfb39b241adf32b63a  kparts-5.25.0.tar.xz
42881c6c06ff8a3015e2519a31a74866  kactivities-5.25.0.tar.xz
f859f8818fd5f81645bdfb2cf89ee020  kded-5.25.0.tar.xz
2ca6d2a1377adfe68b3fe2560537616f  kdewebkit-5.25.0.tar.xz
c34217c409480ac45f48693c72e3ed8a  ktexteditor-5.25.0.tar.xz
b3f68ae1839994631b1798db5a30385e  kdesignerplugin-5.25.0.tar.xz
b67b2fc56b005b9fd47a9b64cc39bc40  plasma-framework-5.25.0.tar.xz
#df3b50fe7df5b7c409d80b83beb0337f  modemmanager-qt-5.25.0.tar.xz
dc439cc6a4b3093cbee780cac616d1b4  kpeople-5.25.0.tar.xz
c4295e2ebab459374b5570d2164a8279  kxmlrpcclient-5.25.0.tar.xz
2e03661752de63494541649158d712fa  bluez-qt-5.25.0.tar.xz
12517175cb2a93341bea3c60de105d07  kfilemetadata-5.25.0.tar.xz
3a86a50695f17e5ffca94bf5664c60d7  baloo-5.25.0.tar.xz
#6f7e0a3d91a18fc31c7b4683f1174358  breeze-icons-5.25.0.tar.xz
#71119a9c74516fcdbc80e3a8effa1e5a  oxygen-icons5-5.25.0.tar.xz
fbda904a579120cc23eb6ec9bc660f67  kactivities-stats-5.25.0.tar.xz
427349a763c831796b3de0be4b17a019  krunner-5.25.0.tar.xz
d70abca43cbf6e6a6eba9d79830bf1a1  kwayland-5.25.0.tar.xz
7ffd38082aa627f42a9e4830a739f8c6  portingAids/kjs-5.25.0.tar.xz
37284190af0a84cdd2a12636b5b71b2e  portingAids/kdelibs4support-5.25.0.tar.xz
e9b1763b2649d7e21e6cda3e0c5773bf  portingAids/khtml-5.25.0.tar.xz
f1d0c9a46be19e69a493f75fc8af54e7  portingAids/kjsembed-5.25.0.tar.xz
a844acb7da10a7b23fa50dade3b523c6  portingAids/kmediaplayer-5.25.0.tar.xz
bb96fd634617bcac31974f9b63f41252  portingAids/kross-5.25.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.25.0 and oxygen-icons5-5.25.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.17p1 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


  as_root rm -rf $packagedir
  as_root /sbin/ldconfig

done < frameworks-5.25.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.25.0
ln -sfvn kf5-5.25.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.25.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-09-04 13:51:37 -0700