Building Plasma 5

KDE Plasma 5 is a collection of packages based on top of KDE Frameworks 5 and QML. It has been derived from the monolithic KDE 4 desktop. They implement 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 Plasma 5 packages in one step by using a bash script.

Package Information

Plasma 5 Dependencies

Required

FontForge-20150824, GTK+-2.24.29, GTK+-3.18.7, KDE Frameworks-5.19.0, libpwquality-1.3.0, libxkbcommon-0.5.0, Mesa-11.1.2 built with Wayland-1.10.0, NetworkManager-1.0.10, PulseAudio-8.0, Python-2.7.11, qca-2.1.1 (built with qt5), taglib-1.10, and xcb-util-cursor-0.1.2

Recommended

Optional

GLU-9.0.0, Xorg Synaptics Driver-1.8.3, ibus, libgps, libhybris, libraw1394, mockcpp, Qalculate, Qapt, and SCIM

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

Downloading KDE Plasma5

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

url=http://download.kde.org/stable/plasma/5.5.4/
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 > plasma-5.5.4.md5 << "EOF"
3a56e727477dc28d51c10d5d2eb91dc2  kde-cli-tools-5.5.4.tar.xz
f30791e38e7eccd5b6a8643d606d4e3b  kdecoration-5.5.4.tar.xz
c0e92aa7fd9f868bb565b5d39a382d81  kwayland-5.5.4.tar.xz
bc23b108f5e5dccdc03183e4b72c354d  libkscreen-5.5.4.tar.xz
af74ab9d18f156c16c542892c9148731  libksysguard-5.5.4.tar.xz
e284a850879f33ccbfea22fae5d93a6e  breeze-5.5.4.tar.xz
d7bcd2d966533519ca7bd7c8d83f2490  breeze-gtk-5.5.4.tar.xz
5073ee898dac459f53200daba96d73ba  kscreenlocker-5.5.4.tar.xz
d79eaaf8d24918a7a3dd0e95bf4f7b95  oxygen-5.5.4.tar.xz
e47e2afb0bdef8733408467d24199694  khelpcenter-5.5.4.tar.xz
4eddff6767cf1a2d47b6ddf711a4655e  kinfocenter-5.5.4.tar.xz
36158a670305ecd8ef29415448917d5a  ksysguard-5.5.4.tar.xz
d719b7258a5fa9bf2dae770a20fa4e2d  kwin-5.5.4.tar.xz
d745f6cd41f9d248fda24db9d491d973  systemsettings-5.5.4.tar.xz
e6450622646f5361a71830912320fd64  plasma-workspace-5.5.4.tar.xz
725f2046c787929d71162dada5fd1bf3  bluedevil-5.5.4.tar.xz
6a3a8e2dc4c19205802d3cee52f21abc  kde-gtk-config-5.5.4.tar.xz
7dae9526e136fd1a842f83c33a703acb  khotkeys-5.5.4.tar.xz
6b4f74c63e78f019d9a7e219ebf2b57e  kmenuedit-5.5.4.tar.xz
6a353bae593f9519773be8f9529adb1f  kscreen-5.5.4.tar.xz
b744d8f115ef2d2764d83a9fe9071957  kwallet-pam-5.5.4.tar.xz
5a2b6d89e9ae11abe0d4b04c372fbaa8  kwayland-integration-5.5.4.tar.xz
d2eb5b40976639f3571bc5cee74854c9  kwrited-5.5.4.tar.xz
4719f8c76bc8b7bdca544fdaf5e836a9  milou-5.5.4.tar.xz
70287df57f1869801d4cab8179c20f2e  plasma-nm-5.5.4.tar.xz
bfc8507bf610b8738047bf59c4e32327  plasma-pa-5.5.4.tar.xz
996d8eb8b7a0a4ed26d13d09a0038709  plasma-workspace-wallpapers-5.5.4.tar.xz
3236cf46b260b7c3bcbc22fecfda0aca  polkit-kde-agent-1-5.5.4.tar.xz
4822113c9a2366e8ec406d6e709ed2c5  powerdevil-5.5.4.tar.xz
2ec4ddd309582c91c39f1921415cc059  plasma-desktop-5.5.4.tar.xz
1265fb2c9e28437dda3c5af00102e041  kdeplasma-addons-5.5.4.tar.xz
a6d759ea14f106701202b8c536dfb62c  kgamma5-5.5.4.tar.xz
90793d76613ed4f3a2f46c2c417527ed  ksshaskpass-5.5.4.tar.xz
4a1a4a6b6196d3f115de53a6d220f9cd  plasma-mediacenter-5.5.4.tar.xz
03ab7ffd49c9c6cd266f43b6b1b31571  plasma-sdk-5.5.4.tar.xz
0cc50236023b0baf02ccbcd4e373337a  sddm-kcm-5.5.4.tar.xz
f545a6e63b0953b777a1709f6f6f9248  user-manager-5.5.4.tar.xz
277ad0f67e0b101d109e93a03902bf49  discover-5.5.4.tar.xz
EOF

