Hello community,

here is the log from the commit of package kdebase4-workspace for 
openSUSE:Factory checked in at 2014-03-18 17:16:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdebase4-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.kdebase4-workspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdebase4-workspace"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdebase4-workspace/kdebase4-workspace.changes    
2014-02-28 07:20:50.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kdebase4-workspace.changes   
    2014-03-18 17:16:49.000000000 +0100
@@ -1,0 +2,39 @@
+Sun Mar 16 19:50:59 UTC 2014 - [email protected]
+
+- added patch kde-workspace-4.11.0-kdm-logind-multiseat.patch for 
+  servers without VT, i.e. multiseat with sharevts 
+- add support for dynamic multiseat
+
+-------------------------------------------------------------------
+Fri Mar 14 21:15:44 UTC 2014 - [email protected]
+
+- Added patches from master (due to upstream 'LTS' policy not applied
+  to 4.11 branch)
+  0001-Add-the-full-name-of-completion-matches-to-history.patch and
+  0002-Move-focus-to-search-field-upon-typing-from-result-l.patch and
+  0003-Save-current-dialog-size-on-manual-resize.patch
+
+-------------------------------------------------------------------
+Fri Mar  7 10:26:03 UTC 2014 - [email protected]
+
+- Update to 4.11.7
+   * KDE 4.13 Beta1  release
+   * See http://www.kde.org/announcements/announce-4.13-beta1.php
+- Drop upstream patches:
+  * 0001-Explicitly-request-a-Window-drawable.patch
+  * 0004-align-zoomed-cursor-to-hotspot.patch
+  * 0005-be-more-aggressive-about-exiting-zoom-effect.patch
+  * 0006-spatial-present-windows-zoom-calculation.patch
+  * 0007-fix-frontbuffer-copying-swap-preference.patch
+  * 0008-fix-sendToScreen-for-QuickTiled-windows.patch
+  * 0009-reset-desktopChangedWhileRotating-on-activation.patch
+  * 0010-ensure-to-show-clients-that-need-sessionInteract.patch
+  * 0011-fix-off-by-1-on-multiscreen-toppanel-strutting.patch
+  * 0012-Perform-the-systemd-version-evaluation-through-a-reg.patch
+
+- Add patch  remove_strigi.patch to remove the dependency on strigi
+
+- Dropped 12.2 related lines in the spec-file as well the 
+  rcksysguard, as that this is since 12.3 a systemd service.
+
+-------------------------------------------------------------------

Old:
----
  0001-Explicitly-request-a-Window-drawable.patch
  0004-align-zoomed-cursor-to-hotspot.patch
  0005-be-more-aggressive-about-exiting-zoom-effect.patch
  0006-spatial-present-windows-zoom-calculation.patch
  0007-fix-frontbuffer-copying-swap-preference.patch
  0008-fix-sendToScreen-for-QuickTiled-windows.patch
  0009-reset-desktopChangedWhileRotating-on-activation.patch
  0010-ensure-to-show-clients-that-need-sessionInteract.patch
  0011-fix-off-by-1-on-multiscreen-toppanel-strutting.patch
  0012-Perform-the-systemd-version-evaluation-through-a-reg.patch
  kde-workspace-4.11.6.tar.xz
  rcksysguardd

New:
----
  0001-Add-the-full-name-of-completion-matches-to-history.patch
  0002-Move-focus-to-search-field-upon-typing-from-result-l.patch
  0003-Save-current-dialog-size-on-manual-resize.patch
  kde-workspace-4.11.0-kdm-logind-multiseat.patch
  kde-workspace-4.11.7.tar.xz
  remove_strigi.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdebase4-workspace.spec ++++++
--- /var/tmp/diff_new_pack.A5ds9Z/_old  2014-03-18 17:16:51.000000000 +0100
+++ /var/tmp/diff_new_pack.A5ds9Z/_new  2014-03-18 17:16:51.000000000 +0100
@@ -16,22 +16,15 @@
 #
 
 
-%if 0%{?suse_version} > 1220
-%define with_systemd 1
-%else
-%define with_systemd 0
-%endif
+%define with_multiseat 1
 
 Name:           kdebase4-workspace
-Version:        4.11.6
+Version:        4.11.7
 Release:        0
 Summary:        The KDE Workspace Components
 License:        GPL-2.0+
 Group:          System/GUI/KDE
 Url:            http://www.kde.org/
-%if !%{with_systemd}
-BuildRequires:  ConsoleKit-devel
-%endif
 BuildRequires:  fdupes
 BuildRequires:  gpsd-devel
 BuildRequires:  libQtWebKit-devel
@@ -56,23 +49,22 @@
 BuildRequires:  libqjson-devel
 BuildRequires:  libxcb-devel
 BuildRequires:  libxml2-tools
-BuildRequires:  nepomuk-core-devel
 BuildRequires:  python-devel
+%if %{with_multiseat}
+BuildRequires:  systemd-devel
+%endif
 BuildRequires:  xcb-util-image-devel
 BuildRequires:  xcb-util-renderutil-devel
 BuildRequires:  pkgconfig(glesv2)
+BuildRequires:  pkgconfig(glu)
 BuildRequires:  pkgconfig(udev)
 BuildRequires:  pkgconfig(xcb-keysyms)
