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]