Installation of Plasma5

[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

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

       OPTS=""

       case $packagedir in
         kwayland-5.5.4 )
           OPTS="-DECM_MKSPECS_INSTALL_DIR=$KF5_PREFIX/share/mkspecs/modules"
           ;;

         libksysguard-5.5.4 )
           sed -i "1 i using namespace std;" ../signalplotter/ksignalplotter.cpp
           ;;
       esac

       cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \
             -DCMAKE_BUILD_TYPE=Release         \
             -DLIB_INSTALL_DIR=lib              \
             -DBUILD_TESTING=OFF                \
             $OPTS                              \
             -Wno-dev ..  &&

        make
        as_root make install
    popd

    rm -rf $packagedir
    as_root /sbin/ldconfig

done < plasma-5.5.4.md5

exit

cd $KF5_PREFIX/share/plasma/plasmoids

for j in $(find -name \*.js); do
  as_root ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/
done

Command Explanations

ln -sfv ../code/$(basename $j) $(dirname $j)/../ui/: Create symbolic links so qml files can find needed javascript modules.

Starting Plasma5

[Caution]

Caution

If you have KDE4 installed as well as Plasma 5, make sure the PATH environment setting has the Plasma 5 binaries before the KDE4 entry. You can ensure this by running:

pathprepend /opt/kf5/bin

before running startx.

You can start Plasma5 from runlevel 3, using xinit-1.3.4, or from runlevel 5, using a Display Manager, such as sddm-0.13.0.

To start Plasma 5 using xinit-1.3.4, run the following commands:

cat > ~/.xinitrc << "EOF"
ck-launch-session dbus-launch --exit-with-session $KF5_PREFIX/bin/startkde
EOF

startx

The X session starts on the first unused virtual terminal, normally vt7. You can switch to another vtn simultaneously pressing the keys Ctrl-Alt-Fn (n=1, 2, ...). To switch back to the X session, normally started at vt7, use Ctrl-Alt-F7. The vt where the command startx was executed will display many messages, including X starting messages, applications automatically started with the session, and eventually, some warning and error messages. You may prefer to redirect those messages to a log file, which not only will keep the initial vt uncluttered, but can also be used for debugging purposes. This can be done starting X with:

startx &> ~/.x-session-errors
[Note]

Note

You may wish to drop consolekit and/or dbus-launch, e.g., just using startkde in ~/.xinitrc. However some capabilities such as mounting or umounting file systems from a file manager will not be possible, or the reboot option may be absent or inoperative, among other problems.

When shutting down or rebooting, the shutdown messages appear on the vt where X was running. If you wish to see those messages, simultaneously press keys Alt-F7 (assuming that X was running on vt7).

Contents

Installed Programs: There are too many plasma programs (50 in /opt/kf5/bin) to list separately here.
Installed Libraries: There are too many plasma libraries (39 in /opt/kf5/lib) to list separately here.
Installed Directories: There are too many plasma directories (over 1000 in /opt/kf5) to list separately here.

Last updated on 2015-09-24 16:44:04 -0500