chiark / gitweb /
service: drop special HTTP server target, as it is a bad idea anf Fedora specific
authorLennart Poettering <lennart@poettering.net>
Wed, 31 Oct 2012 01:55:04 +0000 (02:55 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 31 Oct 2012 01:55:04 +0000 (02:55 +0100)
This was premarily intended to support the LSB facility $httpd which is
only known by Fedora, and a bad idea since it lacks any real-life
usecase.

Similar, drop support for some other old Fedora-specific facilities.

Also, document the rules for introduction of new facilities, to clarify
the situation for the future.

Makefile.am
man/systemd.special.xml
src/core/service.c
src/core/special.h
units/http-daemon.target [deleted file]

index 415e0d3..1c04047 100644 (file)
@@ -273,7 +273,6 @@ dist_systemunit_DATA = \
        units/mail-transfer-agent.target \
        units/hibernate.target \
        units/hybrid-sleep.target \
-       units/http-daemon.target \
        units/poweroff.target \
        units/reboot.target \
        units/rescue.target \
index 6b8e0ec..dc04ee3 100644 (file)
                 <filename>final.target</filename>,
                 <filename>getty.target</filename>,
                 <filename>graphical.target</filename>,
+                <filename>halt.target</filename>,
                 <filename>hibernate.target</filename>,
-                <filename>http-daemon.target</filename>,
                 <filename>hybrid-sleep.target</filename>,
-                <filename>halt.target</filename>,
                 <filename>kbrequest.target</filename>,
                 <filename>kexec.target</filename>,
                 <filename>local-fs.target</filename>,
                                         units with a LSB header
                                         referring to the
                                         <literal>$x-display-manager</literal>
-                                        facility, for compatibility
-                                        with Debian.</para>
+                                        facility.</para>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term><filename>http-daemon.target</filename></term>
-                                <listitem>
-                                        <para>A target for pulling in
-                                        an HTTP server if there is
-                                        any.</para>
-                                        <para>systemd automatically
-                                        adds dependencies of type
-                                        After for this target unit to
-                                        all SysV init script service
-                                        units with a LSB header
-                                        referring to the
-                                        <literal>$httpd</literal>
-                                        facility.</para>
-                                </listitem>
-                        </varlistentry>
-                        <varlistentry>
                                 <term><filename>hybrid-sleep.target</filename></term>
                                 <listitem>
                                         <para>A special target unit
                                         all SysV init script service
                                         units with an LSB header
                                         referring to the
-                                        <literal>$mail-transfer-agent</literal>
-                                        or
-                                        <literal>$mail-transport-agent</literal>
-                                        facilities, for compatibility
-                                        with Debian.</para>
+                                        <literal>$mail-transfer-agent</literal>.</para>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
                         </varlistentry>
                         <varlistentry>
                                 <term><filename>runlevel2.target</filename></term>
-                                <listitem>
-                                        <para>This is a target that is
-                                        called whenever the SysV
-                                        compatibility code asks for
-                                        runlevel 2. It is a good idea
-                                        to make this an alias for
-                                        (i.e. symlink to)
-                                        <filename>multi-user.target</filename>.</para>
-                                </listitem>
-                        </varlistentry>
-                        <varlistentry>
                                 <term><filename>runlevel3.target</filename></term>
-                                <listitem>
-                                        <para>This is a target that is
-                                        called whenever the SysV
-                                        compatibility code asks for
-                                        runlevel 3. It is a good idea
-                                        to make this an alias for
-                                        (i.e. symlink to)
-                                        <filename>multi-user.target</filename>
-                                        or
-                                        <filename>graphical.target</filename>.</para>
-                                </listitem>
-                        </varlistentry>
-                        <varlistentry>
                                 <term><filename>runlevel4.target</filename></term>
-                                <listitem>
-                                        <para>This is a target that is
-                                        called whenever the SysV
-                                        compatibility code asks for
-                                        runlevel 4. It is a good idea
-                                        to make this an alias for
-                                        (i.e. symlink to)
-                                        <filename>multi-user.target</filename>
-                                        or
-                                        <filename>graphical.target</filename>.</para>
-                                </listitem>
-                        </varlistentry>
-                        <varlistentry>
                                 <term><filename>runlevel5.target</filename></term>
                                 <listitem>
-                                        <para>This is a target that is
-                                        called whenever the SysV
+                                        <para>These are targets that
+                                        are called whenever the SysV
                                         compatibility code asks for
-                                        runlevel 5. It is a good idea
-                                        to make this an alias for
+                                        runlevel 2, 3, 4, 5,
+                                        respectively. It is a good
+                                        idea to make this an alias for
                                         (i.e. symlink to)
                                         <filename>multi-user.target</filename>
-                                        or
-                                        <filename>graphical.target</filename>.</para>
+                                        (for runlevel 2) or
+                                        <filename>graphical.target</filename>
+                                        (the others).</para>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
index 2febdb6..cf08485 100644 (file)
@@ -390,12 +390,6 @@ static int sysv_translate_facility(const char *name, const char *filename, char
                 "mail-transport-agent", SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
 #endif
 
-#ifdef TARGET_FEDORA
-                "MTA",                  SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
-                "smtpdaemon",           SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
-                "httpd",                SPECIAL_HTTP_DAEMON_TARGET,
-#endif
-
 #ifdef TARGET_SUSE
                 "smtp",                 SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
 #endif
index 8923f34..ef72260 100644 (file)
 #define SPECIAL_RPCBIND_TARGET "rpcbind.target"           /* LSB's $portmap */
 #define SPECIAL_SYSLOG_TARGET "syslog.target"             /* LSB's $syslog */
 #define SPECIAL_TIME_SYNC_TARGET "time-sync.target"       /* LSB's $time */
-#define SPECIAL_DISPLAY_MANAGER_SERVICE "display-manager.service"       /* Debian's $x-display-manager */
-#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* Debian's $mail-{transport|transfer-agent */
-#define SPECIAL_HTTP_DAEMON_TARGET "http-daemon.target"
+#define SPECIAL_DISPLAY_MANAGER_SERVICE "display-manager.service" /* Common extension of LSB */
+#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* Common extension of LSB */
+
+/*
+ * Rules regarding adding further high level targets like the above:
+ *
+ * - Be conservative, only add more of these when we really need
+ *   them. We need strong usecases for further additions.
+ *
+ * - When there can be multiple implementations running side-by-side,
+ *   it needs to be a .target unit which can pull in all
+ *   implementations.
+ *
+ * - If something can be implemented with socket activation, and
+ *   without, it needs to be a .target unit, so that it can pull in
+ *   the appropriate unit.
+ *
+ * - Otherwise, it should be a .service unit.
+ *
+ * - In some cases it is OK to have both a .service and a .target
+ *   unit, i.e. if there can be multiple parallel implementations, but
+ *   only one is the "system" one. Example: syslog.
+ *
+ * Or to put this in other words: .service symlinks can be used to
+ * arbitrate between multiple implementations if there can be only one
+ * of a kind. .target units can be used to support multiple
+ * implementations that can run side-by-side.
+ */
 
 /* Magic early boot services */
 #define SPECIAL_FSCK_SERVICE "systemd-fsck@.service"
diff --git a/units/http-daemon.target b/units/http-daemon.target
deleted file mode 100644 (file)
index 21ce997..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#  This file is part of systemd.
-#
-#  systemd is free software; you can redistribute it and/or modify it
-#  under the terms of the GNU Lesser General Public License as published by
-#  the Free Software Foundation; either version 2.1 of the License, or
-#  (at your option) any later version.
-
-# This exists mostly for compatibility with SysV/LSB units, and
-# implementations lacking socket/bus activation.
-
-[Unit]
-Description=Web Server
-Documentation=man:systemd.special(7)