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-8.0
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.63.0, extra-cmake-modules-5.31.0,
docbook-xml-4.5, docbook-xsl-1.79.1, giflib-5.1.4,
libepoxy-1.4.0, libgcrypt-1.7.6, libjpeg-turbo-1.5.1, libpng-1.6.28,
libxslt-1.1.29, lmdb-0.9.19, QtWebkit-5.8.0, phonon-4.9.1, shared-mime-info-1.8, URI-1.71, and Wget-1.19.1 (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.6.2 (needed to build
NetworkManager-Qt), and polkit-qt-0.112.0 (Authentication backend for
KAuth)
Optional
BlueZ-5.43 (needed to build Bluez-Qt), ModemManager-1.6.4 (needed to build
ModemManager-Qt)
Runtime dependency for FrameworkIntegration
Oxygen fonts and Noto
fonts
Runtime dependencies for kapidox
Doxygen-1.8.13, Jinja2-2.9.5, and PyYAML-3.12
Additional image formats support in KImageFormats
JasPer-2.0.10 and OpenEXR
Optional dependencies for KIO
MIT Kerberos V5-1.15
Optional dependencies for Solid
UDisks-2.1.8, UPower-0.99.4 and
media-player-info
(runtime)
Optional dependency for KWallet
gpgmepp
Optional dictionary backends for Sonnet
Hspell and
Hunspell
Required dependencies for Prison
Datamatrix and QRencode
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.31/
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.31.0.md5 << "EOF"
2243e955a41b8a5036fb8d0e497342f5 attica-5.31.0.tar.xz
#74d7c29138168f9a62fe475705c0b351 extra-cmake-modules-5.31.0.tar.xz
b846e442fd48b8387f93aa37295e9f7c kapidox-5.31.0.tar.xz
de591b1902b1721b74762d712f13a265 karchive-5.31.0.tar.xz
8e0c15990e84dfcfc5c85a88e2e0319b kcodecs-5.31.0.tar.xz
f044848c2406fa1452b11780af2e1fea kconfig-5.31.0.tar.xz
95935748baf5465f150f4e1a94af1923 kcoreaddons-5.31.0.tar.xz
c6c8f751eff1f03406f63bcfb1f4ffe0 kdbusaddons-5.31.0.tar.xz
5ee257c5ff53d5551b9df1b640cfabf6 kdnssd-5.31.0.tar.xz
ecb1a10910116e9fd3265f2f1908c6a1 kguiaddons-5.31.0.tar.xz
62457f60936bb8dc6649ed362e7ab80a ki18n-5.31.0.tar.xz
c45511be577726afd5c7d88c7f13f274 kidletime-5.31.0.tar.xz
99cbfa14df2fb11930090122b461bc6a kimageformats-5.31.0.tar.xz
91916337e5a8edf9fca9de3bdd1ad8fa kitemmodels-5.31.0.tar.xz
71251518337febe21cd0af8e7db66fae kitemviews-5.31.0.tar.xz
e36ccf164785957e07d03cddef152136 kplotting-5.31.0.tar.xz
3ff1ee177df63262636954cb7e0460dc kwidgetsaddons-5.31.0.tar.xz
cd402e03c023354e9ee37b7d0d5de621 kwindowsystem-5.31.0.tar.xz
8c4d807e867f11f5a55604fa59cce85d networkmanager-qt-5.31.0.tar.xz
2946f8c7780e2f3de5384717a8a34cdc solid-5.31.0.tar.xz
11cef5b5016def5298b64e2ce561a8b5 sonnet-5.31.0.tar.xz
f1dbc18f38a9582cd1d4f94bc9f0f132 threadweaver-5.31.0.tar.xz
ec49b90d1566a37e91b9710557e102f2 kauth-5.31.0.tar.xz
81234f797d4da26106a91bdcc34440df kcompletion-5.31.0.tar.xz
a0cffc08aa51c61d48d9e25778a61e62 kcrash-5.31.0.tar.xz
fc1b4de766d04ac3abc87050588d083d kdoctools-5.31.0.tar.xz
8f5efa781672c67f01195ee3dc823c6b kpty-5.31.0.tar.xz
0f7be81fe9c68044f20d6c297a624558 kunitconversion-5.31.0.tar.xz
4deb8a01f99cb16bbcf80f1e11d90824 kconfigwidgets-5.31.0.tar.xz
b46d2550b689fc818064f69cb1db29a7 kservice-5.31.0.tar.xz
d56e35255d2697cc3a89a1a99d1821fe kglobalaccel-5.31.0.tar.xz
9d66b0fe531892180006f0deb77aa4b2 kpackage-5.31.0.tar.xz
9a593607c47472dd6ce0d546b2f2a736 kdesu-5.31.0.tar.xz
4c8d3ab1e358efd89acd7ab95025dd37 kemoticons-5.31.0.tar.xz
fa2e0994412b83dbb0e54aa277f4bff3 kiconthemes-5.31.0.tar.xz
cc2f41fd5b8ba6ad795a7835a68d4e8c kjobwidgets-5.31.0.tar.xz
b8483a6872720152acfb22dae0db417e knotifications-5.31.0.tar.xz
a3240501f842655be3b354d98da95939 ktextwidgets-5.31.0.tar.xz
de28f21c121dc24f31d35ab622304e7e kxmlgui-5.31.0.tar.xz
8c1d5970b25f877567494486638d6082 kbookmarks-5.31.0.tar.xz
3372c17e1a0020616fea29ec9097e0cc kwallet-5.31.0.tar.xz
62f31e7a9cd0b875fce5b552ec9be3c7 kio-5.31.0.tar.xz
8b76f1704314258a944eb57a466d338d kdeclarative-5.31.0.tar.xz
eccc7474f7442b656d26211050f3b2c3 kcmutils-5.31.0.tar.xz
2df293c8e3cedd3a7b71af69045dc5a0 knewstuff-5.31.0.tar.xz
128fa26a3e7928ae74db95ee774fcf48 frameworkintegration-5.31.0.tar.xz
8cf1b185c3d5b74a168995f8e0747931 kinit-5.31.0.tar.xz
a8fdfb88286f73485734ad2feecb7e16 knotifyconfig-5.31.0.tar.xz
21849d002c27964c0d264aa9b5a7c67d kparts-5.31.0.tar.xz
31f9bd0f380f60b0ab2e9b8f56b1662a kactivities-5.31.0.tar.xz
569c52fc5424b1c58fc0476ffa02b58b kded-5.31.0.tar.xz
d063b3b7827eaaa8e345ebaf6c1500f9 kdewebkit-5.31.0.tar.xz
302e06bd05b8632fe60702c82218d1eb syntax-highlighting-5.31.0.tar.xz
315aae6b286757696513ecc7ca69e68e ktexteditor-5.31.0.tar.xz
89a054526209180e02b87b30b8766f5f kdesignerplugin-5.31.0.tar.xz
3ba021780eb40fadd3472630be680571 kwayland-5.31.0.tar.xz
cbef982888a30ca96b4c1f52d502551c plasma-framework-5.31.0.tar.xz
#ac454faa59de5fb2c5f995acd71fd769 modemmanager-qt-5.31.0.tar.xz
6eaf7bd9165a7042221926064c01cce9 kpeople-5.31.0.tar.xz
c1cd0538b4f7e56653a4d6d4f2c994a2 kxmlrpcclient-5.31.0.tar.xz
2e2dfc3e49d878044c4848d147918d1b bluez-qt-5.31.0.tar.xz
b0553bbd667d7d209735d2123f33af46 kfilemetadata-5.31.0.tar.xz
831874cc5f6bf3aab76ca196d30995b3 baloo-5.31.0.tar.xz
#f16a9b1a901700ecd0790e3d80ae32d4 breeze-icons-5.31.0.tar.xz
#385ddb6e36639dfffb0bf30b75b049e0 oxygen-icons5-5.31.0.tar.xz
cd4290e76d0c07a3612b82257119a4df kactivities-stats-5.31.0.tar.xz
6105cf1f51b69cd9232aa662f8d2511a krunner-5.31.0.tar.xz
#95cb43eb20e081db51709b0ab6bcfa96 prison-5.31.0.tar.xz
71ec95ef3c79e2a86de4872bb97daa0e portingAids/kjs-5.31.0.tar.xz
aa244aa083a03be78a976a8a8cd6ed8c portingAids/kdelibs4support-5.31.0.tar.xz
21a3859d1358a330fbdb83f3c184dd71 portingAids/khtml-5.31.0.tar.xz
49f65f405b4e3d49adf81247efce963f portingAids/kjsembed-5.31.0.tar.xz
f287ac1073cae07f51178ad78f30cf4b portingAids/kmediaplayer-5.31.0.tar.xz
743b48d58b23d386e4417081a4d456cb portingAids/kross-5.31.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.31.0 and oxygen-icons5-5.31.0. The
modemmanager-qt package may be built if its optional dependency has
been installed. The prison package (bar code reader) may be built
if the required external libraries are 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.19p2 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 installing in /opt and there is an existing /opt/kf5 either as
a regular directory or a symbolic link, it should be
reinitialized (as 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
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.31.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.31.0
ln -sfvn kf5-5.31.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.31.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 2017-02-20 12:59:39 -0800