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.1
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.64.0, extra-cmake-modules-5.37.0,
docbook-xml-4.5, docbook-xsl-1.79.1, giflib-5.1.4,
libepoxy-1.4.3, libgcrypt-1.8.0, libjpeg-turbo-1.5.2, libpng-1.6.31,
libxslt-1.1.29, lmdb-0.9.21, OpenSSL-1.0.2l Libraries, QtWebkit-5.9.0,
phonon-4.9.1, shared-mime-info-1.8, URI-1.72, and Wget-1.19.1 (required
to download the packages)
Recommended
Aspell-0.60.6.1 (Dictionary backend for
Sonnet), Avahi-0.7 (DNS-SD backend for KDNSSD), libdbusmenu-qt-0.9.3+16.04.20160218
(built with qt5), NetworkManager-1.8.2 (needed to build
NetworkManager-Qt), and polkit-qt-0.112.0 (Authentication backend for
KAuth)
Optional
BlueZ-5.46 (needed to build Bluez-Qt), ModemManager-1.6.8 (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.6, and PyYAML-3.12
Additional image formats support in KImageFormats
JasPer-2.0.12 and OpenEXR
Optional dependencies for KIO
MIT Kerberos V5-1.15.1
Optional dependencies for Solid
UDisks-2.7.2, UPower-0.99.5 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.37/
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
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.37.0.md5 << "EOF"
b6c54ce0f87384c070e3dfb5488380c5 attica-5.37.0.tar.xz
#29883c1580c5b9e4c736a138fc832e1a extra-cmake-modules-5.37.0.tar.xz
d359828a8c026643374782268e099372 kapidox-5.37.0.tar.xz
141bf68d72d41056b1d1485da8a47a9e karchive-5.37.0.tar.xz
8d85c7e7e8fcafd111ee4926160c60e4 kcodecs-5.37.0.tar.xz
b25eebcac5447af9435f2effc2f566ce kconfig-5.37.0.tar.xz
76bf9525d2eebf95fbc4dde189b7dc74 kcoreaddons-5.37.0.tar.xz
2697c6440c566da94341f4bc3bf3164c kdbusaddons-5.37.0.tar.xz
e12d09fb176c0533d2a4eed6b43cbfc3 kdnssd-5.37.0.tar.xz
a395b2479d99128cba078c3a1299a566 kguiaddons-5.37.0.tar.xz
97bdebb717431b400add03d60484db72 ki18n-5.37.0.tar.xz
e070c69d7785532d0671a077e3cc370f kidletime-5.37.0.tar.xz
127c01934d68a3b3b88231e9602831e5 kimageformats-5.37.0.tar.xz
db88454a0c4335432055ac074104dc43 kitemmodels-5.37.0.tar.xz
062bfca05e8bb81fa8eb360c6944d75f kitemviews-5.37.0.tar.xz
12f507e62783ce6a17e61328b3a85b07 kplotting-5.37.0.tar.xz
70161280f8e10ac69fc7d334a8531fdd kwidgetsaddons-5.37.0.tar.xz
05864840b694d3a587590c38e2170df0 kwindowsystem-5.37.0.tar.xz
80523443bbb0a0882631f22793e7ff9c networkmanager-qt-5.37.0.tar.xz
edf069c6ea563318ae710a36d55af35a solid-5.37.0.tar.xz
3e2a53802d204bc73d975fd769cbdae2 sonnet-5.37.0.tar.xz
bd38a5cc79c9f2dc8e7f0fcf7df482c9 threadweaver-5.37.0.tar.xz
ed6136acf490dcdaa145e09f2f517338 kauth-5.37.0.tar.xz
b0efe7abac21241f3b5933c5b1ddb8ef kcompletion-5.37.0.tar.xz
34d013abaaae22b45a46956997b0b82c kcrash-5.37.0.tar.xz
fe3f523474c3e65a86884b3e88a18d2a kdoctools-5.37.0.tar.xz
c5732adada0f8ab44eaefbfd458351c4 kpty-5.37.0.tar.xz
6260f91d8340ab7505dbefd58cc7d3bf kunitconversion-5.37.0.tar.xz
e13440e05800f7187c7e98eb6babfa96 kconfigwidgets-5.37.0.tar.xz
d2d343de16c69c7b5d8c492fefa3115f kservice-5.37.0.tar.xz
36bf35d34827bb6b78c7b4cb8be3c554 kglobalaccel-5.37.0.tar.xz
b594e9d93bcfac2f6b2aa98f2642f9ca kpackage-5.37.0.tar.xz
d717f6061cac42035e133618bf043965 kdesu-5.37.0.tar.xz
cc5ff7c6f686c1278d56fcec5df38222 kemoticons-5.37.0.tar.xz
47babcad619664866c880623fd86ff2f kiconthemes-5.37.0.tar.xz
8c5f7d0160aadeb1392e44315bd3c706 kjobwidgets-5.37.0.tar.xz
b8fe7fc1e9180d7a2519d8401b42cd65 knotifications-5.37.0.tar.xz
deda1b1ac51fe9e4859bafb7c0144133 ktextwidgets-5.37.0.tar.xz
ef28a72da7beffaef6dfcaebcb509d30 kxmlgui-5.37.0.tar.xz
da82f6881e3b1de522b0ca6ce80c7634 kbookmarks-5.37.0.tar.xz
e5900cdfe4a4958965e25002b9f1cab8 kwallet-5.37.0.tar.xz
6d46bb8e26222e3c68a60611c62cd298 kio-5.37.0.tar.xz
6313ca5c3501ce1f4d00ceef3a441ced kdeclarative-5.37.0.tar.xz
d3a81d2cf8d4bcdcb8f1b4a018107e99 kcmutils-5.37.0.tar.xz
0b620a47aca20b155ae461e12a437ae5 knewstuff-5.37.0.tar.xz
5cb0433c25ace0fad2b49cf3b8459704 frameworkintegration-5.37.0.tar.xz
a931963d19b927560b5d81f4fb8bec12 kinit-5.37.0.tar.xz
10db039a62f903c42ddbe762fcef13b1 knotifyconfig-5.37.0.tar.xz
1fde7d6c99345e29d7c0a900a8c67659 kparts-5.37.0.tar.xz
53162e9c01be1e793e6407d2d3cde628 kactivities-5.37.0.tar.xz
ecff152277532d352cb2957a81c44300 kded-5.37.0.tar.xz
f24c53f5b36d23d24ca0b96f027051e0 kdewebkit-5.37.0.tar.xz
a6033d9a6240b133938602a4b7cb98d6 syntax-highlighting-5.37.0.tar.xz
b33dcff501812990fd3065a42264aca2 ktexteditor-5.37.0.tar.xz
2790a476fd712e9c9686a6ff151267dc kdesignerplugin-5.37.0.tar.xz
a1ebab3f95697555278c3bef60647647 kwayland-5.37.0.tar.xz
e73d212673dd92bfc4b943f9d1a21be4 plasma-framework-5.37.0.tar.xz
#b814194b5e8e03c04736567e178d1932 modemmanager-qt-5.37.0.tar.xz
06fbfd8fa30aace3d75fc156de5417d3 kpeople-5.37.0.tar.xz
8372393ce57eb14fb85e54602e24ae47 kxmlrpcclient-5.37.0.tar.xz
4eed8acd2acb2633cba4dd7f8a248b49 bluez-qt-5.37.0.tar.xz
438fe87d54d35f99a71a61cf3b8a9944 kfilemetadata-5.37.0.tar.xz
f317f652591702315c7a9f0d8f95031a baloo-5.37.0.tar.xz
#bf3a1386e6b3daf7b6ee27d59bd55a91 breeze-icons-5.37.0.tar.xz
#3f7cdadd2adc1b82b5600fbea90d0888 oxygen-icons5-5.37.0.tar.xz
18dcba6b6021a6ec21617816113b62fa kactivities-stats-5.37.0.tar.xz
ebac192db60aac4edf29da8cf09b6bd9 krunner-5.37.0.tar.xz
#f4e54c14d94e70c154ebc4d57d868b2f prison-5.37.0.tar.xz
#74de56d367913ec08c547e916bfe3b24 kirigami2-5.37.0.tar.xz
4ef52deab5f709ddf0d3e99bf7747077 kjs-5.37.0.tar.xz
7584d933213c7a3f56c55f1eede7b717 kdelibs4support-5.37.0.tar.xz
691bc2e2a5b763e21333fbac28d039b3 khtml-5.37.0.tar.xz
d21ea2f8177d503b826809b614e37471 kjsembed-5.37.0.tar.xz
73d2101fb4aa04df9918b46e1e91bf7a kmediaplayer-5.37.0.tar.xz
cd2f2748eed19cfe8552b6444c27a021 kross-5.37.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.37.0 and oxygen-icons5-5.37.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. The kirigami2
package is a set of libraries for the android platform (see
https://techbase.kde.org/Kirigami
for more information.)
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.20p2 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:
export CXXFLAGS='-isystem /usr/include/openssl-1.0'
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
case $packagedir in
syntax-highlighting* )
sed -i.orig 's|w-|w\\-|' data/syntax/rest.xml
;;
kdelibs4support*)
sed -i.orig \
'/OPENSSL_FOUND/i set(OPENSSL_INCLUDE_DIR "/usr/include/openssl-1.0")' \
src/CMakeLists.txt
;;
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.37.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.37.0
ln -sfvn kf5-5.37.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.
-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 48 programs installed in
/opt/kf5/bin.
Installed Libraries:
There are too many kf5 libraries (191) to
list separately.
Installed Directories:
/opt/kf5 (symlink to
/opt/kf5-5.37.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-08-26 21:18:25 -0700