[systemd-commits] 17 commits - make-directive-index.py Makefile.am Makefile-man.am make-man-index.py make-man-rules.py man/binfmt.d.xml man/bootchart.conf.xml man/bootup.xml man/crypttab.xml man/.gitignore man/hostnamectl.xml man/localectl.xml man/loginctl.xml man/logind.conf.xml man/modules-load.d.xml man/nss-myhostname.xml man/sd_get_seats.xml man/sd_journal_add_match.xml man/sd_login_monitor_new.xml man/sd-login.xml man/sd_pid_get_session.xml man/sd_readahead.xml man/sd-readahead.xml man/sd_seat_get_active.xml man/sd_session_is_active.xml man/sd_uid_get_state.xml man/systemd-binfmt.service.xml man/systemd-bootchart.xml man/systemd-cryptsetup-generator.xml man/systemd-cryptsetup at .service.xml man/systemd-hostnamed.service.xml man/systemd.journal-fields.xml man/systemd-journal-gatewayd.service.xml man/systemd-localed.service.xml man/systemd-logind.service.xml man/systemd-modules-load.service.xml man/systemd-quotacheck.service.xml man/systemd-random-seed-load.service.xml man/systemd-re adahead-replay.service.xml man/systemd-timedated.service.xml man/systemd.unit.xml man/systemd.unit.xml.in man/systemd-user-sessions.service.xml man/systemd-vconsole-setup.service.xml man/systemd.xml man/timedatectl.xml man/vconsole.conf.xml src/core src/journal src/nss-myhostname src/shared TODO

Zbigniew Jędrzejewski-Szmek zbyszek at kemper.freedesktop.org
Wed Feb 6 22:28:36 PST 2013


 Makefile-man.am                          |  482 +++++++++++
 Makefile.am                              |  505 -----------
 TODO                                     |    3 
 make-directive-index.py                  |    2 
 make-man-index.py                        |    2 
 make-man-rules.py                        |  102 ++
 man/.gitignore                           |    1 
 man/binfmt.d.xml                         |    2 
 man/bootchart.conf.xml                   |    2 
 man/bootup.xml                           |    3 
 man/crypttab.xml                         |    2 
 man/hostnamectl.xml                      |    2 
 man/localectl.xml                        |    2 
 man/loginctl.xml                         |    2 
 man/logind.conf.xml                      |    2 
 man/modules-load.d.xml                   |    2 
 man/nss-myhostname.xml                   |    2 
 man/sd-login.xml                         |    2 
 man/sd-readahead.xml                     |    2 
 man/sd_get_seats.xml                     |    2 
 man/sd_journal_add_match.xml             |    2 
 man/sd_login_monitor_new.xml             |    2 
 man/sd_pid_get_session.xml               |    2 
 man/sd_readahead.xml                     |    2 
 man/sd_seat_get_active.xml               |    2 
 man/sd_session_is_active.xml             |    2 
 man/sd_uid_get_state.xml                 |    2 
 man/systemd-binfmt.service.xml           |    2 
 man/systemd-bootchart.xml                |    2 
 man/systemd-cryptsetup-generator.xml     |    2 
 man/systemd-cryptsetup at .service.xml      |    2 
 man/systemd-hostnamed.service.xml        |    2 
 man/systemd-journal-gatewayd.service.xml |    2 
 man/systemd-localed.service.xml          |    2 
 man/systemd-logind.service.xml           |    2 
 man/systemd-modules-load.service.xml     |    2 
 man/systemd-quotacheck.service.xml       |    2 
 man/systemd-random-seed-load.service.xml |    2 
 man/systemd-readahead-replay.service.xml |    2 
 man/systemd-timedated.service.xml        |    2 
 man/systemd-user-sessions.service.xml    |    2 
 man/systemd-vconsole-setup.service.xml   |    2 
 man/systemd.journal-fields.xml           |   36 
 man/systemd.unit.xml                     | 1143 --------------------------
 man/systemd.unit.xml.in                  | 1317 +++++++++++++++++++++++++++++++
 man/systemd.xml                          |    8 
 man/timedatectl.xml                      |    2 
 man/vconsole.conf.xml                    |    2 
 src/core/manager.c                       |   23 
 src/journal/coredump.c                   |   44 -
 src/nss-myhostname/nss-myhostname.c      |    6 
 src/shared/logs-show.c                   |   29 
 src/shared/path-lookup.c                 |   27 
 src/shared/path-util.c                   |   34 
 src/shared/path-util.h                   |    1 
 55 files changed, 2070 insertions(+), 1770 deletions(-)

New commits:
commit 78c55e2155b2badad23c3dc255fdc5b7823dda1a
Author: David Strauss <david at davidstrauss.net>
Date:   Thu Feb 7 01:23:59 2013 -0500

    build-sys: add libsystemd-id128 as libudev dependency
    
    After d848b9cbfa0 'Move generic specifier functions to shared' libudev
    depends (through) libsystemd-shared.la on libsystemd-id128.so.  The
    problem only appears when the linker does not support --gc-sections
    and manifests itself as the inability to resolve sd_id128_get_machine
    and other libsystemd-id128 functions, which aren't really used.

diff --git a/Makefile.am b/Makefile.am
index e20bbcb..8f44f5d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1587,7 +1587,8 @@ libudev_la_LDFLAGS = \
 	-Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym
 
 libudev_la_LIBADD = \
-	libsystemd-shared.la
+	libsystemd-shared.la \
+	libsystemd-id128.la
 
 pkgconfiglib_DATA += \
 	src/libudev/libudev.pc

commit 42007a09f3a7fc82a40068eae5b616756b2fb401
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Feb 7 01:10:21 2013 -0500

    build-sys: restore man/index.html as link to systemd.index.html
    
    It got lost in the transformation to XML generation.

diff --git a/Makefile.am b/Makefile.am
index d8546b5..e20bbcb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -501,6 +501,15 @@ CLEANFILES += \
 	${XML_FILES:.xml=.html}
 
 if HAVE_PYTHON
+noinst_DATA += \
+	man/index.html
+
+CLEANFILES += \
+       man/index.html
+
+man/index.html:
+	$(AM_V_GEN)$(LN_S) systemd.index.html $@
+
 NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES))
 
 XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in)
