From ccd46cc4b5b8c1810c26512181ed37e0914b76f4 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Thu, 28 Apr 2016 13:17:49 -0500 Subject: [PATCH] Revert "kde5_latest.plasma-workspace: remove patches" This reverts commit ffc217883c5c792f2876c22e2827d480ae12f6bb. --- pkgs/desktops/kde-5/plasma-5.6/default.nix | 2 +- .../default.nix} | 4 +- .../plasma-workspace/qml-import-path.patch | 104 +++++ .../kde-5/plasma-5.6/plasma-workspace/series | 1 + .../plasma-workspace/startkde.patch | 372 ++++++++++++++++++ 5 files changed, 481 insertions(+), 2 deletions(-) rename pkgs/desktops/kde-5/plasma-5.6/{plasma-workspace.nix => plasma-workspace/default.nix} (94%) create mode 100644 pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/qml-import-path.patch create mode 100644 pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/series create mode 100644 pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch diff --git a/pkgs/desktops/kde-5/plasma-5.6/default.nix b/pkgs/desktops/kde-5/plasma-5.6/default.nix index 5270d253164..27274654ce2 100644 --- a/pkgs/desktops/kde-5/plasma-5.6/default.nix +++ b/pkgs/desktops/kde-5/plasma-5.6/default.nix @@ -80,7 +80,7 @@ let plasma-mediacenter = callPackage ./plasma-mediacenter.nix {}; plasma-nm = callPackage ./plasma-nm {}; plasma-pa = callPackage ./plasma-pa.nix {}; - plasma-workspace = callPackage ./plasma-workspace.nix {}; + plasma-workspace = callPackage ./plasma-workspace {}; plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {}; polkit-kde-agent = callPackage ./polkit-kde-agent.nix {}; powerdevil = callPackage ./powerdevil.nix {}; diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace.nix b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/default.nix similarity index 94% rename from pkgs/desktops/kde-5/plasma-5.6/plasma-workspace.nix rename to pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/default.nix index b8761998fae..73a84274642 100644 --- a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace.nix +++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/default.nix @@ -1,4 +1,4 @@ -{ plasmaPackage, lib +{ plasmaPackage, lib, copyPathsToStore , extra-cmake-modules, kdoctools , baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative , kdelibs4support, kdesu, kdewebkit, kglobalaccel, kidletime, kjsembed, knewstuff @@ -24,6 +24,8 @@ plasmaPackage { qtscript qtx11extras solid wayland ]; + patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + postPatch = '' substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \ --replace kdostartupconfig5 $out/bin/kdostartupconfig5 diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/qml-import-path.patch b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/qml-import-path.patch new file mode 100644 index 00000000000..1d34001be59 --- /dev/null +++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/qml-import-path.patch @@ -0,0 +1,104 @@ +Index: plasma-workspace-5.5.1/applets/analog-clock/contents/ui/analogclock.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/analog-clock/contents/ui/analogclock.qml ++++ plasma-workspace-5.5.1/applets/analog-clock/contents/ui/analogclock.qml +@@ -25,7 +25,7 @@ import org.kde.plasma.calendar 2.0 as Pl + import QtQuick.Layouts 1.1 + + import org.kde.plasma.core 2.0 as PlasmaCore +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: analogclock +Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/BatteryItem.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/BatteryItem.qml ++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/BatteryItem.qml +@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as + import org.kde.plasma.extras 2.0 as PlasmaExtras + import org.kde.plasma.workspace.components 2.0 + import org.kde.kcoreaddons 1.0 as KCoreAddons +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batteryItem +Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml ++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml +@@ -24,7 +24,7 @@ import QtQuick.Layouts 1.1 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.plasma.components 2.0 as Components + import org.kde.plasma.workspace.components 2.0 +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + MouseArea { + id: root +Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/PopupDialog.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/PopupDialog.qml ++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/PopupDialog.qml +@@ -23,7 +23,7 @@ import org.kde.plasma.core 2.0 as Plasma + import org.kde.plasma.components 2.0 as Components + import org.kde.plasma.extras 2.0 as PlasmaExtras + import org.kde.kquickcontrolsaddons 2.0 +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + FocusScope { + id: dialog +Index: plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/batterymonitor.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/batterymonitor/package/contents/ui/batterymonitor.qml ++++ plasma-workspace-5.5.1/applets/batterymonitor/package/contents/ui/batterymonitor.qml +@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.kcoreaddons 1.0 as KCoreAddons + import org.kde.kquickcontrolsaddons 2.0 +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batterymonitor +Index: plasma-workspace-5.5.1/applets/lock_logout/contents/ui/lockout.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/lock_logout/contents/ui/lockout.qml ++++ plasma-workspace-5.5.1/applets/lock_logout/contents/ui/lockout.qml +@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.plasma.components 2.0 + import org.kde.kquickcontrolsaddons 2.0 +-import "data.js" as Data ++import "../code/data.js" as Data + + Flow { + id: lockout +Index: plasma-workspace-5.5.1/applets/notifications/package/contents/ui/main.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/notifications/package/contents/ui/main.qml ++++ plasma-workspace-5.5.1/applets/notifications/package/contents/ui/main.qml +@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as Plas + + import org.kde.plasma.private.notifications 1.0 + +-import "uiproperties.js" as UiProperties ++import "../code/uiproperties.js" as UiProperties + + MouseEventListener { + id: notificationsApplet +Index: plasma-workspace-5.5.1/applets/systemtray/package/contents/ui/main.qml +=================================================================== +--- plasma-workspace-5.5.1.orig/applets/systemtray/package/contents/ui/main.qml ++++ plasma-workspace-5.5.1/applets/systemtray/package/contents/ui/main.qml +@@ -25,7 +25,7 @@ import org.kde.plasma.core 2.0 as Plasma + // import org.kde.plasma.extras 2.0 as PlasmaExtras + + import org.kde.private.systemtray 2.0 as SystemTray +-import "Layout.js" as LayoutManager ++import "../code/Layout.js" as LayoutManager + + Item { + id: root diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/series b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/series new file mode 100644 index 00000000000..b9081298bd6 --- /dev/null +++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/series @@ -0,0 +1 @@ +qml-import-path.patch diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch new file mode 100644 index 00000000000..eea0ae4c199 --- /dev/null +++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch @@ -0,0 +1,372 @@ +Index: plasma-workspace-5.5.5/startkde/startkde.cmake +=================================================================== +--- plasma-workspace-5.5.5.orig/startkde/startkde.cmake ++++ plasma-workspace-5.5.5/startkde/startkde.cmake +@@ -1,8 +1,36 @@ +-#!/bin/sh ++#!@bash@ + # + # DEFAULT KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + ++set -x ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $HOME/.config/Trolltech.conf ]; then ++ @sed@ -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf ++fi ++ ++# (NixOS) We run kbuildsycoca5 before starting the user session because things ++# may be missing or moved if they have run nixos-rebuild and it may not be ++# possible for them to start Konsole to run it manually! ++@kbuildsycoca5@ ++ + if test "x$1" = x--failsafe; then + KDE_FAILSAFE=1 # General failsafe flag + KWIN_COMPOSE=N # Disable KWin's compositing +@@ -17,29 +45,16 @@ trap 'echo GOT SIGHUP' HUP + # we have to unset this for Darwin since it will screw up KDE's dynamic-loading + unset DYLD_FORCE_FLAT_NAMESPACE + +-# in case we have been started with full pathname spec without being in PATH +-bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'` +-if [ -n "$bindir" ]; then +- qbindir=`qtpaths --binaries-dir` +- qdbus=$qbindir/qdbus +- case $PATH in +- $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;; +- *) PATH=$bindir:$PATH; export PATH;; +- esac +-else +- qdbus=qdbus +-fi +- + # Check if a KDE session already is running and whether it's possible to connect to X +-kcheckrunning ++@kcheckrunning@ + kcheckrunning_result=$? + if test $kcheckrunning_result -eq 0 ; then +- echo "KDE seems to be already running on this display." +- xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null ++ echo "KDE seems to be already running on this display." ++ @xmessage@ -geometry 500x100 "KDE seems to be already running on this display." + exit 1 + elif test $kcheckrunning_result -eq 2 ; then + echo "\$DISPLAY is not set or cannot connect to the X server." +- exit 1 ++ exit 1 + fi + + # Boot sequence: +@@ -57,13 +72,8 @@ fi + # * Then ksmserver is started which takes control of the rest of the startup sequence + + # We need to create config folder so we can write startupconfigkeys +-if [ ${XDG_CONFIG_HOME} ]; then +- configDir=$XDG_CONFIG_HOME; +-else +- configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html +-fi +- +-mkdir -p $configDir ++configDir=$(@qtpaths@ --writable-path GenericConfigLocation) ++mkdir -p "$configDir" + + #This is basically setting defaults so we can use them with kstartupconfig5 + cat >$configDir/startupconfigkeys </dev/null 2>/dev/null; then ++ : # ok ++else ++ echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 ++ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++ @xmessage@ -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" ++ exit 1 ++fi ++ + ksplash_pid= + if test -z "$dl"; then + # the splashscreen and progress indicator + case "$ksplashrc_ksplash_engine" in + KSplashQML) +- ksplash_pid=`ksplashqml "${ksplashrc_ksplash_theme}" --pid` ++ ksplash_pid=`@out@/bin/ksplashqml "${ksplashrc_ksplash_theme}" --pid` + ;; + None) + ;; +@@ -201,8 +199,7 @@ fi + # For anything else (that doesn't set env vars, or that needs a window manager), + # better use the Autostart folder. + +-# TODO: Use GenericConfigLocation once we depend on Qt 5.4 +-scriptpath=`qtpaths --paths ConfigLocation | tr ':' '\n' | sed 's,$,/plasma-workspace,g'` ++scriptpath=$(@qtpaths@ --paths GenericConfigLocation | tr ':' '\n' | @sed@ 's,$,/plasma-workspace,g') + + # Add /env/ to the directory to locate the scripts to be sourced + for prefix in `echo $scriptpath`; do +@@ -232,7 +229,7 @@ usr_odir=$HOME/.fonts/kde-override + usr_fdir=$HOME/.fonts + + if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` ++ kdedirs_first=`echo "$KDEDIRS" | @sed@ -e 's/:.*//'` + sys_odir=$kdedirs_first/share/fonts/override + sys_fdir=$kdedirs_first/share/fonts + else +@@ -245,23 +242,13 @@ fi + # add the user's dirs to the font path, as they might simply have been made + # read-only by the administrator, for whatever reason. + +-test -d "$sys_odir" && xset +fp "$sys_odir" +-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") +-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") +-test -d "$sys_fdir" && xset fp+ "$sys_fdir" ++test -d "$sys_odir" && @xset@ +fp "$sys_odir" ++test -d "$usr_odir" && ( @mkfontdir@ "$usr_odir" ; @xset@ +fp "$usr_odir" ) ++test -d "$usr_fdir" && ( @mkfontdir@ "$usr_fdir" ; @xset@ fp+ "$usr_fdir" ) ++test -d "$sys_fdir" && @xset@ fp+ "$sys_fdir" + + # Ask X11 to rebuild its font list. +-xset fp rehash +- +-# Set a left cursor instead of the standard X11 "X" cursor, since I've heard +-# from some users that they're confused and don't know what to do. This is +-# especially necessary on slow machines, where starting KDE takes one or two +-# minutes until anything appears on the screen. +-# +-# If the user has overwritten fonts, the cursor font may be different now +-# so don't move this up. +-# +-xsetroot -cursor_name left_ptr ++@xset@ fp rehash + + # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap + if test -n "$GS_LIB" ; then +@@ -274,26 +261,6 @@ fi + + echo 'startkde: Starting up...' 1>&2 + +-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or +-# /usr/local. +-if test -z "$XDG_DATA_DIRS"; then +- XDG_DATA_DIRS="@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@:/usr/share:/usr/local/share" +-fi +-export XDG_DATA_DIRS +- +-# Make sure that D-Bus is running +-if $qdbus >/dev/null 2>/dev/null; then +- : # ok +-else +- echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 +- test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" +- exit 1 +-fi +- +- + # Mark that full KDE session is running (e.g. Konqueror preloading works only + # with full KDE running). The KDE_FULL_SESSION property can be detected by + # any X client connected to the same X session, even if not launched +@@ -318,11 +285,11 @@ fi + # + KDE_FULL_SESSION=true + export KDE_FULL_SESSION +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@xprop@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true + + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@xprop@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + + KDE_SESSION_UID=`id -ru` + export KDE_SESSION_UID +@@ -332,11 +299,11 @@ export XDG_CURRENT_DESKTOP + + # At this point all the environment is ready, let's send it to kwalletd if running + if test -n "$PAM_KWALLET_LOGIN" ; then +- env | socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN ++ env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN + fi + # ...and also to kwalletd5 + if test -n "$PAM_KWALLET5_LOGIN" ; then +- env | socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN ++ env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN + fi + + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +@@ -349,18 +316,18 @@ if test $? -ne 0; then + # Startup error + echo 'startkde: Could not sync environment to dbus.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not sync environment to dbus." ++ @xmessage@ -geometry 500x100 "Could not sync environment to dbus." + exit 1 + fi + + # We set LD_BIND_NOW to increase the efficiency of kdeinit. + # kdeinit unsets this variable before loading applications. +-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup ++LD_BIND_NOW=true @start_kdeinit_wrapper@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startkde: Could not start kdeinit5. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." ++ @xmessage@ -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +@@ -379,27 +346,27 @@ test -n "$KDEWM" && KDEWM="--windowmanag + # lock now and do the rest of the KDE startup underneath the locker. + KSMSERVEROPTIONS="" + test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++@kwrapper5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS + if test $? -eq 255; then + # Startup error + echo 'startkde: Could not start ksmserver. Check your installation.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start ksmserver. Check your installation." ++ @xmessage@ -geometry 500x100 "Could not start ksmserver. Check your installation." + fi + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++wait_drkonqi=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true` + + if test x"$wait_drkonqi"x = x"true"x ; then + # wait for remaining drkonqi instances with timeout (in seconds) +- wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` ++ wait_drkonqi_timeout=`@kreadconfig5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900` + wait_drkonqi_counter=0 +- while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @qdbus@ | @grep@ "^[^w]*org.kde.drkonqi" > /dev/null ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) + if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then + # ask remaining drkonqis to die in a graceful way +- $qdbus | grep 'org.kde.drkonqi-' | while read address ; do +- $qdbus "$address" "/MainApplication" "quit" ++ @qdbus@ | @grep@ 'org.kde.drkonqi-' | while read address ; do ++ @qdbus@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -411,12 +378,12 @@ echo 'startkde: Shutting down...' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null + + # Clean up +-kdeinit5_shutdown ++@kdeinit5_shutdown@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@xprop@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@xprop@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startkde: Done.' 1>&2