iwd: install D-Bus activation services#60351
Open
Logarithmus wants to merge 1 commit intovoid-linux:masterfrom
Open
iwd: install D-Bus activation services#60351Logarithmus wants to merge 1 commit intovoid-linux:masterfrom
Logarithmus wants to merge 1 commit intovoid-linux:masterfrom
Conversation
Upstream's Makefile.am gates installation of net.connman.iwd.service and net.connman.ead.service behind the systemd-service build conditional, alongside the systemd unit. With --disable-systemd-service (which Void uses) these activation files are dropped, even though they are not systemd-specific. Without them, dbus-daemon cannot launch iwd/ead on demand, so clients like NetworkManager (with wifi.backend=iwd) fail to bring up the wireless device unless the runit service happens to already be running. This causes intermittent boot-time failures depending on iwd vs. NetworkManager startup ordering. Install our own activation files (with Exec= pointing at the binaries directly, and no SystemdService= line) so D-Bus activation works on non-systemd Void.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Testing the changes
The activation file content (
Exec=/usr/libexec/iwd, noSystemdService=) was placed manually at/usr/share/dbus-1/system-services/net.connman.iwd.serviceon a running Void system. With the runit service disabled, NetworkManager (wifi.backend=iwd) successfully D-Bus-activated iwd on demand and brought up the wireless device. Package was not yet rebuilt withxbps-src.Background
Upstream iwd's
Makefile.aminstallssrc/net.connman.iwd.serviceandwired/net.connman.ead.service(the D-Bus bus-activation files) inside theif SYSTEMD_SERVICEblock, alongside the systemd unit:Void's template passes
--disable-systemd-service, so the whole block is skipped and the activation files are dropped — even though they aren't systemd-specific. Result:dbus-daemonhas no activation rule fornet.connman.iwd, so NetworkManager (configured with[device].wifi.backend=iwd) cannot launch iwd on demand.The user-visible symptom is that Wi-Fi sometimes fails to come up at boot. If the runit service is enabled, it works if iwd happens to register on D-Bus before NetworkManager queries it (a runit-parallel-startup race). If the runit service is disabled in the expectation that NM will D-Bus-activate iwd (the documented setup), it never works.
Fix
Ship our own
net.connman.iwd.serviceandnet.connman.ead.serviceactivation files withExec=pointing at the binaries directly and noSystemdService=line, and install them inpost_install. The runit services are kept as-is for users who prefer always-running iwd.