Bug 788171 - Port shutdown/restart code from ConsoleKit to systemd
Summary: Port shutdown/restart code from ConsoleKit to systemd
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: kde-workspace
Version: rawhide
Hardware: All
OS: Linux
unspecified
low
Target Milestone: ---
Assignee: Kevin Kofler
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 786157
TreeView+ depends on / blocked
 
Reported: 2012-02-07 16:07 UTC by Kevin Kofler
Modified: 2012-03-21 18:39 UTC (History)
8 users (show)

Fixed In Version: kde-workspace-4.8.1-6.fc17
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-03-21 18:39:50 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
First (UNTESTED) attempt at a patch for shutdown, restart and session switch using systemd (10.78 KB, patch)
2012-03-01 06:35 UTC, Kevin Kofler
no flags Details | Diff
patch for shutdown (tested working), restart (tested working) and session switch (needs testing/fixing) using systemd (11.33 KB, patch)
2012-03-14 23:02 UTC, Kevin Kofler
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
KDE Software Compilation 294714 0 None None None Never

Description Kevin Kofler 2012-02-07 16:07:56 UTC
The shutdown/restart code for the non-KDM case (in particular, for GDM users) is based on ConsoleKit right now, and should be ported to systemd.

Comment 1 Kevin Kofler 2012-03-01 06:35:58 UTC
Created attachment 566758 [details]
First (UNTESTED) attempt at a patch for shutdown, restart and session switch using systemd

So I have tried (hopefully successfully) to implement support for systemd instead of ConsoleKit in the KDE Plasma workspaces (kde-workspace).

Shutdown and restart were fairly straightforward, I'm fairly confident those work; if not, it must be some trivial mistake. Session switching, on the other hand, is much more complicated, I didn't write the original code for that part, and the API is quite different (using D-Bus properties rather than methods, annoyingly with structure types).

Pass -DKWORKSPACE_USE_SYSTEMD:BOOL=ON to CMake to enable this.

I haven't yet tested whether this compiles, runs, crashes, burns, eats kittens, … ;-)

Comment 2 Rex Dieter 2012-03-12 15:05:55 UTC
I'll try testing this out today

Comment 3 Rex Dieter 2012-03-12 15:28:21 UTC
[  2%] Building CXX object libs/kworkspace/CMakeFiles/kworkspace.dir/kdisplaymanager.o
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘bool getCurrentSeat(QDBusObjectPath*, QDBusObjectPath*)’:
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:342:61: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:342:61: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘QList<QDBusObjectPath> getSessionsForSeat(const QDBusObjectPath&)’:
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:376:61: error: no matching function for call to ‘SystemdSeat::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:376:61: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:381:33: error: ‘class QList<NamedDBusObjectPath>’ has no member named ‘path’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:380:208: warning: unused variable ‘namedPath’ [-Wunused-variable]
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In function ‘void getSessionLocation(SystemdSession&, SessEnt&)’:
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:406:51: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:406:51: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:407:74: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:407:74: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:408:49: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:408:49: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In member function ‘bool KDisplayManager::isSwitchable()’:
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:556:70: error: no matching function for call to ‘SystemdSeat::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:556:70: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp: In member function ‘bool KDisplayManager::localSessions(SessList&)’:
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:627:62: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:627:62: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:628:74: error: no matching function for call to ‘SystemdSession::property(QLatin1String)’
/home/rdieter1/pkgs.fedoraproject.org/kde-workspace/kde-workspace-4.8.1/libs/kworkspace/kdisplaymanager.cpp:628:74: note: candidate is:
/usr/include/QtCore/qobject.h:259:14: note: QVariant QObject::property(const char*) const
/usr/include/QtCore/qobject.h:259:14: note:   no known conversion for argument 1 from ‘QLatin1String’ to ‘const char*’
make[2]: *** [libs/kworkspace/CMakeFiles/kworkspace.dir/kdisplaymanager.o] Error 1
make[1]: *** [libs/kworkspace/CMakeFiles/kworkspace.dir/all] Error 2

Comment 4 Rex Dieter 2012-03-13 20:57:16 UTC
update, kde-workspace-4.8.1-4 builds, and does show shutdown/restart kickoff->leave menu items.  unfortunately selecting either only takes you back to kdm login screen.  switch user seems to only lock the screen atm too.

Comment 5 Fedora Update System 2012-03-14 14:46:45 UTC
kde-workspace-4.8.1-5.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/kde-workspace-4.8.1-5.fc17

Comment 6 Kevin Kofler 2012-03-14 23:02:59 UTC
Created attachment 570119 [details]
patch for shutdown (tested working), restart (tested working) and session switch (needs testing/fixing) using systemd

For reference, I'm attaching the version of the patch we're now using.

User switching still needs testing and probably fixing.

Comment 7 Fedora Update System 2012-03-16 02:40:47 UTC
Package kde-workspace-4.8.1-5.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing kde-workspace-4.8.1-5.fc17'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-3800/kde-workspace-4.8.1-5.fc17
then log in and leave karma (feedback).

Comment 8 Fedora Update System 2012-03-16 19:03:54 UTC
Package kde-workspace-4.8.1-6.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing kde-workspace-4.8.1-6.fc17'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-3800/kde-workspace-4.8.1-6.fc17
then log in and leave karma (feedback).

Comment 9 Fedora Update System 2012-03-21 18:39:50 UTC
kde-workspace-4.8.1-6.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.