Building Plasma 5

KDE Plasma 5 is a collection of packages based on top of KDE Frameworks 5 and QML. They implement the KDE Display Environment (Plasma 5).

This package is known to build and work properly using an LFS-8.3 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

GConf-3.2.6, GTK+-2.24.32, GTK+-3.24.1, KDE Frameworks-5.49.0, libpwquality-1.4.0, libxkbcommon-0.8.2, Mesa-18.2.6 built with Wayland-1.16.0, NetworkManager-1.12.2, PulseAudio-12.2, Python-2.7.15, qca-2.1.3, taglib-1.11.1, and xcb-util-cursor-0.1.3

Recommended

Optional

GLU-9.0.0, ibus-1.5.19, Xorg Synaptics Driver-1.9.1, appstream-qt, KDevPlatform, libgps, libhybris, libraw1394, mockcpp, packagekit-qt, Qalculate, Qapt, SCIM, and socat (for pam_kwallet)

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.13.4/
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 > plasma-5.13.4.md5 << "EOF"
2cfae8349d3c5a4d7b52269b6ef580bc  kdecoration-5.13.4.tar.xz
dfe4e097033f48d5f3b56d7d9fe91c91  libkscreen-5.13.4.tar.xz
939be7f1b81f8948d3026ea0f6b71332  libksysguard-5.13.4.tar.xz
a5811405ebf81ced2d96dddda14dc65c  breeze-5.13.4.tar.xz
544d7306a573a4b1af9cf15bea565f77  breeze-gtk-5.13.4.tar.xz
6f1846e0f49c0e660ffea7b25d979f5c  kscreenlocker-5.13.4.tar.xz
431d2a2eea56e05659d4d9bfee75b8f9  oxygen-5.13.4.tar.xz
787f4cf0ebb6a296a907526f8a05d96e  kinfocenter-5.13.4.tar.xz
38cdb99d3e7133dd8720073d184c0219  ksysguard-5.13.4.tar.xz
886af79baa7b478ee25ce9491f0398bd  kwin-5.13.4.tar.xz
3035c264c2c00d274995216f135a2525  plasma-workspace-5.13.4.tar.xz
3f3de6be50ce252d5f000f200fd274c7  bluedevil-5.13.4.tar.xz
a092d24dfd11b41c56a6babe7c8ec460  kde-gtk-config-5.13.4.tar.xz
9bcb6800aa2049b77dd0e31b1f48bd86  khotkeys-5.13.4.tar.xz
f5a94fb11385cd4df4df330193ebb395  kmenuedit-5.13.4.tar.xz
bf91e1d9eefc6660de6027aceeff6c97  kscreen-5.13.4.tar.xz
e7f0bfb74c5d5a9ff43e6de6cb0f0d8d  kwallet-pam-5.13.4.tar.xz
7f666f407e8f1e076897e68295c8f5a7  kwayland-integration-5.13.4.tar.xz
57638eed026c081df092baef0615eb92  kwrited-5.13.4.tar.xz
69ff78fc195af7e4994429b44454f3f9  milou-5.13.4.tar.xz
7c2bd25f90a7d55dc334897286facfc6  plasma-nm-5.13.4.tar.xz
edef493711c1f8b7dde43390ff415eb4  plasma-pa-5.13.4.tar.xz
4ab6df9997269d2263c3e6fb2d6b4bf7  plasma-workspace-wallpapers-5.13.4.tar.xz
52deb7a41477d704a6895a7bdccaa1d7  polkit-kde-agent-1-5.13.4.tar.xz
728661126e6f4d414c5fa2a7d596ecbf  powerdevil-5.13.4.tar.xz
c1461af55b31cbf0473df4b30d90c376  plasma-desktop-5.13.4.tar.xz
35d28871e37fd28602066706967a9bb0  kdeplasma-addons-5.13.4.tar.xz
0b3cabd2f882599dffd5bd49b55a231e  kgamma5-5.13.4.tar.xz
14e004c9d8112815b8bb0c6438a5d57f  ksshaskpass-5.13.4.tar.xz
#b97352709bd0ed4a7a8d3f28630b85a6  plasma-sdk-5.13.4.tar.xz
0c9af753ed311600b218747fa6eb5dcd  sddm-kcm-5.13.4.tar.xz
b101c424b5b13cecf32aab93c4215e15  user-manager-5.13.4.tar.xz
e46195de68d3cabbb0b73e4252aaf95b  discover-5.13.4.tar.xz
#db28bc45387c0f4be49de795040df888  breeze-grub-5.13.4.tar.xz
#85f27da438e5e6476220112e0728cdbe  breeze-plymouth-5.13.4.tar.xz
4147607b008aefcc744eb19896a37f73  kactivitymanagerd-5.13.4.tar.xz
a8ef5bd003ea74107d176d42ae0e83e9  plasma-integration-5.13.4.tar.xz
7e4a31d74ae071054d225bb8075647fd  plasma-tests-5.13.4.tar.xz
0600243811dbda474d1c994de6973d3f  plymouth-kcm-5.13.4.tar.xz
643c83817fcd3668eedfc01b60ab4731  xdg-desktop-portal-kde-5.13.4.tar.xz
147892484b3ba637840e47881b52434d  drkonqi-5.13.4.tar.xz
52899d46e4fa6b293699d20163fa10d1  plasma-vault-5.13.4.tar.xz
d6963e6b203d0bbc864f35a272370370  plasma-browser-integration-5.13.4.tar.xz
90f115ede33aef5582ac17bf2a95f324  kde-cli-tools-5.13.4.tar.xz
9672ac04c144af86dae18eeb47da01b9  systemsettings-5.13.4.tar.xz
EOF
[Note]

Note

The breeze-grub, breeze-plymouth, and plymouth-kcm packages above are all for customized support of Plymouth which is designed to be run within an initial ram disk during boot (see the section called “About initramfs”). The plasma-sdk package is optional and used for software development.

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.26 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

       cmake -DCMAKE_INSTALL_PREFIX=$KF5_PREFIX \
             -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 < plasma-5.13.4.md5

exit

cd /usr/share/xsessions/
[ -e plasma.desktop ] || as_root ln -sfv $KF5_PREFIX/share/xsessions/plasma.desktop

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.

Configuring Plasma

Linux PAM Configuration

If you built Plasma with the recommended Linux PAM support, create necessary configuration files by running the following commands as the root user:

cat >> /etc/pam.d/kde << "EOF" 
# Begin /etc/pam.d/kde

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     include        system-auth

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde
EOF

cat > /etc/pam.d/kde-np << "EOF" 
# Begin /etc/pam.d/kde-np

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     required       pam_permit.so

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde-np
EOF

cat > /etc/pam.d/kscreensaver << "EOF"
# Begin /etc/pam.d/kscreensaver

auth    include system-auth
account include system-account

# End /etc/pam.d/kscreensaver
EOF

Starting Plasma5

You can start Plasma5 from runlevel 3, using xinit-1.4.0, or from runlevel 5, using a Display Manager, such as lightdm-1.28.0.

To start Plasma 5 using xinit-1.4.0, 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).

If you intend to start Plasma using a display manager such as lightdm-1.28.0, there will be two entries for Plasma, one for use with Xorg, and another for Wayland. Modify the Xorg entry with the following command, as the root user, so that you can differentiate between the two:

sed '/^Name=/s/Plasma/Plasma on Xorg/' -i /usr/share/xsessions/plasma.desktop

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