-%if %suse_version > 1220
-BuildRequires:  pkgconfig(glu)
-%endif
 # Unlock this when we get weston in Factory
 %if %suse_version > 1230
 BuildRequires:  wayland-devel
 BuildRequires:  pkgconfig(wayland-egl)
 %endif
 Source0:        kde-workspace-%{version}.tar.xz
-Source1:        rcksysguardd
 Source2:        titlebar_decor.png
 Source3:        kwin-cubecap.png
 Source4:        sysconfig.displaymanager-kdm
@@ -145,26 +137,14 @@
 Patch65:        kdm-backend-session.patch
 # PATCH-FIX-OPENSUSE add-calculator-hotkey.patch -- Adds hotkey for Calculator 
button (bnc#726550)
 Patch66:        add-calculator-hotkey.patch
-# PATCH-FIX-UPSTREAM 0001-Explicitly-request-a-Window-drawable.patch
-Patch100:       0001-Explicitly-request-a-Window-drawable.patch
-# PATCH-FIX-UPSTREAM 0004-align-zoomed-cursor-to-hotspot.patch
-Patch101:       0004-align-zoomed-cursor-to-hotspot.patch
-# PATCH-FIX-UPSTREAM 0005-be-more-aggressive-about-exiting-zoom-effect.patch
-Patch102:       0005-be-more-aggressive-about-exiting-zoom-effect.patch
-# PATCH-FIX-UPSTREAM 0006-spatial-present-windows-zoom-calculation.patch
-Patch103:       0006-spatial-present-windows-zoom-calculation.patch
-# PATCH-FIX-UPSTREAM 0007-fix-frontbuffer-copying-swap-preference.patch
-Patch104:       0007-fix-frontbuffer-copying-swap-preference.patch
-# PATCH-FIX-UPSTREAM 0008-fix-sendToScreen-for-QuickTiled-windows.patch
-Patch105:       0008-fix-sendToScreen-for-QuickTiled-windows.patch
-# PATCH-FIX-UPSTREAM 0009-reset-desktopChangedWhileRotating-on-activation.patch
-Patch106:       0009-reset-desktopChangedWhileRotating-on-activation.patch
-# PATCH-FIX-UPSTREAM 
0010-ensure-to-show-clients-that-need-sessionInteract.patch
-Patch107:       0010-ensure-to-show-clients-that-need-sessionInteract.patch
-# PATCH-FIX-UPSTREAM 0011-fix-off-by-1-on-multiscreen-toppanel-strutting.patch
-Patch108:       0011-fix-off-by-1-on-multiscreen-toppanel-strutting.patch
-# PATCH-FIX-UPSTREAM 
0012-Perform-the-systemd-version-evaluation-through-a-reg.patch
-Patch109:       0012-Perform-the-systemd-version-evaluation-through-a-reg.patch
+# PATCH-FIX-OPENSUSE Remove the dependencies on strigi
+Patch67:        remove_strigi.patch
+# PATCH-FIX-UPSTREAM 68-70: make KRunner even more awesome -- patches for 
improving KRunner usability -- they where lost sometimes during 4.11 updates
+Patch68:        0001-Add-the-full-name-of-completion-matches-to-history.patch
+Patch69:        0002-Move-focus-to-search-field-upon-typing-from-result-l.patch
+Patch70:        0003-Save-current-dialog-size-on-manual-resize.patch
+# Taken from fedora, additional changes resubmitted to fedora
+Patch71:        kde-workspace-4.11.0-kdm-logind-multiseat.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires:       %{name}-branding = %{_kde_branding_version}
 Requires:       %{name}-ksysguardd = %{version}
@@ -178,10 +158,8 @@
 Requires:       windowmanager
 # patch kdm-sysconfig-values.diff requires /var/lib/xdm/authdir/authfiles 
(bnc#784212)
 Requires:       xdm
-%if %suse_version > 1220
 Requires:       xmessage
 Requires:       xprop
-%endif
 # The openSUSE-release package should always be installed, but just to make 
sure as that kinfocenter needs it
 Requires:       distribution-release
 Recommends:     kdebase4-SuSE
@@ -290,11 +268,8 @@
 %package -n kdm
 Summary:        KDE login and display manager
 Group:          System/GUI/KDE
-Requires:       kdm-branding = %{_kde_branding_version}
-%if !%{with_systemd}
-Requires:       ConsoleKit-x11
-%endif
 Requires:       kde4-kgreeter-plugins = %{version}
+Requires:       kdm-branding = %{_kde_branding_version}
 Requires:       logrotate
 Requires:       pam-config
 Requires:       xorg-x11-server
@@ -379,16 +354,13 @@
 %patch64 -p1
 %patch65 -p1
 %patch66 -p1
-%patch100 -p1
-%patch101 -p1
-%patch102 -p1
-%patch103 -p1
-%patch104 -p1
-%patch105 -p1
-%patch106 -p1
-%patch107 -p1
-%patch108 -p1
-%patch109 -p1
+%patch67 -p1
+%patch68 -p1
+%patch69 -p1
+%patch70 -p1
+%if %{with_multiseat}
+%patch71 -p1
+%endif
 
 cp %{SOURCE3} kwin/effects/cube/data/cubecap.png
 
@@ -430,12 +402,7 @@
     %suse_update_desktop_file -r krandrtray     System TrayIcon
     mkdir -p  %{buildroot}%{_kde4_sbindir}
     mkdir -p %{buildroot}%{_kde4_sysconfdir}/init.d
-    %if %{with_systemd}
     install -D -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/ksysguardd.service
-    %else
-    install -m 755 %{SOURCE1} %{buildroot}%{_initddir}/ksysguardd
-    ln -sf ../../etc/init.d/ksysguardd 
%{buildroot}%{_kde4_sbindir}/rcksysguardd
-    %endif
     ln -sf rcxdm %{buildroot}%{_kde4_sbindir}/rckdm
     mkdir -p %{buildroot}%{_kde4_sysconfdir}/logrotate.d/
     install -m 644 %{SOURCE6} %{buildroot}%{_kde4_sysconfdir}/logrotate.d/kdm
@@ -452,11 +419,6 @@
       popd
     done
 
-%if 0%{?suse_version} < 1310
-echo "setBadness('suse-dbus-unauthorized-service', 0)" > 
$RPM_SOURCE_DIR/%name-rpmlintrc
-echo "setBadness('polkit-unauthorized-privilege', 0)" >> 
$RPM_SOURCE_DIR/%name-rpmlintrc
-%endif
-
     %fdupes -s %{buildroot}
     %kde_post_install
 
@@ -494,34 +456,18 @@
 %{fillup_only -n displaymanager -s kdm}
 
 %pre ksysguardd
-
-%if %{with_systemd}
 %service_add_pre ksysguardd.service
-%endif
 
 %preun ksysguardd
-%if %{with_systemd}
 %service_del_preun ksysguardd.service
-%else
-%stop_on_removal ksysguardd
-%endif
 
 %post ksysguardd
 /sbin/ldconfig
-%if %{with_systemd}
 %service_add_post ksysguardd.service
-%else
-%{fillup_and_insserv -f ksysguardd}
-%endif
 
 %postun ksysguardd
 /sbin/ldconfig
-%if %{with_systemd}
 %service_del_postun ksysguardd.service
-%else
-%restart_on_update ksysguardd
-%insserv_cleanup
-%endif
 exit 0
 
 %pre
@@ -574,12 +520,7 @@
 %files ksysguardd -f filelists/ksysguard
 %defattr(-,root,root)
 %doc COPYING COPYING.DOC README
-%if %{with_systemd}
 %{_unitdir}/ksysguardd.service
-%else
-%config %{_kde4_sysconfdir}/init.d/ksysguardd
-%{_kde4_sbindir}/rcksysguardd
-%endif
 %config(noreplace) %{_kde4_sysconfdir}/ksysguarddrc
 %config %{_kde4_configdir}/ksysguard.knsrc
 %{_kde4_bindir}/ksysguardd
@@ -680,8 +621,6 @@
 %{_kde4_iconsdir}/KDE_Classic/*
 %{_kde4_iconsdir}/KDE_Classic/cursors/*
 %{_kde4_libdir}/kconf_update_bin/
-%dir %{_kde4_libdir}/strigi
-%{_kde4_libdir}/strigi/strigita_font.so
 %{_kde4_libdir}/*.so
 %{_kde4_libdir}/*.so.*
 %attr(-, root, shadow) %{_kde4_libexecdir}/kcheckpass

++++++ 0001-Add-the-full-name-of-completion-matches-to-history.patch ++++++
>From b11322bab791d867495af0acee514e95dc30fc2f Mon Sep 17 00:00:00 2001
From: Harald Hvaal <[email protected]>
Date: Sat, 24 Aug 2013 10:48:00 +0200
Subject: [PATCH 1/3] Add the full name of completion matches to history

This will fill the history combo box with the actual hit you executed, instead
of half-complete strings that don't make sense until you actually select them.

(cherry picked from commit f7d773c246156a1bd1613d9a9ba6691f5b43dfab)
---
 krunner/interfaces/default/interface.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/krunner/interfaces/default/interface.cpp 
b/krunner/interfaces/default/interface.cpp
index 505e0aa..b8e4e17 100644
--- a/krunner/interfaces/default/interface.cpp
+++ b/krunner/interfaces/default/interface.cpp
@@ -496,7 +496,12 @@ void Interface::run(ResultItem *item)
     }
 
     //TODO: check if run is succesful before adding the term to history
-    m_searchTerm->addToHistory(m_searchTerm->currentText().trimmed());
+    if ((item->group() == Plasma::QueryMatch::CompletionMatch) ||
+         (item->group() == Plasma::QueryMatch::PossibleMatch)) {
+        m_searchTerm->addToHistory(item->name());
+    } else {
+        m_searchTerm->addToHistory(m_searchTerm->currentText().trimmed());
+    }
 
     m_running = true;
     // must run the result first before clearing the interface
-- 
1.8.5.2

++++++ 0002-Move-focus-to-search-field-upon-typing-from-result-l.patch ++++++
>From 013f0c03f6d3c36bf92f6aa0082d576886d5423b Mon Sep 17 00:00:00 2001
From: Harald Hvaal <[email protected]>
Date: Sat, 24 Aug 2013 11:07:53 +0200
Subject: [PATCH 2/3] Move focus to search field upon typing from result list

REVIEW: 112235
(cherry picked from commit 01fe383e2eed3810f3dbb2501b90d2883494fb14)
---
 krunner/interfaces/default/resultitem.cpp  | 1 +
 krunner/interfaces/default/resultscene.cpp | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/krunner/interfaces/default/resultitem.cpp 
b/krunner/interfaces/default/resultitem.cpp
index 31fe94c..7f21a16 100644
--- a/krunner/interfaces/default/resultitem.cpp
+++ b/krunner/interfaces/default/resultitem.cpp
@@ -516,6 +516,7 @@ void ResultItem::keyPressEvent(QKeyEvent *event)
     if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
         emit activated(this);
     } else {
+        event->ignore();
         QGraphicsWidget::keyPressEvent(event);
     }
 }
diff --git a/krunner/interfaces/default/resultscene.cpp 
b/krunner/interfaces/default/resultscene.cpp
index 514c2c8..f2b5e36 100644
--- a/krunner/interfaces/default/resultscene.cpp
+++ b/krunner/interfaces/default/resultscene.cpp
@@ -30,6 +30,7 @@
 #include <QtGui/QGraphicsGridLayout>
 #include <QtGui/QGraphicsWidget>
 #include <QtGui/QGraphicsProxyWidget>
+#include <QtCore/QCoreApplication>
 
 #include <KDE/KDebug>
 #include <KDE/KIconLoader>
@@ -321,6 +322,14 @@ void ResultScene::keyPressEvent(QKeyEvent * keyEvent)
         default:
             // pass the event to the item
             QGraphicsScene::keyPressEvent(keyEvent);
+            if (!keyEvent->isAccepted() && m_focusBase &&
+                    (keyEvent->key() != Qt::Key_Tab) &&
+                    (keyEvent->key() != Qt::Key_PageUp) &&
+                    (keyEvent->key() != Qt::Key_PageDown) &&
+                    (keyEvent->modifiers() == Qt::NoModifier)) {
+                m_focusBase->setFocus();
+                QCoreApplication::sendEvent(m_focusBase, keyEvent);
+            }
             return;
         break;
     }
-- 
1.8.5.2

++++++ 0003-Save-current-dialog-size-on-manual-resize.patch ++++++
>From f72c52c11e954bfb7d608bfb560189c61c7a9794 Mon Sep 17 00:00:00 2001
From: Harald Hvaal <[email protected]>
Date: Sat, 24 Aug 2013 09:56:11 +0200
Subject: [PATCH 3/3] Save current dialog size on manual resize

REVIEW: 112234
(cherry picked from commit 0b49014d9eea6d0a266408bef3cbffe3c0013fd2)
---
 krunner/interfaces/default/interface.cpp | 15 +++++++++++++--
 krunner/interfaces/default/interface.h   |  2 ++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/krunner/interfaces/default/interface.cpp 
b/krunner/interfaces/default/interface.cpp
index b8e4e17..6172d3c 100644
--- a/krunner/interfaces/default/interface.cpp
+++ b/krunner/interfaces/default/interface.cpp
@@ -219,6 +219,10 @@ Interface::Interface(Plasma::RunnerManager *runnerManager, 
QWidget *parent)
     m_delayedQueryTimer.setInterval(50);
     connect(&m_delayedQueryTimer, SIGNAL(timeout()), this, 
SLOT(delayedQueryLaunch()));
 
+    m_saveDialogSizeTimer.setSingleShot(true);
+    m_saveDialogSizeTimer.setInterval(1000);
+    connect(&m_saveDialogSizeTimer, SIGNAL(timeout()), 
SLOT(saveCurrentDialogSize()));
+
     QTimer::singleShot(0, this, SLOT(resetInterface()));
 }
 
@@ -252,7 +256,7 @@ bool Interface::eventFilter(QObject *obj, QEvent *event)
 
 void Interface::saveDialogSize(KConfigGroup &group)
 {
-    group.writeEntry("Size", size());
+    group.writeEntry("Size", m_defaultSize);
 }
 
 void Interface::restoreDialogSize(KConfigGroup &group)
@@ -314,6 +318,7 @@ void Interface::resizeEvent(QResizeEvent *event)
         } else {
             m_defaultSize = QSize(m_defaultSize.width(), size().height());
         }
+        m_saveDialogSizeTimer.start();
     }
 
     m_resultsView->resize(m_buttonContainer->width(), m_resultsView->height());
@@ -321,6 +326,12 @@ void Interface::resizeEvent(QResizeEvent *event)
     KRunnerDialog::resizeEvent(event);
 }
 
+void Interface::saveCurrentDialogSize()
+{
+    KConfigGroup interfaceConfig(KGlobal::config(), "Interface");
+    saveDialogSize(interfaceConfig);
+}
+
 Interface::~Interface()
 {
     KRunnerSettings::setPastQueries(m_searchTerm->historyItems());
@@ -330,7 +341,7 @@ Interface::~Interface()
     // Before saving the size we resize to the default size, with the results 
container shown.
     resize(m_defaultSize);
     KConfigGroup interfaceConfig(KGlobal::config(), "Interface");
-    saveDialogSize(interfaceConfig);
+    saveCurrentDialogSize();
     KGlobal::config()->sync();
 }
 
diff --git a/krunner/interfaces/default/interface.h 
b/krunner/interfaces/default/interface.h
index a0367a5..01680a1 100644
--- a/krunner/interfaces/default/interface.h
+++ b/krunner/interfaces/default/interface.h
@@ -84,6 +84,7 @@ class Interface : public KRunnerDialog
         void resetAndClose();
         void delayedQueryLaunch();
         void updateSystemActivityToolTip();
+        void saveCurrentDialogSize();
 
     private:
         void saveDialogSize(KConfigGroup &group);
@@ -94,6 +95,7 @@ class Interface : public KRunnerDialog
 
         QTimer m_hideResultsTimer;
         QTimer m_reenableHoverEventsTimer;
+        QTimer m_saveDialogSizeTimer;
 
         QWidget *m_buttonContainer;
         QVBoxLayout* m_layout;
-- 
1.8.5.2

++++++ kde-workspace-4.11.0-kdm-logind-multiseat.patch ++++++
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3bdbb3..270b595 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,6 +128,13 @@ if(Q_WS_X11)
   endif()
 endif(Q_WS_X11)
 
+macro_optional_find_package(Systemd)
+set_package_properties(Systemd PROPERTIES DESCRIPTION "Init and service 
manager for Linux"
+                       URL "http://www.freedesktop.org/wiki/Software/systemd";
+                       TYPE OPTIONAL
+                       PURPOSE "Provides automatic multi-seat, session and 
power management features"
+                      )
+
 macro_optional_find_package(GLIB2 2.0)
 set_package_properties(GLIB2 PROPERTIES DESCRIPTION "Low-level core library 
for data structure handling, portability wrappers, etc."
                        URL "http://www.gtk.org";
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
index 117b3a5..09d7808 100644
--- a/cmake/modules/CMakeLists.txt
+++ b/cmake/modules/CMakeLists.txt
@@ -8,6 +8,7 @@ set(cmakeFiles FindCkConnector.cmake
                FindOpenGLES.cmake
                FindPAM.cmake
                FindSensors.cmake
+               FindSystemd.cmake
                PkgConfigGetVar.cmake
                UnixAuth.cmake )
 
diff --git a/cmake/modules/FindSystemd.cmake b/cmake/modules/FindSystemd.cmake
new file mode 100644
index 0000000..c1141b9
--- /dev/null
+++ b/cmake/modules/FindSystemd.cmake
@@ -0,0 +1,39 @@
+# Finds systemd and its libraries
+# Not a huge module but sufficient for now
+# Uses the same semantics as pkg_check_modules, i.e. 
${LIB}{_FOUND,_INCLUDE_DIR,_LIBRARIES}
+# where ${LIB} can be one of the following:
+#     LIBSYSTEMD_JOURNAL, SYSTEMD, LIBSYSTEMD_DAEMON, LIBSYSTEMD_LOGIN, 
LIBSYSTEMD_ID128
+#
+# Copyright: Red Hat, Inc. 2013
+# Author: Martin Briza <[email protected]>
+#
+# Distributed under the BSD license. See COPYING-CMAKE-SCRIPTS for details.
+
+#defining any of these disables systemd support
+if (NOT LIBSYSTEMD_JOURNAL_FOUND AND
+    NOT SYSTEMD_FOUND AND
+    NOT LIBSYSTEMD_DAEMON_FOUND AND
+    NOT LIBSYSTEMD_LOGIN_FOUND AND
+    NOT LIBSYSTEMD_ID128_FOUND)
+find_package(PkgConfig)
+if (PKG_CONFIG_FOUND)
+    pkg_check_modules(LIBSYSTEMD_JOURNAL QUIET "libsystemd-journal")
+    pkg_check_modules(SYSTEMD QUIET "systemd")
+    pkg_check_modules(LIBSYSTEMD_DAEMON QUIET "libsystemd-daemon")
+    pkg_check_modules(LIBSYSTEMD_LOGIN QUIET "libsystemd-login")
+    pkg_check_modules(LIBSYSTEMD_ID128 QUIET "libsystemd-id128")
+endif (PKG_CONFIG_FOUND)
+
+if (SYSTEMD_FOUND)
+    message(STATUS "Found systemd")
+endif(SYSTEMD_FOUND)
+
+mark_as_advanced(LIBSYSTEMD_JOURNAL_FOUND       SYSTEMD_FOUND       
LIBSYSTEMD_DAEMON_FOUND       LIBSYSTEMD_LOGIN_FOUND       
LIBSYSTEMD_ID128_FOUND)
+mark_as_advanced(LIBSYSTEMD_JOURNAL_INCLUDE_DIR SYSTEMD_INCLUDE_DIR 
LIBSYSTEMD_DAEMON_INCLUDE_DIR LIBSYSTEMD_LOGIN_INCLUDE_DIR 
LIBSYSTEMD_ID128_INCLUDE_DIR)
+mark_as_advanced(LIBSYSTEMD_JOURNAL_LIBRARIES   SYSTEMD_LIBRARIES   
LIBSYSTEMD_DAEMON_LIBRARIES   LIBSYSTEMD_LOGIN_LIBRARIES   
LIBSYSTEMD_ID128_LIBRARIES)
+
+endif (NOT LIBSYSTEMD_JOURNAL_FOUND AND
+       NOT SYSTEMD_FOUND AND
+       NOT LIBSYSTEMD_DAEMON_FOUND AND
+       NOT LIBSYSTEMD_LOGIN_FOUND AND
+       NOT LIBSYSTEMD_ID128_FOUND)
diff --git a/kdm/backend/dm.c b/kdm/backend/dm.c
index e0f1366..84e30fd 100644
--- a/kdm/backend/dm.c
+++ b/kdm/backend/dm.c
@@ -50,6 +50,23 @@ from the copyright holder.
 # include <sys/vt.h>
 #endif
 
+#ifdef WITH_SYSTEMD
+# include <systemd/sd-login.h>
+# include <systemd/sd-daemon.h>
+
+#define SYSTEMD_FAILURE_LIMIT 25
+
+ static int systemdMonitorInit(void);
+ static void systemdMonitorDeinit();
+ static int systemdStartDisplay(char *);
+ static void systemdCheckAdded(char **);
+ static void systemdCheckRemoved(char **);
+ static void systemdHandleChange();
+
+ sd_login_monitor *systemdMonitor = NULL;
+ int systemdMonitorFd = -1;
+#endif
+
 static void sigHandler(int n);
 static int scanConfigs(int force);
 static void startDisplay(struct display *d);
@@ -308,7 +325,16 @@ main(int argc, char **argv)
 #ifdef XDMCP
     updateListenSockets();
 #endif
+
+#ifdef WITH_SYSTEMD
+    if (systemdMonitorInit())
+        systemdHandleChange();
+#endif
+
     mainLoop();
+#ifdef WITH_SYSTEMD
+    systemdMonitorDeinit();
+#endif
     closeCtrl(0);
     if (sdRec.how) {
         int pid;
@@ -1280,6 +1306,13 @@ mainLoop(void)
                 }
                 continue;
             }
+#ifdef WITH_SYSTEMD
+            if (systemdMonitorFd >= 0 && FD_ISSET(systemdMonitorFd, &reads)) {
+                systemdHandleChange();
+                sd_login_monitor_flush(systemdMonitor);
+                continue;
+            }
+#endif
 #ifdef XDMCP
             if (processListenSockets(&reads))
                 continue;
@@ -1304,6 +1337,151 @@ mainLoop(void)
     }
 }
 
+#ifdef WITH_SYSTEMD
+static int
+systemdMonitorInit(void)
+{
+    if (sd_booted() <= 0) {
+        logError("Didn't boot with systemd, automatic multiseat won't be 
enabled\n");
+        return False;
+    }
+
+    int check = sd_login_monitor_new("seat", &systemdMonitor);
+    if (check < 0) {
+        logError("Can't get systemd monitor: %d, automatic multiseat won't be 
enabled\n", check);
+        return False;
+    }
+
+    systemdMonitorFd = sd_login_monitor_get_fd(systemdMonitor);
+    if (systemdMonitorFd < 0) {
+        logError("Can't retrieve file descriptor from the systemd monitor: %d, 
automatic multiseat won't be enabled\n", systemdMonitorFd);
+        sd_login_monitor_unref(systemdMonitor);
+        systemdMonitorFd = -1;
+        return False;
+    }
+
+    registerInput(systemdMonitorFd);
+    return True;
+}
+
+static void
+systemdMonitorDeinit(void)
+{
+    if (systemdMonitor) {
+        sd_login_monitor_unref(systemdMonitor);
+    }
+    systemdMonitorFd = -1;
+}
+
+static int
+systemdStartDisplay(char *seat)
+{
+    struct display *link = NULL;
+    for (link = displays; link; link = link-> next) {
+        if (link->status == reserve)
+            break;
+    }
+    if (!link) {
+        logError("There's not enough reserve displays for all your 
seats/sessions");
+        return False;
+    }
+    if (!strDup((&link->systemdSeat), seat)) {
+        return False;
+    }
+#ifdef HAVE_VTS
+    link->serverVT = 0;
+#endif
+    link->status = notRunning;
+    link->stillThere = True;
+    link->authorize = True;
+    link->displayType = dLocal | dPermanent;
+    link->reqSrvVT = -1;
+    link->serverPid = -1;
+    return True;
+}
+
+static void
+systemdCheckAdded(char **seat_names) 
+{
+    char **iter_name;
+    struct display *link;
+    for (iter_name = seat_names; *iter_name; iter_name++) {
+        if (strcmp(*iter_name, "seat0") == 0)
+            continue; /* ignore the main seat */
+        int can_graphical = sd_seat_can_graphical(*iter_name);
+        for (link = displays; link; link = link->next) {
+            if (!link->systemdSeat)
+                continue;
+            /* see if the can_graphical property didn't change */
+            if (0 == strcmp(*iter_name, link->systemdSeat)) {
+                if (!can_graphical) {
+                    free(link->systemdSeat);
+                    link->systemdSeat = NULL;
+                    rStopDisplay(link, DS_RESERVE);
+                }
+                break;
+            }
+        }
+        /* the display wasn't found */
+        if (!link) {
+            if (can_graphical) {
+                /* if starting the display failed, skip this round until the 
next change */
+                if (!systemdStartDisplay(*iter_name))
+                    break;
+            }
+        }
+    }
+}
+
+static void
+systemdCheckRemoved(char **seat_names)
+{
+    char **iter_name;
+    struct display *link;
+    for (link = displays; link; link = link->next) {
+        for (iter_name = seat_names; *iter_name; iter_name++) {
+            if (strcmp(*iter_name, "seat0") == 0)
+                continue; /* ignore the main seat */
+            if (link->systemdSeat && strcmp(*iter_name, link->systemdSeat) == 
0)
+                break;
+        }
+        if (!(*iter_name) && link->systemdSeat) { /* was not found, stop this 
one */
+            free(link->systemdSeat);
+            link->systemdSeat = NULL;
+            rStopDisplay(link, DS_RESERVE);
+        }
+    }
+}
+
+static void
+systemdHandleChange(void)
+{
+    static int failures = 0;
+    char **seat_names;
+    char **iter_name;
+    int check;
+    if ((check = sd_get_seats(&seat_names)) < 0) {
+        logError("Can't obtain systemd seats, error %d\n", -check);
+        failures++;
+        if (failures >= SYSTEMD_FAILURE_LIMIT) {
+            logError("%u failed calls to sd_get_seats, disabling systemd 
multi-seat support\n", SYSTEMD_FAILURE_LIMIT);
+            systemdMonitorDeinit();
+        }
+        return;
+    }
+
+    if (!check)
+        return;
+
+    systemdCheckAdded(seat_names);
+    systemdCheckRemoved(seat_names);
+
+    for (iter_name = seat_names; *iter_name; iter_name++)
+        free(*iter_name);
+    free(seat_names);
+}
+#endif
+
 static void
 checkDisplayStatus(struct display *d)
 {
diff --git a/kdm/backend/dm.h b/kdm/backend/dm.h
index 64e106b..48b302e 100644
--- a/kdm/backend/dm.h
+++ b/kdm/backend/dm.h
@@ -306,6 +306,9 @@ struct display {
     char *greeterAuthFile;      /* file to store authorization for greeter in 
*/
     
     int plymouth_vt;            /* Plymouth's VT nr */
+#ifdef WITH_SYSTEMD
+    char *systemdSeat;
+#endif
 };
 
 #define d_location   1
diff --git a/kdm/backend/CMakeLists.txt b/kdm/backend/CMakeLists.txt
index 25f383f..26ad237 100644
--- a/kdm/backend/CMakeLists.txt
+++ b/kdm/backend/CMakeLists.txt
@@ -45,6 +45,10 @@ if (SECURE_RPC)
                rpcauth.c
        )
 endif (SECURE_RPC)
+if(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
+    add_definitions( -DWITH_SYSTEMD=1 )
+    set(KDM_SYSTEMD_LIBRARIES ${LIBSYSTEMD_DAEMON_LIBRARIES} 
${LIBSYSTEMD_LOGIN_LIBRARIES} )
+endif(LIBSYSTEMD_LOGIN_FOUND AND LIBSYSTEMD_DAEMON_FOUND)
 macro_add_file_dependencies(dm.h ${confci})
 macro_add_file_dependencies(error.c ${CMAKE_CURRENT_SOURCE_DIR}/printf.c)
 kde4_add_executable(kdm NOGUI ${kdm_SRCS})
@@ -60,6 +64,7 @@ target_link_libraries( kdm
        ${NSL_LIBRARIES}
        ${RESOLV_LIBRARIES}
        ${SOCKET_LIBRARIES}
+       ${KDM_SYSTEMD_LIBRARIES}
 )
 if (CKCONNECTOR_FOUND)
        include_directories(${CKCONNECTOR_INCLUDE_DIR} ${DBUS_INCLUDE_DIR} 
${DBUS_ARCH_INCLUDE_DIR})
diff --git a/kdm/backend/server.c b/kdm/backend/server.c
index d8dd6f3..38c4f3a 100644
--- a/kdm/backend/server.c
+++ b/kdm/backend/server.c
@@ -70,6 +70,25 @@ prepareServerArgv(struct display *d, const char *args)
     if (!changeUser(d->serverUID, d->authFile))
         exit(47);
 
+#ifdef WITH_SYSTEMD
+    if (d->systemdSeat) {
+        if (!(argv = parseArgs(argv, "-seat")))
+            exit(47);
+        if (!(argv = parseArgs(argv, d->systemdSeat)))
+            exit(47);
+        if (!(argv = parseArgs(argv, "-layout")))
+            exit(47);
+        if (!(argv = parseArgs(argv, d->systemdSeat)))
+            exit(47);
+    }
+    else {
+        if (!(argv = parseArgs(argv, "-seat")))
+            exit(47);
+        if (!(argv = parseArgs(argv, "seat0")))
+            exit(47);
+    }
+#endif
+
     return argv;
 }
 
diff --git a/kdm/backend/client.c b/kdm/backend/client.c
index 26bb0b4..b38bc5a 100644
--- a/kdm/backend/client.c
+++ b/kdm/backend/client.c
@@ -1460,6 +1460,14 @@ startClient(volatile int *pid)
 #endif
     userEnviron = inheritEnv(env, envvars);
     env = systemEnv(0, curuser);
+#ifdef WITH_SYSTEMD
+    if (td->systemdSeat) {
+        char *envbuf;
+        ASPrintf(&envbuf, "XDG_SEAT=%s", td->systemdSeat);
+        pam_putenv(pamh, envbuf);
+        env = setEnv(env, "XDG_SEAT", td->systemdSeat);
+    }
+#endif
     systemEnviron = setEnv(env, "HOME", p->pw_dir);
     debug("user environment:\n%[|''>'\n's"
           "system environment:\n%[|''>'\n's"
diff --git a/kdm/backend/session.c b/kdm/backend/session.c
index 0e7901c..614387d 100644
--- a/kdm/backend/session.c
+++ b/kdm/backend/session.c
@@ -437,6 +437,10 @@ openGreeter()
 
     grttalk.pipe = &grtproc.pipe;
     env = systemEnv(dupEnv(), 0);
+#ifdef WITH_SYSTEMD
+    if (td->systemdSeat)
+        env = setEnv(env, "XDG_SEAT", td->systemdSeat);
+#endif
     if (gOpen(&grtproc, (char **)0, "_greet", env, name,
               greeterUID, td->greeterAuthFile, &td->gpipe))
         sessionExit(EX_UNMANAGE_DPY);
++++++ kde-workspace-4.11.6.tar.xz -> kde-workspace-4.11.7.tar.xz ++++++
/work/SRC/openSUSE:Factory/kdebase4-workspace/kde-workspace-4.11.6.tar.xz 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kde-workspace-4.11.7.tar.xz 
differ: char 26, line 1

++++++ kdm_plymouth.patch ++++++
--- /var/tmp/diff_new_pack.A5ds9Z/_old  2014-03-18 17:16:51.000000000 +0100
+++ /var/tmp/diff_new_pack.A5ds9Z/_new  2014-03-18 17:16:51.000000000 +0100
@@ -222,7 +222,7 @@
 +     * case plymouth is stopped now.
 +     */
 +    for (cd = displays; cd; cd = cd->next) {
-+        if (cd->serverVT == cd->plymouth_vt) {
++        if ((cd->serverVT > 0) && (cd->serverVT == cd->plymouth_vt)) {
 +            if (cd->status == notRunning) {
 +                /* tell plymouth to quit when server has started */
 +                logWarn ("plymouth should quit after server startup\n");
@@ -289,7 +289,7 @@
      struct display *d = startingServer;
      d->serverStatus = ignore;
      serverTimeout = TO_INF;
-+    if ((d->plymouth_vt == d->serverVT)) {
++    if ((d->serverVT > 0) && (d->serverVT == d->plymouth_vt)) {
 +        int plymouth_running;
 +        logWarn ("Quitting Plymouth with transition\n" );
 +        plymouth_running = !plymouth_quit_with_transition ();
@@ -302,7 +302,7 @@
          startingServer = 0;
          logError("X server for display %s cannot be started,"
                   " session disabled\n", d->name);
-+        if ((d->plymouth_vt == d->serverVT)) {
++        if ((d->serverVT > 0) && (d->serverVT == d->plymouth_vt)) {
 +            logWarn ("Quitting Plymouth without transition\n" );
 +            plymouth_quit_without_transition ();
 +        }


++++++ remove_strigi.patch ++++++
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ebe120b..b228630 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,13 +20,6 @@ include(KDE4Defaults)
 
 option(WITH_XINERAMA "Xinerama support for multi-headed X displays" ON)
 
-find_package(Strigi)
-
-set_package_properties(Strigi PROPERTIES DESCRIPTION "Desktop indexing and 
search support"
-                       URL "http://strigi.sourceforge.net";
-                       TYPE REQUIRED
-                      )
-
 find_package(ZLIB)
 set_package_properties(ZLIB PROPERTIES DESCRIPTION "Support for gzip 
compressed files and data streams"
                        URL "http://www.zlib.net";
diff --git a/kcontrol/kfontinst/CMakeLists.txt 
b/kcontrol/kfontinst/CMakeLists.txt
index 1ba461c..e0b2f61 100644
--- a/kcontrol/kfontinst/CMakeLists.txt
+++ b/kcontrol/kfontinst/CMakeLists.txt
@@ -4,7 +4,6 @@ if (KFI_BUILD_STANDALONE)
     find_package(Qt4 REQUIRED)
     find_package(Freetype REQUIRED)
     find_package(Fontconfig REQUIRED)
-    find_package(Strigi REQUIRED)
     find_package(X11 REQUIRED)
     macro_log_feature(X11_Xft_FOUND "libxft" "X FreeType interface library" 
"http://www.x.org"; FALSE "" "Font installer and font previews")
     include(KDE4Defaults)
@@ -40,7 +39,6 @@ if (X11_Xft_FOUND)
     add_subdirectory( lib ) 
     add_subdirectory( dbus )
     add_subdirectory( kcmfontinst ) 
-    add_subdirectory( strigi-analyzer )
     add_subdirectory( apps )
     add_subdirectory( kio ) 
     add_subdirectory( thumbnail )

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to