@@ -519,6 +528,7 @@ man/systemd.directives.xml: make-directive-index.py $(filter-out man/systemd.dir
 
 EXTRA_DIST += \
 	man/systemd.index.xml \
+	man/index.html \
 	man/systemd.directives.xml
 
 endif

commit 15cd601be0f8920083957ef2274a64e00fb92498
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Feb 7 00:53:11 2013 -0500

    man: fix return value for sd_journal_flush_matches
    
    https://bugs.freedesktop.org/show_bug.cgi?id=60133

diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml
index ad2486d..04b3388 100644
--- a/man/sd_journal_add_match.xml
+++ b/man/sd_journal_add_match.xml
@@ -66,7 +66,7 @@
                         </funcprototype>
 
                         <funcprototype>
-                                <funcdef>int <function>sd_journal_flush_matches</function></funcdef>
+                                <funcdef>void <function>sd_journal_flush_matches</function></funcdef>
                                 <paramdef>sd_journal* <parameter>j</parameter></paramdef>
                         </funcprototype>
                 </funcsynopsis>

commit 53057ef93bafbf78318a5e08f6395504a0719f3d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Feb 7 00:50:37 2013 -0500

    man: document COREDUMP_UNIT and COREDUMP_USER_UNIT
    
    Also fix formatting for kernel related fields, enabling them
    to show up in the directives index.

diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
index 2e9bc5b..a0f1bfd 100644
--- a/man/systemd.journal-fields.xml
+++ b/man/systemd.journal-fields.xml
@@ -315,9 +315,9 @@
                 messages originating in the kernel and stored in the
                 journal.</para>
 
-                <variablelist>
+                <variablelist class='journal-directives'>
                         <varlistentry>
-                                <term>_KERNEL_DEVICE=</term>
+                                <term><varname>_KERNEL_DEVICE=</varname></term>
                                 <listitem>
                                         <para>The kernel device
                                         name. If the entry is
@@ -336,13 +336,13 @@
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term>_KERNEL_SUBSYSTEM=</term>
+                                <term><varname>_KERNEL_SUBSYSTEM=</varname></term>
                                 <listitem>
                                         <para>The kernel subsystem name.</para>
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term>_UDEV_SYSNAME=</term>
+                                <term><varname>_UDEV_SYSNAME=</varname></term>
                                 <listitem>
                                         <para>The kernel device name
                                         as it shows up in the device
@@ -351,7 +351,7 @@
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term>_UDEV_DEVNODE=</term>
+                                <term><varname>_UDEV_DEVNODE=</varname></term>
                                 <listitem>
                                         <para>The device node path of
                                         this device in
@@ -359,7 +359,7 @@
                                 </listitem>
                         </varlistentry>
                         <varlistentry>
-                                <term>_UDEV_DEVLINK=</term>
+                                <term><varname>_UDEV_DEVLINK=</varname></term>
                                 <listitem>
                                         <para>Additional symlink names
                                         pointing to the device node in
@@ -372,6 +372,29 @@
         </refsect1>
 
         <refsect1>
+                <title>Special Journal Fields</title>
+
+                <para>Fields used by the <command>systemd-coredump</command>
+                coredump kernel helper.
+                </para>
+
+                <variablelist class='journal-directives'>
+                        <varlistentry>
+                                <term><varname>COREDUMP_UNIT=</varname></term>
+                                <term><varname>COREDUMP_USER_UNIT=</varname></term>
+                                <listitem>
+                                        <para>Used to annotate
+                                        messages containing coredumps from
+                                        system and session units.
+                                        See
+                                        <citerefentry><refentrytitle>systemd-coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+                                        </para>
+                                </listitem>
+                        </varlistentry>
+                </variablelist>
+        </refsect1>
+
+        <refsect1>
                 <title>Address Fields</title>
 
                 <para>During serialization into external formats, such
@@ -446,6 +469,7 @@
                           <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                          <citerefentry><refentrytitle>systemd-coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                           <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
                   </para>
         </refsect1>

commit b7f7c68570b384fceceb82660528e688f207e145
Author: Mirco Tischler <mt-ml at gmx.de>
Date:   Tue Feb 5 01:43:10 2013 +0100

    coredump: make use of the cleanup macros

diff --git a/src/journal/coredump.c b/src/journal/coredump.c
index 91528d3..021b4c6 100644
--- a/src/journal/coredump.c
+++ b/src/journal/coredump.c
@@ -32,6 +32,7 @@
 
 #include "log.h"
 #include "util.h"
+#include "macro.h"
 #include "mkdir.h"
 #include "special.h"
 #include "cgroup-util.h"
@@ -49,8 +50,7 @@ enum {
 };
 
 static int divert_coredump(void) {
-        FILE *f;
-        int r;
+        _cleanup_fclose_ FILE *f = NULL;
 
         log_info("Detected coredump of the journal daemon itself, diverting coredump to /var/lib/systemd/coredump/.");
 
@@ -70,19 +70,16 @@ static int divert_coredump(void) {
                 if (l <= 0) {
                         if (ferror(f)) {
                                 log_error("Failed to read coredump: %m");
-                                r = -errno;
-                                goto finish;
+                                return -errno;
                         }
 
-                        r = 0;
                         break;
                 }
 
                 q = fwrite(buffer, 1, l, f);
                 if (q != l) {
                         log_error("Failed to write coredump: %m");
-                        r = -errno;
-                        goto finish;
+                        return -errno;
                 }
         }
 
@@ -90,25 +87,23 @@ static int divert_coredump(void) {
 
         if (ferror(f)) {
                 log_error("Failed to write coredump: %m");
-                r = -errno;
+                return -errno;
         }
 
-finish:
-        fclose(f);
-        return r;
+        return 0;
 }
 
 int main(int argc, char* argv[]) {
         int r, j = 0;
-        char *p = NULL;
+        _cleanup_free_ char *p = NULL;
         ssize_t n;
         pid_t pid;
         uid_t uid;
         gid_t gid;
         struct iovec iovec[14];
-        char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL,
+        _cleanup_free_ char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL,
                 *core_timestamp = NULL, *core_comm = NULL, *core_exe = NULL, *core_unit = NULL,
-                *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *t;
+                *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *t = NULL;
 
         prctl(PR_SET_DUMPABLE, 0);
 
@@ -143,11 +138,8 @@ int main(int argc, char* argv[]) {
                 }
 
                 core_unit = strappend("COREDUMP_UNIT=", t);
-                free(t);
-        } else if (cg_pid_get_user_unit(pid, &t) >= 0) {
+        } else if (cg_pid_get_user_unit(pid, &t) >= 0)
                 core_unit = strappend("COREDUMP_USER_UNIT=", t);
-                free(t);
-        }
 
         if (core_unit)
                 IOVEC_SET_STRING(iovec[j++], core_unit);
@@ -264,18 +256,5 @@ int main(int argc, char* argv[]) {
                 log_error("Failed to send coredump: %s", strerror(-r));
 
 finish:
-        free(p);
-        free(core_pid);
-        free(core_uid);
-        free(core_gid);
-        free(core_signal);
-        free(core_timestamp);
-        free(core_comm);
-        free(core_exe);
-        free(core_cmdline);
-        free(core_unit);
-        free(core_session);
-        free(core_message);
-
         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
 }

commit a4b88c1ecb2a787d44ba1a46336aa187f60293b5
Author: Mirco Tischler <mt-ml at gmx.de>
Date:   Mon Feb 4 15:13:24 2013 +0100

    logs-show: show messages for all unit types in systemctl status
    
    I can't find a reason why we shouldn't try to output messages for other
    unit types than .service, .socket, .mount and .swap as well. It's probably
    a leftover from before we started logging UNIT= from inside PID 1.

diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
index 7dacccf..b909c24 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
@@ -886,12 +886,6 @@ int show_journal_by_unit(
         assert(mode < _OUTPUT_MODE_MAX);
         assert(unit);
 
-        if (!endswith(unit, ".service") &&
-            !endswith(unit, ".socket") &&
-            !endswith(unit, ".mount") &&
-            !endswith(unit, ".swap"))
-                return 0;
-
         if (how_many <= 0)
                 return 0;
 
@@ -962,11 +956,6 @@ int show_journal_by_user_unit(
         assert(mode < _OUTPUT_MODE_MAX);
         assert(unit);
 
-        if (!endswith(unit, ".service") &&
-            !endswith(unit, ".socket"))
-
-                return 0;
-
         if (how_many <= 0)
                 return 0;
 

commit f9045468945cd06fad84f9fbf44019c6813fc50a
Author: Mirco Tischler <mt-ml at gmx.de>
Date:   Mon Feb 4 15:13:23 2013 +0100

    journal: log user units for coredumps and show them in systemctl status

diff --git a/src/journal/coredump.c b/src/journal/coredump.c
index c989be9..91528d3 100644
--- a/src/journal/coredump.c
+++ b/src/journal/coredump.c
@@ -144,11 +144,14 @@ int main(int argc, char* argv[]) {
 
                 core_unit = strappend("COREDUMP_UNIT=", t);
                 free(t);
-
-                if (core_unit)
-                        IOVEC_SET_STRING(iovec[j++], core_unit);
+        } else if (cg_pid_get_user_unit(pid, &t) >= 0) {
+                core_unit = strappend("COREDUMP_USER_UNIT=", t);
+                free(t);
         }
 
+        if (core_unit)
+                IOVEC_SET_STRING(iovec[j++], core_unit);
+
         /* OK, now we know it's not the journal, hence make use of
          * it */
         log_set_target(LOG_TARGET_JOURNAL_OR_KMSG);
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
index 034fde6..7dacccf 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
@@ -954,7 +954,7 @@ int show_journal_by_user_unit(
                 uid_t uid,
                 OutputFlags flags) {
 
-        _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL;
+        _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL;
         sd_journal *j = NULL;
         int r;
 
@@ -972,7 +972,8 @@ int show_journal_by_user_unit(
 
         if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 ||
             asprintf(&m2, "USER_UNIT=%s", unit) < 0 ||
-            asprintf(&m3, "_UID=%d", uid) < 0) {
+            asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 ||
+            asprintf(&m4, "_UID=%d", uid) < 0) {
                 r = -ENOMEM;
                 goto finish;
         }
@@ -985,7 +986,7 @@ int show_journal_by_user_unit(
         r = sd_journal_add_match(j, m1, 0);
         if (r < 0)
                 goto finish;
-        r = sd_journal_add_match(j, m3, 0);
+        r = sd_journal_add_match(j, m4, 0);
         if (r < 0)
                 goto finish;
 
@@ -996,9 +997,20 @@ int show_journal_by_user_unit(
         r = sd_journal_add_match(j, m2, 0);
         if (r < 0)
                 goto finish;
+        r = sd_journal_add_match(j, m4, 0);
+        if (r < 0)
+                goto finish;
+
+        /* Look for coredumps of the service */
+        r = sd_journal_add_disjunction(j);
+        if (r < 0)
+                goto finish;
         r = sd_journal_add_match(j, m3, 0);
         if (r < 0)
                 goto finish;
+        r = sd_journal_add_match(j, m4, 0);
+        if (r < 0)
+                goto finish;
 
         r = show_journal(f, j, mode, n_columns, not_before, how_many, flags);
         if (r < 0)

commit d2f1f23ad2636cf05589a67b5229c7fd604bc21f
Author: Eelco Dolstra <eelco.dolstra at logicblox.com>
Date:   Mon Feb 4 15:56:26 2013 +0100

    nss-myhostname: copy first result to preallocated buffer
    
    Fixes a segfault in nscd when using nss-myhostname.
    
    Nscd expects that an NSS module's gethostbyname4_r function returns
    its first result in the pre-allocated gaih_addrtuple denoted by **pat.
    (See nscd/aicache.c in the Glibc sources.)  However, nss-myhostname
    doesn't fill in **pat but allocates the first result in ‘buffer’, then
    sets *pat.  So nscd crashes (e.g. when running ‘getent ahosts
    my-machine’).
    
    Hard to tell if this is a bug in nscd, since there doesn't seem to be
    a proper API spec for gethostbyname4_r.  But in any case, this patch
    fixes the crash by copying the first result to **pat.

diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
index 834a806..b0fb832 100644
--- a/src/nss-myhostname/nss-myhostname.c
+++ b/src/nss-myhostname/nss-myhostname.c
@@ -176,7 +176,11 @@ enum nss_status _nss_myhostname_gethostbyname4_r(
         /* Verify the size matches */
         assert(idx == ms);
 
-        *pat = r_tuple_prev;
+        /* Nscd expects us to store the first record in **pat. */
+        if (*pat)
+                **pat = *r_tuple_prev;
+        else
+                *pat = r_tuple_prev;
 
         if (ttlp)
                 *ttlp = 0;

commit 13219b7f74cb2722746b953bbec7593d5cc665e3
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sun Feb 3 22:23:53 2013 -0500

    man: describe unit load path in systemd.unit(5)
    
    In other cases where multiple directories are searched for unit files,
    the list of directories is described in the man page describing the
    format. I think this makes sense too in case of systemd directories,
    since the systemd(1) manpage already has an overview of many different
    topics.

diff --git a/Makefile.am b/Makefile.am
index 6e5f5af..d8546b5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3345,6 +3345,8 @@ SED_PROCESS = \
 		-e 's, at SYSTEMCTL\@,$(rootbindir)/systemctl,g' \
 		-e 's, at SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \
 		-e 's, at pkgsysconfdir\@,$(pkgsysconfdir),g' \
+		-e 's, at SYSTEM_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/system,g' \
+		-e 's, at USER_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/user,g' \
 		-e 's, at pkgdatadir\@,$(pkgdatadir),g' \
 		-e 's, at systemunitdir\@,$(systemunitdir),g' \
 		-e 's, at userunitdir\@,$(userunitdir),g' \
diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in
index 7c3a6c7..43f5ffc 100644
--- a/man/systemd.unit.xml.in
+++ b/man/systemd.unit.xml.in
@@ -48,16 +48,28 @@
         </refnamediv>
 
         <refsynopsisdiv>
-                <para><filename>systemd.service</filename>,
-                <filename>systemd.socket</filename>,
-                <filename>systemd.device</filename>,
-                <filename>systemd.mount</filename>,
-                <filename>systemd.automount</filename>,
-                <filename>systemd.swap</filename>,
-                <filename>systemd.target</filename>,
-                <filename>systemd.path</filename>,
-                <filename>systemd.timer</filename>,
-                <filename>systemd.snapshot</filename></para>
+                <para><filename><replaceable>service</replaceable>.service</filename>,
+                <filename><replaceable>socket</replaceable>.socket</filename>,
+                <filename><replaceable>device</replaceable>.device</filename>,
+                <filename><replaceable>mount</replaceable>.mount</filename>,
+                <filename><replaceable>automount</replaceable>.automount</filename>,
+                <filename><replaceable>swap</replaceable>.swap</filename>,
+                <filename><replaceable>target</replaceable>.target</filename>,
+                <filename><replaceable>path</replaceable>.path</filename>,
+                <filename><replaceable>timer</replaceable>.timer</filename>,
+                <filename><replaceable>snapshot</replaceable>.snapshot</filename></para>
+
+                <para><literallayout><filename>/etc/systemd/system/*</filename>
+<filename>/run/systemd/system/*</filename>
+<filename>/usr/lib/systemd/system/*</filename>
+<filename>...</filename>
+                </literallayout></para>
+
+                <para><literallayout><filename>/etc/systemd/user/*</filename>
+<filename>/run/systemd/user/*</filename>
+<filename>/usr/lib/systemd/user/*</filename>
+<filename>...</filename>
+                </literallayout></para>
         </refsynopsisdiv>
 
         <refsect1>
@@ -66,7 +78,7 @@
                 <para>A unit configuration file encodes information
                 about a service, a socket, a device, a mount point, an
                 automount point, a swap file or partition, a start-up
-                target, a file system path or a timer controlled and
+                target, a file system path, or a timer controlled and
                 supervised by
                 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The
                 syntax is inspired by <ulink
@@ -84,7 +96,22 @@
                 sections described here, each unit may have a
                 type-specific section, e.g. [Service] for a service
                 unit. See the respective man pages for more
-                information.</para>
+                information:
+                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                </para>
+
+                <para>Unit files are loaded from a set of paths
+                determined during compilation, described in the next section.
+                </para>
 
                 <para>Unit files may contain additional options on top
                 of those listed here. If systemd encounters an unknown
@@ -215,6 +242,153 @@
         </refsect1>
 
         <refsect1>
+                <title>Unit load path</title>
+
+                <para>Unit files are loaded from a set of paths
+                determined during compilation, described in the two
+                tables below. Unit files found in directories higher
+                in the hierarchy override files with the same name
+                lower in the hierarchy, thus allowing overrides.
+                </para>
+
+                <para>When systemd is running in session mode
+                (<option>--user</option>) and the variable
+                <varname>$SYSTEMD_UNIT_PATH</varname> is set, this
+                contents of this variable overrides the unit load
+                path.
+                </para>
+
+                <table>
+                  <title>
+                    Load path when running in system mode (<option>--system</option>).
+                  </title>
+
+                  <tgroup cols='2'>
+                    <colspec colname='path' />
+                    <colspec colname='expl' />
+                    <thead>
+                      <row>
+                        <entry>Path</entry>
+                        <entry>Description</entry>
+                      </row>
+                    </thead>
+                    <tbody>
+                      <row>
+                        <entry><filename>/run/systemd/generator.early</filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>@SYSTEM_CONFIG_UNIT_PATH@</filename></entry>
+                        <entry morerows='1'>Local configuration</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/etc/systemd/system</filename></entry>
+                      </row>
+                      <row>
+                        <entry><filename>/run/systemd/systemd</filename></entry>
+                        <entry>Volatile units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/run/systemd/generator</filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/local/lib/systemd/system</filename></entry>
+                        <entry>Units for local packages</entry>
+                      </row>
+                      <row>
+                        <entry><filename>@systemunitdir@</filename></entry>
+                        <entry>Systemd package configuration</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/lib/systemd/system</filename></entry>
+                        <entry morerows='1'>Units for installed packages</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/lib/systemd/system</filename></entry>
+                      </row>
+                      <row>
+                        <entry><filename>/run/systemd/generator.late</filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                    </tbody>
+                  </tgroup>
+                </table>
+
+                <table>
+                  <title>
+                    Load path when running in session mode (<option>--user</option>).
+                  </title>
+
+                  <tgroup cols='2'>
+                    <colspec colname='path' />
+                    <colspec colname='expl' />
+                    <thead>
+                      <row>
+                        <entry>Path</entry>
+                        <entry>Description</entry>
+                      </row>
+                    </thead>
+                    <tbody>
+                      <row>
+                        <entry><filename>/tmp/systemd-generator.early.<replaceable>XXXXXX</replaceable></filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>@USER_CONFIG_UNIT_PATH@</filename></entry>
+                        <entry morerows='1'>Local configuration</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/etc/systemd/user</filename></entry>
+                      </row>
+                      <row>
+                        <entry><filename>/run/systemd/user</filename></entry>
+                        <entry>Volatile units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/tmp/systemd-generator.<replaceable>XXXXXX</replaceable></filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/local/lib/systemd/user</filename></entry>
+                        <entry morerows='1'>Units for local packages</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/local/share/systemd/user</filename></entry>
+                      </row>
+                      <row>
+                        <entry><filename>@userunitdir@</filename></entry>
+                        <entry>Systemd package configuration</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/lib/systemd/user</filename></entry>
+                        <entry morerows='1'>Units for installed packages</entry>
+                      </row>
+                      <row>
+                        <entry><filename>/usr/share/systemd/user</filename></entry>
+                      </row>
+                      <row>
+                        <entry><filename>/tmp/systemd-generator.late.<replaceable>XXXXXX</replaceable></filename></entry>
+                        <entry>Generated units</entry>
+                      </row>
+                    </tbody>
+                  </tgroup>
+                </table>
+
+                <para>Note: the paths listed above are set at
+                compilation time and differ between distributions. The
+                "authorative" list is printed by
+                <command>systemd</command> at during start and daemon
+                reconfiguration.</para>
+
+                <para>Additional units might be loaded into systemd
+                ("linked") from directories not on the unit load
+                path. See the <command>link</command> command for
+                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+                </para>
+        </refsect1>
+
+        <refsect1>
                 <title>Options</title>
 
                 <para>Unit file may include a [Unit] section, which
diff --git a/man/systemd.xml b/man/systemd.xml
index bae90a5..5380ae8 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -535,7 +535,9 @@
                                 <command>disable</command> commands of
                                 the
                                 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                                tool.</para></listitem>
+                                tool. Full list of directories is provided in
+                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                                </para></listitem>
                         </varlistentry>
                 </variablelist>
 
@@ -564,7 +566,9 @@
                                 tool can handle both global (i.e. for
                                 all users) and private (for one user)
                                 enabling/disabling of
-                                units.</para></listitem>
+                                units. Full list of directories is provided in
+                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                                </para></listitem>
                         </varlistentry>
                 </variablelist>
 

commit c78ab91132aab9193f3c17a9a206f8825ff4be84
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Tue Feb 5 10:31:20 2013 -0500

    build-sys: substitute strings in systemd.unit(5)
    
    Makefile.am is updated to deal with .xml.in sources.  Nothing in the
    output is really changed yet, this is just preparation.

diff --git a/Makefile-man.am b/Makefile-man.am
index d54d67c..ee9a952 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -477,3 +477,6 @@ MANPAGES_ALIAS += \
 	#
 
 endif
+
+CLEANFILES += \
+	man/systemd.unit.xml
diff --git a/Makefile.am b/Makefile.am
index f73e8a6..6e5f5af 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -503,7 +503,7 @@ CLEANFILES += \
 if HAVE_PYTHON
 NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES))
 
-XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml)
+XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in)
 update-man-list: make-man-rules.py $(XML_GLOB)
 	$(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp
 	$(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am
diff --git a/make-man-rules.py b/make-man-rules.py
index b88b43a..9c50c8d 100644
--- a/make-man-rules.py
+++ b/make-man-rules.py
@@ -44,6 +44,12 @@ HEADER = '''\
 
 '''
 
+CLEANFILES = '''\
+
+CLEANFILES += \\
+	{cleanfiles}
+'''
+
 def man(page, number):
     return 'man/{}.{}'.format(page, number)
 
@@ -76,7 +82,7 @@ def create_rules(*xml_files):
 def mjoin(files):
     return ' \\\n\t'.join(sorted(files) or '#')
 
-def make_makefile(rules):
+def make_makefile(rules, cleanfiles):
     return HEADER + '\n'.join(
         (CONDITIONAL if conditional else SECTION).format(
             manpages=mjoin(set(rulegroup.values())),
@@ -85,8 +91,12 @@ def make_makefile(rules):
                             for k,v in sorted(rulegroup.items())
                             if k != v),
             conditional=conditional)
-        for conditional,rulegroup in sorted(rules.items()))
+        for conditional,rulegroup in sorted(rules.items())) + \
+        CLEANFILES.format(cleanfiles=mjoin(cleanfiles))
 
 if __name__ == '__main__':
-    rules = create_rules(*sys.argv[1:])
-    print(make_makefile(rules), end='')
+    sources = set(sys.argv[1:])
+    spares = set([source for source in sources
+                  if source + '.in' in sources])
+    rules = create_rules(*(sources - spares))
+    print(make_makefile(rules, spares), end='')
diff --git a/man/.gitignore b/man/.gitignore
index 9c5a7db..1876794 100644
--- a/man/.gitignore
+++ b/man/.gitignore
@@ -1,3 +1,4 @@
 /systemd.directives.xml
 /systemd.index.xml
+/systemd.unit.xml
 /*.[13578]
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
deleted file mode 100644
index 7c3a6c7..0000000
--- a/man/systemd.unit.xml
+++ /dev/null
@@ -1,1143 +0,0 @@
-<?xml version='1.0'?> <!--*-nxml-*-->
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-
-<!--
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-
-  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.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
--->
-
-<refentry id="systemd.unit">
-
-        <refentryinfo>
-                <title>systemd.unit</title>
-                <productname>systemd</productname>
-
-                <authorgroup>
-                        <author>
-                                <contrib>Developer</contrib>
-                                <firstname>Lennart</firstname>
-                                <surname>Poettering</surname>
-                                <email>lennart at poettering.net</email>
-                        </author>
-                </authorgroup>
-        </refentryinfo>
-
-        <refmeta>
-                <refentrytitle>systemd.unit</refentrytitle>
-                <manvolnum>5</manvolnum>
-        </refmeta>
-
-        <refnamediv>
-                <refname>systemd.unit</refname>
-                <refpurpose>Unit configuration</refpurpose>
-        </refnamediv>
-
-        <refsynopsisdiv>
-                <para><filename>systemd.service</filename>,
-                <filename>systemd.socket</filename>,
-                <filename>systemd.device</filename>,
-                <filename>systemd.mount</filename>,
-                <filename>systemd.automount</filename>,
-                <filename>systemd.swap</filename>,
-                <filename>systemd.target</filename>,
-                <filename>systemd.path</filename>,
-                <filename>systemd.timer</filename>,
-                <filename>systemd.snapshot</filename></para>
-        </refsynopsisdiv>
-
-        <refsect1>
-                <title>Description</title>
-
-                <para>A unit configuration file encodes information
-                about a service, a socket, a device, a mount point, an
-                automount point, a swap file or partition, a start-up
-                target, a file system path or a timer controlled and
-                supervised by
-                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The
-                syntax is inspired by <ulink
-                url="http://standards.freedesktop.org/desktop-entry-spec/latest/">XDG
-                Desktop Entry Specification</ulink> <filename>.desktop</filename> files, which are in turn
-                inspired by Microsoft Windows
-                <filename>.ini</filename> files.</para>
-
-                <para>This man page lists the common configuration
-                options of all the unit types. These options need to
-                be configured in the [Unit] or [Install]
-                sections of the unit files.</para>
-
-                <para>In addition to the generic [Unit] and [Install]
-                sections described here, each unit may have a
-                type-specific section, e.g. [Service] for a service
-                unit. See the respective man pages for more
-                information.</para>
-
-                <para>Unit files may contain additional options on top
-                of those listed here. If systemd encounters an unknown
-                option it will write a warning log message but
-                continue loading the unit. If an option is prefixed
-                with <option>X-</option> it is ignored completely by
-                systemd. Applications may use this to include
-                additional information in the unit files.</para>
-
-                <para>Boolean arguments used in unit files can be
-                written in various formats. For positive settings the
-                strings <option>1</option>, <option>yes</option>,
-                <option>true</option> and <option>on</option> are
-                equivalent. For negative settings the strings
-                <option>0</option>, <option>no</option>,
-                <option>false</option> and <option>off</option> are
-                equivalent.</para>
-
-                <para>Time span values encoded in unit files can be
-                written in various formats. A stand-alone number
-                specifies a time in seconds. If suffixed with a time
-                unit, the unit is honored. A concatenation of multiple
-                values with units is supported, in which case the
-                values are added up. Example: "50" refers to 50
-                seconds; "2min 200ms" refers to 2 minutes plus 200
-                milliseconds, i.e. 120200ms. The following time units
-                are understood: s, min, h, d, w, ms, us. For details
-                see
-                <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
-
-                <para>Empty lines and lines starting with # or ; are
-                ignored. This may be used for commenting. Lines ending
-                in a backslash are concatenated with the following
-                line while reading and the backslash is replaced by a
-                space character. This may be used to wrap long lines.</para>
-
-                <para>Along with a unit file
-                <filename>foo.service</filename> the directory
-                <filename>foo.service.wants/</filename> may exist. All
-                unit files symlinked from such a directory are
-                implicitly added as dependencies of type
-                <varname>Wanted=</varname> to the unit. This is useful
-                to hook units into the start-up of other units,
-                without having to modify their unit files. For details
-                about the semantics of <varname>Wanted=</varname> see
-                below. The preferred way to create symlinks in the
-                <filename>.wants/</filename> directory of a unit file
-                is with the <command>enable</command> command of the
-                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                tool which reads information from the [Install]
-                section of unit files (see below). A similar
-                functionality exists for <varname>Requires=</varname>
-                type dependencies as well, the directory suffix is
-                <filename>.requires/</filename> in this case.</para>
-
-                <para>Along with a unit file
-                <filename>foo.service</filename> a directory
-                <filename>foo.service.d/</filename> may exist. All
-                files with the suffix <filename>.conf</filename> from
-                this directory will be parsed after the file itself is
-                parsed. This is useful to alter or add configuration
-                settings to a unit, without having to modify their
-                unit files. Make sure that the file that is included
-                has the appropriate section headers before any
-                directive.</para>
-
-                <para>If a line starts with <option>.include</option>
-                followed by a file name, the specified file will be
-                parsed at this point. Make sure that the file that is
-                included has the appropriate section headers before
-                any directives.</para>
-
-                <para>Note that while systemd offers a flexible
-                dependency system between units it is recommended to
-                use this functionality only sparingly and instead rely
-                on techniques such as bus-based or socket-based
-                activation which make dependencies implicit, resulting
-                in a both simpler and more flexible system.</para>
-
-                <para>Some unit names reflect paths existing in the
-                file system name space. Example: a device unit
-                <filename>dev-sda.device</filename> refers to a device
-                with the device node <filename>/dev/sda</filename> in
-                the file system namespace. If this applies a special
-                way to escape the path name is used, so that the
-                result is usable as part of a file name. Basically,
-                given a path, "/" is replaced by "-", and all
-                unprintable characters and the "-" are replaced by
-                C-style "\x20" escapes. The root directory "/" is
-                encoded as single dash, while otherwise the initial
-                and ending "/" is removed from all paths during
-                transformation. This escaping is reversible.</para>
-
-                <para>Optionally, units may be instantiated from a
-                template file at runtime. This allows creation of
-                multiple units from a single configuration file. If
-                systemd looks for a unit configuration file it will
-                first search for the literal unit name in the
-                filesystem. If that yields no success and the unit
-                name contains an @ character, systemd will look for a
-                unit template that shares the same name but with the
-                instance string (i.e. the part between the @ character
-                and the suffix) removed. Example: if a service
-                <filename>getty at tty3.service</filename> is requested
-                and no file by that name is found, systemd will look
-                for <filename>getty at .service</filename> and
-                instantiate a service from that configuration file if
-                it is found.</para>
-
-                <para>To refer to the instance string from
-                within the configuration file you may use the special
-                <literal>%i</literal> specifier in many of the
-                configuration options. See below for details.</para>
-
-                <para>If a unit file is empty (i.e. has the file size
-                0) or is symlinked to <filename>/dev/null</filename>
-                its configuration will not be loaded and it appears
-                with a load state of <literal>masked</literal>, and
-                cannot be activated. Use this as an effective way to
-                fully disable a unit, making it impossible to start it
-                even manually.</para>
-
-                <para>The unit file format is covered by the
-                <ulink
-                url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface
-                Stability Promise</ulink>.</para>
-
-        </refsect1>
-
-        <refsect1>
-                <title>Options</title>
-
-                <para>Unit file may include a [Unit] section, which
-                carries generic information about the unit that is not
-                dependent on the type of unit:</para>
-
-                <variablelist class='unit-directives'>
-
-                        <varlistentry>
-                                <term><varname>Description=</varname></term>
-                                <listitem><para>A free-form string
-                                describing the unit. This is intended
-                                for use in UIs to show descriptive
-                                information along with the unit
-                                name.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Documentation=</varname></term>
-                                <listitem><para>A space separated list
-                                of URIs referencing documentation for
-                                this unit or its
-                                configuration. Accepted are only URIs
-                                of the types
-                                <literal>http://</literal>,
-                                <literal>https://</literal>,
-                                <literal>file:</literal>,
-                                <literal>info:</literal>,
-                                <literal>man:</literal>. For more
-                                information about the syntax of these
-                                URIs see
-                                <citerefentry><refentrytitle>uri</refentrytitle><manvolnum>7</manvolnum></citerefentry>. The
-                                URIs should be listed in order of
-                                relevance, starting with the most
-                                relevant. It is a good idea to first
-                                reference documentation that explains
-                                what the unit's purpose is, followed
-                                by how it is configured, followed by
-                                any other related documentation. This
-                                option may be specified more than once
-                                in which case the specified list of
-                                URIs is merged. If the empty string is
-                                assigned to this option the list is
-                                reset and all prior assignments will
-                                have no effect.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Requires=</varname></term>
-
-                                <listitem><para>Configures requirement
-                                dependencies on other units. If this
-                                unit gets activated, the units listed
-                                here will be activated as well. If one
-                                of the other units gets deactivated or
-                                its activation fails, this unit will
-                                be deactivated. This option may be
-                                specified more than once, in which
-                                case requirement dependencies for all
-                                listed names are created. Note that
-                                requirement dependencies do not
-                                influence the order in which services
-                                are started or stopped. This has to be
-                                configured independently with the
-                                <varname>After=</varname> or
-                                <varname>Before=</varname> options. If
-                                a unit
-                                <filename>foo.service</filename>
-                                requires a unit
-                                <filename>bar.service</filename> as
-                                configured with
-                                <varname>Requires=</varname> and no
-                                ordering is configured with
-                                <varname>After=</varname> or
-                                <varname>Before=</varname>, then both
-                                units will be started simultaneously
-                                and without any delay between them if
-                                <filename>foo.service</filename> is
-                                activated. Often it is a better choice
-                                to use <varname>Wants=</varname>
-                                instead of
-                                <varname>Requires=</varname> in order
-                                to achieve a system that is more
-                                robust when dealing with failing
-                                services.</para>
-
-                                <para>Note that dependencies of this
-                                type may also be configured outside of
-                                the unit configuration file by
-                                adding a symlink to a
-                                <filename>.requires/</filename> directory
-                                accompanying the unit file. For
-                                details see above.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>RequiresOverridable=</varname></term>
-
-                                <listitem><para>Similar to
-                                <varname>Requires=</varname>.
-                                Dependencies listed in
-                                <varname>RequiresOverridable=</varname>
-                                which cannot be fulfilled or fail to
-                                start are ignored if the startup was
-                                explicitly requested by the user. If
-                                the start-up was pulled in indirectly
-                                by some dependency or automatic
-                                start-up of units that is not
-                                requested by the user this dependency
-                                must be fulfilled and otherwise the
-                                transaction fails. Hence, this option
-                                may be used to configure dependencies
-                                that are normally honored unless the
-                                user explicitly starts up the unit, in
-                                which case whether they failed or not
-                                is irrelevant.</para></listitem>
-
-                        </varlistentry>
-                        <varlistentry>
-                                <term><varname>Requisite=</varname></term>
-                                <term><varname>RequisiteOverridable=</varname></term>
-
-                                <listitem><para>Similar to
-                                <varname>Requires=</varname>
-                                and <varname>RequiresOverridable=</varname>, respectively. However,
-                                if a unit listed here is not started
-                                already it will not be started and the
-                                transaction fails
-                                immediately.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Wants=</varname></term>
-
-                                <listitem><para>A weaker version of
-                                <varname>Requires=</varname>. A unit
-                                listed in this option will be started
-                                if the configuring unit is. However,
-                                if the listed unit fails to start up
-                                or cannot be added to the transaction
-                                this has no impact on the validity of
-                                the transaction as a whole. This is
-                                the recommended way to hook start-up
-                                of one unit to the start-up of another
-                                unit.</para>
-
-                                <para>Note that dependencies of this
-                                type may also be configured outside of
-                                the unit configuration file by
-                                adding a symlink to a
-                                <filename>.wants/</filename> directory
-                                accompanying the unit file. For
-                                details see above.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>BindsTo=</varname></term>
-
-                                <listitem><para>Configures requirement
-                                dependencies, very similar in style to
-                                <varname>Requires=</varname>, however
-                                in addition to this behavior it also
-                                declares that this unit is stopped
-                                when any of the units listed suddenly
-                                disappears. Units can suddenly,
-                                unexpectedly disappear if a service
-                                terminates on its own choice, a device
-                                is unplugged or a mount point
-                                unmounted without involvement of
-                                systemd.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>PartOf=</varname></term>
-
-                                <listitem><para>Configures dependencies
-                                similar to <varname>Requires=</varname>,
-                                but limited to stopping and restarting
-                                of units. When systemd stops or restarts
-                                the units listed here, the action is
-                                propagated to this unit.
-                                Note that this is a one way dependency -
-                                changes to this unit do not affect the
-                                listed units.
-                                </para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Conflicts=</varname></term>
-
-                                <listitem><para>Configures negative
-                                requirement dependencies. If a unit
-                                has a
-                                <varname>Conflicts=</varname> setting
-                                on another unit, starting the former
-                                will stop the latter and vice
-                                versa. Note that this setting is
-                                independent of and orthogonal to the
-                                <varname>After=</varname> and
-                                <varname>Before=</varname> ordering
-                                dependencies.</para>
-
-                                <para>If a unit A that conflicts with
-                                a unit B is scheduled to be started at
-                                the same time as B, the transaction
-                                will either fail (in case both are
-                                required part of the transaction) or
-                                be modified to be fixed (in case one
-                                or both jobs are not a required part
-                                of the transaction). In the latter
-                                case the job that is not the required
-                                will be removed, or in case both are
-                                not required the unit that conflicts
-                                will be started and the unit that is
-                                conflicted is
-                                stopped.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Before=</varname></term>
-                                <term><varname>After=</varname></term>
-
-                                <listitem><para>Configures ordering
-                                dependencies between units. If a unit
-                                <filename>foo.service</filename>
-                                contains a setting
-                                <option>Before=bar.service</option>
-                                and both units are being started,
-                                <filename>bar.service</filename>'s
-                                start-up is delayed until
-                                <filename>foo.service</filename> is
-                                started up. Note that this setting is
-                                independent of and orthogonal to the
-                                requirement dependencies as configured
-                                by <varname>Requires=</varname>. It is
-                                a common pattern to include a unit
-                                name in both the
-                                <varname>After=</varname> and
-                                <varname>Requires=</varname> option in
-                                which case the unit listed will be
-                                started before the unit that is
-                                configured with these options. This
-                                option may be specified more than
-                                once, in which case ordering
-                                dependencies for all listed names are
-                                created. <varname>After=</varname> is
-                                the inverse of
-                                <varname>Before=</varname>, i.e. while
-                                <varname>After=</varname> ensures that
-                                the configured unit is started after
-                                the listed unit finished starting up,
-                                <varname>Before=</varname> ensures the
-                                opposite, i.e.  that the configured
-                                unit is fully started up before the
-                                listed unit is started. Note that when
-                                two units with an ordering dependency
-                                between them are shut down, the
-                                inverse of the start-up order is
-                                applied. i.e. if a unit is configured
-                                with <varname>After=</varname> on
-                                another unit, the former is stopped
-                                before the latter if both are shut
-                                down. If one unit with an ordering
-                                dependency on another unit is shut
-                                down while the latter is started up,
-                                the shut down is ordered before the
-                                start-up regardless whether the
-                                ordering dependency is actually of
-                                type <varname>After=</varname> or
-                                <varname>Before=</varname>. If two
-                                units have no ordering dependencies
-                                between them they are shut down
-                                or started up simultaneously, and
-                                no ordering takes
-                                place. </para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>OnFailure=</varname></term>
-
-                                <listitem><para>Lists one or more
-                                units that are activated when this
-                                unit enters the
-                                '<literal>failed</literal>'
-                                state.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>PropagatesReloadTo=</varname></term>
-                                <term><varname>ReloadPropagatedFrom=</varname></term>
-
-                                <listitem><para>Lists one or more
-                                units where reload requests on the
-                                unit will be propagated to/on the
-                                other unit will be propagated
-                                from. Issuing a reload request on a
-                                unit will automatically also enqueue a
-                                reload request on all units that the
-                                reload request shall be propagated to
-                                via these two
-                                settings.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>RequiresMountsFor=</varname></term>
-
-                                <listitem><para>Takes a space
-                                separated list of absolute paths. Automatically
-                                adds dependencies of type
-                                <varname>Requires=</varname> and
-                                <varname>After=</varname> for all
-                                mount units required to access the
-                                specified path.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>OnFailureIsolate=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option> the
-                                unit listed in
-                                <varname>OnFailure=</varname> will be
-                                enqueued in isolation mode, i.e. all
-                                units that are not its dependency will
-                                be stopped. If this is set only a
-                                single unit may be listed in
-                                <varname>OnFailure=</varname>. Defaults
-                                to
-                                <option>false</option>.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>IgnoreOnIsolate=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                this unit will not be stopped when
-                                isolating another unit. Defaults to
-                                <option>false</option>.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>IgnoreOnSnapshot=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                this unit will not be included in
-                                snapshots. Defaults to
-                                <option>true</option> for device and
-                                snapshot units, <option>false</option>
-                                for the others.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>StopWhenUnneeded=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                this unit will be stopped when it is
-                                no longer used. Note that in order to
-                                minimize the work to be executed,
-                                systemd will not stop units by default
-                                unless they are conflicting with other
-                                units, or the user explicitly
-                                requested their shut down. If this
-                                option is set, a unit will be
-                                automatically cleaned up if no other
-                                active unit requires it. Defaults to
-                                <option>false</option>.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>RefuseManualStart=</varname></term>
-                                <term><varname>RefuseManualStop=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                this unit can only be activated
-                                or deactivated indirectly. In
-                                this case explicit start-up
-                                or termination requested by the
-                                user is denied, however if it is
-                                started or stopped as a
-                                dependency of another unit, start-up
-                                or termination will succeed. This
-                                is mostly a safety feature to ensure
-                                that the user does not accidentally
-                                activate units that are not intended
-                                to be activated explicitly, and not
-                                accidentally deactivate units that are
-                                not intended to be deactivated.
-                                These options default to
-                                <option>false</option>.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>AllowIsolate=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                this unit may be used with the
-                                <command>systemctl isolate</command>
-                                command. Otherwise this will be
-                                refused. It probably is a good idea to
-                                leave this disabled except for target
-                                units that shall be used similar to
-                                runlevels in SysV init systems, just
-                                as a precaution to avoid unusable
-                                system states. This option defaults to
-                                <option>false</option>.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>DefaultDependencies=</varname></term>
-
-                                <listitem><para>Takes a boolean
-                                argument. If <option>true</option>
-                                (the default), a few default
-                                dependencies will implicitly be
-                                created for the unit. The actual
-                                dependencies created depend on the
-                                unit type. For example, for service
-                                units, these dependencies ensure that
-                                the service is started only after
-                                basic system initialization is
-                                completed and is properly terminated on
-                                system shutdown. See the respective
-                                man pages for details. Generally, only
-                                services involved with early boot or
-                                late shutdown should set this option
-                                to <option>false</option>. It is
-                                highly recommended to leave this
-                                option enabled for the majority of
-                                common units. If set to
-                                <option>false</option> this option
-                                does not disable all implicit
-                                dependencies, just non-essential
-                                ones.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>JobTimeoutSec=</varname></term>
-
-                                <listitem><para>When clients are
-                                waiting for a job of this unit to
-                                complete, time out after the specified
-                                time. If this time limit is reached
-                                the job will be cancelled, the unit
-                                however will not change state or even
-                                enter the '<literal>failed</literal>'
-                                mode. This value defaults to 0 (job
-                                timeouts disabled), except for device
-                                units. NB: this timeout is independent
-                                from any unit-specific timeout (for
-                                example, the timeout set with
-                                <varname>Timeout=</varname> in service
-                                units) as the job timeout has no
-                                effect on the unit itself, only on the
-                                job that might be pending for it. Or
-                                in other words: unit-specific timeouts
-                                are useful to abort unit state
-                                changes, and revert them. The job
-                                timeout set with this option however
-                                is useful to abort only the job
-                                waiting for the unit state to
-                                change.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>ConditionPathExists=</varname></term>
-                                <term><varname>ConditionPathExistsGlob=</varname></term>
-                                <term><varname>ConditionPathIsDirectory=</varname></term>
-                                <term><varname>ConditionPathIsSymbolicLink=</varname></term>
-                                <term><varname>ConditionPathIsMountPoint=</varname></term>
-                                <term><varname>ConditionPathIsReadWrite=</varname></term>
-                                <term><varname>ConditionDirectoryNotEmpty=</varname></term>
-                                <term><varname>ConditionFileNotEmpty=</varname></term>
-                                <term><varname>ConditionFileIsExecutable=</varname></term>
-                                <term><varname>ConditionKernelCommandLine=</varname></term>
-                                <term><varname>ConditionVirtualization=</varname></term>
-                                <term><varname>ConditionSecurity=</varname></term>
-                                <term><varname>ConditionCapability=</varname></term>
-                                <term><varname>ConditionHost=</varname></term>
-                                <term><varname>ConditionACPower=</varname></term>
-                                <term><varname>ConditionNull=</varname></term>
-
-                                <listitem><para>Before starting a unit
-                                verify that the specified condition is
-                                true. If it is not true the starting
-                                of the unit will be skipped, however
-                                all ordering dependencies of it are
-                                still respected. A failing condition
-                                will not result in the unit being
-                                moved into a failure state. The
-                                condition is checked at the time the
-                                queued start job is to be
-                                executed.</para>
-
-                                <para>With
-                                <varname>ConditionPathExists=</varname>
-                                a file existence condition is
-                                checked before a unit is started. If
-                                the specified absolute path name does
-                                not exist the condition will
-                                fail. If the absolute path name passed
-                                to
-                                <varname>ConditionPathExists=</varname>
-                                is prefixed with an exclamation mark
-                                ('!'), the test is negated, and the unit
-                                is only started if the path does not
-                                exist.</para>
-
-                                <para><varname>ConditionPathExistsGlob=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>,
-                                but checks for the existence of at
-                                least one file or directory matching
-                                the specified globbing pattern.</para>
-
-                                <para><varname>ConditionPathIsDirectory=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists and is a
-                                directory.</para>
-
-                                <para><varname>ConditionPathIsSymbolicLink=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists and is a symbolic
-                                link.</para>
-
-                                <para><varname>ConditionPathIsMountPoint=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists and is a mount
-                                point.</para>
-
-                                <para><varname>ConditionPathIsReadWrite=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether the underlying
-                                file system is readable and writable
-                                (i.e. not mounted
-                                read-only).</para>
-
-                                <para><varname>ConditionDirectoryNotEmpty=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists and is a non-empty
-                                directory.</para>
-
-                                <para><varname>ConditionFileNotEmpty=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists and refers to a regular file
-                                with a non-zero size.</para>
-
-                                <para><varname>ConditionFileIsExecutable=</varname>
-                                is similar to
-                                <varname>ConditionPathExists=</varname>
-                                but verifies whether a certain path
-                                exists, is a regular file and marked
-                                executable.</para>
-
-                                <para>Similar,
-                                <varname>ConditionKernelCommandLine=</varname>
-                                may be used to check whether a
-                                specific kernel command line option is
-                                set (or if prefixed with the
-                                exclamation mark unset). The argument
-                                must either be a single word, or an
-                                assignment (i.e. two words, separated
-                                '='). In the former
-                                case the kernel command line is
-                                searched for the word appearing as is,
-                                or as left hand side of an
-                                assignment. In the latter case the
-                                exact assignment is looked for with
-                                right and left hand side
-                                matching.</para>
-
-                                <para><varname>ConditionVirtualization=</varname>
-                                may be used to check whether the
-                                system is executed in a virtualized
-                                environment and optionally test
-                                whether it is a specific
-                                implementation. Takes either boolean
-                                value to check if being executed in
-                                any virtualized environment, or one of
-                                <varname>vm</varname> and
-                                <varname>container</varname> to test
-                                against a generic type of
-                                virtualization solution, or one of
-                                <varname>qemu</varname>,
-                                <varname>kvm</varname>,
-                                <varname>vmware</varname>,
-                                <varname>microsoft</varname>,
-                                <varname>oracle</varname>,
-                                <varname>xen</varname>,
-                                <varname>bochs</varname>,
-                                <varname>chroot</varname>,
-                                <varname>openvz</varname>,
-                                <varname>lxc</varname>,
-                                <varname>lxc-libvirt</varname>,
-                                <varname>systemd-nspawn</varname> to
-                                test against a specific
-                                implementation. If multiple
-                                virtualization technologies are nested
-                                only the innermost is considered. The
-                                test may be negated by prepending an
-                                exclamation mark.</para>
-
-                                <para><varname>ConditionSecurity=</varname>
-                                may be used to check whether the given
-                                security module is enabled on the
-                                system.  Currently the only recognized
-                                value is <varname>selinux</varname>.
-                                The test may be negated by prepending
-                                an exclamation
-                                mark.</para>
-
-                                <para><varname>ConditionCapability=</varname>
-                                may be used to check whether the given
-                                capability exists in the capability
-                                bounding set of the service manager
-                                (i.e. this does not check whether
-                                capability is actually available in
-                                the permitted or effective sets, see
-                                <citerefentry><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
-                                for details). Pass a capability name
-                                such as <literal>CAP_MKNOD</literal>,
-                                possibly prefixed with an exclamation
-                                mark to negate the check.</para>
-
-                                <para><varname>ConditionHost=</varname>
-                                may be used to match against the
-                                host name or machine ID of the
-                                host. This either takes a host name
-                                string (optionally with shell style
-                                globs) which is tested against the
-                                locally set host name as returned by
-                                <citerefentry><refentrytitle>gethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
-                                or a machine ID formatted as string
-                                (see
-                                <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
-                                The test may be negated by prepending
-                                an exclamation mark.</para>
-
-                                <para><varname>ConditionACPower=</varname>
-                                may be used to check whether the
-                                system has AC power, or is exclusively
-                                battery powered at the time of
-                                activation of the unit. This takes a
-                                boolean argument. If set to
-                                <varname>true</varname> the condition
-                                will hold only if at least one AC
-                                connector of the system is connected
-                                to a power source, or if no AC
-                                connectors are known. Conversely, if
-                                set to <varname>false</varname> the
-                                condition will hold only if there is
-                                at least one AC connector known and
-                                all AC connectors are disconnected
-                                from a power source.</para>
-
-                                <para>Finally,
-                                <varname>ConditionNull=</varname> may
-                                be used to add a constant condition
-                                check value to the unit. It takes a
-                                boolean argument. If set to
-                                <varname>false</varname> the condition
-                                will always fail, otherwise
-                                succeed.</para>
-
-                                <para>If multiple conditions are
-                                specified the unit will be executed if
-                                all of them apply (i.e. a logical AND
-                                is applied). Condition checks can be
-                                prefixed with a pipe symbol (|) in
-                                which case a condition becomes a
-                                triggering condition. If at least one
-                                triggering condition is defined for a
-                                unit then the unit will be executed if
-                                at least one of the triggering
-                                conditions apply and all of the
-                                non-triggering conditions. If you
-                                prefix an argument with the pipe
-                                symbol and an exclamation mark the
-                                pipe symbol must be passed first, the
-                                exclamation second. Except for
-                                <varname>ConditionPathIsSymbolicLink=</varname>,
-                                all path checks follow symlinks. If
-                                any of these options is assigned the
-                                empty string the list of conditions is
-                                reset completely, all previous
-                                condition settings (of any kind) will
-                                have no effect.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>SourcePath=</varname></term>
-                                <listitem><para>A path to a
-                                configuration file this unit has been
-                                generated from. This is primarily
-                                useful for implementation of generator
-                                tools that convert configuration from
-                                an external configuration file format
-                                into native unit files. Thus
-                                functionality should not be used in
-                                normal units.</para></listitem>
-                        </varlistentry>
-                </variablelist>
-
-                <para>Unit file may include a [Install] section, which
-                carries installation information for the unit. This
-                section is not interpreted by
-                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                during runtime. It is used exclusively by the
-                <command>enable</command> and
-                <command>disable</command> commands of the
-                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                tool during installation of a unit:</para>
-
-                <variablelist class='unit-directives'>
-                        <varlistentry>
-                                <term><varname>Alias=</varname></term>
-
-                                <listitem><para>Additional names this
-                                unit shall be installed under. The
-                                names listed here must have the same
-                                suffix (i.e. type) as the unit file
-                                name. This option may be specified
-                                more than once, in which case all
-                                listed names are used. At installation
-                                time,
-                                <command>systemctl enable</command>
-                                will create symlinks from these names
-                                to the unit file name.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>WantedBy=</varname></term>
-                                <term><varname>RequiredBy=</varname></term>
-
-                                <listitem><para>Installs a symlink in
-                                the <filename>.wants/</filename>
-                                or <filename>.requires/</filename>
-                                subdirectory for a unit, respectively. This has the
-                                effect that when the listed unit name
-                                is activated the unit listing it is
-                                activated
-                                too. <command>WantedBy=foo.service</command>
-                                in a service
-                                <filename>bar.service</filename> is
-                                mostly equivalent to
-                                <command>Alias=foo.service.wants/bar.service</command>
-                                in the same file.</para></listitem>
-                        </varlistentry>
-
-                        <varlistentry>
-                                <term><varname>Also=</varname></term>
-
-                                <listitem><para>Additional units to
-                                install when this unit is
-                                installed. If the user requests
-                                installation of a unit with this
-                                option configured,
-                                <command>systemctl enable</command>
-                                will automatically install units
-                                listed in this option as
-                                well.</para></listitem>
-                        </varlistentry>
-                </variablelist>
-
-                <para>The following specifiers are interpreted in the
-                Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b.
-                For their meaning see the next section.
-                </para>
-        </refsect1>
-
-        <refsect1>
-                <title>Specifiers</title>
-
-                <para>Many settings resolve specifiers which may be
-                used to write generic unit files referring to runtime
-                or unit parameters that are replaced when the unit
-                files are loaded. The following specifiers are
-                understood:</para>
-
-                <table>
-                  <title>Specifiers available in unit files</title>
-                  <tgroup cols='3' align='left' colsep='1' rowsep='1'>
-                    <colspec colname="spec" />
-                    <colspec colname="mean" />
-                    <colspec colname="detail" />
-                    <thead>
-                      <row>
-                        <entry>Specifier</entry>
-                        <entry>Meaning</entry>
-                        <entry>Details</entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row>
-                        <entry><literal>%n</literal></entry>
-                        <entry>Full unit name</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%N</literal></entry>
-                        <entry>Unescaped full unit name</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%p</literal></entry>
-                        <entry>Prefix name</entry>
-                        <entry>For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%P</literal></entry>
-                        <entry>Unescaped prefix name</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%i</literal></entry>
-                        <entry>Instance name</entry>
-                        <entry>For instantiated units: this is the string between the @ character and the suffix.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%I</literal></entry>
-                        <entry>Unescaped instance name</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%f</literal></entry>
-                        <entry>Unescaped file name</entry>
-                        <entry>This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%c</literal></entry>
-                        <entry>Control group path of the unit</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%r</literal></entry>
-                        <entry>Root control group path of systemd</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%R</literal></entry>
-                        <entry>Parent directory of the root control group path of systemd</entry>
-                        <entry></entry>
-                      </row>
-                      <row>
-                        <entry><literal>%t</literal></entry>
-                        <entry>Runtime socket dir</entry>
-                        <entry>This is either <filename>/run</filename> (for the system manager) or <literal>$XDG_RUNTIME_DIR</literal> (for user managers).</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%u</literal></entry>
-                        <entry>User name</entry>
-                        <entry>This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%U</literal></entry>
-                        <entry>User UID</entry>
-                        <entry>This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%h</literal></entry>
-                        <entry>User home directory</entry>
-                        <entry>This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%s</literal></entry>
-                        <entry>User shell</entry>
-                        <entry>This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%m</literal></entry>
-                        <entry>Machine ID</entry>
-                        <entry>The machine ID of the running system, formatted as string. See <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%b</literal></entry>
-                        <entry>Boot ID</entry>
-                        <entry>The boot ID of the running system, formatted as string. See <citerefentry><refentrytitle>random</refentrytitle><manvolnum>4</manvolnum></citerefentry> for more information.</entry>
-                      </row>
-                      <row>
-                        <entry><literal>%H</literal></entry>
-                        <entry>Host name</entry>
-                        <entry>The host name of the running system.</entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </table>
-        </refsect1>
-
-        <refsect1>
-                <title>See Also</title>
-                <para>
-                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
-                </para>
-        </refsect1>
-
-</refentry>
diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in
new file mode 100644
index 0000000..7c3a6c7
--- /dev/null
+++ b/man/systemd.unit.xml.in
@@ -0,0 +1,1143 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<!--
+  This file is part of systemd.
+
+  Copyright 2010 Lennart Poettering
+
+  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.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="systemd.unit">
+
+        <refentryinfo>
+                <title>systemd.unit</title>
+                <productname>systemd</productname>
+
+                <authorgroup>
+                        <author>
+                                <contrib>Developer</contrib>
+                                <firstname>Lennart</firstname>
+                                <surname>Poettering</surname>
+                                <email>lennart at poettering.net</email>
+                        </author>
+                </authorgroup>
+        </refentryinfo>
+
+        <refmeta>
+                <refentrytitle>systemd.unit</refentrytitle>
+                <manvolnum>5</manvolnum>
+        </refmeta>
+
+        <refnamediv>
+                <refname>systemd.unit</refname>
+                <refpurpose>Unit configuration</refpurpose>
+        </refnamediv>
+
+        <refsynopsisdiv>
+                <para><filename>systemd.service</filename>,
+                <filename>systemd.socket</filename>,
+                <filename>systemd.device</filename>,
+                <filename>systemd.mount</filename>,
+                <filename>systemd.automount</filename>,
+                <filename>systemd.swap</filename>,
+                <filename>systemd.target</filename>,
+                <filename>systemd.path</filename>,
+                <filename>systemd.timer</filename>,
+                <filename>systemd.snapshot</filename></para>
+        </refsynopsisdiv>
+
+        <refsect1>
+                <title>Description</title>
+
+                <para>A unit configuration file encodes information
+                about a service, a socket, a device, a mount point, an
+                automount point, a swap file or partition, a start-up
+                target, a file system path or a timer controlled and
+                supervised by
+                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The
+                syntax is inspired by <ulink
+                url="http://standards.freedesktop.org/desktop-entry-spec/latest/">XDG
+                Desktop Entry Specification</ulink> <filename>.desktop</filename> files, which are in turn
+                inspired by Microsoft Windows
+                <filename>.ini</filename> files.</para>
+
+                <para>This man page lists the common configuration
+                options of all the unit types. These options need to
+                be configured in the [Unit] or [Install]
+                sections of the unit files.</para>
+
+                <para>In addition to the generic [Unit] and [Install]
+                sections described here, each unit may have a
+                type-specific section, e.g. [Service] for a service
+                unit. See the respective man pages for more
+                information.</para>
+
+                <para>Unit files may contain additional options on top
+                of those listed here. If systemd encounters an unknown
+                option it will write a warning log message but
+                continue loading the unit. If an option is prefixed
+                with <option>X-</option> it is ignored completely by
+                systemd. Applications may use this to include
+                additional information in the unit files.</para>
+
+                <para>Boolean arguments used in unit files can be
+                written in various formats. For positive settings the
+                strings <option>1</option>, <option>yes</option>,
+                <option>true</option> and <option>on</option> are
+                equivalent. For negative settings the strings
+                <option>0</option>, <option>no</option>,
+                <option>false</option> and <option>off</option> are
+                equivalent.</para>
+
+                <para>Time span values encoded in unit files can be
+                written in various formats. A stand-alone number
+                specifies a time in seconds. If suffixed with a time
+                unit, the unit is honored. A concatenation of multiple
+                values with units is supported, in which case the
+                values are added up. Example: "50" refers to 50
+                seconds; "2min 200ms" refers to 2 minutes plus 200
+                milliseconds, i.e. 120200ms. The following time units
+                are understood: s, min, h, d, w, ms, us. For details
+                see
+                <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+
+                <para>Empty lines and lines starting with # or ; are
+                ignored. This may be used for commenting. Lines ending
+                in a backslash are concatenated with the following
+                line while reading and the backslash is replaced by a
+                space character. This may be used to wrap long lines.</para>
+
+                <para>Along with a unit file
+                <filename>foo.service</filename> the directory
+                <filename>foo.service.wants/</filename> may exist. All
+                unit files symlinked from such a directory are
+                implicitly added as dependencies of type
+                <varname>Wanted=</varname> to the unit. This is useful
+                to hook units into the start-up of other units,
+                without having to modify their unit files. For details
+                about the semantics of <varname>Wanted=</varname> see
+                below. The preferred way to create symlinks in the
+                <filename>.wants/</filename> directory of a unit file
+                is with the <command>enable</command> command of the
+                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                tool which reads information from the [Install]
+                section of unit files (see below). A similar
+                functionality exists for <varname>Requires=</varname>
+                type dependencies as well, the directory suffix is
+                <filename>.requires/</filename> in this case.</para>
+
+                <para>Along with a unit file
+                <filename>foo.service</filename> a directory
+                <filename>foo.service.d/</filename> may exist. All
+                files with the suffix <filename>.conf</filename> from
+                this directory will be parsed after the file itself is
+                parsed. This is useful to alter or add configuration
+                settings to a unit, without having to modify their
+                unit files. Make sure that the file that is included
+                has the appropriate section headers before any
+                directive.</para>
+
+                <para>If a line starts with <option>.include</option>
+                followed by a file name, the specified file will be
+                parsed at this point. Make sure that the file that is
+                included has the appropriate section headers before
+                any directives.</para>
+
+                <para>Note that while systemd offers a flexible
+                dependency system between units it is recommended to
+                use this functionality only sparingly and instead rely
+                on techniques such as bus-based or socket-based
+                activation which make dependencies implicit, resulting
+                in a both simpler and more flexible system.</para>
+
+                <para>Some unit names reflect paths existing in the
+                file system name space. Example: a device unit
+                <filename>dev-sda.device</filename> refers to a device
+                with the device node <filename>/dev/sda</filename> in
+                the file system namespace. If this applies a special
+                way to escape the path name is used, so that the
+                result is usable as part of a file name. Basically,
+                given a path, "/" is replaced by "-", and all
+                unprintable characters and the "-" are replaced by
+                C-style "\x20" escapes. The root directory "/" is
+                encoded as single dash, while otherwise the initial
+                and ending "/" is removed from all paths during
+                transformation. This escaping is reversible.</para>
+
+                <para>Optionally, units may be instantiated from a
+                template file at runtime. This allows creation of
+                multiple units from a single configuration file. If
+                systemd looks for a unit configuration file it will
+                first search for the literal unit name in the
+                filesystem. If that yields no success and the unit
+                name contains an @ character, systemd will look for a
+                unit template that shares the same name but with the
+                instance string (i.e. the part between the @ character
+                and the suffix) removed. Example: if a service
+                <filename>getty at tty3.service</filename> is requested
+                and no file by that name is found, systemd will look
+                for <filename>getty at .service</filename> and
+                instantiate a service from that configuration file if
+                it is found.</para>
+
+                <para>To refer to the instance string from
+                within the configuration file you may use the special
+                <literal>%i</literal> specifier in many of the
+                configuration options. See below for details.</para>
+
+                <para>If a unit file is empty (i.e. has the file size
+                0) or is symlinked to <filename>/dev/null</filename>
+                its configuration will not be loaded and it appears
+                with a load state of <literal>masked</literal>, and
+                cannot be activated. Use this as an effective way to
+                fully disable a unit, making it impossible to start it
+                even manually.</para>
+
+                <para>The unit file format is covered by the
+                <ulink
+                url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface
+                Stability Promise</ulink>.</para>
+
+        </refsect1>
+
+        <refsect1>
+                <title>Options</title>
+
+                <para>Unit file may include a [Unit] section, which
+                carries generic information about the unit that is not
+                dependent on the type of unit:</para>
+
+                <variablelist class='unit-directives'>
+
+                        <varlistentry>
+                                <term><varname>Description=</varname></term>
+                                <listitem><para>A free-form string
+                                describing the unit. This is intended
+                                for use in UIs to show descriptive
+                                information along with the unit
+                                name.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Documentation=</varname></term>
+                                <listitem><para>A space separated list
+                                of URIs referencing documentation for
+                                this unit or its
+                                configuration. Accepted are only URIs
+                                of the types
+                                <literal>http://</literal>,
+                                <literal>https://</literal>,
+                                <literal>file:</literal>,
+                                <literal>info:</literal>,
+                                <literal>man:</literal>. For more
+                                information about the syntax of these
+                                URIs see
+                                <citerefentry><refentrytitle>uri</refentrytitle><manvolnum>7</manvolnum></citerefentry>. The
+                                URIs should be listed in order of
+                                relevance, starting with the most
+                                relevant. It is a good idea to first
+                                reference documentation that explains
+                                what the unit's purpose is, followed
+                                by how it is configured, followed by
+                                any other related documentation. This
+                                option may be specified more than once
+                                in which case the specified list of
+                                URIs is merged. If the empty string is
+                                assigned to this option the list is
+                                reset and all prior assignments will
+                                have no effect.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Requires=</varname></term>
+
+                                <listitem><para>Configures requirement
+                                dependencies on other units. If this
+                                unit gets activated, the units listed
+                                here will be activated as well. If one
+                                of the other units gets deactivated or
+                                its activation fails, this unit will
+                                be deactivated. This option may be
+                                specified more than once, in which
+                                case requirement dependencies for all
+                                listed names are created. Note that
+                                requirement dependencies do not
+                                influence the order in which services
+                                are started or stopped. This has to be
+                                configured independently with the
+                                <varname>After=</varname> or
+                                <varname>Before=</varname> options. If
+                                a unit
+                                <filename>foo.service</filename>
+                                requires a unit
+                                <filename>bar.service</filename> as
+                                configured with
+                                <varname>Requires=</varname> and no
+                                ordering is configured with
+                                <varname>After=</varname> or
+                                <varname>Before=</varname>, then both
+                                units will be started simultaneously
+                                and without any delay between them if
+                                <filename>foo.service</filename> is
+                                activated. Often it is a better choice
+                                to use <varname>Wants=</varname>
+                                instead of
+                                <varname>Requires=</varname> in order
+                                to achieve a system that is more
+                                robust when dealing with failing
+                                services.</para>
+
+                                <para>Note that dependencies of this
+                                type may also be configured outside of
+                                the unit configuration file by
+                                adding a symlink to a
+                                <filename>.requires/</filename> directory
+                                accompanying the unit file. For
+                                details see above.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>RequiresOverridable=</varname></term>
+
+                                <listitem><para>Similar to
+                                <varname>Requires=</varname>.
+                                Dependencies listed in
+                                <varname>RequiresOverridable=</varname>
+                                which cannot be fulfilled or fail to
+                                start are ignored if the startup was
+                                explicitly requested by the user. If
+                                the start-up was pulled in indirectly
+                                by some dependency or automatic
+                                start-up of units that is not
+                                requested by the user this dependency
+                                must be fulfilled and otherwise the
+                                transaction fails. Hence, this option
+                                may be used to configure dependencies
+                                that are normally honored unless the
+                                user explicitly starts up the unit, in
+                                which case whether they failed or not
+                                is irrelevant.</para></listitem>
+
+                        </varlistentry>
+                        <varlistentry>
+                                <term><varname>Requisite=</varname></term>
+                                <term><varname>RequisiteOverridable=</varname></term>
+
+                                <listitem><para>Similar to
+                                <varname>Requires=</varname>
+                                and <varname>RequiresOverridable=</varname>, respectively. However,
+                                if a unit listed here is not started
+                                already it will not be started and the
+                                transaction fails
+                                immediately.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Wants=</varname></term>
+
+                                <listitem><para>A weaker version of
+                                <varname>Requires=</varname>. A unit
+                                listed in this option will be started
+                                if the configuring unit is. However,
+                                if the listed unit fails to start up
+                                or cannot be added to the transaction
+                                this has no impact on the validity of
+                                the transaction as a whole. This is
+                                the recommended way to hook start-up
+                                of one unit to the start-up of another
+                                unit.</para>
+
+                                <para>Note that dependencies of this
+                                type may also be configured outside of
+                                the unit configuration file by
+                                adding a symlink to a
+                                <filename>.wants/</filename> directory
+                                accompanying the unit file. For
+                                details see above.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>BindsTo=</varname></term>
+
+                                <listitem><para>Configures requirement
+                                dependencies, very similar in style to
+                                <varname>Requires=</varname>, however
+                                in addition to this behavior it also
+                                declares that this unit is stopped
+                                when any of the units listed suddenly
+                                disappears. Units can suddenly,
+                                unexpectedly disappear if a service
+                                terminates on its own choice, a device
+                                is unplugged or a mount point
+                                unmounted without involvement of
+                                systemd.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>PartOf=</varname></term>
+
+                                <listitem><para>Configures dependencies
+                                similar to <varname>Requires=</varname>,
+                                but limited to stopping and restarting
+                                of units. When systemd stops or restarts
+                                the units listed here, the action is
+                                propagated to this unit.
+                                Note that this is a one way dependency -
+                                changes to this unit do not affect the
+                                listed units.
+                                </para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Conflicts=</varname></term>
+
+                                <listitem><para>Configures negative
+                                requirement dependencies. If a unit
+                                has a
+                                <varname>Conflicts=</varname> setting
+                                on another unit, starting the former
+                                will stop the latter and vice
+                                versa. Note that this setting is
+                                independent of and orthogonal to the
+                                <varname>After=</varname> and
+                                <varname>Before=</varname> ordering
+                                dependencies.</para>
+
+                                <para>If a unit A that conflicts with
+                                a unit B is scheduled to be started at
+                                the same time as B, the transaction
+                                will either fail (in case both are
+                                required part of the transaction) or
+                                be modified to be fixed (in case one
+                                or both jobs are not a required part
+                                of the transaction). In the latter
+                                case the job that is not the required
+                                will be removed, or in case both are
+                                not required the unit that conflicts
+                                will be started and the unit that is
+                                conflicted is
+                                stopped.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Before=</varname></term>
+                                <term><varname>After=</varname></term>
+
+                                <listitem><para>Configures ordering
+                                dependencies between units. If a unit
+                                <filename>foo.service</filename>
+                                contains a setting
+                                <option>Before=bar.service</option>
+                                and both units are being started,
+                                <filename>bar.service</filename>'s
+                                start-up is delayed until
+                                <filename>foo.service</filename> is
+                                started up. Note that this setting is
+                                independent of and orthogonal to the
+                                requirement dependencies as configured
+                                by <varname>Requires=</varname>. It is
+                                a common pattern to include a unit
+                                name in both the
+                                <varname>After=</varname> and
+                                <varname>Requires=</varname> option in
+                                which case the unit listed will be
+                                started before the unit that is
+                                configured with these options. This
+                                option may be specified more than
+                                once, in which case ordering
+                                dependencies for all listed names are
+                                created. <varname>After=</varname> is
+                                the inverse of
+                                <varname>Before=</varname>, i.e. while
+                                <varname>After=</varname> ensures that
+                                the configured unit is started after
+                                the listed unit finished starting up,
+                                <varname>Before=</varname> ensures the
+                                opposite, i.e.  that the configured
+                                unit is fully started up before the
+                                listed unit is started. Note that when
+                                two units with an ordering dependency
+                                between them are shut down, the
+                                inverse of the start-up order is
+                                applied. i.e. if a unit is configured
+                                with <varname>After=</varname> on
+                                another unit, the former is stopped
+                                before the latter if both are shut
+                                down. If one unit with an ordering
+                                dependency on another unit is shut
+                                down while the latter is started up,
+                                the shut down is ordered before the
+                                start-up regardless whether the
+                                ordering dependency is actually of
+                                type <varname>After=</varname> or
+                                <varname>Before=</varname>. If two
+                                units have no ordering dependencies
+                                between them they are shut down
+                                or started up simultaneously, and
+                                no ordering takes
+                                place. </para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>OnFailure=</varname></term>
+
+                                <listitem><para>Lists one or more
+                                units that are activated when this
+                                unit enters the
+                                '<literal>failed</literal>'
+                                state.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>PropagatesReloadTo=</varname></term>
+                                <term><varname>ReloadPropagatedFrom=</varname></term>
+
+                                <listitem><para>Lists one or more
+                                units where reload requests on the
+                                unit will be propagated to/on the
+                                other unit will be propagated
+                                from. Issuing a reload request on a
+                                unit will automatically also enqueue a
+                                reload request on all units that the
+                                reload request shall be propagated to
+                                via these two
+                                settings.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>RequiresMountsFor=</varname></term>
+
+                                <listitem><para>Takes a space
+                                separated list of absolute paths. Automatically
+                                adds dependencies of type
+                                <varname>Requires=</varname> and
+                                <varname>After=</varname> for all
+                                mount units required to access the
+                                specified path.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>OnFailureIsolate=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option> the
+                                unit listed in
+                                <varname>OnFailure=</varname> will be
+                                enqueued in isolation mode, i.e. all
+                                units that are not its dependency will
+                                be stopped. If this is set only a
+                                single unit may be listed in
+                                <varname>OnFailure=</varname>. Defaults
+                                to
+                                <option>false</option>.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>IgnoreOnIsolate=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                this unit will not be stopped when
+                                isolating another unit. Defaults to
+                                <option>false</option>.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>IgnoreOnSnapshot=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                this unit will not be included in
+                                snapshots. Defaults to
+                                <option>true</option> for device and
+                                snapshot units, <option>false</option>
+                                for the others.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>StopWhenUnneeded=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                this unit will be stopped when it is
+                                no longer used. Note that in order to
+                                minimize the work to be executed,
+                                systemd will not stop units by default
+                                unless they are conflicting with other
+                                units, or the user explicitly
+                                requested their shut down. If this
+                                option is set, a unit will be
+                                automatically cleaned up if no other
+                                active unit requires it. Defaults to
+                                <option>false</option>.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>RefuseManualStart=</varname></term>
+                                <term><varname>RefuseManualStop=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                this unit can only be activated
+                                or deactivated indirectly. In
+                                this case explicit start-up
+                                or termination requested by the
+                                user is denied, however if it is
+                                started or stopped as a
+                                dependency of another unit, start-up
+                                or termination will succeed. This
+                                is mostly a safety feature to ensure
+                                that the user does not accidentally
+                                activate units that are not intended
+                                to be activated explicitly, and not
+                                accidentally deactivate units that are
+                                not intended to be deactivated.
+                                These options default to
+                                <option>false</option>.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>AllowIsolate=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                this unit may be used with the
+                                <command>systemctl isolate</command>
+                                command. Otherwise this will be
+                                refused. It probably is a good idea to
+                                leave this disabled except for target
+                                units that shall be used similar to
+                                runlevels in SysV init systems, just
+                                as a precaution to avoid unusable
+                                system states. This option defaults to
+                                <option>false</option>.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>DefaultDependencies=</varname></term>
+
+                                <listitem><para>Takes a boolean
+                                argument. If <option>true</option>
+                                (the default), a few default
+                                dependencies will implicitly be
+                                created for the unit. The actual
+                                dependencies created depend on the
+                                unit type. For example, for service
+                                units, these dependencies ensure that
+                                the service is started only after
+                                basic system initialization is
+                                completed and is properly terminated on
+                                system shutdown. See the respective
+                                man pages for details. Generally, only
+                                services involved with early boot or
+                                late shutdown should set this option
+                                to <option>false</option>. It is
+                                highly recommended to leave this
+                                option enabled for the majority of
+                                common units. If set to
+                                <option>false</option> this option
+                                does not disable all implicit
+                                dependencies, just non-essential
+                                ones.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>JobTimeoutSec=</varname></term>
+
+                                <listitem><para>When clients are
+                                waiting for a job of this unit to
+                                complete, time out after the specified
+                                time. If this time limit is reached
+                                the job will be cancelled, the unit
+                                however will not change state or even
+                                enter the '<literal>failed</literal>'
+                                mode. This value defaults to 0 (job
+                                timeouts disabled), except for device
+                                units. NB: this timeout is independent
+                                from any unit-specific timeout (for
+                                example, the timeout set with
+                                <varname>Timeout=</varname> in service
+                                units) as the job timeout has no
+                                effect on the unit itself, only on the
+                                job that might be pending for it. Or
+                                in other words: unit-specific timeouts
+                                are useful to abort unit state
+                                changes, and revert them. The job
+                                timeout set with this option however
+                                is useful to abort only the job
+                                waiting for the unit state to
+                                change.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>ConditionPathExists=</varname></term>
+                                <term><varname>ConditionPathExistsGlob=</varname></term>
+                                <term><varname>ConditionPathIsDirectory=</varname></term>
+                                <term><varname>ConditionPathIsSymbolicLink=</varname></term>
+                                <term><varname>ConditionPathIsMountPoint=</varname></term>
+                                <term><varname>ConditionPathIsReadWrite=</varname></term>
+                                <term><varname>ConditionDirectoryNotEmpty=</varname></term>
+                                <term><varname>ConditionFileNotEmpty=</varname></term>
+                                <term><varname>ConditionFileIsExecutable=</varname></term>
+                                <term><varname>ConditionKernelCommandLine=</varname></term>
+                                <term><varname>ConditionVirtualization=</varname></term>
+                                <term><varname>ConditionSecurity=</varname></term>
+                                <term><varname>ConditionCapability=</varname></term>
+                                <term><varname>ConditionHost=</varname></term>
+                                <term><varname>ConditionACPower=</varname></term>
+                                <term><varname>ConditionNull=</varname></term>
+
+                                <listitem><para>Before starting a unit
+                                verify that the specified condition is
+                                true. If it is not true the starting
+                                of the unit will be skipped, however
+                                all ordering dependencies of it are
+                                still respected. A failing condition
+                                will not result in the unit being
+                                moved into a failure state. The
+                                condition is checked at the time the
+                                queued start job is to be
+                                executed.</para>
+
+                                <para>With
+                                <varname>ConditionPathExists=</varname>
+                                a file existence condition is
+                                checked before a unit is started. If
+                                the specified absolute path name does
+                                not exist the condition will
+                                fail. If the absolute path name passed
+                                to
+                                <varname>ConditionPathExists=</varname>
+                                is prefixed with an exclamation mark
+                                ('!'), the test is negated, and the unit
+                                is only started if the path does not
+                                exist.</para>
+
+                                <para><varname>ConditionPathExistsGlob=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>,
+                                but checks for the existence of at
+                                least one file or directory matching
+                                the specified globbing pattern.</para>
+
+                                <para><varname>ConditionPathIsDirectory=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists and is a
+                                directory.</para>
+
+                                <para><varname>ConditionPathIsSymbolicLink=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists and is a symbolic
+                                link.</para>
+
+                                <para><varname>ConditionPathIsMountPoint=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists and is a mount
+                                point.</para>
+
+                                <para><varname>ConditionPathIsReadWrite=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether the underlying
+                                file system is readable and writable
+                                (i.e. not mounted
+                                read-only).</para>
+
+                                <para><varname>ConditionDirectoryNotEmpty=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists and is a non-empty
+                                directory.</para>
+
+                                <para><varname>ConditionFileNotEmpty=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists and refers to a regular file
+                                with a non-zero size.</para>
+
+                                <para><varname>ConditionFileIsExecutable=</varname>
+                                is similar to
+                                <varname>ConditionPathExists=</varname>
+                                but verifies whether a certain path
+                                exists, is a regular file and marked
+                                executable.</para>
+
+                                <para>Similar,
+                                <varname>ConditionKernelCommandLine=</varname>
+                                may be used to check whether a
+                                specific kernel command line option is
+                                set (or if prefixed with the
+                                exclamation mark unset). The argument
+                                must either be a single word, or an
+                                assignment (i.e. two words, separated
+                                '='). In the former
+                                case the kernel command line is
+                                searched for the word appearing as is,
+                                or as left hand side of an
+                                assignment. In the latter case the
+                                exact assignment is looked for with
+                                right and left hand side
+                                matching.</para>
+
+                                <para><varname>ConditionVirtualization=</varname>
+                                may be used to check whether the
+                                system is executed in a virtualized
+                                environment and optionally test
+                                whether it is a specific
+                                implementation. Takes either boolean
+                                value to check if being executed in
+                                any virtualized environment, or one of
+                                <varname>vm</varname> and
+                                <varname>container</varname> to test
+                                against a generic type of
+                                virtualization solution, or one of
+                                <varname>qemu</varname>,
+                                <varname>kvm</varname>,
+                                <varname>vmware</varname>,
+                                <varname>microsoft</varname>,
+                                <varname>oracle</varname>,
+                                <varname>xen</varname>,
+                                <varname>bochs</varname>,
+                                <varname>chroot</varname>,
+                                <varname>openvz</varname>,
+                                <varname>lxc</varname>,
+                                <varname>lxc-libvirt</varname>,
+                                <varname>systemd-nspawn</varname> to
+                                test against a specific
+                                implementation. If multiple
+                                virtualization technologies are nested
+                                only the innermost is considered. The
+                                test may be negated by prepending an
+                                exclamation mark.</para>
+
+                                <para><varname>ConditionSecurity=</varname>
+                                may be used to check whether the given
+                                security module is enabled on the
+                                system.  Currently the only recognized
+                                value is <varname>selinux</varname>.
+                                The test may be negated by prepending
+                                an exclamation
+                                mark.</para>
+
+                                <para><varname>ConditionCapability=</varname>
+                                may be used to check whether the given
+                                capability exists in the capability
+                                bounding set of the service manager
+                                (i.e. this does not check whether
+                                capability is actually available in
+                                the permitted or effective sets, see
+                                <citerefentry><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+                                for details). Pass a capability name
+                                such as <literal>CAP_MKNOD</literal>,
+                                possibly prefixed with an exclamation
+                                mark to negate the check.</para>
+
+                                <para><varname>ConditionHost=</varname>
+                                may be used to match against the
+                                host name or machine ID of the
+                                host. This either takes a host name
+                                string (optionally with shell style
+                                globs) which is tested against the
+                                locally set host name as returned by
+                                <citerefentry><refentrytitle>gethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
+                                or a machine ID formatted as string
+                                (see
+                                <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+                                The test may be negated by prepending
+                                an exclamation mark.</para>
+
+                                <para><varname>ConditionACPower=</varname>
+                                may be used to check whether the
+                                system has AC power, or is exclusively
+                                battery powered at the time of
+                                activation of the unit. This takes a
+                                boolean argument. If set to
+                                <varname>true</varname> the condition
+                                will hold only if at least one AC
+                                connector of the system is connected
+                                to a power source, or if no AC
+                                connectors are known. Conversely, if
+                                set to <varname>false</varname> the
+                                condition will hold only if there is
+                                at least one AC connector known and
+                                all AC connectors are disconnected
+                                from a power source.</para>
+
+                                <para>Finally,
+                                <varname>ConditionNull=</varname> may
+                                be used to add a constant condition
+                                check value to the unit. It takes a
+                                boolean argument. If set to
+                                <varname>false</varname> the condition
+                                will always fail, otherwise
+                                succeed.</para>
+
+                                <para>If multiple conditions are
+                                specified the unit will be executed if
+                                all of them apply (i.e. a logical AND
+                                is applied). Condition checks can be
+                                prefixed with a pipe symbol (|) in
+                                which case a condition becomes a
+                                triggering condition. If at least one
+                                triggering condition is defined for a
+                                unit then the unit will be executed if
+                                at least one of the triggering
+                                conditions apply and all of the
+                                non-triggering conditions. If you
+                                prefix an argument with the pipe
+                                symbol and an exclamation mark the
+                                pipe symbol must be passed first, the
+                                exclamation second. Except for
+                                <varname>ConditionPathIsSymbolicLink=</varname>,
+                                all path checks follow symlinks. If
+                                any of these options is assigned the
+                                empty string the list of conditions is
+                                reset completely, all previous
+                                condition settings (of any kind) will
+                                have no effect.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>SourcePath=</varname></term>
+                                <listitem><para>A path to a
+                                configuration file this unit has been
+                                generated from. This is primarily
+                                useful for implementation of generator
+                                tools that convert configuration from
+                                an external configuration file format
+                                into native unit files. Thus
+                                functionality should not be used in
+                                normal units.</para></listitem>
+                        </varlistentry>
+                </variablelist>
+
+                <para>Unit file may include a [Install] section, which
+                carries installation information for the unit. This
+                section is not interpreted by
+                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                during runtime. It is used exclusively by the
+                <command>enable</command> and
+                <command>disable</command> commands of the
+                <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                tool during installation of a unit:</para>
+
+                <variablelist class='unit-directives'>
+                        <varlistentry>
+                                <term><varname>Alias=</varname></term>
+
+                                <listitem><para>Additional names this
+                                unit shall be installed under. The
+                                names listed here must have the same
+                                suffix (i.e. type) as the unit file
+                                name. This option may be specified
+                                more than once, in which case all
+                                listed names are used. At installation
+                                time,
+                                <command>systemctl enable</command>
+                                will create symlinks from these names
+                                to the unit file name.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>WantedBy=</varname></term>
+                                <term><varname>RequiredBy=</varname></term>
+
+                                <listitem><para>Installs a symlink in
+                                the <filename>.wants/</filename>
+                                or <filename>.requires/</filename>
+                                subdirectory for a unit, respectively. This has the
+                                effect that when the listed unit name
+                                is activated the unit listing it is
+                                activated
+                                too. <command>WantedBy=foo.service</command>
+                                in a service
+                                <filename>bar.service</filename> is
+                                mostly equivalent to
+                                <command>Alias=foo.service.wants/bar.service</command>
+                                in the same file.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
+                                <term><varname>Also=</varname></term>
+
+                                <listitem><para>Additional units to
+                                install when this unit is
+                                installed. If the user requests
+                                installation of a unit with this
+                                option configured,
+                                <command>systemctl enable</command>
+                                will automatically install units
+                                listed in this option as
+                                well.</para></listitem>
+                        </varlistentry>
+                </variablelist>
+
+                <para>The following specifiers are interpreted in the
+                Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b.
+                For their meaning see the next section.
+                </para>
+        </refsect1>
+
+        <refsect1>
+                <title>Specifiers</title>
+
+                <para>Many settings resolve specifiers which may be
+                used to write generic unit files referring to runtime
+                or unit parameters that are replaced when the unit
+                files are loaded. The following specifiers are
+                understood:</para>
+
+                <table>
+                  <title>Specifiers available in unit files</title>
+                  <tgroup cols='3' align='left' colsep='1' rowsep='1'>
+                    <colspec colname="spec" />
+                    <colspec colname="mean" />
+                    <colspec colname="detail" />
+                    <thead>
+                      <row>
+                        <entry>Specifier</entry>
+                        <entry>Meaning</entry>
+                        <entry>Details</entry>
+                      </row>
+                    </thead>
+                    <tbody>
+                      <row>
+                        <entry><literal>%n</literal></entry>
+                        <entry>Full unit name</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%N</literal></entry>
+                        <entry>Unescaped full unit name</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%p</literal></entry>
+                        <entry>Prefix name</entry>
+                        <entry>For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%P</literal></entry>
+                        <entry>Unescaped prefix name</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%i</literal></entry>
+                        <entry>Instance name</entry>
+                        <entry>For instantiated units: this is the string between the @ character and the suffix.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%I</literal></entry>
+                        <entry>Unescaped instance name</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%f</literal></entry>
+                        <entry>Unescaped file name</entry>
+                        <entry>This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%c</literal></entry>
+                        <entry>Control group path of the unit</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%r</literal></entry>
+                        <entry>Root control group path of systemd</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%R</literal></entry>
+                        <entry>Parent directory of the root control group path of systemd</entry>
+                        <entry></entry>
+                      </row>
+                      <row>
+                        <entry><literal>%t</literal></entry>
+                        <entry>Runtime socket dir</entry>
+                        <entry>This is either <filename>/run</filename> (for the system manager) or <literal>$XDG_RUNTIME_DIR</literal> (for user managers).</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%u</literal></entry>
+                        <entry>User name</entry>
+                        <entry>This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%U</literal></entry>
+                        <entry>User UID</entry>
+                        <entry>This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%h</literal></entry>
+                        <entry>User home directory</entry>
+                        <entry>This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%s</literal></entry>
+                        <entry>User shell</entry>
+                        <entry>This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%m</literal></entry>
+                        <entry>Machine ID</entry>
+                        <entry>The machine ID of the running system, formatted as string. See <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%b</literal></entry>
+                        <entry>Boot ID</entry>
+                        <entry>The boot ID of the running system, formatted as string. See <citerefentry><refentrytitle>random</refentrytitle><manvolnum>4</manvolnum></citerefentry> for more information.</entry>
+                      </row>
+                      <row>
+                        <entry><literal>%H</literal></entry>
+                        <entry>Host name</entry>
+                        <entry>The host name of the running system.</entry>
+                      </row>
+                    </tbody>
+                  </tgroup>
+                </table>
+        </refsect1>
+
+        <refsect1>
+                <title>See Also</title>
+                <para>
+                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+                </para>
+        </refsect1>
+
+</refentry>

commit 7ad94c716d6403233d04c4d37cb14df958c9b65d
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Feb 2 10:36:11 2013 -0500

    systemd: raise level of message about lookup paths
    
    This can be pretty important for the user, and is not trivial
    to figure out in all cases.
    
    Also show failing path in error messages.

diff --git a/src/core/manager.c b/src/core/manager.c
index 25aa1be..c8d7d70 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -2263,7 +2263,8 @@ static int create_generator_dir(Manager *m, char **generator, const char *name)
 
                 r = mkdir_p_label(p, 0755);
                 if (r < 0) {
-                        log_error("Failed to create generator directory: %s", strerror(-r));
+                        log_error("Failed to create generator directory %s: %s",
+                                  p, strerror(-r));
                         free(p);
                         return r;
                 }
@@ -2274,7 +2275,8 @@ static int create_generator_dir(Manager *m, char **generator, const char *name)
 
                 if (!mkdtemp(p)) {
                         free(p);
-                        log_error("Failed to create generator directory: %m");
+                        log_error("Failed to create generator directory %s: %m",
+                                  p);
                         return -errno;
                 }
         }
@@ -2313,7 +2315,8 @@ void manager_run_generators(Manager *m) {
                 if (errno == ENOENT)
                         return;
 
-                log_error("Failed to enumerate generator directory: %m");
+                log_error("Failed to enumerate generator directory %s: %m",
+                          generator_path);
                 return;
         }
 
diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
index 8ee9ddc..fa4995c 100644
--- a/src/shared/path-lookup.c
+++ b/src/shared/path-lookup.c
@@ -239,7 +239,6 @@ int lookup_paths_init(
                 const char *generator_late) {
 
         const char *e;
-        char *t;
 
         assert(p);
 
@@ -318,14 +317,12 @@ int lookup_paths_init(
         strv_uniq(p->unit_path);
 
         if (!strv_isempty(p->unit_path)) {
-
-                t = strv_join(p->unit_path, "\n\t");
+                char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t");
                 if (!t)
                         return -ENOMEM;
-                log_debug("Looking for unit files in:\n\t%s", t);
-                free(t);
+                log_info("Looking for unit files in (higher priority first):\n\t%s", t);
         } else {
-                log_debug("Ignoring unit files.");
+                log_info("Ignoring unit files.");
                 strv_free(p->unit_path);
                 p->unit_path = NULL;
         }
@@ -380,33 +377,30 @@ int lookup_paths_init(
                 strv_uniq(p->sysvrcnd_path);
 
                 if (!strv_isempty(p->sysvinit_path)) {
-
-                        t = strv_join(p->sysvinit_path, "\n\t");
+                        char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t");
                         if (!t)
                                 return -ENOMEM;
-                        log_debug("Looking for SysV init scripts in:\n\t%s", t);
-                        free(t);
+                        log_info("Looking for SysV init scripts in:\n\t%s", t);
                 } else {
-                        log_debug("Ignoring SysV init scripts.");
+                        log_info("Ignoring SysV init scripts.");
                         strv_free(p->sysvinit_path);
                         p->sysvinit_path = NULL;
                 }
 
                 if (!strv_isempty(p->sysvrcnd_path)) {
-
-                        t = strv_join(p->sysvrcnd_path, "\n\t");
+                        char _cleanup_free_ *t =
+                                strv_join(p->sysvrcnd_path, "\n\t");
                         if (!t)
                                 return -ENOMEM;
 
                         log_debug("Looking for SysV rcN.d links in:\n\t%s", t);
-                        free(t);
                 } else {
                         log_debug("Ignoring SysV rcN.d links.");
                         strv_free(p->sysvrcnd_path);
                         p->sysvrcnd_path = NULL;
                 }
 #else
-                log_debug("Disabled SysV init scripts and rcN.d links support");
+                log_info("SysV init scripts and rcN.d links support disabled");
 #endif
         }
 

commit 0783951b931cb2743a43cbfdc37babd76fedd2fe
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Feb 2 16:12:33 2013 -0500

    shared: remove now unused function

diff --git a/src/shared/path-util.c b/src/shared/path-util.c
index 4857971..ae12c05 100644
--- a/src/shared/path-util.c
+++ b/src/shared/path-util.c
@@ -214,26 +214,6 @@ char **path_strv_canonicalize(char **l) {
         return l;
 }
 
-char **path_strv_remove_empty(char **l) {
-        char **f, **t;
-
-        if (!l)
-                return NULL;
-
-        for (f = t = l; *f; f++) {
-
-                if (dir_is_empty(*f) > 0) {
-                        free(*f);
-                        continue;
-                }
-
-                *(t++) = *f;
-        }
-
-        *t = NULL;
-        return l;
-}
-
 char *path_kill_slashes(char *path) {
         char *f, *t;
         bool slash = false;
diff --git a/src/shared/path-util.h b/src/shared/path-util.h
index e81821a..e37ab93 100644
--- a/src/shared/path-util.h
+++ b/src/shared/path-util.h
@@ -37,7 +37,6 @@ bool path_equal(const char *a, const char *b);
 
 char **path_strv_make_absolute_cwd(char **l);
 char **path_strv_canonicalize(char **l);
-char **path_strv_remove_empty(char **l);
 
 int path_is_mount_point(const char *path, bool allow_symlink);
 int path_is_read_only_fs(const char *path);

commit 874310b7b68c4c0d36ff07397db30a959bb7dae5
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Wed Feb 6 22:49:19 2013 -0500

    systemd: do not remove empty paths from unit lookup path
    
    The ability to start a new unit with 'systemctl start ...' should not
    depend on whether there are other units in the directory. Previously,
    an additional 'systemctl daemon-reload' would be necessary to tell
    systemd to update the list of unit lookup paths.

diff --git a/src/core/manager.c b/src/core/manager.c
index b538a9a..25aa1be 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -621,14 +621,15 @@ int manager_coldplug(Manager *m) {
 
 static void manager_build_unit_path_cache(Manager *m) {
         char **i;
-        DIR *d = NULL;
+        DIR _cleanup_free_ *d = NULL;
         int r;
 
         assert(m);
 
         set_free_free(m->unit_path_cache);
 
-        if (!(m->unit_path_cache = set_new(string_hash_func, string_compare_func))) {
+        m->unit_path_cache = set_new(string_hash_func, string_compare_func);
+        if (!m->unit_path_cache) {
                 log_error("Failed to allocate unit path cache.");
                 return;
         }
@@ -641,7 +642,8 @@ static void manager_build_unit_path_cache(Manager *m) {
 
                 d = opendir(*i);
                 if (!d) {
-                        log_error("Failed to open directory: %m");
+                        if (errno != ENOENT)
+                                log_error("Failed to open directory %s: %m", *i);
                         continue;
                 }
 
@@ -657,7 +659,8 @@ static void manager_build_unit_path_cache(Manager *m) {
                                 goto fail;
                         }
 
-                        if ((r = set_put(m->unit_path_cache, p)) < 0) {
+                        r = set_put(m->unit_path_cache, p);
+                        if (r < 0) {
                                 free(p);
                                 goto fail;
                         }
@@ -674,9 +677,6 @@ fail:
 
         set_free_free(m->unit_path_cache);
         m->unit_path_cache = NULL;
-
-        if (d)
-                closedir(d);
 }
 
 int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
index 6e5529e..8ee9ddc 100644
--- a/src/shared/path-lookup.c
+++ b/src/shared/path-lookup.c
@@ -316,7 +316,6 @@ int lookup_paths_init(
                 return -ENOMEM;
 
         strv_uniq(p->unit_path);
-        path_strv_remove_empty(p->unit_path);
 
         if (!strv_isempty(p->unit_path)) {
 
@@ -379,8 +378,6 @@ int lookup_paths_init(
 
                 strv_uniq(p->sysvinit_path);
                 strv_uniq(p->sysvrcnd_path);
-                path_strv_remove_empty(p->sysvinit_path);
-                path_strv_remove_empty(p->sysvrcnd_path);
 
                 if (!strv_isempty(p->sysvinit_path)) {
 
diff --git a/src/shared/path-util.c b/src/shared/path-util.c
index dd12d3d..4857971 100644
--- a/src/shared/path-util.c
+++ b/src/shared/path-util.c
@@ -190,13 +190,17 @@ char **path_strv_canonicalize(char **l) {
 
                 errno = 0;
                 u = canonicalize_file_name(t);
-                free(t);
 
                 if (!u) {
-                        if (errno == ENOMEM || !errno)
-                                enomem = true;
-
-                        continue;
+                        if (errno == ENOENT)
+                                u = t;
+                        else {
+                                free(t);
+                                if (errno == ENOMEM || !errno)
+                                        enomem = true;
+
+                                continue;
+                        }
                 }
 
                 l[k++] = u;

commit 56ba3c78ae35065064c4289a0c8e22a81256af20
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Feb 2 22:47:47 2013 -0500

    build-sys: create Makefile-man.am automatically
    
    man rules were repeating the same information in too many places,
    which was error prone. Those rules can be easily generated from .xml
    files. For efficiency and because python is not a required dependency,
    Makefile-man.am is only regenerated when requested with
    
      make update-man-list
    
    If no metadata in man/*.xml changed, this file should not change. So
    only when a new man page or a new alias is added, this file should
    show up in 'git diff'. The change should then be committed.
    
    If the support for building from git without python was dropped, we
    could drop Makefile-man.am from version control. This would also
    increase the partial build time (since more stuff would be rebuild
    whenever sources in man/*.xml would be modified), so it would probably
    wouldn't be worth it.

diff --git a/Makefile-man.am b/Makefile-man.am
index 76b794a..d54d67c 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -1,3 +1,6 @@
+# Do not edit. Generated by make-man-rules.py.
+# Regenerate with 'make man-list-update'.
+
 MANPAGES += \
 	man/bootup.7 \
 	man/daemon.7 \
@@ -292,6 +295,9 @@ if ENABLE_BOOTCHART
 MANPAGES += \
 	man/bootchart.conf.5 \
 	man/systemd-bootchart.1
+MANPAGES_ALIAS += \
+	#
+
 endif
 
 if ENABLE_HOSTNAMED
@@ -396,6 +402,9 @@ endif
 if HAVE_MYHOSTNAME
 MANPAGES += \
 	man/nss-myhostname.8
+MANPAGES_ALIAS += \
+	#
+
 endif
 
 if HAVE_PAM
@@ -464,4 +473,7 @@ if HAVE_PYTHON
 MANPAGES += \
 	man/systemd.directives.7 \
 	man/systemd.index.7
+MANPAGES_ALIAS += \
+	#
+
 endif
diff --git a/Makefile.am b/Makefile.am
index ba55a7e..f73e8a6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -502,6 +502,13 @@ CLEANFILES += \
 
 if HAVE_PYTHON
 NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES))
+
+XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml)
+update-man-list: make-man-rules.py $(XML_GLOB)
+	$(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp
+	$(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am
+	@echo "Makefile-man.am has been regenerated"
+
 man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES)
 	$(AM_V_at)$(MKDIR_P) $(dir $@)
 	$(AM_V_GEN)$(PYTHON) $^ > $@
diff --git a/make-directive-index.py b/make-directive-index.py
index ab40997..b06a54c 100755
--- a/make-directive-index.py
+++ b/make-directive-index.py
@@ -23,7 +23,7 @@ import xml.etree.ElementTree as tree
 import re
 
 TEMPLATE = '''\
-<refentry id="systemd.directives">
+<refentry id="systemd.directives" conditional="HAVE_PYTHON">
 
         <refentryinfo>
                 <title>systemd.directives</title>
diff --git a/make-man-index.py b/make-man-index.py
index 2dbc2da..f829d98 100755
--- a/make-man-index.py
+++ b/make-man-index.py
@@ -24,7 +24,7 @@ import sys
 MDASH = ' — ' if sys.version_info.major >= 3 else ' -- '
 
 TEMPLATE = '''\
-<refentry id="systemd.index">
+<refentry id="systemd.index" conditional="HAVE_PYTHON">
 
   <refentryinfo>
     <title>systemd.index</title>
diff --git a/make-man-rules.py b/make-man-rules.py
new file mode 100644
index 0000000..b88b43a
--- /dev/null
+++ b/make-man-rules.py
@@ -0,0 +1,92 @@
+#  -*- Mode: python; coding: utf-8; indent-tabs-mode: nil -*- */
+#
+#  This file is part of systemd.
+#
+#  Copyright 2013 Zbigniew Jędrzejewski-Szmek
+#
+#  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.
+#
+#  systemd is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public License
+#  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+import xml.etree.ElementTree as tree
+import collections
+import sys
+
+SECTION = '''\
+MANPAGES += \\
+	{manpages}
+MANPAGES_ALIAS += \\
+	{aliases}
+{rules}
+'''
+
+CONDITIONAL = '''\
+if {conditional}
+''' \
++ SECTION + \
+'''\
+endif
+'''
+
+HEADER = '''\
+# Do not edit. Generated by make-man-rules.py.
+# Regenerate with 'make update-man-list'.
+
+'''
+
+def man(page, number):
+    return 'man/{}.{}'.format(page, number)
+
+def add_rules(rules, name):
+    xml = tree.parse(name)
+    # print('parsing {}'.format(name), file=sys.stderr)
+    conditional = xml.getroot().get('conditional') or ''
+    rulegroup = rules[conditional]
+    refmeta = xml.find('./refmeta')
+    title = refmeta.find('./refentrytitle').text
+    number = refmeta.find('./manvolnum').text
+    refnames = xml.findall('./refnamediv/refname')
+    target = man(refnames[0].text, number)
+    if title != refnames[0].text:
+        raise ValueError('refmeta and refnamediv disagree: ' + name)
+    for refname in refnames:
+        assert all(refname not in group
+                   for group in rules.values()), "duplicate page name"
+        alias = man(refname.text, number)
+        rulegroup[alias] = target
+        # print('{} => {} [{}]'.format(alias, target, conditional), file=sys.stderr)
+
+def create_rules(*xml_files):
+    " {conditional => {alias-name => source-name}} "
+    rules = collections.defaultdict(dict)
+    for name in xml_files:
+        add_rules(rules, name)
+    return rules
+
+def mjoin(files):
+    return ' \\\n\t'.join(sorted(files) or '#')
+
+def make_makefile(rules):
+    return HEADER + '\n'.join(
+        (CONDITIONAL if conditional else SECTION).format(
+            manpages=mjoin(set(rulegroup.values())),
+            aliases=mjoin(k for k,v in rulegroup.items() if k != v),
+            rules='\n'.join('{}: {}'.format(k,v)
+                            for k,v in sorted(rulegroup.items())
+                            if k != v),
+            conditional=conditional)
+        for conditional,rulegroup in sorted(rules.items()))
+
+if __name__ == '__main__':
+    rules = create_rules(*sys.argv[1:])
+    print(make_makefile(rules), end='')
diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml
index 07ae0ac..8c5083c 100644
--- a/man/binfmt.d.xml
+++ b/man/binfmt.d.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="binfmt.d">
+<refentry id="binfmt.d" conditional='ENABLE_BINFMT'>
 
         <refentryinfo>
                 <title>binfmt.d</title>
diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml
index d2b0963..419554e 100644
--- a/man/bootchart.conf.xml
+++ b/man/bootchart.conf.xml
@@ -25,7 +25,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="bootchart.conf">
+<refentry id="bootchart.conf" conditional='ENABLE_BOOTCHART'>
         <refentryinfo>
                 <title>bootchart.conf</title>
                 <productname>systemd</productname>
diff --git a/man/crypttab.xml b/man/crypttab.xml
index f976bda..a94163b 100644
--- a/man/crypttab.xml
+++ b/man/crypttab.xml
@@ -25,7 +25,7 @@
   The Red Hat version has been written by Miloslav Trmac <mitr at redhat.com>.
 
 -->
-<refentry id="crypttab">
+<refentry id="crypttab" conditional='HAVE_LIBCRYPTSETUP'>
 
         <refentryinfo>
                 <title>crypttab</title>
diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
index a29d2f5..07d3634 100644
--- a/man/hostnamectl.xml
+++ b/man/hostnamectl.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="hostnamectl">
+<refentry id="hostnamectl" conditional='ENABLE_HOSTNAMED'>
 
         <refentryinfo>
                 <title>hostnamectl</title>
diff --git a/man/localectl.xml b/man/localectl.xml
index 7563eb5..3e5b812 100644
--- a/man/localectl.xml
+++ b/man/localectl.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="localectl">
+<refentry id="localectl" conditional='ENABLE_LOCALED'>
 
         <refentryinfo>
                 <title>localectl</title>
diff --git a/man/loginctl.xml b/man/loginctl.xml
index 90b6f1e..ba0352c 100644
--- a/man/loginctl.xml
+++ b/man/loginctl.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="loginctl">
+<refentry id="loginctl" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>loginctl</title>
diff --git a/man/logind.conf.xml b/man/logind.conf.xml
index b602e2a..d223514 100644
--- a/man/logind.conf.xml
+++ b/man/logind.conf.xml
@@ -22,7 +22,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="logind.conf">
+<refentry id="logind.conf" conditional='HAVE_PAM'>
         <refentryinfo>
                 <title>logind.conf</title>
                 <productname>systemd</productname>
diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml
index bcc4d12..ea4f524 100644
--- a/man/modules-load.d.xml
+++ b/man/modules-load.d.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="modules-load.d">
+<refentry id="modules-load.d" conditional='HAVE_KMOD'>
 
         <refentryinfo>
                 <title>modules-load.d</title>
diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml
index bd3f635..46b7471 100644
--- a/man/nss-myhostname.xml
+++ b/man/nss-myhostname.xml
@@ -22,7 +22,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="nss-myhostname">
+<refentry id="nss-myhostname" conditional='HAVE_MYHOSTNAME'>
 
         <refentryinfo>
                 <title>nss-myhostname</title>
diff --git a/man/sd-login.xml b/man/sd-login.xml
index c02ad0c..6972595 100644
--- a/man/sd-login.xml
+++ b/man/sd-login.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd-login">
+<refentry id="sd-login" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd-login</title>
diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml
index cebaa5d..ee7c936 100644
--- a/man/sd-readahead.xml
+++ b/man/sd-readahead.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd-daemon">
+<refentry id="sd-daemon" conditional='ENABLE_READAHEAD'>
 
         <refentryinfo>
                 <title>sd-readahead</title>
diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
index 17adcef..a300a05 100644
--- a/man/sd_get_seats.xml
+++ b/man/sd_get_seats.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_get_seats">
+<refentry id="sd_get_seats" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_get_seats</title>
diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
index 35cb6b3..2c4d05d 100644
--- a/man/sd_login_monitor_new.xml
+++ b/man/sd_login_monitor_new.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_login_monitor_new">
+<refentry id="sd_login_monitor_new" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_login_monitor_new</title>
diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml
index 9517795..511fcf3 100644
--- a/man/sd_pid_get_session.xml
+++ b/man/sd_pid_get_session.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_pid_get_session">
+<refentry id="sd_pid_get_session" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_pid_get_session</title>
diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml
index a1fc6f1..39e3469 100644
--- a/man/sd_readahead.xml
+++ b/man/sd_readahead.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_notify">
+<refentry id="sd_notify" conditional='ENABLE_READAHEAD'>
 
         <refentryinfo>
                 <title>sd_readahead</title>
diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
index b1d6d20..07e018d 100644
--- a/man/sd_seat_get_active.xml
+++ b/man/sd_seat_get_active.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_seat_get_active">
+<refentry id="sd_seat_get_active" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_seat_get_active</title>
diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml
index 1fa7457..76f6f95 100644
--- a/man/sd_session_is_active.xml
+++ b/man/sd_session_is_active.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_session_is_active">
+<refentry id="sd_session_is_active" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_session_is_active</title>
diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
index b7bc944..cc8fc0f 100644
--- a/man/sd_uid_get_state.xml
+++ b/man/sd_uid_get_state.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="sd_uid_get_state">
+<refentry id="sd_uid_get_state" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>sd_uid_get_state</title>
diff --git a/man/systemd-binfmt.service.xml b/man/systemd-binfmt.service.xml
index 1db735a..748e417 100644
--- a/man/systemd-binfmt.service.xml
+++ b/man/systemd-binfmt.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-binfmt.service">
+<refentry id="systemd-binfmt.service" conditional='ENABLE_BINFMT'>
 
         <refentryinfo>
                 <title>systemd-binfmt.service</title>
diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml
index 0df7c4b..f31d4a0 100644
--- a/man/systemd-bootchart.xml
+++ b/man/systemd-bootchart.xml
@@ -25,7 +25,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-bootchart">
+<refentry id="systemd-bootchart" conditional='ENABLE_BOOTCHART'>
         <refentryinfo>
                 <title>systemd-bootchart</title>
                 <productname>systemd</productname>
diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml
index c5f8d2a..292e967 100644
--- a/man/systemd-cryptsetup-generator.xml
+++ b/man/systemd-cryptsetup-generator.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-cryptsetup-generator">
+<refentry id="systemd-cryptsetup-generator" conditional='HAVE_LIBCRYPTSETUP'>
 
         <refentryinfo>
                 <title>systemd-cryptsetup-generator</title>
diff --git a/man/systemd-cryptsetup at .service.xml b/man/systemd-cryptsetup at .service.xml
index abbb9d7..6fa2e0c 100644
--- a/man/systemd-cryptsetup at .service.xml
+++ b/man/systemd-cryptsetup at .service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-cryptsetup at .service">
+<refentry id="systemd-cryptsetup at .service" conditional='HAVE_LIBCRYPTSETUP'>
 
         <refentryinfo>
                 <title>systemd-cryptsetup at .service</title>
diff --git a/man/systemd-hostnamed.service.xml b/man/systemd-hostnamed.service.xml
index d9c1911..fe64a62 100644
--- a/man/systemd-hostnamed.service.xml
+++ b/man/systemd-hostnamed.service.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-hostnamed.service">
+<refentry id="systemd-hostnamed.service" conditional='ENABLE_HOSTNAMED'>
 
         <refentryinfo>
                 <title>systemd-hostnamed.service</title>
diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml
index 44cd616..0b6fd70 100644
--- a/man/systemd-journal-gatewayd.service.xml
+++ b/man/systemd-journal-gatewayd.service.xml
@@ -21,7 +21,7 @@ You should have received a copy of the GNU Lesser General Public License
 along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-journal-gatewayd.service">
+<refentry id="systemd-journal-gatewayd.service" conditional='HAVE_MICROHTTPD'>
 
   <refentryinfo>
     <title>systemd-journal-gatewayd.service</title>
diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml
index 6cefc42..1551e6a 100644
--- a/man/systemd-localed.service.xml
+++ b/man/systemd-localed.service.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-localed.service">
+<refentry id="systemd-localed.service" conditional='ENABLE_LOCALED'>
 
         <refentryinfo>
                 <title>systemd-localed.service</title>
diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml
index 00f3405..523a63b 100644
--- a/man/systemd-logind.service.xml
+++ b/man/systemd-logind.service.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-logind.service">
+<refentry id="systemd-logind.service" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>systemd-logind.service</title>
diff --git a/man/systemd-modules-load.service.xml b/man/systemd-modules-load.service.xml
index ea10be2..1d33b8e 100644
--- a/man/systemd-modules-load.service.xml
+++ b/man/systemd-modules-load.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-modules-load.service">
+<refentry id="systemd-modules-load.service" conditional='HAVE_KMOD'>
 
         <refentryinfo>
                 <title>systemd-modules-load.service</title>
diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml
index 2ffee91..ff04e58 100644
--- a/man/systemd-quotacheck.service.xml
+++ b/man/systemd-quotacheck.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-quotacheck.service">
+<refentry id="systemd-quotacheck.service" conditional='ENABLE_QUOTACHECK'>
 
         <refentryinfo>
                 <title>systemd-quotacheck.service</title>
diff --git a/man/systemd-random-seed-load.service.xml b/man/systemd-random-seed-load.service.xml
index 87f563e..693c008 100644
--- a/man/systemd-random-seed-load.service.xml
+++ b/man/systemd-random-seed-load.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-random-seed-load.service">
+<refentry id="systemd-random-seed-load.service" conditional='ENABLE_RANDOMSEED'>
 
         <refentryinfo>
                 <title>systemd-random-seed-load.service</title>
diff --git a/man/systemd-readahead-replay.service.xml b/man/systemd-readahead-replay.service.xml
index 66d2534..3d7d9f5 100644
--- a/man/systemd-readahead-replay.service.xml
+++ b/man/systemd-readahead-replay.service.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-readahead-replay.service">
+<refentry id="systemd-readahead-replay.service" conditional='ENABLE_READAHEAD'>
 
         <refentryinfo>
                 <title>systemd-readahead-replay.service</title>
diff --git a/man/systemd-timedated.service.xml b/man/systemd-timedated.service.xml
index ea2abc5..c82c0ff 100644
--- a/man/systemd-timedated.service.xml
+++ b/man/systemd-timedated.service.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="systemd-timedated.service">
+<refentry id="systemd-timedated.service" conditional='ENABLE_TIMEDATED'>
 
         <refentryinfo>
                 <title>systemd-timedated.service</title>
diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml
index 9214ec9..fc93e2d 100644
--- a/man/systemd-user-sessions.service.xml
+++ b/man/systemd-user-sessions.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-user-sessions.service">
+<refentry id="systemd-user-sessions.service" conditional='HAVE_PAM'>
 
         <refentryinfo>
                 <title>systemd-user-sessions.service</title>
diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml
index df1b1a1..3c50799 100644
--- a/man/systemd-vconsole-setup.service.xml
+++ b/man/systemd-vconsole-setup.service.xml
@@ -19,7 +19,7 @@
   You should have received a copy of the GNU Lesser General Public License
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
-<refentry id="systemd-vconsole-setup.service">
+<refentry id="systemd-vconsole-setup.service" conditional='ENABLE_VCONSOLE'>
 
         <refentryinfo>
                 <title>systemd-vconsole-setup.service</title>
diff --git a/man/timedatectl.xml b/man/timedatectl.xml
index 4f34bb7..a8e78ae 100644
--- a/man/timedatectl.xml
+++ b/man/timedatectl.xml
@@ -21,7 +21,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="timedatectl">
+<refentry id="timedatectl" conditional='ENABLE_TIMEDATED'>
 
         <refentryinfo>
                 <title>timedatectl</title>
diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml
index 45156b7..f60b571 100644
--- a/man/vconsole.conf.xml
+++ b/man/vconsole.conf.xml
@@ -22,7 +22,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 -->
 
-<refentry id="vconsole.conf">
+<refentry id="vconsole.conf" conditional='ENABLE_VCONSOLE'>
         <refentryinfo>
                 <title>vconsole.conf</title>
                 <productname>systemd</productname>

commit 823eb4e64e88e1787a82f84539344ef530f381a8
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Feb 2 22:38:33 2013 -0500

    build-sys: split man alias rules into separate file
    
    There shouldn't be any functional change. This is an 'automake include',
    so the generated Makefile is the same (apart from ordering).

diff --git a/Makefile-man.am b/Makefile-man.am
new file mode 100644
index 0000000..76b794a
--- /dev/null
+++ b/Makefile-man.am
@@ -0,0 +1,467 @@
+MANPAGES += \
+	man/bootup.7 \
+	man/daemon.7 \
+	man/halt.8 \
+	man/hostname.5 \
+	man/journalctl.1 \
+	man/journald.conf.5 \
+	man/kernel-command-line.7 \
+	man/locale.conf.5 \
+	man/localtime.5 \
+	man/machine-id.5 \
+	man/machine-info.5 \
+	man/os-release.5 \
+	man/pam_systemd.8 \
+	man/runlevel.8 \
+	man/sd-daemon.3 \
+	man/sd-id128.3 \
+	man/sd-journal.3 \
+	man/sd_booted.3 \
+	man/sd_id128_get_machine.3 \
+	man/sd_id128_randomize.3 \
+	man/sd_id128_to_string.3 \
+	man/sd_is_fifo.3 \
+	man/sd_journal_add_match.3 \
+	man/sd_journal_get_catalog.3 \
+	man/sd_journal_get_cursor.3 \
+	man/sd_journal_get_cutoff_realtime_usec.3 \
+	man/sd_journal_get_data.3 \
+	man/sd_journal_get_fd.3 \
+	man/sd_journal_get_realtime_usec.3 \
+	man/sd_journal_get_usage.3 \
+	man/sd_journal_next.3 \
+	man/sd_journal_open.3 \
+	man/sd_journal_print.3 \
+	man/sd_journal_query_unique.3 \
+	man/sd_journal_seek_head.3 \
+	man/sd_journal_stream_fd.3 \
+	man/sd_listen_fds.3 \
+	man/sd_notify.3 \
+	man/shutdown.8 \
+	man/sysctl.d.5 \
+	man/systemctl.1 \
+	man/systemd-analyze.1 \
+	man/systemd-ask-password-console.service.8 \
+	man/systemd-ask-password.1 \
+	man/systemd-cat.1 \
+	man/systemd-cgls.1 \
+	man/systemd-cgtop.1 \
+	man/systemd-coredumpctl.1 \
+	man/systemd-delta.1 \
+	man/systemd-detect-virt.1 \
+	man/systemd-fsck at .service.8 \
+	man/systemd-fstab-generator.8 \
+	man/systemd-getty-generator.8 \
+	man/systemd-halt.service.8 \
+	man/systemd-inhibit.1 \
+	man/systemd-initctl.service.8 \
+	man/systemd-journald.service.8 \
+	man/systemd-machine-id-setup.1 \
+	man/systemd-notify.1 \
+	man/systemd-nspawn.1 \
+	man/systemd-remount-fs.service.8 \
+	man/systemd-shutdownd.service.8 \
+	man/systemd-suspend.service.8 \
+	man/systemd-sysctl.service.8 \
+	man/systemd-system-update-generator.8 \
+	man/systemd-tmpfiles.8 \
+	man/systemd-tty-ask-password-agent.1 \
+	man/systemd-udevd.service.8 \
+	man/systemd-update-utmp-runlevel.service.8 \
+	man/systemd.1 \
+	man/systemd.automount.5 \
+	man/systemd.conf.5 \
+	man/systemd.device.5 \
+	man/systemd.exec.5 \
+	man/systemd.journal-fields.7 \
+	man/systemd.kill.5 \
+	man/systemd.mount.5 \
+	man/systemd.path.5 \
+	man/systemd.preset.5 \
+	man/systemd.service.5 \
+	man/systemd.snapshot.5 \
+	man/systemd.socket.5 \
+	man/systemd.special.7 \
+	man/systemd.swap.5 \
+	man/systemd.target.5 \
+	man/systemd.time.7 \
+	man/systemd.timer.5 \
+	man/systemd.unit.5 \
+	man/telinit.8 \
+	man/tmpfiles.d.5 \
+	man/udev.7 \
+	man/udevadm.8
+MANPAGES_ALIAS += \
+	man/SD_ALERT.3 \
+	man/SD_CRIT.3 \
+	man/SD_DEBUG.3 \
+	man/SD_EMERG.3 \
+	man/SD_ERR.3 \
+	man/SD_ID128_CONST_STR.3 \
+	man/SD_ID128_FORMAT_STR.3 \
+	man/SD_ID128_FORMAT_VAL.3 \
+	man/SD_ID128_MAKE.3 \
+	man/SD_INFO.3 \
+	man/SD_JOURNAL_APPEND.3 \
+	man/SD_JOURNAL_FOREACH.3 \
+	man/SD_JOURNAL_FOREACH_BACKWARDS.3 \
+	man/SD_JOURNAL_FOREACH_DATA.3 \
+	man/SD_JOURNAL_FOREACH_UNIQUE.3 \
+	man/SD_JOURNAL_INVALIDATE.3 \
+	man/SD_JOURNAL_LOCAL_ONLY.3 \
+	man/SD_JOURNAL_NOP.3 \
+	man/SD_JOURNAL_RUNTIME_ONLY.3 \
+	man/SD_JOURNAL_SUPPRESS_LOCATION.3 \
+	man/SD_JOURNAL_SYSTEM_ONLY.3 \
+	man/SD_LISTEN_FDS_START.3 \
+	man/SD_NOTICE.3 \
+	man/SD_WARNING.3 \
+	man/init.1 \
+	man/poweroff.8 \
+	man/reboot.8 \
+	man/sd_id128_equal.3 \
+	man/sd_id128_from_string.3 \
+	man/sd_id128_get_boot.3 \
+	man/sd_id128_t.3 \
+	man/sd_is_mq.3 \
+	man/sd_is_socket.3 \
+	man/sd_is_socket_inet.3 \
+	man/sd_is_socket_unix.3 \
+	man/sd_journal.3 \
+	man/sd_journal_add_disjunction.3 \
+	man/sd_journal_close.3 \
+	man/sd_journal_enumerate_data.3 \
+	man/sd_journal_enumerate_unique.3 \
+	man/sd_journal_flush_matches.3 \
+	man/sd_journal_get_catalog_for_message_id.3 \
+	man/sd_journal_get_cutoff_monotonic_usec.3 \
+	man/sd_journal_get_data_threshold.3 \
+	man/sd_journal_get_monotonic_usec.3 \
+	man/sd_journal_next_skip.3 \
+	man/sd_journal_open_directory.3 \
+	man/sd_journal_perror.3 \
+	man/sd_journal_previous.3 \
+	man/sd_journal_previous_skip.3 \
+	man/sd_journal_printv.3 \
+	man/sd_journal_process.3 \
+	man/sd_journal_reliable_fd.3 \
+	man/sd_journal_restart_data.3 \
+	man/sd_journal_restart_unique.3 \
+	man/sd_journal_seek_cursor.3 \
+	man/sd_journal_seek_monotonic_usec.3 \
+	man/sd_journal_seek_realtime_usec.3 \
+	man/sd_journal_seek_tail.3 \
+	man/sd_journal_send.3 \
+	man/sd_journal_sendv.3 \
+	man/sd_journal_set_data_threshold.3 \
+	man/sd_journal_test_cursor.3 \
+	man/sd_journal_wait.3 \
+	man/sd_notifyf.3 \
+	man/systemd-ask-password-console.path.8 \
+	man/systemd-ask-password-wall.path.8 \
+	man/systemd-ask-password-wall.service.8 \
+	man/systemd-fsck-root.service.8 \
+	man/systemd-fsck.8 \
+	man/systemd-hibernate.service.8 \
+	man/systemd-hybrid-sleep.service.8 \
+	man/systemd-initctl.8 \
+	man/systemd-initctl.socket.8 \
+	man/systemd-journald.8 \
+	man/systemd-journald.socket.8 \
+	man/systemd-kexec.service.8 \
+	man/systemd-poweroff.service.8 \
+	man/systemd-reboot.service.8 \
+	man/systemd-remount-fs.8 \
+	man/systemd-shutdown.8 \
+	man/systemd-shutdownd.8 \
+	man/systemd-shutdownd.socket.8 \
+	man/systemd-sleep.8 \
+	man/systemd-sysctl.8 \
+	man/systemd-tmpfiles-clean.service.8 \
+	man/systemd-tmpfiles-clean.timer.8 \
+	man/systemd-tmpfiles-setup.service.8 \
+	man/systemd-udevd-control.socket.8 \
+	man/systemd-udevd-kernel.socket.8 \
+	man/systemd-udevd.8 \
+	man/systemd-update-utmp-shutdown.service.8 \
+	man/systemd-update-utmp.8
+man/SD_ALERT.3: man/sd-daemon.3
+man/SD_CRIT.3: man/sd-daemon.3
+man/SD_DEBUG.3: man/sd-daemon.3
+man/SD_EMERG.3: man/sd-daemon.3
+man/SD_ERR.3: man/sd-daemon.3
+man/SD_ID128_CONST_STR.3: man/sd-id128.3
+man/SD_ID128_FORMAT_STR.3: man/sd-id128.3
+man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3
+man/SD_ID128_MAKE.3: man/sd-id128.3
+man/SD_INFO.3: man/sd-daemon.3
+man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3
+man/SD_JOURNAL_FOREACH.3: man/sd_journal_next.3
+man/SD_JOURNAL_FOREACH_BACKWARDS.3: man/sd_journal_next.3
+man/SD_JOURNAL_FOREACH_DATA.3: man/sd_journal_get_data.3
+man/SD_JOURNAL_FOREACH_UNIQUE.3: man/sd_journal_query_unique.3
+man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3
+man/SD_JOURNAL_LOCAL_ONLY.3: man/sd_journal_open.3
+man/SD_JOURNAL_NOP.3: man/sd_journal_get_fd.3
+man/SD_JOURNAL_RUNTIME_ONLY.3: man/sd_journal_open.3
+man/SD_JOURNAL_SUPPRESS_LOCATION.3: man/sd_journal_print.3
+man/SD_JOURNAL_SYSTEM_ONLY.3: man/sd_journal_open.3
+man/SD_LISTEN_FDS_START.3: man/sd_listen_fds.3
+man/SD_NOTICE.3: man/sd-daemon.3
+man/SD_WARNING.3: man/sd-daemon.3
+man/init.1: man/systemd.1
+man/poweroff.8: man/halt.8
+man/reboot.8: man/halt.8
+man/sd_id128_equal.3: man/sd-id128.3
+man/sd_id128_from_string.3: man/sd_id128_to_string.3
+man/sd_id128_get_boot.3: man/sd_id128_get_machine.3
+man/sd_id128_t.3: man/sd-id128.3
+man/sd_is_mq.3: man/sd_is_fifo.3
+man/sd_is_socket.3: man/sd_is_fifo.3
+man/sd_is_socket_inet.3: man/sd_is_fifo.3
+man/sd_is_socket_unix.3: man/sd_is_fifo.3
+man/sd_journal.3: man/sd_journal_open.3
+man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3
+man/sd_journal_close.3: man/sd_journal_open.3
+man/sd_journal_enumerate_data.3: man/sd_journal_get_data.3
+man/sd_journal_enumerate_unique.3: man/sd_journal_query_unique.3
+man/sd_journal_flush_matches.3: man/sd_journal_add_match.3
+man/sd_journal_get_catalog_for_message_id.3: man/sd_journal_get_catalog.3
+man/sd_journal_get_cutoff_monotonic_usec.3: man/sd_journal_get_cutoff_realtime_usec.3
+man/sd_journal_get_data_threshold.3: man/sd_journal_get_data.3
+man/sd_journal_get_monotonic_usec.3: man/sd_journal_get_realtime_usec.3
+man/sd_journal_next_skip.3: man/sd_journal_next.3
+man/sd_journal_open_directory.3: man/sd_journal_open.3
+man/sd_journal_perror.3: man/sd_journal_print.3
+man/sd_journal_previous.3: man/sd_journal_next.3
+man/sd_journal_previous_skip.3: man/sd_journal_next.3
+man/sd_journal_printv.3: man/sd_journal_print.3
+man/sd_journal_process.3: man/sd_journal_get_fd.3
+man/sd_journal_reliable_fd.3: man/sd_journal_get_fd.3
+man/sd_journal_restart_data.3: man/sd_journal_get_data.3
+man/sd_journal_restart_unique.3: man/sd_journal_query_unique.3
+man/sd_journal_seek_cursor.3: man/sd_journal_seek_head.3
+man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3
+man/sd_journal_seek_realtime_usec.3: man/sd_journal_seek_head.3
+man/sd_journal_seek_tail.3: man/sd_journal_seek_head.3
+man/sd_journal_send.3: man/sd_journal_print.3
+man/sd_journal_sendv.3: man/sd_journal_print.3
+man/sd_journal_set_data_threshold.3: man/sd_journal_get_data.3
+man/sd_journal_test_cursor.3: man/sd_journal_get_cursor.3
+man/sd_journal_wait.3: man/sd_journal_get_fd.3
+man/sd_notifyf.3: man/sd_notify.3
+man/systemd-ask-password-console.path.8: man/systemd-ask-password-console.service.8
+man/systemd-ask-password-wall.path.8: man/systemd-ask-password-console.service.8
+man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.service.8
+man/systemd-fsck-root.service.8: man/systemd-fsck at .service.8
+man/systemd-fsck.8: man/systemd-fsck at .service.8
+man/systemd-hibernate.service.8: man/systemd-suspend.service.8
+man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8
+man/systemd-initctl.8: man/systemd-initctl.service.8
+man/systemd-initctl.socket.8: man/systemd-initctl.service.8
+man/systemd-journald.8: man/systemd-journald.service.8
+man/systemd-journald.socket.8: man/systemd-journald.service.8
+man/systemd-kexec.service.8: man/systemd-halt.service.8
+man/systemd-poweroff.service.8: man/systemd-halt.service.8
+man/systemd-reboot.service.8: man/systemd-halt.service.8
+man/systemd-remount-fs.8: man/systemd-remount-fs.service.8
+man/systemd-shutdown.8: man/systemd-halt.service.8
+man/systemd-shutdownd.8: man/systemd-shutdownd.service.8
+man/systemd-shutdownd.socket.8: man/systemd-shutdownd.service.8
+man/systemd-sleep.8: man/systemd-suspend.service.8
+man/systemd-sysctl.8: man/systemd-sysctl.service.8
+man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8
+man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8
+man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8
+man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8
+man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8
+man/systemd-udevd.8: man/systemd-udevd.service.8
+man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8
+man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8
+
+if ENABLE_BINFMT
+MANPAGES += \
+	man/binfmt.d.5 \
+	man/systemd-binfmt.service.8
+MANPAGES_ALIAS += \
+	man/systemd-binfmt.8
+man/systemd-binfmt.8: man/systemd-binfmt.service.8
+endif
+
+if ENABLE_BOOTCHART
+MANPAGES += \
+	man/bootchart.conf.5 \
+	man/systemd-bootchart.1
+endif
+
+if ENABLE_HOSTNAMED
+MANPAGES += \
+	man/hostnamectl.1 \
+	man/systemd-hostnamed.service.8
+MANPAGES_ALIAS += \
+	man/systemd-hostnamed.8
+man/systemd-hostnamed.8: man/systemd-hostnamed.service.8
+endif
+
+if ENABLE_LOCALED
+MANPAGES += \
+	man/localectl.1 \
+	man/systemd-localed.service.8
+MANPAGES_ALIAS += \
+	man/systemd-localed.8
+man/systemd-localed.8: man/systemd-localed.service.8
+endif
+
+if ENABLE_QUOTACHECK
+MANPAGES += \
+	man/systemd-quotacheck.service.8
+MANPAGES_ALIAS += \
+	man/systemd-quotacheck.8
+man/systemd-quotacheck.8: man/systemd-quotacheck.service.8
+endif
+
+if ENABLE_RANDOMSEED
+MANPAGES += \
+	man/systemd-random-seed-load.service.8
+MANPAGES_ALIAS += \
+	man/systemd-random-seed-save.service.8 \
+	man/systemd-random-seed.8
+man/systemd-random-seed-save.service.8: man/systemd-random-seed-load.service.8
+man/systemd-random-seed.8: man/systemd-random-seed-load.service.8
+endif
+
+if ENABLE_READAHEAD
+MANPAGES += \
+	man/sd-readahead.3 \
+	man/sd_readahead.3 \
+	man/systemd-readahead-replay.service.8
+MANPAGES_ALIAS += \
+	man/systemd-readahead-collect.service.8 \
+	man/systemd-readahead-done.service.8 \
+	man/systemd-readahead-done.timer.8 \
+	man/systemd-readahead.8
+man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8
+man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8
+man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8
+man/systemd-readahead.8: man/systemd-readahead-replay.service.8
+endif
+
+if ENABLE_TIMEDATED
+MANPAGES += \
+	man/systemd-timedated.service.8 \
+	man/timedatectl.1
+MANPAGES_ALIAS += \
+	man/systemd-timedated.8
+man/systemd-timedated.8: man/systemd-timedated.service.8
+endif
+
+if ENABLE_VCONSOLE
+MANPAGES += \
+	man/systemd-vconsole-setup.service.8 \
+	man/vconsole.conf.5
+MANPAGES_ALIAS += \
+	man/systemd-vconsole-setup.8
+man/systemd-vconsole-setup.8: man/systemd-vconsole-setup.service.8
+endif
+
+if HAVE_KMOD
+MANPAGES += \
+	man/modules-load.d.5 \
+	man/systemd-modules-load.service.8
+MANPAGES_ALIAS += \
+	man/systemd-modules-load.8
+man/systemd-modules-load.8: man/systemd-modules-load.service.8
+endif
+
+if HAVE_LIBCRYPTSETUP
+MANPAGES += \
+	man/crypttab.5 \
+	man/systemd-cryptsetup-generator.8 \
+	man/systemd-cryptsetup at .service.8
+MANPAGES_ALIAS += \
+	man/systemd-cryptsetup.8
+man/systemd-cryptsetup.8: man/systemd-cryptsetup at .service.8
+endif
+
+if HAVE_MICROHTTPD
+MANPAGES += \
+	man/systemd-journal-gatewayd.service.8
+MANPAGES_ALIAS += \
+	man/systemd-journal-gatewayd.8 \
+	man/systemd-journal-gatewayd.socket.8
+man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8
+man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8
+endif
+
+if HAVE_MYHOSTNAME
+MANPAGES += \
+	man/nss-myhostname.8
+endif
+
+if HAVE_PAM
+MANPAGES += \
+	man/loginctl.1 \
+	man/logind.conf.5 \
+	man/sd-login.3 \
+	man/sd_get_seats.3 \
+	man/sd_login_monitor_new.3 \
+	man/sd_pid_get_session.3 \
+	man/sd_seat_get_active.3 \
+	man/sd_session_is_active.3 \
+	man/sd_uid_get_state.3 \
+	man/systemd-logind.service.8 \
+	man/systemd-user-sessions.service.8
+MANPAGES_ALIAS += \
+	man/sd_get_sessions.3 \
+	man/sd_get_uids.3 \
+	man/sd_login_monitor.3 \
+	man/sd_login_monitor_flush.3 \
+	man/sd_login_monitor_get_fd.3 \
+	man/sd_login_monitor_unref.3 \
+	man/sd_pid_get_owner_uid.3 \
+	man/sd_pid_get_unit.3 \
+	man/sd_seat_can_multi_session.3 \
+	man/sd_seat_get_sessions.3 \
+	man/sd_session_get_class.3 \
+	man/sd_session_get_display.3 \
+	man/sd_session_get_seat.3 \
+	man/sd_session_get_service.3 \
+	man/sd_session_get_state.3 \
+	man/sd_session_get_tty.3 \
+	man/sd_session_get_type.3 \
+	man/sd_session_get_uid.3 \
+	man/sd_uid_get_seats.3 \
+	man/sd_uid_get_sessions.3 \
+	man/sd_uid_is_on_seat.3 \
+	man/systemd-logind.8 \
+	man/systemd-user-sessions.8
+man/sd_get_sessions.3: man/sd_get_seats.3
+man/sd_get_uids.3: man/sd_get_seats.3
+man/sd_login_monitor.3: man/sd_login_monitor_new.3
+man/sd_login_monitor_flush.3: man/sd_login_monitor_new.3
+man/sd_login_monitor_get_fd.3: man/sd_login_monitor_new.3
+man/sd_login_monitor_unref.3: man/sd_login_monitor_new.3
+man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3
+man/sd_pid_get_unit.3: man/sd_pid_get_session.3
+man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3
+man/sd_seat_get_sessions.3: man/sd_seat_get_active.3
+man/sd_session_get_class.3: man/sd_session_is_active.3
+man/sd_session_get_display.3: man/sd_session_is_active.3
+man/sd_session_get_seat.3: man/sd_session_is_active.3
+man/sd_session_get_service.3: man/sd_session_is_active.3
+man/sd_session_get_state.3: man/sd_session_is_active.3
+man/sd_session_get_tty.3: man/sd_session_is_active.3
+man/sd_session_get_type.3: man/sd_session_is_active.3
+man/sd_session_get_uid.3: man/sd_session_is_active.3
+man/sd_uid_get_seats.3: man/sd_uid_get_state.3
+man/sd_uid_get_sessions.3: man/sd_uid_get_state.3
+man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3
+man/systemd-logind.8: man/systemd-logind.service.8
+man/systemd-user-sessions.8: man/systemd-user-sessions.service.8
+endif
+
+if HAVE_PYTHON
+MANPAGES += \
+	man/systemd.directives.7 \
+	man/systemd.index.7
+endif
diff --git a/Makefile.am b/Makefile.am
index 1f9a2b4..ba55a7e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -478,246 +478,11 @@ dist_doc_DATA = \
 @INTLTOOL_POLICY_RULE@
 
 # ------------------------------------------------------------------------------
-MANPAGES = \
-	man/systemd.1 \
-	man/systemctl.1 \
-	man/systemd-cgls.1 \
-	man/systemd-delta.1 \
-	man/systemd-cgtop.1 \
-	man/systemd-nspawn.1 \
-	man/systemd-tmpfiles.8 \
-	man/systemd-notify.1 \
-	man/systemd.unit.5 \
-	man/systemd.service.5 \
-	man/systemd.socket.5 \
-	man/systemd.mount.5 \
-	man/systemd.automount.5 \
-	man/systemd.swap.5 \
-	man/systemd.timer.5 \
-	man/systemd.path.5 \
-	man/systemd.target.5 \
-	man/systemd.device.5 \
-	man/systemd.snapshot.5 \
-	man/systemd.exec.5 \
-	man/systemd.kill.5 \
-	man/systemd.special.7 \
-	man/systemd.journal-fields.7 \
-	man/systemd.time.7 \
-	man/kernel-command-line.7 \
-	man/daemon.7 \
-	man/bootup.7 \
-	man/runlevel.8 \
-	man/telinit.8 \
-	man/halt.8 \
-	man/shutdown.8 \
-	man/pam_systemd.8 \
-	man/systemd.conf.5 \
-	man/tmpfiles.d.5 \
-	man/hostname.5 \
-	man/localtime.5 \
-	man/machine-id.5 \
-	man/locale.conf.5 \
-	man/os-release.5 \
-	man/machine-info.5 \
-	man/sysctl.d.5 \
-	man/systemd-sysctl.service.8 \
-	man/systemd-ask-password.1 \
-	man/systemd-cat.1 \
-	man/systemd-machine-id-setup.1 \
-	man/systemd-detect-virt.1 \
-	man/journald.conf.5 \
-	man/systemd-journald.service.8 \
-	man/journalctl.1 \
-	man/systemd-coredumpctl.1 \
-	man/systemd-inhibit.1 \
-	man/systemd-remount-fs.service.8 \
-	man/systemd-update-utmp-runlevel.service.8 \
-	man/systemd-initctl.service.8 \
-	man/systemd-shutdownd.service.8 \
-	man/systemd-suspend.service.8 \
-	man/systemd-halt.service.8 \
-	man/systemd-fsck at .service.8 \
-	man/systemd-ask-password-console.service.8 \
-	man/systemd-analyze.1 \
-	man/systemd-tty-ask-password-agent.1 \
-	man/systemd-getty-generator.8 \
-	man/systemd-system-update-generator.8 \
-	man/systemd-fstab-generator.8 \
-	man/systemd.preset.5 \
-	man/sd-id128.3 \
-	man/sd_id128_to_string.3 \
-	man/sd_id128_randomize.3 \
-	man/sd_id128_get_machine.3 \
-	man/sd-journal.3 \
-	man/sd_journal_print.3 \
-	man/sd_journal_stream_fd.3 \
-	man/sd_journal_open.3 \
-	man/sd_journal_next.3 \
-	man/sd_journal_get_data.3 \
-	man/sd_journal_get_realtime_usec.3 \
-	man/sd_journal_get_cutoff_realtime_usec.3 \
-	man/sd_journal_get_cursor.3 \
-	man/sd_journal_get_fd.3 \
-	man/sd_journal_get_usage.3 \
-	man/sd_journal_add_match.3 \
-	man/sd_journal_seek_head.3 \
-	man/sd_journal_query_unique.3 \
-	man/sd_journal_get_catalog.3
-
-MANPAGES_ALIAS = \
-	man/reboot.8 \
-	man/poweroff.8 \
-	man/init.1 \
-	man/systemd-sysctl.8 \
-	man/systemd-journald.socket.8 \
-	man/systemd-journald.8 \
-	man/systemd-remount-fs.8 \
-	man/systemd-update-utmp-shutdown.service.8 \
-	man/systemd-update-utmp.8 \
-	man/systemd-initctl.socket.8 \
-	man/systemd-initctl.8 \
-	man/systemd-shutdownd.socket.8 \
-	man/systemd-shutdownd.8 \
-	man/systemd-hibernate.service.8 \
-	man/systemd-hybrid-sleep.service.8 \
-	man/systemd-sleep.8 \
-	man/systemd-shutdown.8 \
-	man/systemd-poweroff.service.8 \
-	man/systemd-reboot.service.8 \
-	man/systemd-kexec.service.8 \
-	man/systemd-fsck.8 \
-	man/systemd-fsck-root.service.8 \
-	man/systemd-ask-password-console.path.8 \
-	man/systemd-ask-password-wall.service.8 \
-	man/systemd-ask-password-wall.path.8 \
-	man/systemd-tmpfiles-setup.service.8 \
-	man/systemd-tmpfiles-clean.service.8 \
-	man/systemd-tmpfiles-clean.timer.8 \
-	man/sd_id128_t.3 \
-	man/SD_ID128_MAKE.3 \
-	man/SD_ID128_CONST_STR.3 \
-	man/SD_ID128_FORMAT_STR.3 \
-	man/SD_ID128_FORMAT_VAL.3 \
-	man/sd_id128_equal.3 \
-	man/sd_id128_from_string.3 \
-	man/sd_id128_get_boot.3 \
-	man/sd_journal_printv.3 \
-	man/sd_journal_send.3 \
-	man/sd_journal_sendv.3 \
-	man/sd_journal_perror.3 \
-	man/SD_JOURNAL_SUPPRESS_LOCATION.3 \
-	man/sd_journal_open_directory.3 \
-	man/sd_journal_close.3 \
-	man/sd_journal.3 \
-	man/SD_JOURNAL_RUNTIME_ONLY.3 \
-	man/SD_JOURNAL_SYSTEM_ONLY.3 \
-	man/SD_JOURNAL_LOCAL_ONLY.3 \
-	man/sd_journal_previous.3 \
-	man/sd_journal_next_skip.3 \
-	man/sd_journal_previous_skip.3 \
-	man/SD_JOURNAL_FOREACH.3 \
-	man/SD_JOURNAL_FOREACH_BACKWARDS.3 \
-	man/sd_journal_enumerate_data.3 \
-	man/sd_journal_restart_data.3 \
-	man/SD_JOURNAL_FOREACH_DATA.3 \
-	man/sd_journal_get_monotonic_usec.3 \
-	man/sd_journal_get_cutoff_monotonic_usec.3 \
-	man/sd_journal_reliable_fd.3 \
-	man/sd_journal_process.3 \
-	man/sd_journal_wait.3 \
-	man/SD_JOURNAL_NOP.3 \
-	man/SD_JOURNAL_APPEND.3 \
-	man/SD_JOURNAL_INVALIDATE.3 \
-	man/sd_journal_add_disjunction.3 \
-	man/sd_journal_flush_matches.3 \
-	man/sd_journal_get_data_threshold.3 \
-	man/sd_journal_set_data_threshold.3 \
-	man/sd_journal_seek_tail.3 \
-	man/sd_journal_seek_monotonic_usec.3 \
-	man/sd_journal_seek_realtime_usec.3 \
-	man/sd_journal_seek_cursor.3 \
-	man/sd_journal_test_cursor.3 \
-	man/sd_journal_enumerate_unique.3 \
-	man/sd_journal_restart_unique.3 \
-	man/SD_JOURNAL_FOREACH_UNIQUE.3 \
-	man/sd_journal_get_catalog_for_message_id.3
-
-man/reboot.8: man/halt.8
-man/poweroff.8: man/halt.8
-man/init.1: man/systemd.1
-man/systemd-sysctl.8: man/systemd-sysctl.service.8
-man/systemd-journald.socket.8: man/systemd-journald.service.8
-man/systemd-journald.8: man/systemd-journald.service.8
-man/systemd-remount-fs.8: man/systemd-remount-fs.service.8
-man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8
-man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8
-man/systemd-initctl.socket.8: man/systemd-initctl.service.8
-man/systemd-initctl.8: man/systemd-initctl.service.8
-man/systemd-shutdownd.socket.8: man/systemd-shutdownd.service.8
-man/systemd-shutdownd.8: man/systemd-shutdownd.service.8
-man/systemd-hibernate.service.8: man/systemd-suspend.service.8
-man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8
-man/systemd-sleep.8: man/systemd-suspend.service.8
-man/systemd-shutdown.8: man/systemd-halt.service.8
-man/systemd-poweroff.service.8: man/systemd-halt.service.8
-man/systemd-reboot.service.8: man/systemd-halt.service.8
-man/systemd-kexec.service.8: man/systemd-halt.service.8
-man/systemd-fsck.8: man/systemd-fsck at .service.8
-man/systemd-fsck-root.service.8: man/systemd-fsck at .service.8
-man/systemd-ask-password-console.path.8: man/systemd-ask-password-console.service.8
-man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.service.8
-man/systemd-ask-password-wall.path.8: man/systemd-ask-password-console.service.8
-man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8
-man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8
-man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8
-man/sd_id128_t.3: man/sd-id128.3
-man/SD_ID128_MAKE.3: man/sd-id128.3
-man/SD_ID128_CONST_STR.3: man/sd-id128.3
-man/SD_ID128_FORMAT_STR.3: man/sd-id128.3
-man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3
-man/sd_id128_equal.3: man/sd-id128.3
-man/sd_id128_from_string.3: man/sd_id128_to_string.3
-man/sd_id128_get_boot.3: man/sd_id128_get_machine.3
-man/sd_journal_printv.3: man/sd_journal_print.3
-man/sd_journal_send.3: man/sd_journal_print.3
-man/sd_journal_sendv.3: man/sd_journal_print.3
-man/sd_journal_perror.3: man/sd_journal_print.3
-man/SD_JOURNAL_SUPPRESS_LOCATION.3: man/sd_journal_print.3
-man/sd_journal_open_directory.3: man/sd_journal_open.3
-man/sd_journal_close.3: man/sd_journal_open.3
-man/sd_journal.3: man/sd_journal_open.3
-man/SD_JOURNAL_RUNTIME_ONLY.3: man/sd_journal_open.3
-man/SD_JOURNAL_SYSTEM_ONLY.3: man/sd_journal_open.3
-man/SD_JOURNAL_LOCAL_ONLY.3: man/sd_journal_open.3
-man/sd_journal_previous.3: man/sd_journal_next.3
-man/sd_journal_next_skip.3: man/sd_journal_next.3
-man/sd_journal_previous_skip.3: man/sd_journal_next.3
-man/SD_JOURNAL_FOREACH.3: man/sd_journal_next.3
-man/SD_JOURNAL_FOREACH_BACKWARDS.3: man/sd_journal_next.3
-man/sd_journal_enumerate_data.3: man/sd_journal_get_data.3
-man/sd_journal_restart_data.3: man/sd_journal_get_data.3
-man/SD_JOURNAL_FOREACH_DATA.3: man/sd_journal_get_data.3
-man/sd_journal_get_monotonic_usec.3: man/sd_journal_get_realtime_usec.3
-man/sd_journal_get_cutoff_monotonic_usec.3: man/sd_journal_get_cutoff_realtime_usec.3
-man/sd_journal_reliable_fd.3: man/sd_journal_get_fd.3
-man/sd_journal_process.3: man/sd_journal_get_fd.3
-man/sd_journal_wait.3: man/sd_journal_get_fd.3
-man/SD_JOURNAL_NOP.3: man/sd_journal_get_fd.3
-man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3
-man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3
-man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3
-man/sd_journal_get_data_threshold.3: man/sd_journal_get_data.3
-man/sd_journal_set_data_threshold.3: man/sd_journal_get_data.3
-man/sd_journal_flush_matches.3: man/sd_journal_add_match.3
-man/sd_journal_seek_tail.3: man/sd_journal_seek_head.3
-man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3
-man/sd_journal_seek_realtime_usec.3: man/sd_journal_seek_head.3
-man/sd_journal_seek_cursor.3: man/sd_journal_seek_head.3
-man/sd_journal_test_cursor.3: man/sd_journal_get_cursor.3
-man/sd_journal_enumerate_unique.3: man/sd_journal_query_unique.3
-man/sd_journal_restart_unique.3: man/sd_journal_query_unique.3
-man/SD_JOURNAL_FOREACH_UNIQUE.3: man/sd_journal_query_unique.3
-man/sd_journal_get_catalog_for_message_id.3: man/sd_journal_get_catalog.3
+
+MANPAGES =
+MANPAGES_ALIAS =
+
+include Makefile-man.am
 
 XML_FILES = \
 	${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}}
@@ -736,10 +501,6 @@ CLEANFILES += \
 	${XML_FILES:.xml=.html}
 
 if HAVE_PYTHON
-MANPAGES += \
-	man/systemd.index.7 \
-	man/systemd.directives.7
-
 NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES))
 man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES)
 	$(AM_V_at)$(MKDIR_P) $(dir $@)
@@ -1503,12 +1264,6 @@ SYSINIT_TARGET_WANTS += \
 dist_udevrules_DATA += \
 	rules/80-drivers.rules
 
-MANPAGES += \
-	man/modules-load.d.5 \
-	man/systemd-modules-load.service.8
-MANPAGES_ALIAS += \
-	man/systemd-modules-load.8
-man/systemd-modules-load.8: man/systemd-modules-load.service.8
 endif
 
 EXTRA_DIST += \
@@ -1777,44 +1532,6 @@ lib_LTLIBRARIES += \
 pkgconfiglib_DATA += \
 	src/libsystemd-daemon/libsystemd-daemon.pc
 
-MANPAGES += \
-	man/sd-daemon.3 \
-	man/sd_notify.3 \
-	man/sd_listen_fds.3 \
-	man/sd_is_fifo.3 \
-	man/sd_booted.3
-
-MANPAGES_ALIAS += \
-	man/sd_is_socket.3 \
-	man/sd_is_socket_unix.3 \
-	man/sd_is_socket_inet.3 \
-	man/sd_is_mq.3 \
-	man/sd_notifyf.3 \
-	man/SD_LISTEN_FDS_START.3 \
-	man/SD_EMERG.3 \
-	man/SD_ALERT.3 \
-	man/SD_CRIT.3 \
-	man/SD_ERR.3 \
-	man/SD_WARNING.3 \
-	man/SD_NOTICE.3 \
-	man/SD_INFO.3 \
-	man/SD_DEBUG.3
-
-man/sd_is_socket.3: man/sd_is_fifo.3
-man/sd_is_socket_unix.3: man/sd_is_fifo.3
-man/sd_is_socket_inet.3: man/sd_is_fifo.3
-man/sd_is_mq.3: man/sd_is_fifo.3
-man/sd_notifyf.3: man/sd_notify.3
-man/SD_LISTEN_FDS_START.3: man/sd_listen_fds.3
-man/SD_EMERG.3: man/sd-daemon.3
-man/SD_ALERT.3: man/sd-daemon.3
-man/SD_CRIT.3: man/sd-daemon.3
-man/SD_ERR.3: man/sd-daemon.3
-man/SD_WARNING.3: man/sd-daemon.3
-man/SD_NOTICE.3: man/sd-daemon.3
-man/SD_INFO.3: man/sd-daemon.3
-man/SD_DEBUG.3: man/sd-daemon.3
-
 EXTRA_DIST += \
 	src/libsystemd-daemon/libsystemd-daemon.pc.in \
 	src/libsystemd-daemon/libsystemd-daemon.sym
@@ -1892,20 +1609,6 @@ libudev_private_la_LIBADD = \
 	libsystemd-shared.la
 
 # ------------------------------------------------------------------------------
-MANPAGES += \
-	man/udev.7 \
-	man/udevadm.8 \
-	man/systemd-udevd.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-udevd.8 \
-	man/systemd-udevd-control.socket.8 \
-	man/systemd-udevd-kernel.socket.8
-
-man/systemd-udevd.8: man/systemd-udevd.service.8
-man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8
-man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8
-
 INSTALL_DIRS += \
 	$(sysconfdir)/udev/rules.d \
 	$(sysconfdir)/udev/hwdb.d
@@ -2907,13 +2610,6 @@ nodist_systemunit_DATA += \
 dist_gatewayddocumentroot_DATA = \
 	src/journal/browse.html
 
-MANPAGES += \
-	man/systemd-journal-gatewayd.service.8
-MANPAGES_ALIAS += \
-	man/systemd-journal-gatewayd.socket.8 \
-	man/systemd-journal-gatewayd.8
-man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8
-man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8
 endif
 
 EXTRA_DIST += \
@@ -2973,14 +2669,6 @@ SYSINIT_TARGET_WANTS += \
 	systemd-binfmt.service \
 	proc-sys-fs-binfmt_misc.automount
 
-MANPAGES += \
-	man/binfmt.d.5 \
-	man/systemd-binfmt.service.8
-
-MANPAGES_ALIAS +=  \
-	man/systemd-binfmt.8
-
-man/systemd-binfmt.8: man/systemd-binfmt.service.8
 endif
 
 EXTRA_DIST += \
@@ -3002,15 +2690,6 @@ nodist_systemunit_DATA += \
 
 SYSINIT_TARGET_WANTS += \
 	systemd-vconsole-setup.service
-
-MANPAGES += \
-	man/vconsole.conf.5 \
-	man/systemd-vconsole-setup.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-vconsole-setup.8
-
-man/systemd-vconsole-setup.8: man/systemd-vconsole-setup.service.8
 endif
 
 EXTRA_DIST += \
@@ -3047,22 +2726,6 @@ nodist_systemunit_DATA += \
 	units/systemd-readahead-replay.service \
 	units/systemd-readahead-done.service
 
-MANPAGES += \
-	man/sd_readahead.3 \
-	man/sd-readahead.3 \
-	man/systemd-readahead-replay.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-readahead-collect.service.8 \
-	man/systemd-readahead-done.service.8 \
-	man/systemd-readahead-done.timer.8 \
-	man/systemd-readahead.8
-
-man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8
-man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8
-man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8
-man/systemd-readahead.8: man/systemd-readahead-replay.service.8
-
 endif
 
 EXTRA_DIST += \
@@ -3081,10 +2744,6 @@ systemd_bootchart_SOURCES = \
 systemd_bootchart_LDADD = \
 	libsystemd-shared.la
 
-MANPAGES += \
-	man/systemd-bootchart.1 \
-	man/bootchart.conf.5
-
 rootlibexec_PROGRAMS += \
 	systemd-bootchart
 
@@ -3105,15 +2764,6 @@ systemd_quotacheck_SOURCES = \
 
 systemd_quotacheck_LDADD = \
 	libsystemd-shared.la
-
-MANPAGES += \
-	man/systemd-quotacheck.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-quotacheck.8
-
-man/systemd-quotacheck.8: man/systemd-quotacheck.service.8
-
 endif
 
 EXTRA_DIST += \
@@ -3143,16 +2793,6 @@ SHUTDOWN_TARGET_WANTS += \
 SYSINIT_TARGET_WANTS += \
 	systemd-random-seed-load.service
 
-MANPAGES += \
-	man/systemd-random-seed-load.service.8
-
-MANPAGES_ALIAS +=  \
-	man/systemd-random-seed-save.service.8 \
-	man/systemd-random-seed.8
-
-man/systemd-random-seed-save.service.8: man/systemd-random-seed-load.service.8
-man/systemd-random-seed.8: man/systemd-random-seed-load.service.8
-
 endif
 
 EXTRA_DIST += \
@@ -3193,15 +2833,6 @@ systemd_cryptsetup_generator_LDADD = \
 SYSINIT_TARGET_WANTS += \
 	cryptsetup.target
 
-MANPAGES += \
-	man/systemd-cryptsetup at .service.8 \
-	man/systemd-cryptsetup-generator.8 \
-	man/crypttab.5
-
-MANPAGES_ALIAS += \
-	man/systemd-cryptsetup.8
-
-man/systemd-cryptsetup.8: man/systemd-cryptsetup at .service.8
 endif
 
 # ------------------------------------------------------------------------------
@@ -3244,14 +2875,6 @@ org.freedesktop.hostname1.xml: systemd-hostnamed
 SYSTEM_UNIT_ALIASES += \
 	systemd-hostnamed.service dbus-org.freedesktop.hostname1.service
 
-MANPAGES += \
-	man/systemd-hostnamed.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-hostnamed.8
-
-man/systemd-hostnamed.8: man/systemd-hostnamed.service.8
-
 hostnamectl_SOURCES = \
 	src/hostname/hostnamectl.c
 
@@ -3267,9 +2890,6 @@ hostnamectl_LDADD = \
 bin_PROGRAMS += \
 	hostnamectl
 
-MANPAGES += \
-	man/hostnamectl.1
-
 endif
 
 polkitpolicy_in_files += \
@@ -3319,14 +2939,6 @@ org.freedesktop.locale1.xml: systemd-localed
 SYSTEM_UNIT_ALIASES += \
 	systemd-localed.service dbus-org.freedesktop.locale1.service
 
-MANPAGES += \
-	man/systemd-localed.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-localed.8
-
-man/systemd-localed.8: man/systemd-localed.service.8
-
 dist_pkgdata_DATA += \
 	src/locale/kbd-model-map
 
@@ -3351,9 +2963,6 @@ localectl_LDADD = \
 bin_PROGRAMS += \
 	localectl
 
-MANPAGES += \
-	man/localectl.1
-
 endif
 
 polkitpolicy_in_files += \
@@ -3406,14 +3015,6 @@ INSTALL_DIRS += \
 SYSTEM_UNIT_ALIASES += \
 	systemd-timedated.service dbus-org.freedesktop.timedate1.service
 
-MANPAGES += \
-	man/systemd-timedated.service.8
-
-MANPAGES_ALIAS += \
-	man/systemd-timedated.8
-
-man/systemd-timedated.8: man/systemd-timedated.service.8
-
 timedatectl_SOURCES = \
 	src/timedate/timedatectl.c
 
@@ -3428,9 +3029,6 @@ timedatectl_LDADD = \
 bin_PROGRAMS += \
 	timedatectl
 
-MANPAGES += \
-	man/timedatectl.1
-
 endif
 
 polkitpolicy_in_files += \
@@ -3459,9 +3057,6 @@ libnss_myhostname_la_LDFLAGS = \
 
 lib_LTLIBRARIES += \
 	libnss_myhostname.la
-
-MANPAGES += \
-	man/nss-myhostname.8
 endif
 
 # ------------------------------------------------------------------------------
@@ -3688,68 +3283,6 @@ nodist_udevrules_DATA += \
 	src/login/71-seat.rules \
 	src/login/73-seat-late.rules
 
-MANPAGES += \
-	man/systemd-logind.service.8 \
-	man/logind.conf.5 \
-	man/sd-login.3 \
-	man/loginctl.1 \
-	man/sd_login_monitor_new.3 \
-	man/sd_pid_get_session.3 \
-	man/sd_uid_get_state.3 \
-	man/sd_session_is_active.3 \
-	man/sd_seat_get_active.3 \
-	man/sd_get_seats.3 \
-	man/systemd-user-sessions.service.8
-
-MANPAGES_ALIAS += \
-	man/sd_login_monitor_unref.3 \
-	man/sd_login_monitor_flush.3 \
-	man/sd_login_monitor_get_fd.3 \
-	man/sd_login_monitor.3 \
-	man/sd_session_get_uid.3 \
-	man/sd_session_get_seat.3 \
-	man/sd_session_get_service.3 \
-	man/sd_session_get_state.3 \
-	man/sd_session_get_type.3 \
-	man/sd_session_get_class.3 \
-	man/sd_session_get_display.3 \
-	man/sd_session_get_tty.3 \
-	man/sd_pid_get_owner_uid.3 \
-	man/sd_pid_get_unit.3 \
-	man/sd_uid_is_on_seat.3 \
-	man/sd_uid_get_sessions.3 \
-	man/sd_uid_get_seats.3 \
-	man/sd_seat_get_sessions.3 \
-	man/sd_seat_can_multi_session.3 \
-	man/sd_get_sessions.3 \
-	man/sd_get_uids.3 \
-	man/systemd-logind.8 \
-	man/systemd-user-sessions.8
-
-man/systemd-logind.8: man/systemd-logind.service.8
-man/sd_login_monitor_unref.3: man/sd_login_monitor_new.3
-man/sd_login_monitor_flush.3: man/sd_login_monitor_new.3
-man/sd_login_monitor_get_fd.3: man/sd_login_monitor_new.3
-man/sd_login_monitor.3: man/sd_login_monitor_new.3
-man/sd_session_get_uid.3: man/sd_session_is_active.3
-man/sd_session_get_seat.3: man/sd_session_is_active.3
-man/sd_session_get_service.3: man/sd_session_is_active.3
-man/sd_session_get_state.3: man/sd_session_is_active.3
-man/sd_session_get_type.3: man/sd_session_is_active.3
-man/sd_session_get_class.3: man/sd_session_is_active.3
-man/sd_session_get_display.3: man/sd_session_is_active.3
-man/sd_session_get_tty.3: man/sd_session_is_active.3
-man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3
-man/sd_pid_get_unit.3: man/sd_pid_get_session.3
-man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3
-man/sd_uid_get_sessions.3: man/sd_uid_get_state.3
-man/sd_uid_get_seats.3: man/sd_uid_get_state.3
-man/sd_seat_get_sessions.3: man/sd_seat_get_active.3
-man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3
-man/sd_get_sessions.3: man/sd_get_seats.3
-man/sd_get_uids.3: man/sd_get_seats.3
-man/systemd-user-sessions.8: man/systemd-user-sessions.service.8
-
 CLEANFILES += \
 	src/login/logind-gperf.c \
 	src/login/71-seat.rules \

commit 63ed840e59e82a34cfd59df47917a4e8498da903
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Sat Feb 2 22:48:38 2013 -0500

    build-sys: replace one last mkdir hook with list item
    
    Previously, errors would be ignored. Now they are not. But I don't see
    how we could fail to create the directory, so I don't think that it
    matters.

diff --git a/Makefile.am b/Makefile.am
index 93fd377..1f9a2b4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1906,11 +1906,9 @@ man/systemd-udevd.8: man/systemd-udevd.service.8
 man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8
 man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8
 
-udev-confdirs:
-	-$(MKDIR_P) $(DESTDIR)$(sysconfdir)/udev/rules.d
-	-$(MKDIR_P) $(DESTDIR)$(sysconfdir)/udev/hwdb.d
-
-INSTALL_DATA_HOOKS += udev-confdirs
+INSTALL_DIRS += \
+	$(sysconfdir)/udev/rules.d \
+	$(sysconfdir)/udev/hwdb.d
 
 dist_udevrules_DATA += \
 	rules/99-systemd.rules \

commit 0a4c519bd3f5cd00c77e022504f38fc899e23c1b
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Thu Jan 31 15:52:13 2013 -0500

    man: see also dracut(7) in bootup(7)

diff --git a/TODO b/TODO
index 0c349ed..205aaa5 100644
--- a/TODO
+++ b/TODO
@@ -274,9 +274,6 @@ Features:
     https://bugs.freedesktop.org/show_bug.cgi?id=54982
   - when key file cannot be found, read it from kbd in cryptsetup
 
-* instantiated [Install] for target units
-  https://bugs.freedesktop.org/show_bug.cgi?id=54377
-
 * move debug shell to tty6 and make sure this doesn't break the gettys on tty6
 
 * hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it
diff --git a/man/bootup.xml b/man/bootup.xml
index 4cc4baf..f65abf5 100644
--- a/man/bootup.xml
+++ b/man/bootup.xml
@@ -219,7 +219,8 @@ systemd-reboot.service   systemd-poweroff.service   systemd-halt.service   syste
                         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>boot</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-                        <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                        <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>dracut</refentrytitle><manvolnum>8</manvolnum></citerefentry>
                 </para>
         </refsect1>
 



More information about the systemd-commits mailing list