|Summary:||Remove distro-specific init scripts|
|Product:||dbus||Reporter:||Simon McVittie <smcv>|
|Component:||core||Assignee:||Simon McVittie <smcv>|
|Status:||RESOLVED FIXED||QA Contact:||D-Bus Maintainers <dbus>|
|i915 platform:||i915 features:|
|Bug Depends on:|
|Attachments:||Remove distribution-specific init-scripts|
Description Simon McVittie 2017-07-06 11:17:12 UTC
At the moment, upstream dbus contains the following ways to start the system bus: * A distribution-neutral systemd unit, used in anything that boots with systemd (Fedora, Ubuntu, default Debian installations etc.). This is actively maintained, and I'm not going to remove it. * An LSB-style init script for Red Hat and related distributions (bus/messagebus.in). This was used in Red Hat and Fedora before they adopted systemd, but as far as I know is not used any more. I am concerned that this is unmaintained. * An LSB-style init script for Slackware (bus/rc.messagebus.in), which appears to be very bare-bones and in particular has an inadvisable use of killall. This does not appear to be used in Slackware, which ships a different (patched?) implementation of rc.messagebus. I am concerned that this is unmaintained. * Something analogous to an init script for Cygwin (bus/messagebus-config.in) I am concerned that this is potentially unmaintained. None of the init scripts have changed since 2010, and it isn't clear to me whether they are maintained or actively used. Linux distributions that boot with sysvinit (older or non-default Debian installations, Devuan, etc.) typically provide their own LSB init script instead of using the ones we provide upstream (for example  in Debian/Devuan), which means the ones we provide upstream are not tested and therefore probably don't actually work. I would like to remove anything that is not actively supported by contributions to the upstream project, to avoid giving a false impression of quality or support. I propose that in the dbus 1.11.x development branch leading to the dbus-1.12 stable release, we remove the Red Hat init script, the Slackware init script, and the Cygwin "config". Launching dbus-daemon from third-party init scripts using its documented command-line options will continue to be a valid configuration (to be completely clear, I am **not** proposing to make systemd the only supported platform), but downstreams that use an integration layer other than via systemd to start the system dbus-daemon will be responsible for maintaining that integration layer themselves. In practice, it appears that they already do. This would have the following effects on third-party distributors: * Linux distributions that exclusively boot with systemd would be unaffected, because upstream contributors (including me) actively maintain this configuration * OS distributions that (exclusively or optionally) boot with LSB init scripts, Upstart jobs or other integration that they add downstream (Slackware, Debian, Devuan) would be mostly unaffected - However, if they use the --with-init-scripts=redhat configure argument for its side-effect of changing the pid file location, or if they rely on Red Hat being auto-detected, they will have to pass the --with-system-pid-file=PATH configure argument instead * OS distributions that rely on --with-init-scripts=redhat, --with-init-scripts=slackware, --with-init-scripts=cygwin, or auto-detection of Red Hat, Slackware or Cygwin will need to take action to provide their own init scripts As an alternative, I don't mind keeping bus/messagebus.in (historically Red Hat), bus/rc.messagebus.in (Slackware) and/or bus/messagebus-config.in (Cygwin) in the upstream dbus project, **if** some named person or group is willing to commit to providing timely testing and patches to ensure that they continue to be correct in the upstream development branch (git master). However, I suspect that in practice downstreams will find it easier to maintain their init-scripts "out of tree", like I do for the LSB init script provided by Debian. This has the advantage that the downstream distributor can make full use of any vendor-specific tools, like Debian's start-stop-daemon, to make their init script better. I'm going to announce this on the mailing list for comment.  https://mirrors.slackware.com/slackware/slackware-current/source/a/dbus/rc.messagebus.gz  https://anonscm.debian.org/cgit/pkg-utopia/dbus.git/tree/debian/dbus.init
Comment 1 Simon McVittie 2017-09-25 15:50:06 UTC
(In reply to Simon McVittie from comment #0) > At the moment, upstream dbus contains the following ways to start the > system bus: ... > * Something analogous to an init script for Cygwin (bus/messagebus-config.in) > I am concerned that this is potentially unmaintained. cc'ing its credited author. This is the only one of the "init scripts" that seems to be still in use in its intended distribution (Red Hat derivatives use systemd now, and Slackware use their own copy of rc.messagebus instead of ours) so removing it is perhaps less clear-cut than the other two. However, it seems to be something like 10% dbus knowledge and 90% Cygwin knowledge, and if someone reports a bug in it, the dbus maintainers are unlikely to know how to fix that bug; so it is probably better off being maintained downstream, analogous to how RPM spec files and Cygwin "ports" files are maintained by their respective downstreams.
Comment 2 Simon McVittie 2017-09-25 15:55:18 UTC
Created attachment 134466 [details] [review] Remove distribution-specific init-scripts LSB-style (SysV-style) init scripts have not historically been portable between distributions, as evidenced by the presence of both "Red Hat" and "Slackware" init scripts in dbus. Many distributors prefer to maintain them downstream, as is done in Debian (and its derivatives) and in Slackware, so that the init script can follow OS conventions (for example regarding boot messages) and make use of OS-provided facilities (for example, the Debian init script uses dpkg's start-stop-daemon utility). The Slackware and Red Hat init scripts removed by this commit are not tested or maintained in practice, and so are likely to have bugs. The Slackware init-script provided here is not used on actual Slackware systems, which provide a different implementation of rc.messagebus in their packaging, while the Red Hat init script has been superseded by the systemd unit in current Fedora, CentOS and RHEL versions. The Cgywin messagebus-config provided here does appear to be used in production in cygwin-ports, but it's full of Cygwin-specifics with which the dbus maintainers are not familiar, so it is probably more appropriate for it to be tracked downstream as part of the Cygwin packaging. The systemd unit is not removed, since it is used on multiple Linux distributions with little or no modification, and receives regular testing and maintenance; this makes it appropriate to maintain upstream.
Comment 3 Yaakov Selkowitz 2017-09-25 15:56:31 UTC
I have no objections in removing the Cygwin init script from the sources.
Comment 4 Philip Withnall 2017-09-25 16:12:23 UTC
Comment on attachment 134466 [details] [review] Remove distribution-specific init-scripts Review of attachment 134466 [details] [review]: ----------------------------------------------------------------- Looks good to me. If it still passes distcheck, push it!
Comment 5 Simon McVittie 2017-09-25 23:36:52 UTC
Init scripts removed in 1.11.18.