elogind-241.1 ABI compatible

Wind Games

…with libsystemd.

Yes, it is done. Well, it took a while, which is also one reason why there weren’t any news in almost three months.

The key to this achievement was issue #97: “Is libelogind0 abi compatible with libsystemd0?“, opened by Centuriondan on 2018-11-20. The issue wasn’t spectacular at first. And I was busy migrating over 1,000 commits from systemd to jump from version 239 to 241. But when that was done in mid February, Centuriondan reported back that there was much to do, and so we did.

But besides the elogind-241.1 release, there have been two service releases, too. Both elogind-238.4 and elogind-239.4 got released, so let’s go through the changes first.

elogind-238.4 released

On 2019-03-10 the fourth version of elogind-238 got released, updated to
systemd-stable commit 07f8cd571e.
See: Version 238.4 Release

Fixes

  • Included fixes for CVE-2018-16864
  • Check if _POSIX_C_SOURCE is defined (#113 #114)
  • Fixed translation (.po) files
  • Some fixes to the man pages

Additions / Changes

  • Refuse dbus message paths longer than BUS_PATH_SIZE_MAX limit.
  • New Japanese translation (po/ja.po)

elogind-239.4 released

Also on 2019-03-10, the fourth version of elogind-239 got released, updated to systemd-stable commit 8bca4621fc. As this was the latest version that is used most widely, many issues where found and fixed.
See: Version 239.4 Release

Fixes

  • Included fixes for CVE-2018-16864
  • Fixed elogind_is_already_running() (#94)
  • Fixed [user|session]_may_gc() (#104)
  • Fix cg_path_get_session() error return (#45 #108)
  • Don’t mark framebuffer devices as master-of-seat devices
  • meson.build: Fixed detection of -Werror=shadow
  • Fix hibernation when swap is an LVM partition (#112)
  • Updated and fixed .po files
  • Fixed test-login when elogind hasn’t run before (#45 #108)
  • Check if _POSIX_C_SOURCE is defined (#113 #114)

Additions / Changes

  • Refuse dbus message paths longer than BUS_PATH_SIZE_MAX limit
  • New japanese translation (po/ja.po)
  • Made manager_notify_cgroup_empty() more secure
  • Enhance the debug logging of starting and stopping. (#104)
  • Add special handling for SIGINT (#104)
    When elogind is interrupted using the SIGINT signal, elogind
    will now keep the FIFOs, inhibitor state files, and will no
    longer go on a killing spree in session cgroups.
    Note: This does not work with SDDM. SDDM still goes haywire!
  • Updated documentation to describe the new SIGINT behavior
  • when we need to execute a sleep operation we don’t support, fall
    back to suspend
  • When parsing paths, reject anything above PATH_MAX
  • Add a “reload” command to loginctl to reload a changed
    configuration (#105)
  • Suspension and hibernation can now be disallowed in logind.conf

Thank you very much to all the people who helped finding and fixing these issues!

elogind-241.1 released

Later on 2019-03-10, the first release of the elogind-241 series, based on systemd-stable commit a09c170122, was released. Three releases on one day!
See: Version 241.1 Release

This is the first release that is fully ABI compatible to libsystemd, meaning that applications built against libsystemd can be used with libelogind as drop-in replacement.

Limitations

Please note that elogind-241.1 can not include or simulate all of the functionality libsystemd provides.

  • sd_is_mq() always returns 0. elogind does not use POSIX message queues, and this one function would add a dependency on librt. Please see man 3 sd_is_mq for information about how you can get around depending on this function.
  • sd-hwdb.h consists of stubs which do nothing and return -ENOSYS.
  • sd-journal.h does not provide any functionality to work with systemd journals. The functions to log messages from the sd_journal_print* and sj_journal_send* families reroute to syslog.
  • Functions working with systemd slices work by reusing session functions, as sessions and slices are the same in elogind.
  • Functions working with systemd units do nothing and return -ENODATA.

All these functions are documented in their corresponding man pages.

Thanks

All of this wouldn’t have been possible without the help of the many people who use elogind, find issues, report these issues, test various stuff, propose enhancement and help fixing what needs to be fixed.

So thank you very much artoo, Centuriondan, Derriick, Gino, kensington, LeePen, Lorenzo, ng-0, Perfect Gentleman and Rasmus Thomsen.
You guys made elogind-241.1 asa it is possible, and are just awesome!

Leave a Reply

Your email address will not be published. Required fields are marked *