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
Aspell-0.60.6.1 (Dictionary backend for
Sonnet), Avahi-0.6.32 (DNS-SD backend for KDNSSD),
libdbusmenu-qt-0.9.3+16.04.20160218
(built with qt5), NetworkManager-1.4.0 (needed to build
NetworkManager-Qt), and polkit-qt-0.112.0 (Authentication backend for
KAuth)
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
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:
-
Run the entire script as the root user (not recommended).
-
Use the sudo
command from the Sudo-1.8.17p1 package.
-
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
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
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