Comment 21 for bug 1153224

Revision history for this message
Martin Pitt (pitti) wrote :

Where we are:
 - current systemd v198 is in raring, with broken out systemd-services package which provides logind, hostnamed, etc.
 - libudev1 transition is mostly complete and in raring; the only remaining reverse dep to libudev0 is chromium on armhf as it currently FTBFSes there. (This problem is now independent of this FFE)
 - The package split is quite intrusive, but has been discussed with Debian and they want to adopt this. Debian also wants to migrate logind without enforcing systemd everywhere just yet (as the latter is politically much harder)
 - I fixed udev to work with logind's dynamic ACLs by backporting the "uaccess" builtin. udev rules are set up to use udev-acl with ConsoleKit and uaccess with logind. This is in raring.
 - Running logind separately causes some API confusion about sd_booted() for programs, as they now need to differentiate between "systemd init" and "logind". This has been discussed with upstream, and a fixed sd_booted() is in systemd upstream. We have a recipe how to fix packages that call this, and we know about all affected packages (12) from an archive grep. Details are in the blueprint.
 - I and other people (I know of Iain Lane and Stephane Graber) have run logind for quite a while now. I have run it exclusively without ConsoleKit for 1.5 weeks now, and did not get any crash of logind or the PAM module
- Running with logind exclusively uncovered some race condition in Unity's indicator/shutdown (bug 1155021)
- Consumers of CK have been identified with an archive grep (undeclared dependencies), and for many of them I added an analysis what needs to happen (details in blueprint)
- Login managers (lightdm etc.) generally are not supposed to directly talk to lightdm for creating sessions. That's supposed to be done by libpam-systemd and works fine. Of course they need to be adjusted for the shutdown/reboot API if they currently talk to ConsoleKit.
- I fixed the systemd upstream tests to run during package build, and wrote autopkgtests for all D-BUS services and logind.

Next steps regardless of this FFE:
- Fix upstream software that calls sd_booted() but wants to talk to logind to call access("/run/systemd/seats/", F_OK) instead.
- Add logind support to upstream lightdm (Robert Ancell has a WI) and Unity (I'll coordinate with Didier, or do it myself)

Next steps if FFE is rejected:
- If bug 1153633 (systemd-shim MIR) is accepted and we want to go through with bug 1153567 for raring, we need to either disable logind from systemd-services, or split it out again.

Next steps if FFE is accepted:
- Adjust seeds to move from libpam-xdg-support to libpam-systemd, which will pull in systemd-services. (It conflicts/replaces/provides libpam-xdg-support)
- Upload https://launchpad.net/~ubuntu-core-dev/+archive/logind and https://launchpad.net/~bkerensa/+archive/logind PPAs which have packages transitioned to talk to logind instead of CK. These are the most important ones.
- For the other reverse CK dependencies, either enable logind support for them (if present), or port it ourselves in easy cases (e. g. the shutdown/reboot API is exactly the same structure, just different D-BUS names), or add an explicit consolekit dependency. Please note that this requires some teamwork, I don't want to do this all by myself.

Risk mitigation:
- We now have automatic unit tests during package build and autopkgtests which cover logind's automatic ACLs for the coldplug and hotplug cases.
- Manual testing by several people for ~ 2 weeks
- There is a non-negligible risk that in the final release we'll end up with both logind and consolekit installed if we don't manage to convert all reverse CK dependencies. This is by and large a matter of turning this from an one-man show into some teamwork. :-)