summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el7
-rw-r--r--.gitignore139
-rw-r--r--.mailmap4
-rw-r--r--CODING_STYLE27
-rw-r--r--DISTRO_PORTING58
-rw-r--r--LICENSE339
-rw-r--r--Makefile.am2960
-rw-r--r--NEWS1922
-rw-r--r--README205
-rw-r--r--TODO350
-rwxr-xr-xautogen.sh68
-rw-r--r--configure.ac857
-rw-r--r--introspect.awk13
-rw-r--r--m4/.gitignore8
-rw-r--r--m4/acx_libwrap.m419
-rw-r--r--m4/attributes.m4288
l---------man/Makefile1
-rw-r--r--man/binfmt.d.xml111
-rw-r--r--man/custom-html.xsl29
-rw-r--r--man/daemon.xml948
-rw-r--r--man/halt.xml181
-rw-r--r--man/hostname.xml95
-rw-r--r--man/journalctl.xml260
-rw-r--r--man/journald.conf.xml254
-rw-r--r--man/locale.conf.xml146
-rw-r--r--man/loginctl.xml457
-rw-r--r--man/logind.conf.xml175
-rw-r--r--man/machine-id.xml143
-rw-r--r--man/machine-info.xml147
-rw-r--r--man/modules-load.d.xml112
-rw-r--r--man/os-release.xml350
-rw-r--r--man/pam_systemd.xml316
-rw-r--r--man/runlevel.xml154
-rw-r--r--man/sd-daemon.xml172
-rw-r--r--man/sd-login.xml146
-rw-r--r--man/sd-readahead.xml117
-rw-r--r--man/sd_booted.xml128
-rw-r--r--man/sd_get_seats.xml127
-rw-r--r--man/sd_is_fifo.xml217
-rw-r--r--man/sd_listen_fds.xml203
-rw-r--r--man/sd_login_monitor_new.xml172
-rw-r--r--man/sd_notify.xml312
-rw-r--r--man/sd_pid_get_session.xml160
-rw-r--r--man/sd_readahead.xml178
-rw-r--r--man/sd_seat_get_active.xml157
-rw-r--r--man/sd_session_is_active.xml206
-rw-r--r--man/sd_uid_get_state.xml185
-rw-r--r--man/shutdown.xml188
-rw-r--r--man/sysctl.d.xml123
-rw-r--r--man/systemctl.xml1190
-rw-r--r--man/systemd-ask-password.xml183
-rw-r--r--man/systemd-cat.xml205
-rw-r--r--man/systemd-cgls.xml123
-rw-r--r--man/systemd-cgtop.xml246
-rw-r--r--man/systemd-machine-id-setup.xml114
-rw-r--r--man/systemd-notify.xml218
-rw-r--r--man/systemd-nspawn.xml215
-rw-r--r--man/systemd-tmpfiles.xml152
-rw-r--r--man/systemd.automount.xml167
-rw-r--r--man/systemd.conf.xml162
-rw-r--r--man/systemd.device.xml168
-rw-r--r--man/systemd.exec.xml1106
-rw-r--r--man/systemd.mount.xml278
-rw-r--r--man/systemd.path.xml220
-rw-r--r--man/systemd.service.xml837
-rw-r--r--man/systemd.snapshot.xml87
-rw-r--r--man/systemd.socket.xml674
-rw-r--r--man/systemd.special.xml725
-rw-r--r--man/systemd.swap.xml222
-rw-r--r--man/systemd.target.xml108
-rw-r--r--man/systemd.timer.xml192
-rw-r--r--man/systemd.unit.xml969
-rw-r--r--man/systemd.xml1167
-rw-r--r--man/telinit.xml195
-rw-r--r--man/timezone.xml90
-rw-r--r--man/tmpfiles.d.xml300
-rw-r--r--man/vconsole.conf.xml146
-rw-r--r--po/.gitignore5
-rw-r--r--po/POTFILES.in4
-rw-r--r--po/POTFILES.skip19
-rw-r--r--po/pl.po175
-rw-r--r--src/.gitignore16
-rw-r--r--src/99-systemd.rules.in55
-rw-r--r--src/Makefile28
-rw-r--r--src/ac-power.c111
-rw-r--r--src/acl-util.c68
-rw-r--r--src/acl-util.h27
-rw-r--r--src/ask-password-api.c576
-rw-r--r--src/ask-password-api.h33
-rw-r--r--src/ask-password.c184
-rw-r--r--src/automount.c887
-rw-r--r--src/automount.h76
l---------src/binfmt/Makefile1
-rw-r--r--src/binfmt/binfmt.c169
-rw-r--r--src/bridge.c367
-rw-r--r--src/build.h69
-rw-r--r--src/bus-errors.h58
-rw-r--r--src/cgls.c164
-rw-r--r--src/cgroup-attr.c102
-rw-r--r--src/cgroup-attr.h49
-rw-r--r--src/cgroup-show.c261
-rw-r--r--src/cgroup-show.h30
-rw-r--r--src/cgroup-util.c1111
-rw-r--r--src/cgroup-util.h72
-rw-r--r--src/cgroup.c556
-rw-r--r--src/cgroup.h94
-rw-r--r--src/cgroups-agent.c101
-rw-r--r--src/cgtop.c729
-rw-r--r--src/condition.c323
-rw-r--r--src/condition.h69
-rw-r--r--src/conf-parser.c852
-rw-r--r--src/conf-parser.h135
l---------src/cryptsetup/Makefile1
-rw-r--r--src/cryptsetup/cryptsetup-generator.c298
-rw-r--r--src/cryptsetup/cryptsetup.c529
-rw-r--r--src/dbus-automount.c72
-rw-r--r--src/dbus-automount.h34
-rw-r--r--src/dbus-common.c1092
-rw-r--r--src/dbus-common.h183
-rw-r--r--src/dbus-device.c65
-rw-r--r--src/dbus-device.h34
-rw-r--r--src/dbus-execute.c422
-rw-r--r--src/dbus-execute.h125
-rw-r--r--src/dbus-job.c354
-rw-r--r--src/dbus-job.h36
-rw-r--r--src/dbus-loop.c263
-rw-r--r--src/dbus-loop.h30
-rw-r--r--src/dbus-manager.c1537
-rw-r--r--src/dbus-manager.h31
-rw-r--r--src/dbus-mount.c168
-rw-r--r--src/dbus-mount.h34
-rw-r--r--src/dbus-path.c119
-rw-r--r--src/dbus-path.h35
-rw-r--r--src/dbus-service.c168
-rw-r--r--src/dbus-service.h34
-rw-r--r--src/dbus-snapshot.c93
-rw-r--r--src/dbus-snapshot.h33
-rw-r--r--src/dbus-socket.c139
-rw-r--r--src/dbus-socket.h34
-rw-r--r--src/dbus-swap.c111
-rw-r--r--src/dbus-swap.h35
-rw-r--r--src/dbus-target.c55
-rw-r--r--src/dbus-target.h33
-rw-r--r--src/dbus-timer.c137
-rw-r--r--src/dbus-timer.h34
-rw-r--r--src/dbus-unit.c850
-rw-r--r--src/dbus-unit.h139
-rw-r--r--src/dbus.c1482
-rw-r--r--src/dbus.h53
-rw-r--r--src/def.h37
-rw-r--r--src/detect-virt.c48
-rw-r--r--src/device.c616
-rw-r--r--src/device.h59
-rw-r--r--src/execute.c2112
-rw-r--r--src/execute.h233
-rw-r--r--src/exit-status.c180
-rw-r--r--src/exit-status.h85
-rw-r--r--src/fdset.c167
-rw-r--r--src/fdset.h40
-rw-r--r--src/fsck.c406
-rw-r--r--src/getty-generator.c182
-rw-r--r--src/hashmap.c731
-rw-r--r--src/hashmap.h91
-rw-r--r--src/hostname-setup.c187
-rw-r--r--src/hostname-setup.h27
-rw-r--r--src/hostname/.gitignore1
l---------src/hostname/Makefile1
-rw-r--r--src/hostname/hostnamed.c629
-rw-r--r--src/hostname/org.freedesktop.hostname1.conf27
-rw-r--r--src/hostname/org.freedesktop.hostname1.policy.in49
-rw-r--r--src/hostname/org.freedesktop.hostname1.service12
-rw-r--r--src/ima-setup.c115
-rw-r--r--src/ima-setup.h29
-rw-r--r--src/initctl.c451
-rw-r--r--src/initreq.h77
-rw-r--r--src/install.c1953
-rw-r--r--src/install.h89
-rw-r--r--src/ioprio.h57
-rw-r--r--src/job.c754
-rw-r--r--src/job.h179
-rw-r--r--src/journal/.gitignore2
l---------src/journal/Makefile1
-rw-r--r--src/journal/cat.c182
-rw-r--r--src/journal/compress.c208
-rw-r--r--src/journal/compress.h38
-rw-r--r--src/journal/coredump.c271
-rw-r--r--src/journal/journal-def.h165
-rw-r--r--src/journal/journal-file.c2274
-rw-r--r--src/journal/journal-file.h128
-rw-r--r--src/journal/journal-internal.h84
-rw-r--r--src/journal/journal-rate-limit.c275
-rw-r--r--src/journal/journal-rate-limit.h34
-rw-r--r--src/journal/journal-send.c516
-rw-r--r--src/journal/journalctl.c327
-rw-r--r--src/journal/journald-gperf.gperf31
-rw-r--r--src/journal/journald.c2821
-rw-r--r--src/journal/journald.conf25
-rw-r--r--src/journal/journald.h86
-rw-r--r--src/journal/libsystemd-journal.pc.in19
-rw-r--r--src/journal/libsystemd-journal.sym53
-rw-r--r--src/journal/lookup3.c1003
-rw-r--r--src/journal/lookup3.h25
-rw-r--r--src/journal/sd-journal.c1636
-rw-r--r--src/journal/sparse-endian.h87
-rw-r--r--src/journal/test-journal-send.c32
-rw-r--r--src/journal/test-journal.c120
-rw-r--r--src/kmod-setup.c96
-rw-r--r--src/kmod-setup.h27
-rw-r--r--src/label.c413
-rw-r--r--src/label.h51
-rw-r--r--src/libsystemd-daemon.pc.in19
-rw-r--r--src/libsystemd-daemon.sym27
-rw-r--r--src/libsystemd-id128.pc.in18
-rw-r--r--src/libsystemd-id128.sym21
l---------src/linux/Makefile1
-rw-r--r--src/linux/auto_dev-ioctl.h229
-rw-r--r--src/linux/fanotify.h98
-rw-r--r--src/list.h128
-rw-r--r--src/load-dropin.c150
-rw-r--r--src/load-dropin.h31
-rw-r--r--src/load-fragment-gperf.gperf.m4230
-rw-r--r--src/load-fragment.c2445
-rw-r--r--src/load-fragment.h91
-rw-r--r--src/locale-setup.c251
-rw-r--r--src/locale-setup.h27
-rw-r--r--src/locale/.gitignore1
l---------src/locale/Makefile1
-rwxr-xr-xsrc/locale/generate-kbd-model-map33
-rw-r--r--src/locale/kbd-model-map72
-rw-r--r--src/locale/localed.c1437
-rw-r--r--src/locale/org.freedesktop.locale1.conf27
-rw-r--r--src/locale/org.freedesktop.locale1.policy.in39
-rw-r--r--src/locale/org.freedesktop.locale1.service12
-rw-r--r--src/log.c747
-rw-r--r--src/log.h111
-rw-r--r--src/login/.gitignore3
-rw-r--r--src/login/70-uaccess.rules72
-rw-r--r--src/login/71-seat.rules25
-rw-r--r--src/login/73-seat-late.rules.in17
l---------src/login/Makefile1
-rw-r--r--src/login/libsystemd-login.pc.in18
-rw-r--r--src/login/libsystemd-login.sym48
-rw-r--r--src/login/loginctl.c1926
-rw-r--r--src/login/logind-acl.c248
-rw-r--r--src/login/logind-acl.h60
-rw-r--r--src/login/logind-dbus.c1697
-rw-r--r--src/login/logind-device.c86
-rw-r--r--src/login/logind-device.h48
-rw-r--r--src/login/logind-gperf.gperf22
-rw-r--r--src/login/logind-seat-dbus.c408
-rw-r--r--src/login/logind-seat.c514
-rw-r--r--src/login/logind-seat.h83
-rw-r--r--src/login/logind-session-dbus.c528
-rw-r--r--src/login/logind-session.c982
-rw-r--r--src/login/logind-session.h136
-rw-r--r--src/login/logind-user-dbus.c417
-rw-r--r--src/login/logind-user.c589
-rw-r--r--src/login/logind-user.h86
-rw-r--r--src/login/logind.c1288
-rw-r--r--src/login/logind.conf16
-rw-r--r--src/login/logind.h131
-rw-r--r--src/login/multi-seat-x.c195
-rw-r--r--src/login/org.freedesktop.login1.conf118
-rw-r--r--src/login/org.freedesktop.login1.policy.in89
-rw-r--r--src/login/org.freedesktop.login1.service12
-rw-r--r--src/login/pam-module.c695
-rw-r--r--src/login/sd-login.c835
-rw-r--r--src/login/sysfs-show.c187
-rw-r--r--src/login/test-login.c188
-rw-r--r--src/login/uaccess.c91
-rw-r--r--src/login/user-sessions.c100
-rw-r--r--src/logs-show.c664
-rw-r--r--src/logs-show.h56
-rw-r--r--src/loopback-setup.c274
-rw-r--r--src/loopback-setup.h27
-rw-r--r--src/machine-id-main.c35
-rw-r--r--src/machine-id-setup.c267
-rw-r--r--src/machine-id-setup.h27
-rw-r--r--src/macro.h181
-rw-r--r--src/main.c1632
-rw-r--r--src/manager.c3199
-rw-r--r--src/manager.h301
-rw-r--r--src/missing.h187
-rw-r--r--src/modules-load.c155
-rw-r--r--src/mount-setup.c422
-rw-r--r--src/mount-setup.h36
-rw-r--r--src/mount.c1929
-rw-r--r--src/mount.h124
-rw-r--r--src/namespace.c346
-rw-r--r--src/namespace.h34
-rw-r--r--src/notify.c228
-rw-r--r--src/nspawn.c894
-rw-r--r--src/org.freedesktop.systemd1.conf92
-rw-r--r--src/org.freedesktop.systemd1.policy.in.in41
-rw-r--r--src/org.freedesktop.systemd1.service11
-rw-r--r--src/pager.c134
-rw-r--r--src/pager.h28
-rw-r--r--src/path-lookup.c347
-rw-r--r--src/path-lookup.h40
-rw-r--r--src/path.c770
-rw-r--r--src/path.h113
-rw-r--r--src/polkit.c205
-rw-r--r--src/polkit.h36
-rw-r--r--src/quotacheck.c120
-rw-r--r--src/random-seed.c147
-rw-r--r--src/ratelimit.c57
-rw-r--r--src/ratelimit.h53
-rw-r--r--src/rc-local-generator.c107
l---------src/readahead/Makefile1
-rw-r--r--src/readahead/readahead-collect.c693
-rw-r--r--src/readahead/readahead-common.c269
-rw-r--r--src/readahead/readahead-common.h50
-rw-r--r--src/readahead/readahead-replay.c378
-rw-r--r--src/readahead/sd-readahead.c88
-rw-r--r--src/remount-api-vfs.c161
-rw-r--r--src/reply-password.c109
-rw-r--r--src/sd-id128.c221
-rw-r--r--src/securebits.h45
-rw-r--r--src/selinux-setup.c112
-rw-r--r--src/selinux-setup.h29
-rw-r--r--src/service.c3797
-rw-r--r--src/service.h220
-rw-r--r--src/set.c118
-rw-r--r--src/set.h69
-rw-r--r--src/shutdown.c485
-rw-r--r--src/shutdownd.c366
-rw-r--r--src/shutdownd.h46
-rw-r--r--src/snapshot.c309
-rw-r--r--src/snapshot.h53
-rw-r--r--src/socket-util.c652
-rw-r--r--src/socket-util.h102
-rw-r--r--src/socket.c2217
-rw-r--r--src/socket.h173
-rw-r--r--src/spawn-agent.c120
-rw-r--r--src/spawn-agent.h28
-rw-r--r--src/special.h88
-rw-r--r--src/specifier.c108
-rw-r--r--src/specifier.h37
-rw-r--r--src/strv.c690
-rw-r--r--src/strv.h79
-rw-r--r--src/swap.c1415
-rw-r--r--src/swap.h128
-rw-r--r--src/sysctl.c272
-rw-r--r--src/sysfs-show.h27
-rw-r--r--src/system.conf26
-rw-r--r--src/systemctl.c5489
-rwxr-xr-xsrc/systemd-analyze276
-rw-r--r--src/systemd-bash-completion.sh281
-rw-r--r--src/systemd.pc.in21
l---------src/systemd/Makefile1
-rw-r--r--src/systemd/sd-daemon.h (renamed from src/sd-daemon.h)0
-rw-r--r--src/systemd/sd-id128.h69
-rw-r--r--src/systemd/sd-journal.h132
-rw-r--r--src/systemd/sd-login.h145
-rw-r--r--src/systemd/sd-messages.h41
-rw-r--r--src/systemd/sd-readahead.h73
-rw-r--r--src/target.c224
-rw-r--r--src/target.h47
-rw-r--r--src/tcpwrap.c68
-rw-r--r--src/tcpwrap.h29
-rw-r--r--src/test-cgroup.c104
-rw-r--r--src/test-daemon.c37
-rw-r--r--src/test-engine.c99
-rw-r--r--src/test-env-replace.c127
-rw-r--r--src/test-hostname.c37
-rw-r--r--src/test-id128.c52
-rw-r--r--src/test-install.c264
-rw-r--r--src/test-job-type.c84
-rw-r--r--src/test-loopback.c37
-rw-r--r--src/test-ns.c60
-rw-r--r--src/test-strv.c66
-rw-r--r--src/timedate/.gitignore1
l---------src/timedate/Makefile1
-rw-r--r--src/timedate/org.freedesktop.timedate1.conf27
-rw-r--r--src/timedate/org.freedesktop.timedate1.policy.in61
-rw-r--r--src/timedate/org.freedesktop.timedate1.service12
-rw-r--r--src/timedate/timedated.c930
-rw-r--r--src/timer.c520
-rw-r--r--src/timer.h93
-rw-r--r--src/timestamp.c39
-rw-r--r--src/tmpfiles.c1314
-rw-r--r--src/tty-ask-password-agent.c753
-rw-r--r--src/udev/.gitignore40
-rw-r--r--src/udev/.vimrc4
-rw-r--r--src/udev/COPYING (renamed from COPYING)0
-rw-r--r--src/udev/ChangeLog (renamed from ChangeLog)0
-rw-r--r--src/udev/INSTALL (renamed from INSTALL)0
-rw-r--r--src/udev/Makefile.am712
-rw-r--r--src/udev/NEWS1735
-rw-r--r--src/udev/README101
-rw-r--r--src/udev/TODO22
-rwxr-xr-xsrc/udev/autogen.sh44
-rw-r--r--src/udev/configure.ac242
-rw-r--r--src/udev/m4/.gitignore4
-rw-r--r--src/udev/rules/42-usb-hid-pm.rules (renamed from rules/42-usb-hid-pm.rules)0
-rw-r--r--src/udev/rules/50-udev-default.rules (renamed from rules/50-udev-default.rules)0
-rw-r--r--src/udev/rules/60-persistent-alsa.rules (renamed from rules/60-persistent-alsa.rules)0
-rw-r--r--src/udev/rules/60-persistent-input.rules (renamed from rules/60-persistent-input.rules)0
-rw-r--r--src/udev/rules/60-persistent-serial.rules (renamed from rules/60-persistent-serial.rules)0
-rw-r--r--src/udev/rules/60-persistent-storage-tape.rules (renamed from rules/60-persistent-storage-tape.rules)0
-rw-r--r--src/udev/rules/60-persistent-storage.rules (renamed from rules/60-persistent-storage.rules)0
-rw-r--r--src/udev/rules/75-net-description.rules (renamed from rules/75-net-description.rules)0
-rw-r--r--src/udev/rules/75-tty-description.rules (renamed from rules/75-tty-description.rules)0
-rw-r--r--src/udev/rules/78-sound-card.rules (renamed from rules/78-sound-card.rules)0
-rw-r--r--src/udev/rules/80-drivers.rules (renamed from rules/80-drivers.rules)0
-rw-r--r--src/udev/rules/95-udev-late.rules (renamed from rules/95-udev-late.rules)0
-rw-r--r--src/udev/src/.gitignore5
-rw-r--r--src/udev/src/COPYING (renamed from src/COPYING)0
-rw-r--r--src/udev/src/accelerometer/61-accelerometer.rules (renamed from src/accelerometer/61-accelerometer.rules)0
-rw-r--r--src/udev/src/accelerometer/accelerometer.c (renamed from src/accelerometer/accelerometer.c)0
-rw-r--r--src/udev/src/ata_id/ata_id.c (renamed from src/ata_id/ata_id.c)0
-rw-r--r--src/udev/src/cdrom_id/60-cdrom_id.rules (renamed from src/cdrom_id/60-cdrom_id.rules)0
-rw-r--r--src/udev/src/cdrom_id/cdrom_id.c (renamed from src/cdrom_id/cdrom_id.c)0
-rw-r--r--src/udev/src/collect/collect.c (renamed from src/collect/collect.c)0
-rw-r--r--src/udev/src/docs/.gitignore (renamed from src/docs/.gitignore)0
-rw-r--r--src/udev/src/docs/Makefile.am (renamed from src/docs/Makefile.am)0
-rw-r--r--src/udev/src/docs/libudev-docs.xml (renamed from src/docs/libudev-docs.xml)0
-rw-r--r--src/udev/src/docs/libudev-sections.txt (renamed from src/docs/libudev-sections.txt)0
-rw-r--r--src/udev/src/docs/libudev.types (renamed from src/docs/libudev.types)0
-rw-r--r--src/udev/src/docs/version.xml.in (renamed from src/docs/version.xml.in)0
-rw-r--r--src/udev/src/floppy/60-floppy.rules (renamed from src/floppy/60-floppy.rules)0
-rw-r--r--src/udev/src/floppy/create_floppy_devices.c (renamed from src/floppy/create_floppy_devices.c)0
-rw-r--r--src/udev/src/gudev/.gitignore (renamed from src/gudev/.gitignore)0
-rw-r--r--src/udev/src/gudev/COPYING (renamed from src/gudev/COPYING)0
-rw-r--r--src/udev/src/gudev/docs/.gitignore (renamed from src/gudev/docs/.gitignore)0
-rw-r--r--src/udev/src/gudev/docs/Makefile.am (renamed from src/gudev/docs/Makefile.am)0
-rw-r--r--src/udev/src/gudev/docs/gudev-docs.xml (renamed from src/gudev/docs/gudev-docs.xml)0
-rw-r--r--src/udev/src/gudev/docs/gudev-sections.txt (renamed from src/gudev/docs/gudev-sections.txt)0
-rw-r--r--src/udev/src/gudev/docs/gudev.types (renamed from src/gudev/docs/gudev.types)0
-rw-r--r--src/udev/src/gudev/docs/version.xml.in (renamed from src/gudev/docs/version.xml.in)0
-rwxr-xr-xsrc/udev/src/gudev/gjs-example.js (renamed from src/gudev/gjs-example.js)0
-rw-r--r--src/udev/src/gudev/gudev-1.0.pc.in (renamed from src/gudev/gudev-1.0.pc.in)0
-rw-r--r--src/udev/src/gudev/gudev.h (renamed from src/gudev/gudev.h)0
-rw-r--r--src/udev/src/gudev/gudevclient.c (renamed from src/gudev/gudevclient.c)0
-rw-r--r--src/udev/src/gudev/gudevclient.h (renamed from src/gudev/gudevclient.h)0
-rw-r--r--src/udev/src/gudev/gudevdevice.c (renamed from src/gudev/gudevdevice.c)0
-rw-r--r--src/udev/src/gudev/gudevdevice.h (renamed from src/gudev/gudevdevice.h)0
-rw-r--r--src/udev/src/gudev/gudevenumerator.c (renamed from src/gudev/gudevenumerator.c)0
-rw-r--r--src/udev/src/gudev/gudevenumerator.h (renamed from src/gudev/gudevenumerator.h)0
-rw-r--r--src/udev/src/gudev/gudevenums.h (renamed from src/gudev/gudevenums.h)0
-rw-r--r--src/udev/src/gudev/gudevenumtypes.c.template (renamed from src/gudev/gudevenumtypes.c.template)0
-rw-r--r--src/udev/src/gudev/gudevenumtypes.h.template (renamed from src/gudev/gudevenumtypes.h.template)0
-rw-r--r--src/udev/src/gudev/gudevmarshal.list (renamed from src/gudev/gudevmarshal.list)0
-rw-r--r--src/udev/src/gudev/gudevprivate.h (renamed from src/gudev/gudevprivate.h)0
-rw-r--r--src/udev/src/gudev/gudevtypes.h (renamed from src/gudev/gudevtypes.h)0
-rwxr-xr-xsrc/udev/src/gudev/seed-example-enum.js (renamed from src/gudev/seed-example-enum.js)0
-rwxr-xr-xsrc/udev/src/gudev/seed-example.js (renamed from src/gudev/seed-example.js)0
-rw-r--r--src/udev/src/keymap/.gitignore (renamed from src/keymap/.gitignore)0
-rw-r--r--src/udev/src/keymap/95-keyboard-force-release.rules (renamed from src/keymap/95-keyboard-force-release.rules)0
-rw-r--r--src/udev/src/keymap/95-keymap.rules (renamed from src/keymap/95-keymap.rules)0
-rw-r--r--src/udev/src/keymap/README.keymap.txt (renamed from src/keymap/README.keymap.txt)0
-rwxr-xr-xsrc/udev/src/keymap/check-keymaps.sh (renamed from src/keymap/check-keymaps.sh)0
-rwxr-xr-xsrc/udev/src/keymap/findkeyboards (renamed from src/keymap/findkeyboards)0
-rw-r--r--src/udev/src/keymap/force-release-maps/common-volume-keys (renamed from src/keymap/force-release-maps/common-volume-keys)0
-rw-r--r--src/udev/src/keymap/force-release-maps/dell-touchpad (renamed from src/keymap/force-release-maps/dell-touchpad)0
-rw-r--r--src/udev/src/keymap/force-release-maps/hp-other (renamed from src/keymap/force-release-maps/hp-other)0
-rw-r--r--src/udev/src/keymap/force-release-maps/samsung-90x3a (renamed from src/keymap/force-release-maps/samsung-90x3a)0
-rw-r--r--src/udev/src/keymap/force-release-maps/samsung-other (renamed from src/keymap/force-release-maps/samsung-other)0
-rwxr-xr-xsrc/udev/src/keymap/keyboard-force-release.sh.in (renamed from src/keymap/keyboard-force-release.sh.in)0
-rw-r--r--src/udev/src/keymap/keymap.c (renamed from src/keymap/keymap.c)0
-rw-r--r--src/udev/src/keymap/keymaps/acer (renamed from src/keymap/keymaps/acer)0
-rw-r--r--src/udev/src/keymap/keymaps/acer-aspire_5720 (renamed from src/keymap/keymaps/acer-aspire_5720)0
-rw-r--r--src/udev/src/keymap/keymaps/acer-aspire_5920g (renamed from src/keymap/keymaps/acer-aspire_5920g)0
-rw-r--r--src/udev/src/keymap/keymaps/acer-aspire_6920 (renamed from src/keymap/keymaps/acer-aspire_6920)0
-rw-r--r--src/udev/src/keymap/keymaps/acer-aspire_8930 (renamed from src/keymap/keymaps/acer-aspire_8930)0
-rw-r--r--src/udev/src/keymap/keymaps/acer-travelmate_c300 (renamed from src/keymap/keymaps/acer-travelmate_c300)0
-rw-r--r--src/udev/src/keymap/keymaps/asus (renamed from src/keymap/keymaps/asus)0
-rw-r--r--src/udev/src/keymap/keymaps/compaq-e_evo (renamed from src/keymap/keymaps/compaq-e_evo)0
-rw-r--r--src/udev/src/keymap/keymaps/dell (renamed from src/keymap/keymaps/dell)0
-rw-r--r--src/udev/src/keymap/keymaps/dell-latitude-xt2 (renamed from src/keymap/keymaps/dell-latitude-xt2)0
-rw-r--r--src/udev/src/keymap/keymaps/everex-xt5000 (renamed from src/keymap/keymaps/everex-xt5000)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-amilo_li_2732 (renamed from src/keymap/keymaps/fujitsu-amilo_li_2732)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-amilo_pa_2548 (renamed from src/keymap/keymaps/fujitsu-amilo_pa_2548)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-amilo_pro_edition_v3505 (renamed from src/keymap/keymaps/fujitsu-amilo_pro_edition_v3505)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-amilo_pro_v3205 (renamed from src/keymap/keymaps/fujitsu-amilo_pro_v3205)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-amilo_si_1520 (renamed from src/keymap/keymaps/fujitsu-amilo_si_1520)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-esprimo_mobile_v5 (renamed from src/keymap/keymaps/fujitsu-esprimo_mobile_v5)0
-rw-r--r--src/udev/src/keymap/keymaps/fujitsu-esprimo_mobile_v6 (renamed from src/keymap/keymaps/fujitsu-esprimo_mobile_v6)0
-rw-r--r--src/udev/src/keymap/keymaps/genius-slimstar-320 (renamed from src/keymap/keymaps/genius-slimstar-320)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard (renamed from src/keymap/keymaps/hewlett-packard)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-2510p_2530p (renamed from src/keymap/keymaps/hewlett-packard-2510p_2530p)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-compaq_elitebook (renamed from src/keymap/keymaps/hewlett-packard-compaq_elitebook)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-pavilion (renamed from src/keymap/keymaps/hewlett-packard-pavilion)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-presario-2100 (renamed from src/keymap/keymaps/hewlett-packard-presario-2100)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-tablet (renamed from src/keymap/keymaps/hewlett-packard-tablet)0
-rw-r--r--src/udev/src/keymap/keymaps/hewlett-packard-tx2 (renamed from src/keymap/keymaps/hewlett-packard-tx2)0
-rw-r--r--src/udev/src/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint (renamed from src/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint)0
-rw-r--r--src/udev/src/keymap/keymaps/inventec-symphony_6.0_7.0 (renamed from src/keymap/keymaps/inventec-symphony_6.0_7.0)0
-rw-r--r--src/udev/src/keymap/keymaps/lenovo-3000 (renamed from src/keymap/keymaps/lenovo-3000)0
-rw-r--r--src/udev/src/keymap/keymaps/lenovo-ideapad (renamed from src/keymap/keymaps/lenovo-ideapad)0
-rw-r--r--src/udev/src/keymap/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint (renamed from src/keymap/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint)0
-rw-r--r--src/udev/src/keymap/keymaps/lenovo-thinkpad_x200_tablet (renamed from src/keymap/keymaps/lenovo-thinkpad_x200_tablet)0
-rw-r--r--src/udev/src/keymap/keymaps/lenovo-thinkpad_x6_tablet (renamed from src/keymap/keymaps/lenovo-thinkpad_x6_tablet)0
-rw-r--r--src/udev/src/keymap/keymaps/lg-x110 (renamed from src/keymap/keymaps/lg-x110)0
-rw-r--r--src/udev/src/keymap/keymaps/logitech-wave (renamed from src/keymap/keymaps/logitech-wave)0
-rw-r--r--src/udev/src/keymap/keymaps/logitech-wave-cordless (renamed from src/keymap/keymaps/logitech-wave-cordless)0
-rw-r--r--src/udev/src/keymap/keymaps/logitech-wave-pro-cordless (renamed from src/keymap/keymaps/logitech-wave-pro-cordless)0
-rw-r--r--src/udev/src/keymap/keymaps/maxdata-pro_7000 (renamed from src/keymap/keymaps/maxdata-pro_7000)0
-rw-r--r--src/udev/src/keymap/keymaps/medion-fid2060 (renamed from src/keymap/keymaps/medion-fid2060)0
-rw-r--r--src/udev/src/keymap/keymaps/medionnb-a555 (renamed from src/keymap/keymaps/medionnb-a555)0
-rw-r--r--src/udev/src/keymap/keymaps/micro-star (renamed from src/keymap/keymaps/micro-star)0
-rw-r--r--src/udev/src/keymap/keymaps/module-asus-w3j (renamed from src/keymap/keymaps/module-asus-w3j)0
-rw-r--r--src/udev/src/keymap/keymaps/module-ibm (renamed from src/keymap/keymaps/module-ibm)0
-rw-r--r--src/udev/src/keymap/keymaps/module-lenovo (renamed from src/keymap/keymaps/module-lenovo)0
-rw-r--r--src/udev/src/keymap/keymaps/module-sony (renamed from src/keymap/keymaps/module-sony)0
-rw-r--r--src/udev/src/keymap/keymaps/module-sony-old (renamed from src/keymap/keymaps/module-sony-old)0
-rw-r--r--src/udev/src/keymap/keymaps/module-sony-vgn (renamed from src/keymap/keymaps/module-sony-vgn)0
-rw-r--r--src/udev/src/keymap/keymaps/olpc-xo (renamed from src/keymap/keymaps/olpc-xo)0
-rw-r--r--src/udev/src/keymap/keymaps/onkyo (renamed from src/keymap/keymaps/onkyo)0
-rw-r--r--src/udev/src/keymap/keymaps/oqo-model2 (renamed from src/keymap/keymaps/oqo-model2)0
-rw-r--r--src/udev/src/keymap/keymaps/samsung-90x3a (renamed from src/keymap/keymaps/samsung-90x3a)0
-rw-r--r--src/udev/src/keymap/keymaps/samsung-other (renamed from src/keymap/keymaps/samsung-other)0
-rw-r--r--src/udev/src/keymap/keymaps/samsung-sq1us (renamed from src/keymap/keymaps/samsung-sq1us)0
-rw-r--r--src/udev/src/keymap/keymaps/samsung-sx20s (renamed from src/keymap/keymaps/samsung-sx20s)0
-rw-r--r--src/udev/src/keymap/keymaps/toshiba-satellite_a100 (renamed from src/keymap/keymaps/toshiba-satellite_a100)0
-rw-r--r--src/udev/src/keymap/keymaps/toshiba-satellite_a110 (renamed from src/keymap/keymaps/toshiba-satellite_a110)0
-rw-r--r--src/udev/src/keymap/keymaps/toshiba-satellite_m30x (renamed from src/keymap/keymaps/toshiba-satellite_m30x)0
-rw-r--r--src/udev/src/keymap/keymaps/zepto-znote (renamed from src/keymap/keymaps/zepto-znote)0
-rw-r--r--src/udev/src/libudev-device-private.c (renamed from src/libudev-device-private.c)0
-rw-r--r--src/udev/src/libudev-device.c (renamed from src/libudev-device.c)0
-rw-r--r--src/udev/src/libudev-enumerate.c (renamed from src/libudev-enumerate.c)0
-rw-r--r--src/udev/src/libudev-list.c (renamed from src/libudev-list.c)0
-rw-r--r--src/udev/src/libudev-monitor.c (renamed from src/libudev-monitor.c)0
-rw-r--r--src/udev/src/libudev-private.h (renamed from src/libudev-private.h)0
-rw-r--r--src/udev/src/libudev-queue-private.c (renamed from src/libudev-queue-private.c)0
-rw-r--r--src/udev/src/libudev-queue.c (renamed from src/libudev-queue.c)0
-rw-r--r--src/udev/src/libudev-selinux-private.c (renamed from src/libudev-selinux-private.c)0
-rw-r--r--src/udev/src/libudev-util-private.c (renamed from src/libudev-util-private.c)0
-rw-r--r--src/udev/src/libudev-util.c (renamed from src/libudev-util.c)0
-rw-r--r--src/udev/src/libudev.c (renamed from src/libudev.c)0
-rw-r--r--src/udev/src/libudev.h (renamed from src/libudev.h)0
-rw-r--r--src/udev/src/libudev.pc.in (renamed from src/libudev.pc.in)0
-rw-r--r--src/udev/src/mtd_probe/75-probe_mtd.rules (renamed from src/mtd_probe/75-probe_mtd.rules)0
-rw-r--r--src/udev/src/mtd_probe/mtd_probe.c (renamed from src/mtd_probe/mtd_probe.c)0
-rw-r--r--src/udev/src/mtd_probe/mtd_probe.h (renamed from src/mtd_probe/mtd_probe.h)0
-rw-r--r--src/udev/src/mtd_probe/probe_smartmedia.c (renamed from src/mtd_probe/probe_smartmedia.c)0
-rw-r--r--src/udev/src/rule_generator/75-cd-aliases-generator.rules (renamed from src/rule_generator/75-cd-aliases-generator.rules)0
-rw-r--r--src/udev/src/rule_generator/75-persistent-net-generator.rules (renamed from src/rule_generator/75-persistent-net-generator.rules)0
-rw-r--r--src/udev/src/rule_generator/rule_generator.functions (renamed from src/rule_generator/rule_generator.functions)0
-rw-r--r--src/udev/src/rule_generator/write_cd_rules (renamed from src/rule_generator/write_cd_rules)0
-rw-r--r--src/udev/src/rule_generator/write_net_rules (renamed from src/rule_generator/write_net_rules)0
-rw-r--r--src/udev/src/scsi_id/.gitignore (renamed from src/scsi_id/.gitignore)0
-rw-r--r--src/udev/src/scsi_id/README (renamed from src/scsi_id/README)0
-rw-r--r--src/udev/src/scsi_id/scsi.h (renamed from src/scsi_id/scsi.h)0
-rw-r--r--src/udev/src/scsi_id/scsi_id.8 (renamed from src/scsi_id/scsi_id.8)0
-rw-r--r--src/udev/src/scsi_id/scsi_id.c (renamed from src/scsi_id/scsi_id.c)0
-rw-r--r--src/udev/src/scsi_id/scsi_id.h (renamed from src/scsi_id/scsi_id.h)0
-rw-r--r--src/udev/src/scsi_id/scsi_serial.c (renamed from src/scsi_id/scsi_serial.c)0
-rw-r--r--src/udev/src/sd-daemon.c530
-rw-r--r--src/udev/src/sd-daemon.h282
-rw-r--r--src/udev/src/test-libudev.c (renamed from src/test-libudev.c)0
-rw-r--r--src/udev/src/test-udev.c (renamed from src/test-udev.c)0
-rw-r--r--src/udev/src/udev-builtin-blkid.c (renamed from src/udev-builtin-blkid.c)0
-rw-r--r--src/udev/src/udev-builtin-firmware.c (renamed from src/udev-builtin-firmware.c)0
-rw-r--r--src/udev/src/udev-builtin-hwdb.c (renamed from src/udev-builtin-hwdb.c)0
-rw-r--r--src/udev/src/udev-builtin-input_id.c (renamed from src/udev-builtin-input_id.c)0
-rw-r--r--src/udev/src/udev-builtin-kmod.c (renamed from src/udev-builtin-kmod.c)0
-rw-r--r--src/udev/src/udev-builtin-path_id.c (renamed from src/udev-builtin-path_id.c)0
-rw-r--r--src/udev/src/udev-builtin-usb_id.c (renamed from src/udev-builtin-usb_id.c)0
-rw-r--r--src/udev/src/udev-builtin.c (renamed from src/udev-builtin.c)0
-rw-r--r--src/udev/src/udev-control.socket (renamed from src/udev-control.socket)0
-rw-r--r--src/udev/src/udev-ctrl.c (renamed from src/udev-ctrl.c)0
-rw-r--r--src/udev/src/udev-event.c (renamed from src/udev-event.c)0
-rw-r--r--src/udev/src/udev-kernel.socket (renamed from src/udev-kernel.socket)0
-rw-r--r--src/udev/src/udev-node.c (renamed from src/udev-node.c)0
-rw-r--r--src/udev/src/udev-rules.c (renamed from src/udev-rules.c)0
-rw-r--r--src/udev/src/udev-settle.service.in (renamed from src/udev-settle.service.in)0
-rw-r--r--src/udev/src/udev-trigger.service.in (renamed from src/udev-trigger.service.in)0
-rw-r--r--src/udev/src/udev-watch.c (renamed from src/udev-watch.c)0
-rw-r--r--src/udev/src/udev.conf (renamed from src/udev.conf)0
-rw-r--r--src/udev/src/udev.h (renamed from src/udev.h)0
-rw-r--r--src/udev/src/udev.pc.in (renamed from src/udev.pc.in)0
-rw-r--r--src/udev/src/udev.service.in (renamed from src/udev.service.in)0
-rw-r--r--src/udev/src/udev.xml (renamed from src/udev.xml)0
-rw-r--r--src/udev/src/udevadm-control.c (renamed from src/udevadm-control.c)0
-rw-r--r--src/udev/src/udevadm-info.c (renamed from src/udevadm-info.c)0
-rw-r--r--src/udev/src/udevadm-monitor.c (renamed from src/udevadm-monitor.c)0
-rw-r--r--src/udev/src/udevadm-settle.c (renamed from src/udevadm-settle.c)0
-rw-r--r--src/udev/src/udevadm-test-builtin.c (renamed from src/udevadm-test-builtin.c)0
-rw-r--r--src/udev/src/udevadm-test.c (renamed from src/udevadm-test.c)0
-rw-r--r--src/udev/src/udevadm-trigger.c (renamed from src/udevadm-trigger.c)0
-rw-r--r--src/udev/src/udevadm.c (renamed from src/udevadm.c)0
-rw-r--r--src/udev/src/udevadm.xml (renamed from src/udevadm.xml)0
-rw-r--r--src/udev/src/udevd.c (renamed from src/udevd.c)0
-rw-r--r--src/udev/src/udevd.xml (renamed from src/udevd.xml)0
-rw-r--r--src/udev/src/v4l_id/60-persistent-v4l.rules (renamed from src/v4l_id/60-persistent-v4l.rules)0
-rw-r--r--src/udev/src/v4l_id/v4l_id.c (renamed from src/v4l_id/v4l_id.c)0
-rw-r--r--src/udev/test/.gitignore (renamed from test/.gitignore)0
-rwxr-xr-xsrc/udev/test/rule-syntax-check.py (renamed from test/rule-syntax-check.py)0
-rwxr-xr-xsrc/udev/test/rules-test.sh (renamed from test/rules-test.sh)0
-rw-r--r--src/udev/test/sys.tar.xz (renamed from test/sys.tar.xz)bin165116 -> 165116 bytes
-rwxr-xr-xsrc/udev/test/udev-test.pl (renamed from test/udev-test.pl)0
-rw-r--r--src/umount.c644
-rw-r--r--src/umount.h33
-rw-r--r--src/unit-name.c448
-rw-r--r--src/unit-name.h57
-rw-r--r--src/unit.c2676
-rw-r--r--src/unit.h562
-rw-r--r--src/update-utmp.c423
-rw-r--r--src/user.conf17
-rw-r--r--src/utf8.c214
-rw-r--r--src/utf8.h33
-rw-r--r--src/util.c6256
-rw-r--r--src/util.h544
-rw-r--r--src/utmp-wtmp.c430
-rw-r--r--src/utmp-wtmp.h38
l---------src/vconsole/Makefile1
-rw-r--r--src/vconsole/vconsole-setup.c459
-rw-r--r--src/virt.c292
-rw-r--r--src/virt.h38
-rw-r--r--sysctl.d/.gitignore1
l---------sysctl.d/Makefile1
-rw-r--r--sysctl.d/coredump.conf.in10
-rw-r--r--test/Makefile7
-rw-r--r--test/a.service7
-rw-r--r--test/b.service6
-rw-r--r--test/c.service6
-rw-r--r--test/d.service8
-rw-r--r--test/e.service8
-rw-r--r--test/f.service5
-rw-r--r--test/g.service6
-rw-r--r--test/h.service6
l---------tmpfiles.d/Makefile1
-rw-r--r--tmpfiles.d/legacy.conf22
-rw-r--r--tmpfiles.d/systemd.conf25
-rw-r--r--tmpfiles.d/tmp.conf12
-rw-r--r--tmpfiles.d/x11.conf18
-rw-r--r--units/.gitignore42
l---------units/Makefile1
-rw-r--r--units/basic.target14
-rw-r--r--units/bluetooth.target12
-rw-r--r--units/console-shell.service.m447
-rw-r--r--units/cryptsetup.target11
-rw-r--r--units/dev-hugepages.mount17
-rw-r--r--units/dev-mqueue.mount17
-rw-r--r--units/emergency.service31
-rw-r--r--units/emergency.target14
l---------units/fedora/Makefile1
-rw-r--r--units/fedora/halt-local.service20
-rw-r--r--units/fedora/prefdm.service21
-rw-r--r--units/fedora/rc-local.service19
-rw-r--r--units/final.target14
-rw-r--r--units/frugalware/display-manager.service16
-rw-r--r--units/fsck-root.service.in23
-rw-r--r--units/fsck@.service.in20
-rw-r--r--units/getty.target9
-rw-r--r--units/getty@.service.m458
-rw-r--r--units/graphical.target18
-rw-r--r--units/halt.service.in16
-rw-r--r--units/halt.target18
-rw-r--r--units/http-daemon.target14
-rw-r--r--units/kexec.service.in16
-rw-r--r--units/kexec.target18
-rw-r--r--units/local-fs-pre.target11
-rw-r--r--units/local-fs.target13
-rw-r--r--units/mageia/prefdm.service21
-rw-r--r--units/mail-transfer-agent.target14
-rw-r--r--units/mandriva/prefdm.service21
-rw-r--r--units/multi-user.target18
-rw-r--r--units/network.target11
-rw-r--r--units/nss-lookup.target15
-rw-r--r--units/plymouth-halt.service18
-rw-r--r--units/plymouth-kexec.service18
-rw-r--r--units/plymouth-poweroff.service18
-rw-r--r--units/plymouth-quit-wait.service15
-rw-r--r--units/plymouth-quit.service15
-rw-r--r--units/plymouth-read-write.service16
-rw-r--r--units/plymouth-reboot.service18
-rw-r--r--units/plymouth-start.service22
-rw-r--r--units/poweroff.service.in16
-rw-r--r--units/poweroff.target18
-rw-r--r--units/printer.target12
-rw-r--r--units/proc-sys-fs-binfmt_misc.automount15
-rw-r--r--units/proc-sys-fs-binfmt_misc.mount15
-rw-r--r--units/quotacheck.service.in19
-rw-r--r--units/quotaon.service18
-rw-r--r--units/reboot.service.in16
-rw-r--r--units/reboot.target18
-rw-r--r--units/remote-fs-pre.target12
-rw-r--r--units/remote-fs.target14
-rw-r--r--units/remount-rootfs.service19
-rw-r--r--units/rescue.service.m443
-rw-r--r--units/rescue.target17
-rw-r--r--units/rpcbind.target14
-rw-r--r--units/serial-getty@.service.m450
-rw-r--r--units/shutdown.target13
-rw-r--r--units/sigpwr.target11
-rw-r--r--units/smartcard.target12
-rw-r--r--units/sockets.target11
-rw-r--r--units/sound.target12
-rw-r--r--units/suse/halt-local.service20
-rw-r--r--units/suse/rc-local.service19
-rw-r--r--units/swap.target11
-rw-r--r--units/sys-fs-fuse-connections.mount18
-rw-r--r--units/sys-kernel-config.mount18
-rw-r--r--units/sys-kernel-debug.mount17
-rw-r--r--units/sysinit.target15
-rw-r--r--units/syslog.socket40
-rw-r--r--units/syslog.target19
-rw-r--r--units/systemd-ask-password-console.path18
-rw-r--r--units/systemd-ask-password-console.service.in17
-rw-r--r--units/systemd-ask-password-plymouth.path19
-rw-r--r--units/systemd-ask-password-plymouth.service.in18
-rw-r--r--units/systemd-ask-password-wall.path16
-rw-r--r--units/systemd-ask-password-wall.service.in15
-rw-r--r--units/systemd-binfmt.service.in22
-rw-r--r--units/systemd-hostnamed.service.in17
-rw-r--r--units/systemd-initctl.service.in16
-rw-r--r--units/systemd-initctl.socket17
-rw-r--r--units/systemd-journald.service.in25
-rw-r--r--units/systemd-journald.socket27
-rw-r--r--units/systemd-localed.service.in17
-rw-r--r--units/systemd-logind.service.in21
-rw-r--r--units/systemd-modules-load.service.in23
-rw-r--r--units/systemd-random-seed-load.service.in18
-rw-r--r--units/systemd-random-seed-save.service.in17
-rw-r--r--units/systemd-readahead-collect.service.in22
-rw-r--r--units/systemd-readahead-done.service.in20
-rw-r--r--units/systemd-readahead-done.timer19
-rw-r--r--units/systemd-readahead-replay.service.in22
-rw-r--r--units/systemd-remount-api-vfs.service.in19
-rw-r--r--units/systemd-shutdownd.service.in16
-rw-r--r--units/systemd-shutdownd.socket19
-rw-r--r--units/systemd-sysctl.service.in24
-rw-r--r--units/systemd-timedated.service.in17
-rw-r--r--units/systemd-tmpfiles-clean.service.in22
-rw-r--r--units/systemd-tmpfiles-clean.timer13
-rw-r--r--units/systemd-tmpfiles-setup.service.in22
-rw-r--r--units/systemd-update-utmp-runlevel.service.in16
-rw-r--r--units/systemd-update-utmp-shutdown.service.in16
-rw-r--r--units/systemd-user-sessions.service.in16
-rw-r--r--units/systemd-vconsole-setup.service.in18
-rw-r--r--units/time-sync.target14
-rw-r--r--units/tmp.mount16
-rw-r--r--units/umount.target13
-rw-r--r--units/user/.gitignore1
l---------units/user/Makefile1
-rw-r--r--units/user/default.target11
-rw-r--r--units/user/exit.service.in18
-rw-r--r--units/user/exit.target18
-rw-r--r--units/user@.service.in19
741 files changed, 134817 insertions, 2710 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 000000000..9d9f8cd17
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,7 @@
+; Sets emacs variables based on mode.
+; A list of (major-mode . ((var1 . value1) (var2 . value2)))
+; Mode can be nil, which gives default values.
+
+((nil . ((indent-tabs-mode . nil)
+ (tab-width . 8)))
+)
diff --git a/.gitignore b/.gitignore
index fa3500ba9..f36dd8a81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,40 +1,109 @@
+/test-journal-send
+/systemd-multi-seat-x
+/systemd-cgtop
+/systemd-coredump
+/systemd-cat
+/systemd-rc-local-generator
+/libsystemd-id128.pc
+journalctl
+systemd-journald
+test-id128
+test-journal
+test-install
+org.freedesktop.hostname1.xml
+org.freedesktop.locale1.xml
+libsystemd-daemon.pc
+libsystemd-login.pc
+test-login
+loginctl
+systemd-localed
+systemd-timedated
+org.freedesktop.timedate1.xml
+systemd-logind
+systemd-uaccess
+systemd-hostnamed
+systemd-binfmt
+systemd-getty-generator
+systemd-nspawn
+systemd-stdio-bridge
+systemd-machine-id-setup
+systemd-detect-virt
+systemd-sysctl
+test-strv
+systemd-ac-power
+systemd-timestamp
+systemd-cryptsetup
+systemd-cryptsetup-generator
+systemd-tty-ask-password-agent
+systemd-fsck
+systemd-quotacheck
+systemd-user-sessions
+systemd-shutdown
+systemd-tmpfiles
+systemd-readahead-collect
+systemd-readahead-replay
+systemd-reply-password
+systemd-gnome-ask-password-agent
+systemd-ask-password
+systemd-kmsg-syslogd
+systemd-remount-api-vfs
+test-hostname
+systemd-modules-load
+systemd-vconsole-setup
+systemd-shutdownd
+systemd-random-seed
+systemd-update-utmp
+test-env-replace
+systemd-cgls
+systemd.pc
+test-cgroup
+.libs/
+systemd-notify
+test-daemon
+systemd-install
+org.freedesktop.systemd1.*.xml
+test-ns
+test-loopback
+systemd-cgroups-agent
+systemd-initctl
+/systemd
+test-engine
+test-job-type
+systemd-stdout-syslog-bridge
+systemctl
+systemadm
+.dirstamp
+*.1
+*.3
+*.5
+*.7
+*.8
+*.html
*~
*.o
-*.a
*.lo
+*.a
*.la
-.libs
-.deps
-.dirstamp
-Makefile
+.deps/
Makefile.in
-/aclocal.m4
-/autom4te.cache
-/config.h
-/config.h.in
-/config.log
-/config.status
-/config.guess
-/config.sub
-/libtool
-/ltmain.sh
-/install-sh
-/missing
-/configure
-/stamp-h1
-/depcomp
-/gtk-doc.make
-/build-aux
-/udev-test-install
-/udevd
-/udevadm
-/test-udev
-/test-libudev
-/accelerometer
-/ata_id
-/cdrom_id
-/collect
-/mtd_probe
-/v4l_id
-/keymap
-/scsi_id
+aclocal.m4
+*.cache
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+missing
+stamp-*
+*.stamp
+/Makefile
+ltmain.sh
+*.tar.xz
+*.tar.gz
+*.tar.bz2
+libtool
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 000000000..04b1c6cba
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,4 @@
+Kay Sievers <kay.sievers@vrfy.org> <kay.sievers@suse.de>
+Robert Gerus <ar@bash.org.pl> Robert "arachnist" Gerus <ar@bash.org.pl>
+Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Zbyszek Szmek <zbyszek@in.waw.pl>
+Fabiano Fidêncio <fabianofidencio@gmail.com> Fabiano Fidencio <fidencio@profusion.mobi>
diff --git a/CODING_STYLE b/CODING_STYLE
new file mode 100644
index 000000000..9341b48d4
--- /dev/null
+++ b/CODING_STYLE
@@ -0,0 +1,27 @@
+
+- 8ch indent, no tabs
+
+- structs in MixedCase, variables, functions in lower_case
+
+- the destructors always unregister the object from the next bigger
+ object, not the other way around
+
+- to minimize strict aliasing violations we prefer unions over casting
+
+- for robustness reasons destructors should be able to destruct
+ half-initialized objects, too
+
+- error codes are returned as negative Exxx. i.e. return -EINVAL. There
+ are some exceptions: for constructors its is OK to return NULL on
+ OOM. For lookup functions NULL is fine too for "not found".
+
+- Do not issue NSS requests (that includes user name and host name
+ lookups) from the main daemon as this might trigger deadlocks when
+ we those lookups involve synchronously talking to services that we
+ would need to start up.
+
+- Do not access any directories outside of /etc/, /dev, /lib from the
+ init daemon to avoid deadlocks with the automounter.
+
+- Don't synchronously talk to any other service, due to risk of
+ deadlocks.
diff --git a/DISTRO_PORTING b/DISTRO_PORTING
new file mode 100644
index 000000000..2b08bf811
--- /dev/null
+++ b/DISTRO_PORTING
@@ -0,0 +1,58 @@
+Porting systemd To New Distributions
+
+HOWTO:
+ You need to make the follow changes to adapt systemd to your
+ distribution:
+
+ 0) Make your distribution recognized via the autoconf checks
+ in configure.ac. Grep for the word "fedora" (case
+ insensitively) and you should be able to find the places where
+ you need to add/change things.
+
+ 1) Patch src/hostname-setup.c so that systemd knows where to
+ read your host name from. You might also want to update
+ status_welcome() in util.c.
+
+ 2) Check the unit files in units/ if they match your
+ distribution. Most likely you will have to make additions to
+ units/*.m4 and create a copy of units/fedora/ with changes for
+ your distribution.
+
+ 3) Adjust Makefile.am to register the unit files you added in
+ step 2. Also you might need to update the m4 invocation in
+ Makefile.am. Grep for the word "fedora" (case insensitively)
+ and you should be able to find the places where you need to
+ add/change things.
+
+ 4) Try it out. Play around with 'systemd --test --system' for
+ a test run of systemd without booting. This will read the unit
+ files and print the initial transaction it would execute
+ during boot-up. This will also inform you about ordering loops
+ and suchlike.
+
+CONTRIBUTING UPSTREAM:
+ We are interested in merging your changes upstream, if they
+ are for a big, and well-known distribution. Unfortunately we
+ don't have the time and resources to maintain
+ distribution-specific patches for all distributions on the
+ planet, hence please do not send us patches that add systemd
+ support for non-mainstream or niche distributions.
+
+ Thank you for understanding.
+
+BE CONSIDERATE:
+ We'd like to keep differences between the distributions
+ minimal. This both simplifies our maintenance work, as well
+ as it helps administrators to move from one distribution to
+ another.
+
+ Hence we'd like to ask you to keep your changes minimal, and
+ not rename any units without a very good reason (if you need a
+ particular name for compatibility reasons, consider using
+ alias names via symlinks). Before you make changes that change
+ semantics from upstream, please talk to us!
+
+ In SysV almost every distribution uses a different
+ nomenclature and different locations for the boot-up
+ scripts. We'd like to avoid chaos like that with systemd right
+ from the beginning. So please, be considerate!
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..d511905c1
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Makefile.am b/Makefile.am
index 1c7f86b08..219d8ded8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,712 +1,2444 @@
-# Copyright (C) 2008-2012 Kay Sievers <kay.sievers@vrfy.org>
-# Copyright (C) 2009 Diego Elio 'Flameeyes' Pettenò <flameeyes@gmail.com>
+# This file is part of systemd.
+#
+# Copyright 2011 Lennart Poettering
+# Copyright 2011 Kay Sievers
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with systemd; If not, see <http://www.gnu.org/licenses/>.
+
+ACLOCAL_AMFLAGS = -I m4
+
+SUBDIRS = po
+
+LIBSYSTEMD_LOGIN_CURRENT=2
+LIBSYSTEMD_LOGIN_REVISION=1
+LIBSYSTEMD_LOGIN_AGE=2
+
+LIBSYSTEMD_DAEMON_CURRENT=0
+LIBSYSTEMD_DAEMON_REVISION=1
+LIBSYSTEMD_DAEMON_AGE=0
+
+LIBSYSTEMD_ID128_CURRENT=0
+LIBSYSTEMD_ID128_REVISION=3
+LIBSYSTEMD_ID128_AGE=0
+
+LIBSYSTEMD_JOURNAL_CURRENT=0
+LIBSYSTEMD_JOURNAL_REVISION=3
+LIBSYSTEMD_JOURNAL_AGE=0
+
+# Dirs of external packages
+dbuspolicydir=@dbuspolicydir@
+dbussessionservicedir=@dbussessionservicedir@
+dbussystemservicedir=@dbussystemservicedir@
+dbusinterfacedir=@dbusinterfacedir@
+udevrulesdir=@udevrulesdir@
+pamlibdir=@pamlibdir@
+pkgconfigdatadir=$(datadir)/pkgconfig
+pkgconfiglibdir=$(libdir)/pkgconfig
+polkitpolicydir=$(datadir)/polkit-1/actions
+bashcompletiondir=$(sysconfdir)/bash_completion.d
+
+# Our own, non-special dirs
+pkgsysconfdir=$(sysconfdir)/systemd
+userunitdir=$(prefix)/lib/systemd/user
+tmpfilesdir=$(prefix)/lib/tmpfiles.d
+sysctldir=$(prefix)/lib/sysctl.d
+usergeneratordir=$(pkglibexecdir)/user-generators
+pkgincludedir=$(includedir)/systemd
+
+# And these are the special ones for /
+rootprefix=@rootprefix@
+rootbindir=$(rootprefix)/bin
+rootlibexecdir=$(rootprefix)/lib/systemd
+systemgeneratordir=$(rootlibexecdir)/system-generators
+systemshutdowndir=$(rootlibexecdir)/system-shutdown
+systemunitdir=$(rootprefix)/lib/systemd/system
-SUBDIRS = .
+CLEANFILES =
+EXTRA_DIST =
+INSTALL_EXEC_HOOKS =
+UNINSTALL_EXEC_HOOKS =
+INSTALL_DATA_HOOKS =
+pkginclude_HEADERS =
+lib_LTLIBRARIES =
+pkgconfiglib_DATA =
+polkitpolicy_in_files =
+dist_udevrules_DATA =
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+AM_CPPFLAGS = \
+ -include $(top_builddir)/config.h \
+ -DSYSTEM_CONFIG_FILE=\"$(pkgsysconfdir)/system.conf\" \
+ -DSYSTEM_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/system\" \
+ -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" \
+ -DSYSTEM_SYSVINIT_PATH=\"$(SYSTEM_SYSVINIT_PATH)\" \
+ -DSYSTEM_SYSVRCND_PATH=\"$(SYSTEM_SYSVRCND_PATH)\" \
+ -DUSER_CONFIG_FILE=\"$(pkgsysconfdir)/user.conf\" \
+ -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \
+ -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \
+ -DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \
+ -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \
+ -DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \
+ -DSYSTEMCTL_BINARY_PATH=\"$(rootbindir)/systemctl\" \
+ -DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(rootbindir)/systemd-tty-ask-password-agent\" \
+ -DSYSTEMD_STDIO_BRIDGE_BINARY_PATH=\"$(bindir)/systemd-stdio-bridge\" \
+ -DROOTPREFIX=\"$(rootprefix)\" \
+ -DRUNTIME_DIR=\"/run\" \
+ -DRANDOM_SEED=\"$(localstatedir)/lib/random-seed\" \
+ -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \
+ -DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \
+ -DUSER_GENERATOR_PATH=\"$(usergeneratordir)\" \
+ -DSYSTEM_SHUTDOWN_PATH=\"$(systemshutdowndir)\" \
+ -DSYSTEMD_KBD_MODEL_MAP=\"$(pkgdatadir)/kbd-model-map\" \
+ -DX_SERVER=\"$(bindir)/X\" \
+ -I $(top_srcdir)/src \
+ -I $(top_srcdir)/src/readahead \
+ -I $(top_srcdir)/src/login \
+ -I $(top_srcdir)/src/journal \
+ -I $(top_srcdir)/src/systemd
+
+AM_CFLAGS = $(WARNINGFLAGS)
+AM_LDFLAGS = $(GCLDFLAGS)
+
+if TARGET_GENTOO
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/usr/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/usr/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_ARCH
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/usr/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/usr/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_FRUGALWARE
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/usr/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/usr/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_MANDRIVA
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_MEEGO
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_ANGSTROM
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/usr/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/usr/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+if TARGET_MAGEIA
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/bin/setfont\" \
+ -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
+AM_CPPFLAGS += \
+ -DKBD_LOADKEYS=\"/bin/loadkeys\" \
+ -DKBD_SETFONT=\"/bin/setfont\" \
+ -DDEFAULT_FONT=\"latarcyrheb-sun16\"
+endif
+endif
+endif
+endif
+endif
+endif
+endif
-AM_MAKEFLAGS = --no-print-directory
+rootbin_PROGRAMS = \
+ systemctl \
+ systemd-notify \
+ systemd-ask-password \
+ systemd-tty-ask-password-agent \
+ systemd-tmpfiles \
+ systemd-machine-id-setup
-LIBUDEV_CURRENT=13
-LIBUDEV_REVISION=2
-LIBUDEV_AGE=13
+bin_PROGRAMS = \
+ systemd-cgls \
+ systemd-cgtop \
+ systemd-stdio-bridge \
+ systemd-nspawn
+
+dist_bin_SCRIPTS = \
+ src/systemd-analyze
+
+rootlibexec_PROGRAMS = \
+ systemd \
+ systemd-cgroups-agent \
+ systemd-initctl \
+ systemd-update-utmp \
+ systemd-shutdownd \
+ systemd-shutdown \
+ systemd-modules-load \
+ systemd-remount-api-vfs \
+ systemd-reply-password \
+ systemd-fsck \
+ systemd-timestamp \
+ systemd-ac-power \
+ systemd-detect-virt \
+ systemd-sysctl
+
+systemgenerator_PROGRAMS = \
+ systemd-getty-generator
+
+noinst_PROGRAMS = \
+ test-engine \
+ test-job-type \
+ test-ns \
+ test-loopback \
+ test-hostname \
+ test-daemon \
+ test-cgroup \
+ test-env-replace \
+ test-strv \
+ test-install
+
+dist_pkgsysconf_DATA = \
+ src/system.conf \
+ src/user.conf
+
+dist_dbuspolicy_DATA = \
+ src/org.freedesktop.systemd1.conf
+
+dist_dbussystemservice_DATA = \
+ src/org.freedesktop.systemd1.service
+
+nodist_udevrules_DATA = \
+ src/99-systemd.rules
+
+dbusinterface_DATA = \
+ org.freedesktop.systemd1.Manager.xml \
+ org.freedesktop.systemd1.Job.xml \
+ org.freedesktop.systemd1.Unit.xml \
+ org.freedesktop.systemd1.Service.xml \
+ org.freedesktop.systemd1.Socket.xml \
+ org.freedesktop.systemd1.Timer.xml \
+ org.freedesktop.systemd1.Target.xml \
+ org.freedesktop.systemd1.Device.xml \
+ org.freedesktop.systemd1.Mount.xml \
+ org.freedesktop.systemd1.Automount.xml \
+ org.freedesktop.systemd1.Snapshot.xml \
+ org.freedesktop.systemd1.Swap.xml \
+ org.freedesktop.systemd1.Path.xml
+
+dist_bashcompletion_DATA = \
+ src/systemd-bash-completion.sh
+
+dist_tmpfiles_DATA = \
+ tmpfiles.d/systemd.conf \
+ tmpfiles.d/tmp.conf \
+ tmpfiles.d/x11.conf
+
+if HAVE_SYSV_COMPAT
+dist_tmpfiles_DATA += \
+ tmpfiles.d/legacy.conf
+endif
-LIBGUDEV_CURRENT=1
-LIBGUDEV_REVISION=1
-LIBGUDEV_AGE=1
+dist_systemunit_DATA = \
+ units/graphical.target \
+ units/multi-user.target \
+ units/emergency.service \
+ units/emergency.target \
+ units/sysinit.target \
+ units/basic.target \
+ units/getty.target \
+ units/halt.target \
+ units/kexec.target \
+ units/local-fs.target \
+ units/local-fs-pre.target \
+ units/remote-fs.target \
+ units/remote-fs-pre.target \
+ units/network.target \
+ units/nss-lookup.target \
+ units/mail-transfer-agent.target \
+ units/http-daemon.target \
+ units/poweroff.target \
+ units/reboot.target \
+ units/rescue.target \
+ units/rpcbind.target \
+ units/time-sync.target \
+ units/shutdown.target \
+ units/final.target \
+ units/umount.target \
+ units/sigpwr.target \
+ units/sockets.target \
+ units/swap.target \
+ units/systemd-initctl.socket \
+ units/systemd-shutdownd.socket \
+ units/syslog.socket \
+ units/dev-hugepages.mount \
+ units/dev-mqueue.mount \
+ units/sys-kernel-config.mount \
+ units/sys-kernel-debug.mount \
+ units/sys-fs-fuse-connections.mount \
+ units/tmp.mount \
+ units/remount-rootfs.service \
+ units/printer.target \
+ units/sound.target \
+ units/bluetooth.target \
+ units/smartcard.target \
+ units/systemd-tmpfiles-clean.timer \
+ units/quotaon.service \
+ units/systemd-ask-password-wall.path \
+ units/systemd-ask-password-console.path \
+ units/syslog.target
+
+nodist_systemunit_DATA = \
+ units/getty@.service \
+ units/serial-getty@.service \
+ units/console-shell.service \
+ units/systemd-initctl.service \
+ units/systemd-shutdownd.service \
+ units/systemd-modules-load.service \
+ units/systemd-remount-api-vfs.service \
+ units/systemd-update-utmp-runlevel.service \
+ units/systemd-update-utmp-shutdown.service \
+ units/systemd-tmpfiles-setup.service \
+ units/systemd-tmpfiles-clean.service \
+ units/systemd-ask-password-wall.service \
+ units/systemd-ask-password-console.service \
+ units/systemd-sysctl.service \
+ units/halt.service \
+ units/poweroff.service \
+ units/reboot.service \
+ units/kexec.service \
+ units/fsck@.service \
+ units/fsck-root.service \
+ units/rescue.service \
+ units/user@.service
+
+dist_userunit_DATA = \
+ units/user/default.target \
+ units/user/exit.target
+
+nodist_userunit_DATA = \
+ units/user/exit.service
-AM_CPPFLAGS = \
- -include $(top_builddir)/config.h \
- -I$(top_srcdir)/src \
- -DSYSCONFDIR=\""$(sysconfdir)"\" \
- -DPKGLIBEXECDIR=\""$(libexecdir)/udev"\"
+EXTRA_DIST += \
+ units/getty@.service.m4 \
+ units/serial-getty@.service.m4 \
+ units/console-shell.service.m4 \
+ units/rescue.service.m4 \
+ units/systemd-initctl.service.in \
+ units/systemd-shutdownd.service.in \
+ units/systemd-modules-load.service.in \
+ units/systemd-remount-api-vfs.service.in \
+ units/systemd-update-utmp-runlevel.service.in \
+ units/systemd-update-utmp-shutdown.service.in \
+ units/systemd-tmpfiles-setup.service.in \
+ units/systemd-tmpfiles-clean.service.in \
+ units/systemd-ask-password-wall.service.in \
+ units/systemd-ask-password-console.service.in \
+ units/systemd-sysctl.service.in \
+ units/halt.service.in \
+ units/poweroff.service.in \
+ units/reboot.service.in \
+ units/kexec.service.in \
+ units/user/exit.service.in \
+ units/fsck@.service.in \
+ units/fsck-root.service.in \
+ units/user@.service.in \
+ src/systemd.pc.in \
+ introspect.awk \
+ src/99-systemd.rules.in \
+ man/custom-html.xsl
+
+if TARGET_FEDORA
+dist_systemunit_DATA += \
+ units/fedora/prefdm.service \
+ units/fedora/rc-local.service \
+ units/fedora/halt-local.service
+systemgenerator_PROGRAMS += \
+ systemd-rc-local-generator
+endif
-AM_CFLAGS = \
- ${my_CFLAGS} \
- -fvisibility=hidden \
- -ffunction-sections \
- -fdata-sections
+if TARGET_MANDRIVA
+dist_systemunit_DATA += \
+ units/mandriva/prefdm.service \
+ units/fedora/rc-local.service \
+ units/fedora/halt-local.service
+systemgenerator_PROGRAMS += \
+ systemd-rc-local-generator
+endif
-AM_LDFLAGS = \
- -Wl,--gc-sections \
- -Wl,--as-needed
+if TARGET_FRUGALWARE
+dist_systemunit_DATA += \
+ units/frugalware/display-manager.service
+endif
-DISTCHECK_CONFIGURE_FLAGS = \
- --enable-debug \
- --enable-rule_generator \
- --enable-floppy \
- --with-selinux \
- --enable-gtk-doc \
- --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)
-
-BUILT_SOURCES =
-EXTRA_DIST =
-CLEANFILES =
-INSTALL_EXEC_HOOKS =
-INSTALL_DATA_HOOKS =
-UNINSTALL_EXEC_HOOKS =
-DISTCHECK_HOOKS =
-DISTCLEAN_LOCAL_HOOKS =
+if TARGET_SUSE
+dist_systemunit_DATA += \
+ units/suse/rc-local.service \
+ units/suse/halt-local.service
+systemgenerator_PROGRAMS += \
+ systemd-rc-local-generator
+endif
-udevhomedir = $(libexecdir)/udev
-udevhome_SCRIPTS =
-dist_udevhome_SCRIPTS =
-dist_udevhome_DATA =
-dist_man_MANS =
+if TARGET_MAGEIA
+dist_systemunit_DATA += \
+ units/mageia/prefdm.service \
+ units/fedora/rc-local.service \
+ units/fedora/halt-local.service
+systemgenerator_PROGRAMS += \
+ systemd-rc-local-generator
+endif
-SED_PROCESS = \
- $(AM_V_GEN)$(MKDIR_P) $(dir $@) && $(SED) \
- -e 's,@VERSION\@,$(VERSION),g' \
- -e 's,@prefix\@,$(prefix),g' \
- -e 's,@rootprefix\@,$(rootprefix),g' \
- -e 's,@exec_prefix\@,$(exec_prefix),g' \
- -e 's,@libdir\@,$(libdir),g' \
- -e 's,@includedir\@,$(includedir),g' \
- -e 's,@bindir\@,$(bindir),g' \
- -e 's,@pkglibexecdir\@,$(libexecdir)/udev,g' \
- < $< > $@ || rm $@
+if HAVE_PLYMOUTH
+dist_systemunit_DATA += \
+ units/plymouth-start.service \
+ units/plymouth-read-write.service \
+ units/plymouth-quit.service \
+ units/plymouth-quit-wait.service \
+ units/plymouth-reboot.service \
+ units/plymouth-kexec.service \
+ units/plymouth-poweroff.service \
+ units/plymouth-halt.service \
+ units/systemd-ask-password-plymouth.path
+
+nodist_systemunit_DATA += \
+ units/systemd-ask-password-plymouth.service
-%.pc: %.pc.in Makefile
- $(SED_PROCESS)
+EXTRA_DIST += \
+ units/systemd-ask-password-plymouth.service.in
+endif
-%.rules: %.rules.in Makefile
- $(SED_PROCESS)
+dist_doc_DATA = \
+ README \
+ NEWS \
+ LICENSE \
+ DISTRO_PORTING
-%.service: %.service.in Makefile
- $(SED_PROCESS)
+pkgconfigdata_DATA = \
+ src/systemd.pc
-%.sh: %.sh.in Makefile
- $(SED_PROCESS)
- $(AM_V_GEN)chmod +x $@
+# First passed through sed, followed by intltool
+polkitpolicy_in_in_files = \
+ src/org.freedesktop.systemd1.policy.in.in
-%.pl: %.pl.in Makefile
- $(SED_PROCESS)
- $(AM_V_GEN)chmod +x $@
+nodist_polkitpolicy_DATA = \
+ $(polkitpolicy_in_files:.policy.in=.policy) \
+ $(polkitpolicy_in_in_files:.policy.in.in=.policy)
+
+EXTRA_DIST += \
+ $(polkitpolicy_in_files) \
+ $(polkitpolicy_in_in_files)
+
+@INTLTOOL_POLICY_RULE@
+
+noinst_LTLIBRARIES = \
+ libsystemd-basic.la \
+ libsystemd-core.la
+
+libsystemd_basic_la_SOURCES = \
+ src/util.c \
+ src/virt.c \
+ src/label.c \
+ src/hashmap.c \
+ src/set.c \
+ src/strv.c \
+ src/conf-parser.c \
+ src/socket-util.c \
+ src/log.c \
+ src/ratelimit.c \
+ src/exit-status.c \
+ src/utf8.c
+
+libsystemd_basic_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(SELINUX_CFLAGS)
+
+libsystemd_basic_la_LIBADD = \
+ $(SELINUX_LIBS) \
+ $(CAP_LIBS)
+
+libsystemd_core_la_SOURCES = \
+ src/unit.c \
+ src/job.c \
+ src/manager.c \
+ src/path-lookup.c \
+ src/load-fragment.c \
+ src/service.c \
+ src/automount.c \
+ src/mount.c \
+ src/swap.c \
+ src/device.c \
+ src/target.c \
+ src/snapshot.c \
+ src/socket.c \
+ src/timer.c \
+ src/path.c \
+ src/load-dropin.c \
+ src/execute.c \
+ src/utmp-wtmp.c \
+ src/dbus.c \
+ src/dbus-manager.c \
+ src/dbus-unit.c \
+ src/dbus-job.c \
+ src/dbus-service.c \
+ src/dbus-socket.c \
+ src/dbus-timer.c \
+ src/dbus-target.c \
+ src/dbus-mount.c \
+ src/dbus-automount.c \
+ src/dbus-swap.c \
+ src/dbus-snapshot.c \
+ src/dbus-device.c \
+ src/dbus-execute.c \
+ src/dbus-path.c \
+ src/cgroup.c \
+ src/mount-setup.c \
+ src/hostname-setup.c \
+ src/selinux-setup.c \
+ src/ima-setup.c \
+ src/loopback-setup.c \
+ src/kmod-setup.c \
+ src/locale-setup.c \
+ src/machine-id-setup.c \
+ src/specifier.c \
+ src/unit-name.c \
+ src/fdset.c \
+ src/namespace.c \
+ src/tcpwrap.c \
+ src/cgroup-util.c \
+ src/condition.c \
+ src/dbus-common.c \
+ src/sd-daemon.c \
+ src/install.c \
+ src/cgroup-attr.c \
+ src/sd-id128.c
+
+nodist_libsystemd_core_la_SOURCES = \
+ src/load-fragment-gperf.c \
+ src/load-fragment-gperf-nulstr.c
+
+EXTRA_DIST += \
+ src/load-fragment-gperf.gperf.m4
+
+libsystemd_core_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(UDEV_CFLAGS) \
+ $(LIBWRAP_CFLAGS) \
+ $(PAM_CFLAGS) \
+ $(AUDIT_CFLAGS) \
+ $(KMOD_CFLAGS)
+
+libsystemd_core_la_LIBADD = \
+ libsystemd-basic.la \
+ $(DBUS_LIBS) \
+ $(UDEV_LIBS) \
+ $(LIBWRAP_LIBS) \
+ $(PAM_LIBS) \
+ $(AUDIT_LIBS) \
+ $(CAP_LIBS) \
+ $(KMOD_LIBS)
+
+# This is needed because automake is buggy in how it generates the
+# rules for C programs, but not Vala programs. We therefore can't
+# list the .h files as dependencies if we want make dist to work.
+
+EXTRA_DIST += \
+ src/util.h \
+ src/virt.h \
+ src/label.h \
+ src/hashmap.h \
+ src/set.h \
+ src/strv.h \
+ src/conf-parser.h \
+ src/socket-util.h \
+ src/log.h \
+ src/ratelimit.h \
+ src/exit-status.h \
+ src/unit.h \
+ src/job.h \
+ src/manager.h \
+ src/path-lookup.h \
+ src/load-fragment.h \
+ src/service.h \
+ src/automount.h \
+ src/mount.h \
+ src/swap.h \
+ src/device.h \
+ src/target.h \
+ src/snapshot.h \
+ src/socket.h \
+ src/timer.h \
+ src/path.h \
+ src/load-dropin.h \
+ src/execute.h \
+ src/utmp-wtmp.h \
+ src/dbus.h \
+ src/dbus-manager.h \
+ src/dbus-unit.h \
+ src/dbus-job.h \
+ src/dbus-service.h \
+ src/dbus-socket.h \
+ src/dbus-timer.h \
+ src/dbus-target.h \
+ src/dbus-mount.h \
+ src/dbus-automount.h \
+ src/dbus-swap.h \
+ src/dbus-snapshot.h \
+ src/dbus-device.h \
+ src/dbus-execute.h \
+ src/dbus-path.h \
+ src/cgroup.h \
+ src/mount-setup.h \
+ src/hostname-setup.h \
+ src/selinux-setup.h \
+ src/loopback-setup.h \
+ src/kmod-setup.h \
+ src/locale-setup.h \
+ src/machine-id-setup.h \
+ src/specifier.h \
+ src/unit-name.h \
+ src/fdset.h \
+ src/namespace.h \
+ src/tcpwrap.h \
+ src/cgroup-util.h \
+ src/condition.h \
+ src/dbus-common.h \
+ src/install.h \
+ src/cgroup-attr.h \
+ src/macro.h \
+ src/def.h \
+ src/ioprio.h \
+ src/missing.h \
+ src/list.h \
+ src/securebits.h \
+ src/linux/auto_dev-ioctl.h \
+ src/linux/fanotify.h \
+ src/initreq.h \
+ src/special.h \
+ src/dbus-common.h \
+ src/bus-errors.h \
+ src/cgroup-show.h \
+ src/build.h \
+ src/shutdownd.h \
+ src/umount.h \
+ src/ask-password-api.h \
+ src/pager.h \
+ src/sysfs-show.h \
+ src/polkit.h \
+ src/dbus-loop.h \
+ src/spawn-agent.h \
+ src/acl-util.h \
+ src/logs-show.h \
+ src/utf8.h \
+ src/journal/sparse-endian.h \
+ src/ima-setup.h
+
+MANPAGES = \
+ man/systemd.1 \
+ man/systemctl.1 \
+ man/systemd-cgls.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.special.7 \
+ man/daemon.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/timezone.5 \
+ man/machine-id.5 \
+ man/locale.conf.5 \
+ man/os-release.5 \
+ man/machine-info.5 \
+ man/modules-load.d.5 \
+ man/sysctl.d.5 \
+ man/systemd-ask-password.1 \
+ man/systemd-cat.1 \
+ man/systemd-machine-id-setup.1 \
+ man/journald.conf.5 \
+ man/journalctl.1
+
+MANPAGES_ALIAS = \
+ man/reboot.8 \
+ man/poweroff.8 \
+ man/init.1
+
+man/reboot.8: man/halt.8
+man/poweroff.8: man/halt.8
+man/init.1: man/systemd.1
+
+XML_FILES = \
+ ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}}
+
+if ENABLE_MANPAGES
+man_MANS = \
+ $(MANPAGES) \
+ $(MANPAGES_ALIAS)
+
+noinst_DATA = \
+ ${XML_FILES:.xml=.html}
+endif
+
+EXTRA_DIST += \
+ $(XML_FILES) \
+ ${XML_FILES:.xml=.html} \
+ $(MANPAGES) \
+ $(MANPAGES_ALIAS)
+
+systemd_SOURCES = \
+ src/main.c
+
+systemd_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_LDADD = \
+ libsystemd-core.la
+
+test_engine_SOURCES = \
+ src/test-engine.c
+
+test_engine_CFLAGS = $(systemd_CFLAGS)
+test_engine_LDADD = $(systemd_LDADD)
+
+test_job_type_SOURCES = \
+ src/test-job-type.c
+
+test_job_type_CFLAGS = $(systemd_CFLAGS)
+test_job_type_LDADD = $(systemd_LDADD)
+
+test_ns_SOURCES = \
+ src/test-ns.c
+
+test_ns_CFLAGS = $(systemd_CFLAGS)
+test_ns_LDADD = $(systemd_LDADD)
+
+test_loopback_SOURCES = \
+ src/test-loopback.c \
+ src/loopback-setup.c
+
+test_loopback_LDADD = \
+ libsystemd-basic.la
+
+test_hostname_SOURCES = \
+ src/test-hostname.c \
+ src/hostname-setup.c
+
+test_hostname_LDADD = \
+ libsystemd-basic.la
+
+test_daemon_SOURCES = \
+ src/test-daemon.c
+
+test_daemon_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la
+
+test_cgroup_SOURCES = \
+ src/test-cgroup.c \
+ src/cgroup-util.c
+
+test_cgroup_LDADD = \
+ libsystemd-basic.la
+
+test_env_replace_SOURCES = \
+ src/test-env-replace.c
+
+test_env_replace_LDADD = \
+ libsystemd-basic.la
+
+test_strv_SOURCES = \
+ src/test-strv.c \
+ src/specifier.c
+
+test_strv_LDADD = \
+ libsystemd-basic.la
+
+test_install_SOURCES = \
+ src/test-install.c \
+ src/install.c \
+ src/path-lookup.c \
+ src/unit-name.c
+
+test_install_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+test_install_LDADD = \
+ libsystemd-basic.la
+
+systemd_initctl_SOURCES = \
+ src/initctl.c \
+ src/dbus-common.c
+
+systemd_initctl_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_initctl_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(DBUS_LIBS)
+
+systemd_update_utmp_SOURCES = \
+ src/update-utmp.c \
+ src/dbus-common.c \
+ src/utmp-wtmp.c
+
+systemd_update_utmp_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(AUDIT_CFLAGS)
+
+systemd_update_utmp_LDADD = \
+ libsystemd-basic.la \
+ $(DBUS_LIBS) \
+ $(AUDIT_LIBS)
+
+systemd_shutdownd_SOURCES = \
+ src/utmp-wtmp.c \
+ src/shutdownd.c
+
+systemd_shutdownd_CFLAGS = \
+ $(AM_CFLAGS)
+
+systemd_shutdownd_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la
+
+systemd_shutdown_SOURCES = \
+ src/mount-setup.c \
+ src/umount.c \
+ src/shutdown.c
+
+systemd_shutdown_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_shutdown_LDADD = \
+ libsystemd-basic.la \
+ $(UDEV_LIBS)
+
+systemd_modules_load_SOURCES = \
+ src/modules-load.c
+
+systemd_modules_load_CFLAGS = \
+ $(KMOD_CFLAGS)
+
+systemd_modules_load_LDADD = \
+ libsystemd-basic.la \
+ $(KMOD_LIBS)
+
+systemd_tmpfiles_SOURCES = \
+ src/tmpfiles.c
+
+systemd_tmpfiles_LDADD = \
+ libsystemd-basic.la
+
+systemd_machine_id_setup_SOURCES = \
+ src/machine-id-setup.c \
+ src/machine-id-main.c \
+ src/sd-id128.c
+
+systemd_machine_id_setup_LDADD = \
+ libsystemd-basic.la
+
+systemd_sysctl_SOURCES = \
+ src/sysctl.c
+
+systemd_sysctl_LDADD = \
+ libsystemd-basic.la
+
+systemd_fsck_SOURCES = \
+ src/fsck.c \
+ src/dbus-common.c
+
+systemd_fsck_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_fsck_LDADD = \
+ libsystemd-basic.la \
+ $(UDEV_LIBS) \
+ $(DBUS_LIBS)
+
+systemd_timestamp_SOURCES = \
+ src/timestamp.c
+
+systemd_timestamp_LDADD = \
+ libsystemd-basic.la
+
+systemd_ac_power_SOURCES = \
+ src/ac-power.c
+
+systemd_ac_power_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_ac_power_LDADD = \
+ libsystemd-basic.la \
+ $(UDEV_LIBS)
+
+systemd_detect_virt_SOURCES = \
+ src/detect-virt.c
+
+systemd_detect_virt_LDADD = \
+ libsystemd-basic.la
+
+systemd_getty_generator_SOURCES = \
+ src/getty-generator.c \
+ src/unit-name.c
+
+systemd_getty_generator_LDADD = \
+ libsystemd-basic.la
+
+systemd_rc_local_generator_SOURCES = \
+ src/rc-local-generator.c
+
+systemd_rc_local_generator_LDADD = \
+ libsystemd-basic.la
+
+systemd_remount_api_vfs_SOURCES = \
+ src/remount-api-vfs.c \
+ src/mount-setup.c \
+ src/exit-status.c
+
+systemd_remount_api_vfs_LDADD = \
+ libsystemd-basic.la
+
+systemd_cgroups_agent_SOURCES = \
+ src/cgroups-agent.c \
+ src/dbus-common.c
+
+systemd_cgroups_agent_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_cgroups_agent_LDADD = \
+ libsystemd-basic.la \
+ $(DBUS_LIBS)
+
+systemctl_SOURCES = \
+ src/systemctl.c \
+ src/utmp-wtmp.c \
+ src/dbus-common.c \
+ src/path-lookup.c \
+ src/cgroup-show.c \
+ src/cgroup-util.c \
+ src/exit-status.c \
+ src/unit-name.c \
+ src/pager.c \
+ src/install.c \
+ src/spawn-agent.c \
+ src/logs-show.c
+
+systemctl_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemctl_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ libsystemd-journal.la \
+ libsystemd-id128.la \
+ $(DBUS_LIBS)
+
+systemd_notify_SOURCES = \
+ src/notify.c \
+ src/readahead/sd-readahead.c
+
+systemd_notify_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la
+
+systemd_ask_password_SOURCES = \
+ src/ask-password.c \
+ src/ask-password-api.c
+
+systemd_ask_password_LDADD = \
+ libsystemd-basic.la
+
+systemd_reply_password_SOURCES = \
+ src/reply-password.c
+
+systemd_reply_password_LDADD = \
+ libsystemd-basic.la
+
+systemd_cgls_SOURCES = \
+ src/cgls.c \
+ src/cgroup-show.c \
+ src/cgroup-util.c \
+ src/pager.c
+
+systemd_cgls_LDADD = \
+ libsystemd-basic.la
+
+systemd_cgtop_SOURCES = \
+ src/cgtop.c \
+ src/cgroup-util.c
+
+systemd_cgtop_LDADD = \
+ libsystemd-basic.la
+
+systemd_nspawn_SOURCES = \
+ src/nspawn.c \
+ src/cgroup-util.c \
+ src/loopback-setup.c
+
+systemd_nspawn_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la
+
+systemd_stdio_bridge_SOURCES = \
+ src/bridge.c
+
+systemd_stdio_bridge_LDADD = \
+ libsystemd-basic.la
+
+systemd_tty_ask_password_agent_SOURCES = \
+ src/tty-ask-password-agent.c \
+ src/ask-password-api.c \
+ src/utmp-wtmp.c
+
+systemd_tty_ask_password_agent_LDADD = \
+ libsystemd-basic.la
# ------------------------------------------------------------------------------
-SUBDIRS += src/docs
-
-include_HEADERS = src/libudev.h
-lib_LTLIBRARIES = libudev.la
-noinst_LTLIBRARIES = libudev-private.la
-
-libudev_la_SOURCES =\
- src/libudev-private.h \
- src/libudev.c \
- src/libudev-list.c \
- src/libudev-util.c \
- src/libudev-device.c \
- src/libudev-enumerate.c \
- src/libudev-monitor.c \
- src/libudev-queue.c
-
-libudev_la_LDFLAGS = \
- $(AM_LDFLAGS) \
- -version-info $(LIBUDEV_CURRENT):$(LIBUDEV_REVISION):$(LIBUDEV_AGE)
-
-libudev_private_la_SOURCES =\
- $(libudev_la_SOURCES) \
- src/libudev-util-private.c \
- src/libudev-device-private.c \
- src/libudev-queue-private.c
-
-if WITH_SELINUX
-libudev_private_la_SOURCES += src/libudev-selinux-private.c
-libudev_private_la_LIBADD = $(SELINUX_LIBS)
-endif
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = src/libudev.pc
-EXTRA_DIST += src/libudev.pc.in
-CLEANFILES += src/libudev.pc
-
-EXTRA_DIST += src/COPYING
-# move lib from $(libdir) to $(rootlib_execdir) and update devel link, if needed
-libudev-install-move-hook:
- if test "$(libdir)" != "$(rootlib_execdir)"; then \
- mkdir -p $(DESTDIR)$(rootlib_execdir) && \
- so_img_name=$$(readlink $(DESTDIR)$(libdir)/libudev.so) && \
+libsystemd_daemon_la_SOURCES = \
+ src/sd-daemon.c
+
+libsystemd_daemon_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ -fvisibility=hidden \
+ -DSD_EXPORT_SYMBOLS
+
+libsystemd_daemon_la_LDFLAGS = \
+ -shared \
+ -version-info $(LIBSYSTEMD_DAEMON_CURRENT):$(LIBSYSTEMD_DAEMON_REVISION):$(LIBSYSTEMD_DAEMON_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/libsystemd-daemon.sym
+
+pkginclude_HEADERS += \
+ src/systemd/sd-daemon.h
+
+# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
+libsystemd-daemon-install-hook:
+ if test "$(libdir)" != "$(rootlibdir)"; then \
+ mkdir -p $(DESTDIR)$(rootlibdir) && \
+ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-daemon.so) && \
so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \
- ln -sf $$so_img_rel_target_prefix$(rootlib_execdir)/$$so_img_name $(DESTDIR)$(libdir)/libudev.so && \
- mv $(DESTDIR)$(libdir)/libudev.so.* $(DESTDIR)$(rootlib_execdir); \
+ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-daemon.so && \
+ mv $(DESTDIR)$(libdir)/libsystemd-daemon.so.* $(DESTDIR)$(rootlibdir); \
fi
-libudev-uninstall-move-hook:
- rm -f $(DESTDIR)$(rootlib_execdir)/libudev.so*
+INSTALL_EXEC_HOOKS += \
+ libsystemd-daemon-install-hook
+
+libsystemd-daemon-uninstall-hook:
+ rm -f $(DESTDIR)$(rootlibdir)/libsystemd-daemon.so*
+
+UNINSTALL_EXEC_HOOKS += \
+ libsystemd-daemon-uninstall-hook
+
+lib_LTLIBRARIES += \
+ libsystemd-daemon.la
-INSTALL_EXEC_HOOKS += libudev-install-move-hook
-UNINSTALL_EXEC_HOOKS += libudev-uninstall-move-hook
+pkgconfiglib_DATA += \
+ src/libsystemd-daemon.pc
+
+MANPAGES += \
+ man/sd-daemon.7 \
+ 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_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
+
+EXTRA_DIST += \
+ src/libsystemd-daemon.pc.in \
+ src/libsystemd-daemon.sym
# ------------------------------------------------------------------------------
-udev-confdirs:
- -mkdir -p $(DESTDIR)$(sysconfdir)/udev/rules.d
- -mkdir -p $(DESTDIR)$(libexecdir)/udev/devices
-
-INSTALL_DATA_HOOKS += udev-confdirs
-
-udevrulesdir = $(libexecdir)/udev/rules.d
-dist_udevrules_DATA = \
- rules/42-usb-hid-pm.rules \
- rules/50-udev-default.rules \
- rules/60-persistent-storage-tape.rules \
- rules/60-persistent-serial.rules \
- rules/60-persistent-input.rules \
- rules/60-persistent-alsa.rules \
- rules/60-persistent-storage.rules \
- rules/75-net-description.rules \
- rules/75-tty-description.rules \
- rules/78-sound-card.rules \
- rules/80-drivers.rules \
- rules/95-udev-late.rules
-
-udevconfdir = $(sysconfdir)/udev
-dist_udevconf_DATA = src/udev.conf
-
-sharepkgconfigdir = $(datadir)/pkgconfig
-sharepkgconfig_DATA = src/udev.pc
-EXTRA_DIST += src/udev.pc.in
-CLEANFILES += src/udev.pc
-
-if WITH_SYSTEMD
-dist_systemdsystemunit_DATA = \
- src/udev-control.socket \
- src/udev-kernel.socket
-
-systemdsystemunit_DATA = \
- src/udev.service \
- src/udev-trigger.service \
- src/udev-settle.service
+libsystemd_id128_la_SOURCES = \
+ src/sd-id128.c
+
+libsystemd_id128_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ -fvisibility=hidden
+
+libsystemd_id128_la_LDFLAGS = \
+ -shared \
+ -version-info $(LIBSYSTEMD_ID128_CURRENT):$(LIBSYSTEMD_ID128_REVISION):$(LIBSYSTEMD_ID128_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/libsystemd-id128.sym
+
+libsystemd_id128_la_LIBADD = \
+ libsystemd-basic.la
+
+test_id128_SOURCES = \
+ src/test-id128.c \
+ src/sd-id128.c
+
+test_id128_LDADD = \
+ libsystemd-basic.la
+
+noinst_PROGRAMS += \
+ test-id128
+
+pkginclude_HEADERS += \
+ src/systemd/sd-id128.h
+
+lib_LTLIBRARIES += \
+ libsystemd-id128.la
+
+pkgconfiglib_DATA += \
+ src/libsystemd-id128.pc
+
+# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
+libsystemd-id128-install-hook:
+ if test "$(libdir)" != "$(rootlibdir)"; then \
+ mkdir -p $(DESTDIR)$(rootlibdir) && \
+ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-id128.so) && \
+ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \
+ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-id128.so && \
+ mv $(DESTDIR)$(libdir)/libsystemd-id128.so.* $(DESTDIR)$(rootlibdir); \
+ fi
+
+INSTALL_EXEC_HOOKS += \
+ libsystemd-id128-install-hook
+
+libsystemd-id128-uninstall-hook:
+ rm -f $(DESTDIR)$(rootlibdir)/libsystemd-id128.so*
+
+UNINSTALL_EXEC_HOOKS += \
+ libsystemd-id128-uninstall-hook
EXTRA_DIST += \
- src/udev.service.in \
- src/udev-trigger.service.in \
- src/udev-settle.service.in
+ src/libsystemd-id128.pc.in \
+ src/libsystemd-id128.sym
-CLEANFILES += \
- src/udev.service \
- src/udev-trigger.service \
- src/udev-settle.service
+# ------------------------------------------------------------------------------
+systemd_journald_SOURCES = \
+ src/journal/journald.c \
+ src/journal/sd-journal.c \
+ src/journal/journal-file.c \
+ src/journal/lookup3.c \
+ src/journal/journal-rate-limit.c \
+ src/sd-id128.c \
+ src/cgroup-util.c
+
+if HAVE_ACL
+systemd_journald_SOURCES += \
+ src/acl-util.c
+endif
-systemd-install-hook:
- mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants
- ln -sf ../udev-control.socket $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants/udev-control.socket
- ln -sf ../udev-kernel.socket $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants/udev-kernel.socket
- mkdir -p $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants
- ln -sf ../udev.service $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants/udev.service
- ln -sf ../udev-trigger.service $(DESTDIR)$(systemdsystemunitdir)/basic.target.wants/udev-trigger.service
+nodist_systemd_journald_SOURCES = \
+ src/journal/journald-gperf.c
+
+systemd_journald_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(ACL_CFLAGS)
+
+systemd_journald_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ libsystemd-login.la \
+ $(ACL_LIBS)
+
+if HAVE_XZ
+systemd_journald_SOURCES += \
+ src/journal/compress.c
+systemd_journald_CFLAGS += \
+ $(XZ_CFLAGS)
+systemd_journald_LDADD += \
+ $(XZ_LIBS)
+endif
-INSTALL_DATA_HOOKS += systemd-install-hook
+systemd_cat_SOURCES = \
+ src/journal/cat.c
+
+systemd_cat_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-journal.la
+
+journalctl_SOURCES = \
+ src/journal/journalctl.c \
+ src/pager.c \
+ src/logs-show.c
+
+journalctl_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-journal.la \
+ libsystemd-id128.la
+
+if HAVE_XZ
+journalctl_SOURCES += \
+ src/journal/compress.c
+journalctl_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(XZ_CFLAGS)
+journalctl_LDADD += \
+ $(XZ_LIBS)
endif
-bin_PROGRAMS = \
- udevadm
-
-pkglibexec_PROGRAMS = \
- udevd
-
-udev_common_sources = \
- src/udev.h \
- src/udev-event.c \
- src/udev-watch.c \
- src/udev-node.c \
- src/udev-rules.c \
- src/udev-ctrl.c \
- src/udev-builtin.c \
- src/udev-builtin-blkid.c \
- src/udev-builtin-firmware.c \
- src/udev-builtin-hwdb.c \
- src/udev-builtin-input_id.c \
- src/udev-builtin-kmod.c \
- src/udev-builtin-path_id.c \
- src/udev-builtin-usb_id.c
-
-udev_common_CFLAGS = \
- $(BLKID_CFLAGS) \
- $(KMOD_CFLAGS)
+test_journal_SOURCES = \
+ src/journal/test-journal.c \
+ src/journal/sd-journal.c \
+ src/journal/journal-file.c \
+ src/journal/lookup3.c \
+ src/journal/journal-send.c \
+ src/sd-id128.c
-udev_common_LDADD = \
- libudev-private.la \
- $(BLKID_LIBS) \
- $(KMOD_LIBS)
+test_journal_LDADD = \
+ libsystemd-basic.la
-udev_common_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -DFIRMWARE_PATH="$(FIRMWARE_PATH)" \
- -DUSB_DATABASE=\"$(USB_DATABASE)\" -DPCI_DATABASE=\"$(PCI_DATABASE)\"
+if HAVE_XZ
+test_journal_SOURCES += \
+ src/journal/compress.c
-udevd_SOURCES = \
- $(udev_common_sources) \
- src/udevd.c \
- src/sd-daemon.h \
- src/sd-daemon.c
-udevd_CFLAGS = $(udev_common_CFLAGS)
-udevd_LDADD = $(udev_common_LDADD)
-udevd_CPPFLAGS = $(udev_common_CPPFLAGS)
-
-udevadm_SOURCES = \
- $(udev_common_sources) \
- src/udevadm.c \
- src/udevadm-info.c \
- src/udevadm-control.c \
- src/udevadm-monitor.c \
- src/udevadm-settle.c \
- src/udevadm-trigger.c \
- src/udevadm-test.c \
- src/udevadm-test-builtin.c
-udevadm_CFLAGS = $(udev_common_CFLAGS)
-udevadm_LDADD = $(udev_common_LDADD)
-udevadm_CPPFLAGS = $(udev_common_CPPFLAGS)
+test_journal_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(XZ_CFLAGS)
-# ------------------------------------------------------------------------------
-if ENABLE_MANPAGES
-dist_man_MANS += \
- src/udev.7 \
- src/udevadm.8 \
- src/udevd.8
+test_journal_LDADD += \
+ $(XZ_LIBS)
+endif
+
+test_journal_send_SOURCES = \
+ src/journal/test-journal-send.c
+
+test_journal_send_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-journal.la
+
+libsystemd_journal_la_SOURCES = \
+ src/journal/sd-journal.c \
+ src/journal/journal-file.c \
+ src/journal/lookup3.c \
+ src/journal/journal-send.c
+
+libsystemd_journal_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ -fvisibility=hidden
+
+libsystemd_journal_la_LDFLAGS = \
+ -shared \
+ -version-info $(LIBSYSTEMD_JOURNAL_CURRENT):$(LIBSYSTEMD_JOURNAL_REVISION):$(LIBSYSTEMD_JOURNAL_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/journal/libsystemd-journal.sym
+
+libsystemd_journal_la_LIBADD = \
+ libsystemd-basic.la \
+ libsystemd-id128.la
+
+if HAVE_XZ
+libsystemd_journal_la_SOURCES += \
+ src/journal/compress.c
+
+libsystemd_journal_la_CFLAGS += \
+ $(XZ_CFLAGS)
+
+libsystemd_journal_la_LIBADD += \
+ $(XZ_LIBS)
endif
+# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
+libsystemd-journal-install-hook:
+ if test "$(libdir)" != "$(rootlibdir)"; then \
+ mkdir -p $(DESTDIR)$(rootlibdir) && \
+ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-journal.so) && \
+ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \
+ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-journal.so && \
+ mv $(DESTDIR)$(libdir)/libsystemd-journal.so.* $(DESTDIR)$(rootlibdir); \
+ fi
+
+INSTALL_EXEC_HOOKS += \
+ libsystemd-journal-install-hook
+
+libsystemd-journal-uninstall-hook:
+ rm -f $(DESTDIR)$(rootlibdir)/libsystemd-journal.so*
+
+UNINSTALL_EXEC_HOOKS += \
+ libsystemd-journal-uninstall-hook
+
+noinst_PROGRAMS += \
+ test-journal \
+ test-journal-send
+
+pkginclude_HEADERS += \
+ src/systemd/sd-journal.h \
+ src/systemd/sd-messages.h
+
+lib_LTLIBRARIES += \
+ libsystemd-journal.la
+
+rootlibexec_PROGRAMS += \
+ systemd-journald
+
+rootbin_PROGRAMS += \
+ journalctl
+
+bin_PROGRAMS += \
+ systemd-cat
+
+dist_systemunit_DATA += \
+ units/systemd-journald.socket
+
+nodist_systemunit_DATA += \
+ units/systemd-journald.service
+
+dist_pkgsysconf_DATA += \
+ src/journal/journald.conf
+
+pkgconfiglib_DATA += \
+ src/journal/libsystemd-journal.pc
+
+journal-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir)/sockets.target.wants \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/sockets.target.wants && \
+ rm -f systemd-journald.socket && \
+ $(LN_S) ../systemd-journald.socket )
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f systemd-journald.service && \
+ $(LN_S) ../systemd-journald.service )
+
+INSTALL_DATA_HOOKS += \
+ journal-install-data-hook
+
EXTRA_DIST += \
- src/udev.xml \
- src/udevadm.xml \
- src/udevd.xml
+ src/journal/journald.h \
+ src/journal/journal-def.h \
+ src/journal/journal-internal.h \
+ src/journal/journal-file.h \
+ src/journal/lookup3.h \
+ src/journal/compress.h \
+ src/journal/journal-rate-limit.h \
+ src/journal/libsystemd-journal.pc.in \
+ src/journal/libsystemd-journal.sym \
+ units/systemd-journald.service.in \
+ src/journal/journald-gperf.gperf
-if HAVE_XSLTPROC
-dist_noinst_DATA = \
- src/udev.html \
- src/udevadm.html \
- src/udevd.html
+CLEANFILES += \
+ src/journal/journald-gperf.c
+
+# ------------------------------------------------------------------------------
+if ENABLE_COREDUMP
+systemd_coredump_SOURCES = \
+ src/journal/coredump.c
+
+systemd_coredump_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-journal.la \
+ libsystemd-login.la
+
+rootlibexec_PROGRAMS += \
+ systemd-coredump
-src/%.7 src/%.8 : src/%.xml
- $(AM_V_GEN)$(XSLTPROC) -o $@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
+sysctl_DATA = \
+ sysctl.d/coredump.conf
-src/%.html : src/%.xml
- $(AM_V_GEN)$(XSLTPROC) -o $@ -nonet http://docbook.sourceforge.net/release/xsl/current/xhtml-1_1/docbook.xsl $<
+EXTRA_DIST += \
+ sysctl.d/coredump.conf.in
+
+CLEANFILES += \
+ sysctl.d/coredump.conf
endif
# ------------------------------------------------------------------------------
-TESTS = \
- test/udev-test.pl \
- test/rules-test.sh
+if ENABLE_BINFMT
+systemd_binfmt_SOURCES = \
+ src/binfmt/binfmt.c
-check_PROGRAMS = \
- test-libudev \
- test-udev
+systemd_binfmt_LDADD = \
+ libsystemd-basic.la
-test_libudev_SOURCES = src/test-libudev.c
-test_libudev_LDADD = libudev.la
+rootlibexec_PROGRAMS += \
+ systemd-binfmt
-test_udev_SOURCES = \
- $(udev_common_sources) \
- src/test-udev.c
-test_udev_CFLAGS = $(udev_common_CFLAGS)
-test_udev_LDADD = $(udev_common_LDADD)
-test_udev_CPPFLAGS = $(udev_common_CPPFLAGS)
-test_udev_DEPENDENCIES = test/sys
+dist_systemunit_DATA += \
+ units/proc-sys-fs-binfmt_misc.automount \
+ units/proc-sys-fs-binfmt_misc.mount
-# packed sysfs test tree
-test/sys:
- $(AM_V_GEN)mkdir -p test && tar -C test/ -xJf $(top_srcdir)/test/sys.tar.xz
+nodist_systemunit_DATA += \
+ units/systemd-binfmt.service
-test-sys-distclean:
- -rm -rf test/sys
-DISTCLEAN_LOCAL_HOOKS += test-sys-distclean
+binfmt-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(prefix)/lib/binfmt.d \
+ $(DESTDIR)$(sysconfdir)/binfmt.d \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f systemd-binfmt.service \
+ proc-sys-fs-binfmt_misc.automount && \
+ $(LN_S) ../systemd-binfmt.service systemd-binfmt.service && \
+ $(LN_S) ../proc-sys-fs-binfmt_misc.automount proc-sys-fs-binfmt_misc.automount )
-EXTRA_DIST += test/sys.tar.xz
+INSTALL_DATA_HOOKS += \
+ binfmt-install-data-hook
+
+MANPAGES += \
+ man/binfmt.d.5
+
+EXTRA_DIST += \
+ units/systemd-binfmt.service.in
+endif
# ------------------------------------------------------------------------------
-ata_id_SOURCES = src/ata_id/ata_id.c
-ata_id_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += ata_id
+if ENABLE_VCONSOLE
+systemd_vconsole_setup_SOURCES = \
+ src/vconsole/vconsole-setup.c
+
+systemd_vconsole_setup_LDADD = \
+ libsystemd-basic.la
+
+rootlibexec_PROGRAMS += \
+ systemd-vconsole-setup
+
+nodist_systemunit_DATA += \
+ units/systemd-vconsole-setup.service
+
+vconsole-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f systemd-vconsole-setup.service && \
+ $(LN_S) ../systemd-vconsole-setup.service systemd-vconsole-setup.service )
+
+INSTALL_DATA_HOOKS += \
+ vconsole-install-data-hook
+
+MANPAGES += \
+ man/vconsole.conf.5
+
+EXTRA_DIST += \
+ units/systemd-vconsole-setup.service.in
+endif
# ------------------------------------------------------------------------------
-cdrom_id_SOURCES = src/cdrom_id/cdrom_id.c
-cdrom_id_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += cdrom_id
-dist_udevrules_DATA += src/cdrom_id/60-cdrom_id.rules
+if ENABLE_READAHEAD
+systemd_readahead_collect_SOURCES = \
+ src/readahead/readahead-collect.c \
+ src/readahead/readahead-common.c
+
+systemd_readahead_collect_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(UDEV_LIBS)
+
+systemd_readahead_collect_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_readahead_replay_SOURCES = \
+ src/readahead/readahead-replay.c \
+ src/readahead/readahead-common.c
+
+systemd_readahead_replay_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_readahead_replay_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(UDEV_LIBS)
+
+rootlibexec_PROGRAMS += \
+ systemd-readahead-collect \
+ systemd-readahead-replay
+
+dist_systemunit_DATA += \
+ units/systemd-readahead-done.timer
+
+nodist_systemunit_DATA += \
+ units/systemd-readahead-collect.service \
+ units/systemd-readahead-replay.service \
+ units/systemd-readahead-done.service
+
+EXTRA_DIST += \
+ src/systemd/sd-readahead.h \
+ src/readahead/readahead-common.h \
+ units/systemd-readahead-collect.service.in \
+ units/systemd-readahead-replay.service.in \
+ units/systemd-readahead-done.service.in
+
+MANPAGES += \
+ man/sd_readahead.3 \
+ man/sd-readahead.7
+endif
# ------------------------------------------------------------------------------
-collect_SOURCES = src/collect/collect.c
-collect_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += collect
+if ENABLE_QUOTACHECK
+rootlibexec_PROGRAMS += \
+ systemd-quotacheck
+
+nodist_systemunit_DATA += \
+ units/quotacheck.service
+
+EXTRA_DIST += \
+ units/quotacheck.service.in
+
+systemd_quotacheck_SOURCES = \
+ src/quotacheck.c
+
+systemd_quotacheck_LDADD = \
+ libsystemd-basic.la
+endif
# ------------------------------------------------------------------------------
-scsi_id_SOURCES =\
- src/scsi_id/scsi_id.c \
- src/scsi_id/scsi_serial.c \
- src/scsi_id/scsi.h \
- src/scsi_id/scsi_id.h
-scsi_id_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += scsi_id
-dist_man_MANS += src/scsi_id/scsi_id.8
-EXTRA_DIST += src/scsi_id/README
+if ENABLE_RANDOMSEED
+rootlibexec_PROGRAMS += \
+ systemd-random-seed
+
+nodist_systemunit_DATA += \
+ units/systemd-random-seed-save.service \
+ units/systemd-random-seed-load.service
+
+EXTRA_DIST += \
+ units/systemd-random-seed-save.service.in \
+ units/systemd-random-seed-load.service.in
+
+systemd_random_seed_SOURCES = \
+ src/random-seed.c
+
+systemd_random_seed_LDADD = \
+ libsystemd-basic.la
+
+randomseed-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir)/shutdown.target.wants \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/shutdown.target.wants && \
+ rm -f systemd-random-seed-save.service && \
+ $(LN_S) ../systemd-random-seed-save.service systemd-random-seed-save.service )
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f systemd-random-seed-load.service && \
+ $(LN_S) ../systemd-random-seed-load.service systemd-random-seed-load.service )
+
+INSTALL_DATA_HOOKS += \
+ randomseed-install-data-hook
+endif
+
+# ------------------------------------------------------------------------------
+if HAVE_LIBCRYPTSETUP
+rootlibexec_PROGRAMS += \
+ systemd-cryptsetup
+
+systemgenerator_PROGRAMS += \
+ systemd-cryptsetup-generator
+
+dist_systemunit_DATA += \
+ units/cryptsetup.target
+
+systemd_cryptsetup_SOURCES = \
+ src/cryptsetup/cryptsetup.c \
+ src/ask-password-api.c
+
+systemd_cryptsetup_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(LIBCRYPTSETUP_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_cryptsetup_LDADD = \
+ $(LIBCRYPTSETUP_LIBS) \
+ $(UDEV_LIBS) \
+ libsystemd-basic.la
+
+systemd_cryptsetup_generator_SOURCES = \
+ src/cryptsetup/cryptsetup-generator.c \
+ src/unit-name.c
+
+systemd_cryptsetup_generator_LDADD = \
+ libsystemd-basic.la
+
+cryptsetup-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f cryptsetup.target && \
+ $(LN_S) ../cryptsetup.target cryptsetup.target )
+
+INSTALL_DATA_HOOKS += \
+ cryptsetup-install-data-hook
+endif
# ------------------------------------------------------------------------------
-v4l_id_SOURCES = src/v4l_id/v4l_id.c
-v4l_id_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += v4l_id
-dist_udevrules_DATA += src/v4l_id/60-persistent-v4l.rules
+if ENABLE_HOSTNAMED
+systemd_hostnamed_SOURCES = \
+ src/hostname/hostnamed.c \
+ src/dbus-common.c \
+ src/polkit.c
+
+systemd_hostnamed_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_hostnamed_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(DBUS_LIBS)
+
+rootlibexec_PROGRAMS += \
+ systemd-hostnamed
+
+nodist_systemunit_DATA += \
+ units/systemd-hostnamed.service
+
+dist_dbuspolicy_DATA += \
+ src/hostname/org.freedesktop.hostname1.conf
+
+dist_dbussystemservice_DATA += \
+ src/hostname/org.freedesktop.hostname1.service
+
+polkitpolicy_in_files += \
+ src/hostname/org.freedesktop.hostname1.policy.in
+
+dbusinterface_DATA += \
+ org.freedesktop.hostname1.xml
+
+org.freedesktop.hostname1.xml: systemd-hostnamed
+ $(AM_V_GEN)$(LIBTOOL) --mode=execute $(OBJCOPY) -O binary -j introspect.hostname1 $< $@.tmp && \
+ $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \
+ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp
+
+hostnamed-install-data-hook:
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f dbus-org.freedesktop.hostname1.service && \
+ $(LN_S) systemd-hostnamed.service dbus-org.freedesktop.hostname1.service )
+
+INSTALL_DATA_HOOKS += \
+ hostnamed-install-data-hook
+
+EXTRA_DIST += \
+ units/systemd-hostnamed.service.in
+endif
# ------------------------------------------------------------------------------
-accelerometer_SOURCES = src/accelerometer/accelerometer.c
-accelerometer_LDADD = libudev-private.la -lm
-pkglibexec_PROGRAMS += accelerometer
-dist_udevrules_DATA += src/accelerometer/61-accelerometer.rules
+if ENABLE_LOCALED
+systemd_localed_SOURCES = \
+ src/locale/localed.c \
+ src/dbus-common.c \
+ src/polkit.c
+
+systemd_localed_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_localed_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(DBUS_LIBS)
+
+nodist_systemunit_DATA += \
+ units/systemd-localed.service
+
+rootlibexec_PROGRAMS += \
+ systemd-localed
+
+dist_dbuspolicy_DATA += \
+ src/locale/org.freedesktop.locale1.conf
+
+dist_dbussystemservice_DATA += \
+ src/locale/org.freedesktop.locale1.service
+
+polkitpolicy_in_files += \
+ src/locale/org.freedesktop.locale1.policy.in
+
+dbusinterface_DATA += \
+ org.freedesktop.locale1.xml
+
+org.freedesktop.locale1.xml: systemd-localed
+ $(AM_V_GEN)$(LIBTOOL) --mode=execute $(OBJCOPY) -O binary -j introspect.locale1 $< $@.tmp && \
+ $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \
+ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp
+
+localed-install-data-hook:
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f dbus-org.freedesktop.locale1.service && \
+ $(LN_S) systemd-localed.service dbus-org.freedesktop.locale1.service )
+
+INSTALL_DATA_HOOKS += \
+ localed-install-data-hook
+
+EXTRA_DIST += \
+ units/systemd-localed.service.in
+
+dist_pkgdata_DATA = \
+ src/locale/kbd-model-map
+
+dist_noinst_SCRIPT = \
+ src/locale/generate-kbd-model-map
+
+update-kbd-model-map:
+ src/locale/generate-kbd-model-map > src/locale/kbd-model-map
+
+endif
# ------------------------------------------------------------------------------
-if ENABLE_GUDEV
-SUBDIRS += src/gudev/docs
-
-libgudev_includedir=$(includedir)/gudev-1.0/gudev
-libgudev_include_HEADERS = \
- src/gudev/gudev.h \
- src/gudev/gudevenums.h \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevtypes.h \
- src/gudev/gudevclient.h \
- src/gudev/gudevdevice.h \
- src/gudev/gudevenumerator.h
-
-lib_LTLIBRARIES += libgudev-1.0.la
-
-pkgconfig_DATA += src/gudev/gudev-1.0.pc
-EXTRA_DIST += src/gudev/gudev-1.0.pc.in
-CLEANFILES += src/gudev/gudev-1.0.pc
-
-libgudev_1_0_la_SOURCES = \
- src/gudev/gudevenums.h \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevenumtypes.h\
- src/gudev/gudevtypes.h \
- src/gudev/gudevclient.h \
- src/gudev/gudevclient.c \
- src/gudev/gudevdevice.h \
- src/gudev/gudevdevice.c \
- src/gudev/gudevenumerator.h \
- src/gudev/gudevenumerator.c \
- src/gudev/gudevprivate.h
-
-nodist_libgudev_1_0_la_SOURCES = \
- src/gudev/gudevmarshal.h \
- src/gudev/gudevmarshal.c \
- src/gudev/gudevenumtypes.h \
- src/gudev/gudevenumtypes.c
-BUILT_SOURCES += $(nodist_libgudev_1_0_la_SOURCES)
-
-libgudev_1_0_la_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -I$(top_builddir)/src\
- -I$(top_srcdir)/src\
- -I$(top_builddir)/src/gudev \
- -I$(top_srcdir)/src/gudev \
- -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
- -D_GUDEV_COMPILATION \
- -DG_LOG_DOMAIN=\"GUdev\"
-
-libgudev_1_0_la_CFLAGS = \
- -fvisibility=default \
- $(GLIB_CFLAGS)
-
-libgudev_1_0_la_LIBADD = libudev.la $(GLIB_LIBS)
-
-libgudev_1_0_la_LDFLAGS = \
- -version-info $(LIBGUDEV_CURRENT):$(LIBGUDEV_REVISION):$(LIBGUDEV_AGE) \
- -export-dynamic -no-undefined \
- -export-symbols-regex '^g_udev_.*'
+if ENABLE_TIMEDATED
+systemd_timedated_SOURCES = \
+ src/timedate/timedated.c \
+ src/dbus-common.c \
+ src/polkit.c
+
+systemd_timedated_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS)
+
+systemd_timedated_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(DBUS_LIBS)
+
+rootlibexec_PROGRAMS += \
+ systemd-timedated
+
+dist_dbussystemservice_DATA += \
+ src/timedate/org.freedesktop.timedate1.service
+
+dist_dbuspolicy_DATA += \
+ src/timedate/org.freedesktop.timedate1.conf
+
+nodist_systemunit_DATA += \
+ units/systemd-timedated.service
+
+polkitpolicy_in_files += \
+ src/timedate/org.freedesktop.timedate1.policy.in
+
+org.freedesktop.timedate1.xml: systemd-timedated
+ $(AM_V_GEN)$(LIBTOOL) --mode=execute $(OBJCOPY) -O binary -j introspect.timedate1 $< $@.tmp && \
+ $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \
+ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp
+
+dbusinterface_DATA += \
+ org.freedesktop.timedate1.xml
+
+timedated-install-data-hook:
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f dbus-org.freedesktop.timedate1.service && \
+ $(LN_S) systemd-timedated.service dbus-org.freedesktop.timedate1.service )
+
+INSTALL_DATA_HOOKS += \
+ timedated-install-data-hook
EXTRA_DIST += \
- src/gudev/COPYING \
- src/gudev/gudevmarshal.list \
- src/gudev/gudevenumtypes.h.template \
- src/gudev/gudevenumtypes.c.template \
- src/gudev/gjs-example.js \
- src/gudev/seed-example-enum.js \
- src/gudev/seed-example.js
-
-src/gudev/gudevmarshal.h: src/gudev/gudevmarshal.list
- $(AM_V_GEN)glib-genmarshal $< --prefix=g_udev_marshal --header > $@
-
-src/gudev/gudevmarshal.c: src/gudev/gudevmarshal.list
- $(AM_V_GEN)echo "#include \"gudevmarshal.h\"" > $@ && \
- glib-genmarshal $< --prefix=g_udev_marshal --body >> $@
-
-src/gudev/gudevenumtypes.h: src/gudev/gudevenumtypes.h.template src/gudev/gudevenums.h
- $(AM_V_GEN)glib-mkenums --template $^ > \
- $@.tmp && mv $@.tmp $@
-
-src/gudev/gudevenumtypes.c: src/gudev/gudevenumtypes.c.template src/gudev/gudevenums.h
- $(AM_V_GEN)glib-mkenums --template $^ > \
- $@.tmp && mv $@.tmp $@
-
-if ENABLE_INTROSPECTION
-src/gudev/GUdev-1.0.gir: libgudev-1.0.la $(G_IR_SCANNER)
- $(AM_V_GEN)$(G_IR_SCANNER) -v \
- --warn-all \
- --namespace GUdev \
- --nsversion=1.0 \
- --include=GObject-2.0 \
- --library=gudev-1.0 \
- --library-path=$(top_builddir)/src \
- --library-path=$(top_builddir)/src/gudev \
- --output $@ \
- --pkg=glib-2.0 \
- --pkg=gobject-2.0 \
- --pkg-export=gudev-1.0 \
- --c-include=gudev/gudev.h \
- -I$(top_srcdir)/src/\
- -I$(top_builddir)/src/\
- -D_GUDEV_COMPILATION \
- -D_GUDEV_WORK_AROUND_DEV_T_BUG \
- $(top_srcdir)/src/gudev/gudev.h \
- $(top_srcdir)/src/gudev/gudevtypes.h \
- $(top_srcdir)/src/gudev/gudevenums.h \
- $(or $(wildcard $(top_builddir)/src/gudev/gudevenumtypes.h),$(top_srcdir)/src/gudev/gudevenumtypes.h) \
- $(top_srcdir)/src/gudev/gudevclient.h \
- $(top_srcdir)/src/gudev/gudevdevice.h \
- $(top_srcdir)/src/gudev/gudevenumerator.h \
- $(top_srcdir)/src/gudev/gudevclient.c \
- $(top_srcdir)/src/gudev/gudevdevice.c \
- $(top_srcdir)/src/gudev/gudevenumerator.c
-
-src/gudev/GUdev-1.0.typelib: src/gudev/GUdev-1.0.gir $(G_IR_COMPILER)
- $(AM_V_GEN)g-ir-compiler $< -o $@
-
-girdir = $(GIRDIR)
-gir_DATA = src/gudev/GUdev-1.0.gir
-
-typelibsdir = $(GIRTYPELIBDIR)
-typelibs_DATA = src/gudev/GUdev-1.0.typelib
-
-CLEANFILES += $(gir_DATA) $(typelibs_DATA)
-endif # ENABLE_INTROSPECTION
-
-# move lib from $(libdir) to $(rootlib_execdir) and update devel link, if needed
-libgudev-install-move-hook:
- if test "$(libdir)" != "$(rootlib_execdir)"; then \
- mkdir -p $(DESTDIR)$(rootlib_execdir) && \
- so_img_name=$$(readlink $(DESTDIR)$(libdir)/libgudev-1.0.so) && \
+ units/systemd-timedated.service.in
+endif
+
+# ------------------------------------------------------------------------------
+if ENABLE_LOGIND
+systemd_logind_SOURCES = \
+ src/login/logind.c \
+ src/login/logind-dbus.c \
+ src/login/logind-device.c \
+ src/login/logind-seat.c \
+ src/login/logind-seat-dbus.c \
+ src/login/logind-session.c \
+ src/login/logind-session-dbus.c \
+ src/login/logind-user.c \
+ src/login/logind-user-dbus.c \
+ src/dbus-common.c \
+ src/dbus-loop.c \
+ src/cgroup-util.c \
+ src/polkit.c
+
+nodist_systemd_logind_SOURCES = \
+ src/login/logind-gperf.c
+
+if HAVE_ACL
+systemd_logind_SOURCES += \
+ src/login/logind-acl.c \
+ src/acl-util.c
+endif
+
+systemd_logind_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(UDEV_CFLAGS) \
+ $(ACL_CFLAGS)
+
+systemd_logind_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(DBUS_LIBS) \
+ $(UDEV_LIBS) \
+ $(ACL_LIBS)
+
+systemd_user_sessions_SOURCES = \
+ src/login/user-sessions.c \
+ src/cgroup-util.c
+
+systemd_user_sessions_LDADD = \
+ libsystemd-basic.la
+
+rootlibexec_PROGRAMS += \
+ systemd-logind \
+ systemd-user-sessions
+
+loginctl_SOURCES = \
+ src/login/loginctl.c \
+ src/login/sysfs-show.c \
+ src/dbus-common.c \
+ src/cgroup-show.c \
+ src/cgroup-util.c \
+ src/pager.c
+
+loginctl_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+loginctl_LDADD = \
+ libsystemd-basic.la \
+ $(DBUS_LIBS) \
+ $(UDEV_LIBS)
+
+rootbin_PROGRAMS += \
+ loginctl
+
+test_login_SOURCES = \
+ src/login/test-login.c
+
+test_login_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-login.la
+
+noinst_PROGRAMS += \
+ test-login
+
+libsystemd_login_la_SOURCES = \
+ src/login/sd-login.c \
+ src/cgroup-util.c
+
+libsystemd_login_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ -fvisibility=hidden
+
+libsystemd_login_la_LDFLAGS = \
+ -shared \
+ -version-info $(LIBSYSTEMD_LOGIN_CURRENT):$(LIBSYSTEMD_LOGIN_REVISION):$(LIBSYSTEMD_LOGIN_AGE) \
+ -Wl,--version-script=$(top_srcdir)/src/login/libsystemd-login.sym
+
+libsystemd_login_la_LIBADD = \
+ libsystemd-basic.la
+
+if HAVE_PAM
+pam_systemd_la_SOURCES = \
+ src/login/pam-module.c \
+ src/dbus-common.c
+
+pam_systemd_la_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(PAM_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ -fvisibility=hidden
+
+pam_systemd_la_LDFLAGS = \
+ -module \
+ -export-dynamic \
+ -avoid-version \
+ -shared \
+ -export-symbols-regex '^pam_sm_.*'
+
+pam_systemd_la_LIBADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ $(PAM_LIBS) \
+ $(DBUS_LIBS)
+
+pamlib_LTLIBRARIES = \
+ pam_systemd.la
+endif
+
+# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
+libsystemd-login-install-hook:
+ if test "$(libdir)" != "$(rootlibdir)"; then \
+ mkdir -p $(DESTDIR)$(rootlibdir) && \
+ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-login.so) && \
so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \
- ln -sf $$so_img_rel_target_prefix$(rootlib_execdir)/$$so_img_name $(DESTDIR)$(libdir)/libgudev-1.0.so && \
- mv $(DESTDIR)$(libdir)/libgudev-1.0.so.* $(DESTDIR)$(rootlib_execdir); \
+ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-login.so && \
+ mv $(DESTDIR)$(libdir)/libsystemd-login.so.* $(DESTDIR)$(rootlibdir); \
fi
-libgudev-uninstall-move-hook:
- rm -f $(DESTDIR)$(rootlib_execdir)/libgudev-1.0.so*
+INSTALL_EXEC_HOOKS += \
+ libsystemd-login-install-hook
+
+libsystemd-login-uninstall-hook:
+ rm -f $(DESTDIR)$(rootlibdir)/libsystemd-login.so*
+
+UNINSTALL_EXEC_HOOKS += \
+ libsystemd-login-uninstall-hook
+
+nodist_systemunit_DATA += \
+ units/systemd-logind.service \
+ units/systemd-user-sessions.service
-INSTALL_EXEC_HOOKS += libgudev-install-move-hook
-UNINSTALL_EXEC_HOOKS += libgudev-uninstall-move-hook
+dist_dbussystemservice_DATA += \
+ src/login/org.freedesktop.login1.service
+
+dist_dbuspolicy_DATA += \
+ src/login/org.freedesktop.login1.conf
+
+dist_pkgsysconf_DATA += \
+ src/login/logind.conf
+
+pkginclude_HEADERS += \
+ src/systemd/sd-login.h
+
+lib_LTLIBRARIES += \
+ libsystemd-login.la
+
+pkgconfiglib_DATA += \
+ src/login/libsystemd-login.pc
+
+polkitpolicy_in_files += \
+ src/login/org.freedesktop.login1.policy.in
+
+logind-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir)/multi-user.target.wants \
+ $(DESTDIR)$(localstatedir)/lib/systemd
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f dbus-org.freedesktop.login1.service && \
+ $(LN_S) systemd-logind.service dbus-org.freedesktop.login1.service)
+ ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \
+ rm -f systemd-logind.service systemd-user-sessions.service && \
+ $(LN_S) ../systemd-logind.service systemd-logind.service && \
+ $(LN_S) ../systemd-user-sessions.service systemd-user-sessions.service )
+
+INSTALL_DATA_HOOKS += \
+ logind-install-data-hook
+
+systemd_multi_seat_x_SOURCES = \
+ src/login/multi-seat-x.c
+
+systemd_multi_seat_x_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS)
+
+systemd_multi_seat_x_LDADD = \
+ libsystemd-basic.la \
+ $(UDEV_LIBS)
+
+rootlibexec_PROGRAMS += \
+ systemd-multi-seat-x
+
+systemd_uaccess_SOURCES = \
+ src/login/uaccess.c
+
+if HAVE_ACL
+systemd_uaccess_SOURCES += \
+ src/login/logind-acl.c \
+ src/acl-util.c
endif
-# ------------------------------------------------------------------------------
-if ENABLE_KEYMAP
-keymap_SOURCES = src/keymap/keymap.c
-keymap_CPPFLAGS = $(AM_CPPFLAGS) -I src/keymap
-nodist_keymap_SOURCES = \
- src/keymap/keys-from-name.h \
- src/keymap/keys-to-name.h
-BUILT_SOURCES += $(nodist_keymap_SOURCES)
+systemd_uaccess_CFLAGS = \
+ $(AM_CFLAGS) \
+ $(UDEV_CFLAGS) \
+ $(ACL_CFLAGS)
-pkglibexec_PROGRAMS += keymap
-dist_doc_DATA = src/keymap/README.keymap.txt
+systemd_uaccess_LDADD = \
+ libsystemd-basic.la \
+ libsystemd-daemon.la \
+ libsystemd-login.la \
+ $(UDEV_LIBS) \
+ $(ACL_LIBS)
+
+rootlibexec_PROGRAMS += \
+ systemd-uaccess
dist_udevrules_DATA += \
- src/keymap/95-keymap.rules \
- src/keymap/95-keyboard-force-release.rules
+ src/login/70-uaccess.rules
-dist_udevhome_SCRIPTS += src/keymap/findkeyboards
-udevhome_SCRIPTS += src/keymap/keyboard-force-release.sh
+dist_udevrules_DATA += \
+ src/login/71-seat.rules
+
+nodist_udevrules_DATA += \
+ src/login/73-seat-late.rules
+
+MANPAGES += \
+ man/logind.conf.5 \
+ man/sd-login.7 \
+ 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
+
+MANPAGES_ALIAS += \
+ man/sd_login_monitor_unref.3 \
+ man/sd_login_monitor_flush.3 \
+ man/sd_login_monitor_get_fd.3 \
+ man/sd_session_get_uid.3 \
+ man/sd_session_get_seat.3 \
+ man/sd_session_get_service.3 \
+ man/sd_session_get_type.3 \
+ man/sd_session_get_class.3 \
+ man/sd_session_get_display.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/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_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_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_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
EXTRA_DIST += \
- src/keymap/check-keymaps.sh \
- src/keymap/keyboard-force-release.sh.in
+ src/login/logind-gperf.gperf \
+ src/login/libsystemd-login.pc.in \
+ src/login/libsystemd-login.sym \
+ src/login/logind.h \
+ src/login/logind-device.h \
+ src/login/logind-seat.h \
+ src/login/logind-session.h \
+ src/login/logind-user.h \
+ src/login/logind-acl.h \
+ src/login/73-seat-late.rules.in \
+ units/systemd-logind.service.in \
+ units/systemd-user-sessions.service.in
CLEANFILES += \
- src/keymap/keys.txt \
- src/keymap/keys-from-name.gperf \
- src/keymap/keyboard-force-release.sh
-
-udevkeymapdir = $(libexecdir)/udev/keymaps
-dist_udevkeymap_DATA = \
- src/keymap/keymaps/acer \
- src/keymap/keymaps/acer-aspire_5720 \
- src/keymap/keymaps/acer-aspire_8930 \
- src/keymap/keymaps/acer-aspire_5920g \
- src/keymap/keymaps/acer-aspire_6920 \
- src/keymap/keymaps/acer-travelmate_c300 \
- src/keymap/keymaps/asus \
- src/keymap/keymaps/compaq-e_evo \
- src/keymap/keymaps/dell \
- src/keymap/keymaps/dell-latitude-xt2 \
- src/keymap/keymaps/everex-xt5000 \
- src/keymap/keymaps/fujitsu-amilo_li_2732 \
- src/keymap/keymaps/fujitsu-amilo_pa_2548 \
- src/keymap/keymaps/fujitsu-amilo_pro_edition_v3505 \
- src/keymap/keymaps/fujitsu-amilo_pro_v3205 \
- src/keymap/keymaps/fujitsu-amilo_si_1520 \
- src/keymap/keymaps/fujitsu-esprimo_mobile_v5 \
- src/keymap/keymaps/fujitsu-esprimo_mobile_v6 \
- src/keymap/keymaps/genius-slimstar-320 \
- src/keymap/keymaps/hewlett-packard \
- src/keymap/keymaps/hewlett-packard-2510p_2530p \
- src/keymap/keymaps/hewlett-packard-compaq_elitebook \
- src/keymap/keymaps/hewlett-packard-pavilion \
- src/keymap/keymaps/hewlett-packard-presario-2100 \
- src/keymap/keymaps/hewlett-packard-tablet \
- src/keymap/keymaps/hewlett-packard-tx2 \
- src/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint \
- src/keymap/keymaps/inventec-symphony_6.0_7.0 \
- src/keymap/keymaps/lenovo-3000 \
- src/keymap/keymaps/lenovo-ideapad \
- src/keymap/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint \
- src/keymap/keymaps/lenovo-thinkpad_x6_tablet \
- src/keymap/keymaps/lenovo-thinkpad_x200_tablet \
- src/keymap/keymaps/lg-x110 \
- src/keymap/keymaps/logitech-wave \
- src/keymap/keymaps/logitech-wave-cordless \
- src/keymap/keymaps/logitech-wave-pro-cordless \
- src/keymap/keymaps/maxdata-pro_7000 \
- src/keymap/keymaps/medion-fid2060 \
- src/keymap/keymaps/medionnb-a555 \
- src/keymap/keymaps/micro-star \
- src/keymap/keymaps/module-asus-w3j \
- src/keymap/keymaps/module-ibm \
- src/keymap/keymaps/module-lenovo \
- src/keymap/keymaps/module-sony \
- src/keymap/keymaps/module-sony-old \
- src/keymap/keymaps/module-sony-vgn \
- src/keymap/keymaps/olpc-xo \
- src/keymap/keymaps/onkyo \
- src/keymap/keymaps/oqo-model2 \
- src/keymap/keymaps/samsung-other \
- src/keymap/keymaps/samsung-90x3a \
- src/keymap/keymaps/samsung-sq1us \
- src/keymap/keymaps/samsung-sx20s \
- src/keymap/keymaps/toshiba-satellite_a100 \
- src/keymap/keymaps/toshiba-satellite_a110 \
- src/keymap/keymaps/toshiba-satellite_m30x \
- src/keymap/keymaps/zepto-znote
-
-udevkeymapforcereldir = $(libexecdir)/udev/keymaps/force-release
-dist_udevkeymapforcerel_DATA = \
- src/keymap/force-release-maps/dell-touchpad \
- src/keymap/force-release-maps/hp-other \
- src/keymap/force-release-maps/samsung-other \
- src/keymap/force-release-maps/samsung-90x3a \
- src/keymap/force-release-maps/common-volume-keys
-
-src/keymap/keys.txt: $(INCLUDE_PREFIX)/linux/input.h
- $(AM_V_at)mkdir -p src/keymap
- $(AM_V_GEN)$(AWK) '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' < $< | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
-
-src/keymap/keys-from-name.gperf: src/keymap/keys.txt
- $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@
-
-src/keymap/keys-from-name.h: src/keymap/keys-from-name.gperf Makefile
- $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@
-
-src/keymap/keys-to-name.h: src/keymap/keys.txt Makefile
- $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@
-
-keymaps-distcheck-hook: src/keymap/keys.txt
- $(top_srcdir)/src/keymap/check-keymaps.sh $(top_srcdir) $^
-DISTCHECK_HOOKS += keymaps-distcheck-hook
-endif
-
-if ENABLE_MTD_PROBE
+ src/login/logind-gperf.c \
+ src/login/73-seat-late.rules
+endif
# ------------------------------------------------------------------------------
-mtd_probe_SOURCES = \
- src/mtd_probe/mtd_probe.c \
- src/mtd_probe/mtd_probe.h \
- src/mtd_probe/probe_smartmedia.c
-mtd_probe_CPPFLAGS = $(AM_CPPFLAGS)
-dist_udevrules_DATA += src/mtd_probe/75-probe_mtd.rules
-pkglibexec_PROGRAMS += mtd_probe
+
+SED_PROCESS = \
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(SED) -e 's,@rootlibexecdir\@,$(rootlibexecdir),g' \
+ -e 's,@rootbindir\@,$(rootbindir),g' \
+ -e 's,@bindir\@,$(bindir),g' \
+ -e 's,@SYSTEMCTL\@,$(rootbindir)/systemctl,g' \
+ -e 's,@SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \
+ -e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \
+ -e 's,@pkgdatadir\@,$(pkgdatadir),g' \
+ -e 's,@pkglibexecdir\@,$(pkglibexecdir),g' \
+ -e 's,@systemunitdir\@,$(systemunitdir),g' \
+ -e 's,@userunitdir\@,$(userunitdir),g' \
+ -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
+ -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
+ -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' \
+ -e 's,@prefix\@,$(prefix),g' \
+ -e 's,@exec_prefix\@,$(exec_prefix),g' \
+ -e 's,@libdir\@,$(libdir),g' \
+ -e 's,@includedir\@,$(includedir),g' \
+ < $< > $@ || rm $@
+
+units/%: units/%.in Makefile
+ $(SED_PROCESS)
+
+man/%: man/%.in Makefile
+ $(SED_PROCESS)
+
+sysctl.d/%: sysctl.d/%.in Makefile
+ $(SED_PROCESS)
+
+%.pc: %.pc.in Makefile
+ $(SED_PROCESS)
+
+src/%.policy.in: src/%.policy.in.in Makefile
+ $(SED_PROCESS)
+
+src/%.rules: src/%.rules.in Makefile
+ $(SED_PROCESS)
+
+src/%.c: src/%.gperf
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(GPERF) < $< > $@
+
+src/%: src/%.m4
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(M4) -P $(M4_DEFINES) < $< > $@ || rm $@
+
+src/load-fragment-gperf-nulstr.c: src/load-fragment-gperf.gperf
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(AWK) 'BEGIN{ keywords=0 ; FS="," ; print "extern const char load_fragment_gperf_nulstr[];" ; print "const char load_fragment_gperf_nulstr[] ="} ; keyword==1 { print "\"" $$1 "\\0\"" } ; /%%/ { keyword=1} ; END { print ";" }' < $< > $@ || rm $@
+
+M4_PROCESS_SYSTEM = \
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(M4) -P $(M4_DEFINES) -DFOR_SYSTEM=1 < $< > $@ || rm $@
+
+M4_PROCESS_USER = \
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(M4) -P $(M4_DEFINES) -DFOR_USER=1 < $< > $@ || rm $@
+
+units/%: units/%.m4 Makefile
+ $(M4_PROCESS_SYSTEM)
+
+units/user/%: units/%.m4 Makefile
+ $(M4_PROCESS_USER)
+
+CLEANFILES += \
+ $(nodist_systemunit_DATA) \
+ $(nodist_userunit_DATA) \
+ $(nodist_man_MANS) \
+ $(pkgconfigdata_DATA) \
+ $(pkgconfiglib_DATA) \
+ $(nodist_polkitpolicy_DATA) \
+ src/load-fragment-gperf.gperf \
+ src/load-fragment-gperf.c \
+ src/load-fragment-gperf-nulstr.c \
+ src/99-systemd.rules
+
+if HAVE_XSLTPROC
+XSLTPROC_FLAGS = \
+ --nonet \
+ --stringparam funcsynopsis.style ansi
+
+XSLTPROC_PROCESS_MAN = \
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
+
+XSLTPROC_PROCESS_HTML = \
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $<
+
+man/%.1: man/%.xml
+ $(XSLTPROC_PROCESS_MAN)
+
+man/%.3: man/%.xml
+ $(XSLTPROC_PROCESS_MAN)
+
+man/%.5: man/%.xml
+ $(XSLTPROC_PROCESS_MAN)
+
+man/%.7: man/%.xml
+ $(XSLTPROC_PROCESS_MAN)
+
+man/%.8: man/%.xml
+ $(XSLTPROC_PROCESS_MAN)
+
+man/%.html: man/%.xml
+ $(XSLTPROC_PROCESS_HTML)
+
+CLEANFILES += \
+ $(dist_man_MANS) \
+ ${XML_FILES:.xml=.html}
endif
-# ------------------------------------------------------------------------------
-if ENABLE_RULE_GENERATOR
-dist_udevhome_SCRIPTS += \
- src/rule_generator/write_cd_rules \
- src/rule_generator/write_net_rules
+DBUS_PREPROCESS = $(CPP) -P $(DBUS_CFLAGS) -imacros dbus/dbus-protocol.h
-dist_udevhome_DATA += \
- src/rule_generator/rule_generator.functions
+org.freedesktop.systemd1.%.xml: systemd
+ $(AM_V_GEN)$(LIBTOOL) --mode=execute $(OBJCOPY) -O binary -j introspect.$* $< $@.tmp && \
+ $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \
+ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp
-dist_udevrules_DATA += \
- src/rule_generator/75-cd-aliases-generator.rules \
- src/rule_generator/75-persistent-net-generator.rules
+CLEANFILES += \
+ $(dbusinterface_DATA)
+
+systemd-install-data-hook:
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(tmpfilesdir) \
+ $(DESTDIR)$(sysconfdir)/tmpfiles.d \
+ $(DESTDIR)$(prefix)/lib/modules-load.d \
+ $(DESTDIR)$(sysconfdir)/modules-load.d \
+ $(DESTDIR)$(prefix)/lib/sysctl.d \
+ $(DESTDIR)$(sysconfdir)/sysctl.d \
+ $(DESTDIR)$(systemshutdowndir) \
+ $(DESTDIR)$(systemgeneratordir) \
+ $(DESTDIR)$(usergeneratordir)
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(systemunitdir) \
+ $(DESTDIR)$(userunitdir) \
+ $(DESTDIR)$(systemunitdir)/sysinit.target.wants \
+ $(DESTDIR)$(systemunitdir)/sockets.target.wants \
+ $(DESTDIR)$(systemunitdir)/basic.target.wants \
+ $(DESTDIR)$(systemunitdir)/shutdown.target.wants \
+ $(DESTDIR)$(systemunitdir)/local-fs.target.wants \
+ $(DESTDIR)$(systemunitdir)/runlevel1.target.wants \
+ $(DESTDIR)$(systemunitdir)/runlevel2.target.wants \
+ $(DESTDIR)$(systemunitdir)/runlevel3.target.wants \
+ $(DESTDIR)$(systemunitdir)/runlevel4.target.wants \
+ $(DESTDIR)$(systemunitdir)/runlevel5.target.wants \
+ $(DESTDIR)$(systemunitdir)/multi-user.target.wants \
+ $(DESTDIR)$(systemunitdir)/graphical.target.wants \
+ $(DESTDIR)$(pkgsysconfdir)/system \
+ $(DESTDIR)$(pkgsysconfdir)/system/sysinit.target.wants \
+ $(DESTDIR)$(pkgsysconfdir)/system/local-fs.target.wants \
+ $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants \
+ $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants \
+ $(DESTDIR)$(pkgsysconfdir)/user \
+ $(DESTDIR)$(dbussessionservicedir) \
+ $(DESTDIR)$(sysconfdir)/xdg/systemd
+ ( cd $(DESTDIR)$(sysconfdir)/xdg/systemd/ && \
+ rm -f user && \
+ $(LN_S) $(pkgsysconfdir)/user user )
+ ( cd $(DESTDIR)$(systemunitdir)/sockets.target.wants && \
+ rm -f systemd-initctl.socket systemd-shutdownd.socket && \
+ $(LN_S) ../systemd-initctl.socket systemd-initctl.socket && \
+ $(LN_S) ../systemd-shutdownd.socket systemd-shutdownd.socket )
+ ( cd $(DESTDIR)$(systemunitdir)/runlevel1.target.wants && \
+ rm -f systemd-update-utmp-runlevel.service && \
+ $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service )
+ ( cd $(DESTDIR)$(systemunitdir)/runlevel2.target.wants && \
+ rm -f systemd-update-utmp-runlevel.service && \
+ $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service )
+ ( cd $(DESTDIR)$(systemunitdir)/runlevel3.target.wants && \
+ rm -f systemd-update-utmp-runlevel.service && \
+ $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service )
+ ( cd $(DESTDIR)$(systemunitdir)/runlevel4.target.wants && \
+ rm -f systemd-update-utmp-runlevel.service && \
+ $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service )
+ ( cd $(DESTDIR)$(systemunitdir)/runlevel5.target.wants && \
+ rm -f systemd-update-utmp-runlevel.service && \
+ $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service )
+ ( cd $(DESTDIR)$(systemunitdir)/shutdown.target.wants && \
+ rm -f systemd-update-utmp-shutdown.service && \
+ $(LN_S) ../systemd-update-utmp-shutdown.service systemd-update-utmp-shutdown.service )
+ ( cd $(DESTDIR)$(systemunitdir)/local-fs.target.wants && \
+ rm -f systemd-remount-api-vfs.service \
+ fsck-root.service \
+ remount-rootfs.service \
+ tmp.mount && \
+ $(LN_S) ../systemd-remount-api-vfs.service systemd-remount-api-vfs.service && \
+ $(LN_S) ../fsck-root.service fsck-root.service && \
+ $(LN_S) ../remount-rootfs.service remount-rootfs.service && \
+ $(LN_S) ../tmp.mount tmp.mount )
+ ( cd $(DESTDIR)$(userunitdir) && \
+ rm -f shutdown.target sockets.target bluetooth.target printer.target sound.target && \
+ $(LN_S) $(systemunitdir)/shutdown.target shutdown.target && \
+ $(LN_S) $(systemunitdir)/sockets.target sockets.target && \
+ $(LN_S) $(systemunitdir)/bluetooth.target bluetooth.target && \
+ $(LN_S) $(systemunitdir)/printer.target printer.target && \
+ $(LN_S) $(systemunitdir)/sound.target sound.target )
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f runlevel0.target runlevel1.target runlevel2.target runlevel3.target runlevel4.target runlevel5.target runlevel6.target && \
+ $(LN_S) poweroff.target runlevel0.target && \
+ $(LN_S) rescue.target runlevel1.target && \
+ $(LN_S) multi-user.target runlevel2.target && \
+ $(LN_S) multi-user.target runlevel3.target && \
+ $(LN_S) multi-user.target runlevel4.target && \
+ $(LN_S) graphical.target runlevel5.target && \
+ $(LN_S) reboot.target runlevel6.target )
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f default.target ctrl-alt-del.target autovt@.service && \
+ $(LN_S) graphical.target default.target && \
+ $(LN_S) reboot.target ctrl-alt-del.target && \
+ $(LN_S) getty@.service autovt@.service )
+ ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \
+ rm -f getty.target systemd-ask-password-wall.path && \
+ $(LN_S) ../getty.target getty.target && \
+ $(LN_S) ../systemd-ask-password-wall.path systemd-ask-password-wall.path)
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants && \
+ rm -f getty@tty1.service && \
+ $(LN_S) $(systemunitdir)/getty@.service getty@tty1.service )
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \
+ rm -f remote-fs.target && \
+ $(LN_S) $(systemunitdir)/remote-fs.target remote-fs.target )
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f dev-hugepages.mount \
+ dev-mqueue.mount \
+ sys-kernel-config.mount \
+ sys-kernel-debug.mount \
+ sys-fs-fuse-connections.mount \
+ systemd-modules-load.service \
+ systemd-tmpfiles-setup.service \
+ systemd-sysctl.service \
+ systemd-ask-password-console.path && \
+ $(LN_S) ../dev-hugepages.mount dev-hugepages.mount && \
+ $(LN_S) ../dev-mqueue.mount dev-mqueue.mount && \
+ $(LN_S) ../sys-kernel-config.mount sys-kernel-config.mount && \
+ $(LN_S) ../sys-kernel-debug.mount sys-kernel-debug.mount && \
+ $(LN_S) ../sys-fs-fuse-connections.mount sys-fs-fuse-connections.mount && \
+ $(LN_S) ../systemd-modules-load.service systemd-modules-load.service && \
+ $(LN_S) ../systemd-tmpfiles-setup.service systemd-tmpfiles-setup.service && \
+ $(LN_S) ../systemd-sysctl.service systemd-sysctl.service && \
+ $(LN_S) ../systemd-ask-password-console.path systemd-ask-password-console.path )
+ ( cd $(DESTDIR)$(systemunitdir)/basic.target.wants && \
+ rm -f systemd-tmpfiles-clean.timer && \
+ $(LN_S) ../systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.timer )
+ ( cd $(DESTDIR)$(dbussessionservicedir) && \
+ rm -f org.freedesktop.systemd1.service && \
+ $(LN_S) ../system-services/org.freedesktop.systemd1.service org.freedesktop.systemd1.service )
+if HAVE_PLYMOUTH
+ $(MKDIR_P) -m 0755 \
+ $(DESTDIR)$(SYSTEM_SYSVINIT_PATH) \
+ $(DESTDIR)$(systemunitdir)/reboot.target.wants \
+ $(DESTDIR)$(systemunitdir)/kexec.target.wants \
+ $(DESTDIR)$(systemunitdir)/poweroff.target.wants \
+ $(DESTDIR)$(systemunitdir)/halt.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \
+ rm -f plymouth-start.service plymouth-read-write.service && \
+ $(LN_S) ../plymouth-start.service plymouth-start.service && \
+ $(LN_S) ../plymouth-read-write.service plymouth-read-write.service )
+ ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \
+ rm -f plymouth-quit.service plymouth-quit-wait.service && \
+ $(LN_S) ../plymouth-quit.service plymouth-quit.service && \
+ $(LN_S) ../plymouth-quit-wait.service plymouth-quit-wait.service )
+ ( cd $(DESTDIR)$(systemunitdir)/reboot.target.wants && \
+ rm -f plymouth-reboot.service && \
+ $(LN_S) ../plymouth-reboot.service plymouth-reboot.service )
+ ( cd $(DESTDIR)$(systemunitdir)/kexec.target.wants && \
+ rm -f plymouth-kexec.service && \
+ $(LN_S) ../plymouth-kexec.service plymouth-kexec.service )
+ ( cd $(DESTDIR)$(systemunitdir)/poweroff.target.wants && \
+ rm -f plymouth-poweroff.service && \
+ $(LN_S) ../plymouth-poweroff.service plymouth-poweroff.service )
+ ( cd $(DESTDIR)$(systemunitdir)/halt.target.wants && \
+ rm -f plymouth-halt.service && \
+ $(LN_S) ../plymouth-halt.service plymouth-halt.service )
+endif
+if TARGET_MEEGO
+ $(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \
+ rm -f network.target && \
+ $(LN_S) $(systemunitdir)/network.target network.target )
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/sysinit.target.wants && \
+ rm -f * )
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/local-fs.target.wants && \
+ rm -f * )
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \
+ rm -f * )
+ ( cd $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants && \
+ rm -f * )
endif
-# ------------------------------------------------------------------------------
-if ENABLE_FLOPPY
-create_floppy_devices_SOURCES = src/floppy/create_floppy_devices.c
-create_floppy_devices_LDADD = libudev-private.la
-pkglibexec_PROGRAMS += create_floppy_devices
-dist_udevrules_DATA += src/floppy/60-floppy.rules
+if TARGET_FEDORA
+ $(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/final.target.wants && \
+ rm -f halt-local.service && \
+ $(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f display-manager.service single.service && \
+ $(LN_S) prefdm.service display-manager.service && \
+ $(LN_S) rescue.service single.service )
+ ( cd $(DESTDIR)$(systemunitdir)/graphical.target.wants && \
+ rm -f display-manager.service && \
+ $(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
endif
-# ------------------------------------------------------------------------------
-clean-local:
- rm -rf udev-test-install
+if TARGET_MANDRIVA
+ $(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/final.target.wants && \
+ rm -f halt-local.service && \
+ $(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f display-manager.service dm.service single.service && \
+ $(LN_S) prefdm.service display-manager.service && \
+ $(LN_S) prefdm.service dm.service && \
+ $(LN_S) rescue.service single.service )
+ ( cd $(DESTDIR)$(systemunitdir)/graphical.target.wants && \
+ rm -f display-manager.service && \
+ $(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
+endif
-distclean-local:
- rm -rf autom4te.cache
+if TARGET_DEBIAN_OR_UBUNTU
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f runlevel5.target && \
+ $(LN_S) multi-user.target runlevel5.target )
+endif
-EXTRA_DIST += \
- $(TESTS) \
- test/rule-syntax-check.py
+if TARGET_SUSE
+ $(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f local.service && \
+ $(LN_S) rc-local.service local.service )
+ ( cd $(DESTDIR)$(systemunitdir)/final.target.wants && \
+ rm -f halt-local.service && \
+ $(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
+endif
-CLEANFILES += \
- $(BUILT_SOURCES)
+if TARGET_MAGEIA
+ $(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+ ( cd $(DESTDIR)$(systemunitdir)/final.target.wants && \
+ rm -f halt-local.service && \
+ $(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
+ ( cd $(DESTDIR)$(systemunitdir) && \
+ rm -f display-manager.service && \
+ $(LN_S) prefdm.service display-manager.service && \
+ $(LN_S) prefdm.service dm.service )
+ ( cd $(DESTDIR)$(systemunitdir)/graphical.target.wants && \
+ rm -f display-manager.service && \
+ $(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
+endif
install-exec-hook: $(INSTALL_EXEC_HOOKS)
-install-data-hook: $(INSTALL_DATA_HOOKS)
-
uninstall-hook: $(UNINSTALL_EXEC_HOOKS)
-distcheck-hook: $(DISTCHECK_HOOKS)
-
-distclean-local: $(DISTCLEAN_LOCAL_HOOKS)
+install-data-hook: systemd-install-data-hook $(INSTALL_DATA_HOOKS)
-# ------------------------------------------------------------------------------
-PREVIOUS_VERSION = `expr $(VERSION) - 1`
-changelog:
- @ head -1 ChangeLog | grep -q "to v$(PREVIOUS_VERSION)"
- @ mv ChangeLog ChangeLog.tmp
- @ echo "Summary of changes from v$(PREVIOUS_VERSION) to v$(VERSION)" >> ChangeLog
- @ echo "============================================" >> ChangeLog
- @ echo >> ChangeLog
- @ git log --pretty=short $(PREVIOUS_VERSION)..HEAD | git shortlog >> ChangeLog
- @ echo >> ChangeLog
- @ cat ChangeLog
- @ cat ChangeLog.tmp >> ChangeLog
- @ rm ChangeLog.tmp
-
-test-install:
- rm -rf $(PWD)/udev-test-install/
- make DESTDIR=$(PWD)/udev-test-install install
- tree $(PWD)/udev-test-install/
-
-git-release:
- head -1 ChangeLog | grep -q "to v$(VERSION)"
- head -1 NEWS | grep -q "udev $(VERSION)"
- git commit -a -m "release $(VERSION)"
- git tag -m "udev $(VERSION)" -s $(VERSION)
- git gc --prune=0
-
-git-sync:
- git push
- git push --tags
-
-tar-sync:
- rm -f udev-$(VERSION).tar.sign
- xz -d -c udev-$(VERSION).tar.xz | gpg --armor --detach-sign --output udev-$(VERSION).tar.sign
- kup put udev-$(VERSION).tar.xz udev-$(VERSION).tar.sign /pub/linux/utils/kernel/hotplug/
-
-doc-sync:
- for i in src/*.html; do rm -f $$i.sign; gpg --armor --detach-sign --output=$$i.sign $$i; done
- for i in src/*.html; do echo $$i; kup put $$i $$i.sign /pub/linux/utils/kernel/hotplug/udev/; done
- for i in src/docs/html/*.{html,css,png}; do rm -f $$i.sign; gpg --armor --detach-sign --output=$$i.sign $$i; done
- for i in src/docs/html/*.{html,css,png}; do echo $$i; kup put $$i $$i.sign /pub/linux/utils/kernel/hotplug/libudev/; done
- for i in src/gudev/docs/html/*.{html,css,png}; do rm -f $$i.sign; gpg --armor --detach-sign --output=$$i.sign $$i; done
- for i in src/gudev/docs/html/*.{html,css,png}; do echo $$i; kup put $$i $$i.sign /pub/linux/utils/kernel/hotplug/gudev/; done
+DISTCHECK_CONFIGURE_FLAGS = \
+ --with-dbuspolicydir=$$dc_install_base/$(dbuspolicydir) \
+ --with-dbussessionservicedir=$$dc_install_base/$(dbussessionservicedir) \
+ --with-dbussystemservicedir=$$dc_install_base/$(dbussystemservicedir) \
+ --with-dbusinterfacedir=$$dc_install_base/$(dbusinterfacedir) \
+ --with-udevrulesdir=$$dc_install_base/$(udevrulesdir) \
+ --with-pamlibdir=$$dc_install_base/$(pamlibdir) \
+ --with-rootprefix=$$dc_install_base \
+ --disable-split-usr
+
+upload: all distcheck
+ cp -v systemd-$(VERSION).tar.xz /home/lennart/git.fedora/systemd/
+ scp systemd-$(VERSION).tar.xz fdo:/srv/www.freedesktop.org/www/software/systemd/
+ scp man/*.html fdo:/srv/www.freedesktop.org/www/software/systemd/man/
+ scp man/*.html tango:public/systemd-man/
+
+git-tag:
+ git tag "v$(VERSION)" -m "systemd $(VERSION)"
diff --git a/NEWS b/NEWS
index f4f6f4e32..c82e637d0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,1735 +1,279 @@
-udev 182
-========
-Rules files in /etc/udev/rules.s/ with the same name as rules files in
-/run/udev/rules.d/ now always have precedence. The stack of files is now:
-/usr/lib (package), /run (runtime, auto-generated), /etc (admin), while
-the later ones override the earlier ones. In other words: the admin has
-always the last say.
+systemd System and Service Manager
-USB auto-suspend is now enabled by default for some built-in USB HID
-devices.
+CHANGES WITH:
+ * systemd-logingctl and systemd-journalctl have been renamed
+ to logingctl and journalctl to match systemctl.
-/dev/disk/by-path/ links are no longer created for ATA devices behind
-an 'ATA transport class', the logic to extract predictable numbers does
-not exist in the kernel at this moment.
+ * The config files: /etc/systemd/systemd-logind.conf and
+ /etc/systemd/systemd-journald.conf have been renamed to
+ logind.conf and journald.conf. Package updates should rename
+ the files to the new names on upgrade.
-/dev/disk/by-id/scsi-* compatibility links are no longer created for
-ATA devices, they have their own ata-* prefix.
+CHANGES WITH 44:
+ * This is mostly a bugfix release
-The s390 rule to set mode == 0666 for /dev/z90crypt is is removed from
-the udev tree and will be part of s390utils (or alternatively could be
-done by the kernel driver itself).
+ * Support optional initialization of the machine ID from the
+ KVM or container configured UUID.
-The udev-acl tool is no longer provided, it will be part of a future
-ConsoleKit release. On systemd systems, advanced ConsoleKit and udev-acl
-functionality are provided by systemd.
+ * Support immediate reboots with "systemctl reboot -ff"
-udev 181
-========
-Require kmod version 5.
+ * Show /etc/os-release data in systemd-analyze output
-Provide /dev/cdrom symlink for /dev/sr0.
+ * Many bugfixes for the journal, including endianess fixes and
+ ensuring that disk space enforcement works
-udev 180
-========
-Fix for ID_PART_ENTRY_* property names, added by the blkid built-in. The
-fix is needed for udisk2 to operate properly.
+ * sd-login.h is C++ comptaible again
-Fix for skipped rule execution when the kernel has removed the device
-node in /dev again, before the event was even started. The fix is needed
-to run device-mapper/LVM events properly.
+ * Extend the /etc/os-release format on request of the Debian
+ folks
-Fix for the man page installation, which was skipped when xsltproc was not
-installed.
+ * We now refuse non-UTF8 strings used in various configuration
+ and unit files. This is done to ensure we don't pass invalid
+ data over D-Bus or expose it elsewhere.
-udev 179
-========
-Bugfix for $name resolution, which broke at least some keymap handling.
+ * Register Mimo USB Screens as suitable for automatic seat
+ configuration
-udev 178
-========
-Bugfix for the firmware loading behavior with kernel modules which
-try to load firmware in the module_init() path. The blocked event
-runs into a timout now, which should allow the firmware to be loaded.
+ * Read SELinux client context from journal clients in a race
+ free fashion
-Bugfix for a wrong DEVNAME= export, which breaks at least the udev-acl
-tool.
+ * Reorder configuration file lookup order. /etc now always
+ overrides /run in order to allow the administrator to always
+ and unconditionally override vendor supplied or
+ automatically generated data.
-Bugfix for missing ID_ properties for GPT partitions.
+ * The various user visible bits of the journal now have man
+ pages. We still lack man pages for the journal API calls
+ however.
-The RUN+="socket:.." option is deprecated and should not be used. A warning
-during rules parsing is printed now. Services which listen to udev events,
-need to subscribe to the netlink messages with libudev and not let udev block
-in the rules execution until the message is delivered.
+ * We now ship all man pages in HTML format again in the
+ tarball.
-udev 177
-========
-Bugfix for rule_generator instalation.
+ Contributions from: Dave Reisner, Dirk Eibach, Frederic
+ Crozat, Harald Hoyer, Kay Sievers, Lennart Poettering, Marti
+ Raudsepp, Michal Schmidt, Shawn Landden, Tero Roponen, Thierry
+ Reding
-udev 176
-========
-The 'devtmpfs' filesystem is required now, udev will not create or delete
-device nodes anymore, it only adjusts permissions and ownership of device
-nodes and maintains additional symlinks.
+CHANGES WITH 43:
+ * This is mostly a bugfix release
-A writable /run directory (ususally tmpfs) is required now for a fully
-functional udev, there is no longer a fallback to /dev/.udev.
+ * systems lacking /etc/os-release are no longer supported.
-The default 'configure' install locations have changed. Packages for systems
-with the historic / vs. /usr split need to be adapted, otherwise udev will
-be installed in /usr and not work properly. Example configuration options
-to install things the traditional way are in INSTALL.
+ * Various functionality updates to libsystemd-login.so
-The default install location of the 'udevadm' tool moved from 'sbin'
-to /usr/bin. Some tools expect udevadm in 'sbin', a symlink to udevadm
-needs to be manually created if needed, or --bindir=/sbin be specified.
+ * Track class of PAM logins to distuingish greeters from
+ normal user logins.
-The expected value of '--libexecdir=' has changed and must no longer contain
-the 'udev' directory.
+ Contributions from: Kay Sievers, Lennart Poettering, Michael
+ Biebl
-Kernel modules are now loaded directly by linking udev to 'libkmod'. The
-'modprobe' tool is no longer executed by udev.
+CHANGES WITH 42:
+ * This is an important bugfix release for v41.
-The 'blkid' tool is no longer executed from udev rules. Udev links
-directly to libblkid now.
+ * Building man pages is now optional which should be useful
+ for those building systemd from git but unwilling to install
+ xsltproc.
-Firmware is loaded natively by udev now, the external 'firmware' binary
-is no longer used.
+ * Watchdog support for supervising services is now usable. In
+ a future release support for hardware watchdogs
+ (i.e. /dev/watchdog) will be added building on this.
-All built-in tools can be listed and tested with 'udevadm test-builtin'.
+ * Service start rate limiting is now configurable and can be
+ turned off per service. When a start rate limit is hit a
+ reboot can automatically be triggered.
-The 'udevadm control --reload-rules' option has been renamed to '--reload'.
-It now also reloads the kernel module configuration.
+ * New CanReboot(), CanPowerOff() bus calls in systemd-logind.
-The systemd socket files use PassCredentials=yes, which is available in
-systemd version 38.
+ Contributions from: Benjamin Franzke, Bill Nottingham,
+ Frederic Crozat, Lennart Poettering, Michael Olbrich, Michal
+ Schmidt, Michał Górny, Piotr Drąg
-The udev build system only creates a .xz tarball now.
+CHANGES WITH 41:
+ * The systemd binary is installed /usr/lib/systemd/systemd now;
+ An existing /sbin/init symlink needs to be adapted with the
+ package update.
-All tabs in the source code used for indentation are replaced by spaces now. :)
+ * The code that loads kernel modules has been ported to invoke
+ libkmod directly, instead of modprobe. This means we do not
+ support systems with module-init-tools anymore.
-udev 175
-========
-Bugfixes.
+ * Watchdog support is now already useful, but still not
+ complete.
-udev 174
-========
-Bugfixes.
+ * A new kernel command line option systemd.setenv= is
+ understood to set system wide environment variables
+ dynamically at boot.
-The udev daemon moved to /lib/udev/udevd. Non-systemd init systems
-and non-dracut initramfs image generators need to change the init
-scripts. Alternatively the udev build needs to move udevd back to
-/sbin or create a symlink in /sbin, which is not done by default.
+ * We now limit the set of capabilities of systemd-journald.
-The path_id, usb_id, input_id tools are built-in commands now and
-the stand-alone tools do not exist anymore. Static lists of file in
-initramfs generators need to be updated. For testing, the commands
-can still be executed standalone with 'udevadm test-builtin <cmd>'.
+ * We now set SIGPIPE to ignore by default, since it only is
+ useful in shell pipelines, and has little use in general
+ code. This can be disabled with IgnoreSIPIPE=no in unit
+ files.
-The fusectl filesystem is no longer mounted directly from udev.
-Systemd systems will take care of mounting fusectl and configfs
-now. Non-systemd systems need to ship their own rule if they
-need these filesystems auto-mounted.
-
-The long deprecated keys: SYSFS=, ID=, BUS= have been removed.
+ Contributions from: Benjamin Franzke, Kay Sievers, Lennart
+ Poettering, Michael Olbrich, Michal Schmidt, Tom Gundersen,
+ William Douglas
-The support for 'udevadm trigger --type=failed, and the
-RUN{fail_event_on_error} attribute was removed.
+CHANGES WITH 40:
+ * This is mostly a bugfix release
-The udev control socket is now created in /run/udev/control
-and no longer as an abstract namespace one.
+ * We now expose the reason why a service failed in the
+ "Result" D-Bus property.
-The rules to create persistent network interface and cdrom link
-rules automatically in /etc/udev/rules.d/ have been disabled by
-default. Explicit configuration will be required for these use
-cases, udev will no longer try to write any persistent system
-configuration from a device hotplug path.
+ * Rudimentary service watchdog support (will be completed over
+ the next few releases.)
-udev 173
-========
-Bugfixes.
-
-The udev-acl extra is no longer enabled by default now. To enable it,
---enable-udev_acl needs to be given at ./configure time. On systemd
-systems, the udev-acl rules prevent it from running as the functionality
-has moved to systemd.
+ * When systemd forks off in order execute some service we will
+ now immediately changes its argv[0] to reflect which process
+ it will execute. This is useful to minimize the time window
+ with a generic argv[0], which makes bootcharts more useful
-udev 172
-========
-Bugfixes.
-
-Udev now enables kernel media-presence polling if available. Part
-of udisks optical drive tray-handling moved to cdrom_id: The tray
-is locked as soon as a media is detected to enable the receiving
-of media-eject-request events. Media-eject-request events will
-eject the media.
-
-Libudev enumerate is now able to enumerate a subtree of a given
-device.
-
-The mobile-action-modeswitch modeswitch tool was deleted. The
-functionality is provided by usb_modeswitch now.
+ Contributions from: Alvaro Soliverez, Chris Paulson-Ellis, Kay
+ Sievers, Lennart Poettering, Michael Olbrich, Michal Schmidt,
+ Mike Kazantsev, Ray Strode
-udev 171
-========
-Bugfixes.
+CHANGES WITH 39:
+ * This is mostly a test release, but incorporates many
+ bugfixes.
-The systemd service files require systemd version 28. The systemd
-socket activation make it possible now to start 'udevd' and 'udevadm
-trigger' in parallel.
+ * New systemd-cgtop tool to show control groups by their
+ resource usage.
-udev 170
-========
-Fix bug in control message handling, which can lead to a failing
-udevadm control --exit. Thanks to Jürg Billeter for help tracking
-it down.
-
-udev 169
-========
-Bugfixes.
-
-We require at least Linux kernel 2.6.32 now. Some platforms might
-require a later kernel that supports accept4() and similar, or
-need to backport the trivial syscall wiring to the older kernels.
-
-The hid2hci tool moved to the bluez package and was removed.
-
-Many of the extras can be --enable/--disabled at ./configure
-time. The --disable-extras option was removed. Some extras have
-been disabled by default. The current options and their defaults
-can be checked with './configure --help'.
-
-udev 168
-========
-Bugfixes.
-
-Udev logs a warning now if /run is not writable at udevd
-startup. It will still fall back to /dev/.udev, but this is
-now considered a bug.
-
-The running udev daemon can now cleanly shut down with:
- udevadm control --exit
-
-Udev in initramfs should clean the state of the udev database
-with: udevadm info --cleanup-db which will remove all state left
-behind from events/rules in initramfs. If initramfs uses
---cleanup-db and device-mapper/LVM, the rules in initramfs need
-to add OPTIONS+="db_persist" for all dm devices. This will
-prevent removal of the udev database for these devices.
-
-Spawned programs by PROGRAM/IMPORT/RUN now have a hard timeout of
-120 seconds per process. If that timeout is reached the spawned
-process will be killed. The event timeout can be overwritten with
-udev rules.
-
-If systemd is used, udev gets now activated by netlink data.
-Systemd will bind the netlink socket which will buffer all data.
-If needed, such setup allows a seemless update of the udev daemon,
-where no event can be lost during a udevd update/restart.
-Packages need to make sure to: systemctl stop udev.socket udev.service
-or 'mask' udev.service during the upgrade to prevent any unwanted
-auto-spawning of udevd.
-This version of udev conflicts with systemd version below 25. The
-unchanged service files will not wirk correctly.
-
-udev 167
-========
-Bugfixes.
-
-The udev runtime data moved from /dev/.udev/ to /run/udev/. The
-/run mountpoint is supposed to be a tmpfs mounted during early boot,
-available and writable to for all tools at any time during bootup,
-it replaces /var/run/, which should become a symlink some day.
-
-If /run does not exist, or is not writable, udev will fall back using
-/dev/.udev/.
-
-On systemd systems with initramfs and LVM used, packagers must
-make sure, that the systemd and initramfs versions match. The initramfs
-needs to create the /run mountpoint for udev to store the data, and
-mount this tmpfs to /run in the rootfs, so the that the udev database
-is preserved for the udev version started in the rootfs.
-
-The command 'udevadm info --convert-db' is gone. The udev daemon
-itself, at startup, converts any old database version if necessary.
-
-The systemd services files have been reorganized. The udev control
-socket is bound by systemd and passed to the started udev daemon.
-The udev-settle.service is no longer active by default. Services which
-can not handle hotplug setups properly need to actively pull it in, to
-act like a barrier. Alternatively the settle service can be unconditionally
-'systemctl'enabled, and act like a barrier for basic.target.
-
-The fstab_import callout is no longer built or installed. Udev
-should not be used to mount, does not watch changes to fstab, and
-should not mirror fstab values in the udev database.
-
-udev 166
-========
-Bugfixes.
-
-New and updated keymaps.
-
-udev 165
-========
-Bugfixes.
-
-The udev database has changed, After installation of a new udev
-version, 'udevadm info --convert-db' should be called, to let the new
-udev/libudev version read the already stored data.
-
-udevadm now supports quoting of property values, and prefixing of
-key names:
- $ udevadm info --export --export-prefix=MY_ --query=property -n sda
- MY_MAJOR='259'
- MY_MINOR='0'
- MY_DEVNAME='/dev/sda'
- MY_DEVTYPE='disk'
- ...
-
-libudev now supports:
- udev_device_get_is_initialized()
- udev_enumerate_add_match_is_initialized()
-to be able to skip devices the kernel has created , but udev has
-not already handled.
-
-libudev now supports:
- udev_device_get_usec_since_initialized()
-to retrieve the "age" of a udev device record.
-
-GUdev supports a more generic GUdevEnumerator class, udev TAG
-handling, device initialization and timestamp now.
-
-The counterpart of /sys/dev/{char,block}/$major:$minor,
-/dev/{char,block}/$major:$minor symlinks are now unconditionally
-created, even when no rule files exist.
-
-New and updated keymaps.
-
-udev 164
-========
-Bugfixes.
-
-GUdev moved from /usr to /.
-
-udev 163
-========
-Bugfixes.
-
-udev 162
-========
-Bugfixes.
-
-Persistent network naming rules are disabled inside of Qemu/KVM now.
-
-New and updated keymaps.
-
-Udev gets unconditionally enabled on systemd installations now. There
-is no longer the need to to run 'systemctl enable udev.service'.
-
-udev 161
-========
-Bugfixes.
-
-udev 160
-========
-Bugfixes.
-
-udev 159
-========
-Bugfixes.
-
-New and fixed keymaps.
-
-Install systemd service files if applicable.
-
-udev 158
-========
-Bugfixes.
-
-All distribution specific rules are removed from the udev source tree,
-most of them are no longer needed. The Gentoo rules which allow to support
-older kernel versions, which are not covered by the default rules anymore
-has moved to rules/misc/30-kernel-compat.rules.
-
-udev 157
-========
-Bugfixes.
-
-The option --debug-trace and the environemnt variable UDEVD_MAX_CHILDS=
-was removed from udevd.
-
-Udevd now checks the kernel commandline for the following variables:
- udev.log-priority=<syslog priority>
- udev.children-max=<maximum number of workers>
- udev.exec-delay=<seconds to delay the execution of RUN=>
-to help debuging coldplug setups where the loading of a kernel
-module crashes the system.
-
-The subdirectory in the source tree rules/packages has been renamed to
-rules/arch, anc contains only architecture specific rules now.
-
-udev 156
-========
-Bugfixes.
-
-udev 155
-========
-Bugfixes.
-
-Now the udev daemon itself, does on startup:
- - copy the content of /lib/udev/devices to /dev
- - create the standard symlinks like /dev/std{in,out,err},
- /dev/core, /dev/fd, ...
- - use static node information provided by kernel modules
- and creates these nodes to allow module on-demand loading
- - possibly apply permissions to all ststic nodes from udev
- rules which are annotated to match a static node
-
-The default mode for a device node is 0600 now to match the kernel
-created devtmpfs defaults. If GROUP= is specified and no MODE= is
-given the default will be 0660.
-
-udev 154
-========
-Bugfixes.
-
-Udev now gradually starts to pass control over the primary device nodes
-and their names to the kernel, and will in the end only manage the
-permissions of the node, and possibly create additional symlinks.
-As a first step NAME="" will be ignored, and NAME= setings with names
-other than the kernel provided name will result in a logged warning.
-Kernels that don't provide device names, or devtmpfs is not used, will
-still work as they did before, but it is strongly recommended to use
-only the same names for the primary device node as the recent kernel
-provides for all devices.
-
-udev 153
-========
-Fix broken firmware loader search path.
-
-udev 152
-========
-Bugfixes.
-
-"udevadm trigger" defaults to "change" events now instead of "add"
-events. The "udev boot script" might need to add "--action=add" to
-the trigger command if not already there, in case the initial coldplug
-events are expected as "add" events.
-
-The option "all_partitons" was removed from udev. This should not be
-needed for usual hardware. Udev can not safely make assumptions
-about non-existing partition major/minor numbers, and therefore no
-longer provide this unreliable and unsafe option.
-
-The option "ignore_remove" was removed from udev. With devtmpfs
-udev passed control over device nodes to the kernel. This option
-should not be needed, or can not work as advertised. Neither
-udev nor the kernel will remove device nodes which are copied from
-the /lib/udev/devices/ directory.
-
-All "add|change" matches are replaced by "!remove" in the rules and
-in the udev logic. All types of events will update possible symlinks
-and permissions, only "remove" is handled special now.
-
-The modem modeswitch extra was removed and the external usb_modeswitch
-program should be used instead.
-
-New and fixed keymaps.
-
-udev 151
-========
-Bugfixes.
-
-udev 150
-========
-Bugfixes.
-
-Kernels with SYSFS_DEPRECATED=y are not supported since a while. Many users
-depend on the current sysfs layout and the information not available in the
-deprecated layout. All remaining support for the deprecated sysfs layout is
-removed now.
-
-udev 149
-========
-Fix for a possible endless loop in the new input_id program.
-
-udev 148
-========
-Bugfixes.
-
-The option "ignore_device" does no longer exist. There is no way to
-ignore an event, as libudev events can not be suppressed by rules.
-It only prevented RUN keys from being executed, which results in an
-inconsistent behavior in current setups.
-
-BUS=, SYSFS{}=, ID= are long deprecated and should be SUBSYSTEM(S)=,
-ATTR(S){}=, KERNEL(S)=. It will cause a warning once for every rule
-file from now on.
-
-The support for the deprecated IDE devices has been removed from the
-default set of rules. Distros who still care about non-libata drivers
-need to add the rules to the compat rules file.
-
-The ID_CLASS property on input devices has been replaced by the more accurate
-set of flags ID_INPUT_{KEYBOARD,KEY,MOUSE,TOUCHPAD,TABLET,JOYSTICK}. These are
-determined by the new "input_id" prober now. Some devices, such as touchpads,
-can have several classes. So if you previously had custom udev rules which e. g.
-checked for ENV{ID_CLASS}=="kbd", you need to replace this with
-ENV{ID_INPUT_KEYBOARD}=="?*".
-
-udev 147
-========
-Bugfixes.
-
-To support DEVPATH strings larger than the maximum file name length, the
-private udev database format has changed. If some software still reads the
-private files in /dev/.udev/, which it shouldn't, now it's time to fix it.
-Please do not port anything to the new format again, everything in /dev/.udev
-is and always was private to udev, and may and will change any time without
-prior notice.
-
-Multiple devices claiming the same names in /dev are limited to symlinks
-only now. Mixing identical symlink names and node names is not supported.
-This reduces the amount of data in the database significantly.
-
-NAME="%k" causes a warning now. It's is and always was completely superfluous.
-It will break kernel supplied DEVNAMEs and therefore it needs to be removed
-from all rules.
-
-Most NAME= instructions got removed. Kernel 2.6.31 supplies the needed names
-if they are not the default. To support older kernels, the NAME= rules need to
-be added to the compat rules file.
-
-Symlinks to udevadm with the old command names are no longer resolved to
-the udevadm commands.
-
-The udev-acl tool got adopted to changes in ConsoleKit. Version 0.4.1 is
-required now.
-
-The option "last_rule" does no longer exist. Its use breaks too many
-things which expect to be run from independent later rules, and is an idication
-that something needs to be fixed properly instead.
-
-The gudev API is no longer marked as experimental,
-G_UDEV_API_IS_SUBJECT_TO_CHANGE is no longer needed. The gudev introspection
-is enabled by default now. Various projects already depend on introspection
-information to bind dynamic languages to the gudev interfaces.
-
-udev 146
-========
-Bugfixes.
-
-The udevadm trigger "--retry-failed" option, which is replaced since quite
-a while by "--type=failed" is removed.
-
-The failed tracking was not working at all for a few releases. The RUN
-option "ignore_error" is replaced by a "fail_event_on_error" option, and the
-default is not to track any failing RUN executions.
-
-New keymaps, new modem, hid2hci updated.
-
-udev 145
-========
-Fix possible crash in udevd when worker processes are busy, rules are
-changed at the same time, and workers get killed to reload the rules.
-
-udev 144
-========
-Bugfixes.
-
-Properties set with ENV{.FOO}="bar" are marked private by starting the
-name with a '.'. They will not be stored in the database, and not be
-exported with the event.
-
-Firmware files are looked up in:
- /lib/firmware/updates/$(uname -r)
- /lib/firmware/updates
- /lib/firmware/$(uname -r)
- /lib/firmware"
-now.
-
-ATA devices switched the property from ID_BUS=scsi to ID_BUS=ata.
-ata_id, instead of scsi_id, is the default tool now for ATA devices.
-
-udev 143
-========
-Bugfixes.
-
-The configure options have changed because another library needs to be
-installed in a different location. Instead of exec_prefix and udev_prefix,
-libdir, rootlibdir and libexecdir are used. The Details are explained in
-the README file.
-
-Event processes now get re-used after they handled an event. This reduces
-the number of forks and the pressure on the CPU significantly, because
-cloned event processes no longer cause page faults in the main daemon.
-After the events have settled, a few worker processes stay around for
-future events, all others get cleaned up.
-
-To be able to use signalfd(), udev depends on kernel version 2.6.25 now.
-Also inotify support is mandatory now to run udev.
-
-The format of the queue exported by the udev damon has changed. There is
-no longer a /dev/.udev/queue/ directory. The current event queue can be
-accessed with udevadm settle and libudedv.
-
-Libudev does not have the unstable API header anymore. From now on,
-incompatible changes will be handled by bumping the library major version.
-
-To build udev from the git tree gtk-doc is needed now. The tarballs will
-build without it and contain the pre-built documentation. An online copy
-is available here:
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/
-
-The tools from the udev-extras repository have been merged into the main
-udev repository. Some of the extras have larger external dependencies, and
-they can be disabled with the configure switch --disable-extras.
-
-udev 142
-========
-Bugfixes.
-
-The program vol_id and the library libvolume_id are removed from the
-repository. Libvolume_id is merged with libblkid from the util-linux-ng
-package. Persistent disk links for label and uuid depend on the
-util-linux-ng version (2.15) of blkid now. Older versions of blkid
-can not be used with udev.
-
-Libudev allows to subscribe to udev events. To prevent unwanted messages
-to be delivered, and waking up the subscribing process, a filter can be
-installed, to drop messages inside a kernel socket filter. The filters
-match on the <subsytem>:<devtype> properties of the device.
- This is part of the ongoing effort to replace HAL, and switch current
-users over to directly use libudev.
- Libudev is still marked as experimental, and its interface might
-eventually change if needed, but no major changes of the currently exported
-interface are expected anymore, and a first stable release should happen
-soon.
-
-A too old kernel (2.6.21) or a kernel with CONFIG_SYSFS_DEPRECATED
-is not supported since while and udevd will log an error message at
-startup. It should still be able to boot-up, but advanced rules and system
-services which depend on the information not available in the old sysfs
-format will fail to work correctly.
-
-DVB device naming is supplied by the kernel now. In case older kernels
-need to be supported, the old shell script should be added to a compat
-rules file.
-
-udev 141
-========
-Bugfixes.
-
-The processed udev events get send back to the netlink socket. Libudev
-provides access to these events. This is work-in-progress, to replace
-the DeviceKit daemon functionality directly with libudev. There are
-upcoming kernel changes to allow non-root users to subcribe to these
-events.
-
-udev 140
-========
-Bugfixes.
-
-"udevadm settle" now optionally accepts a range of events to wait for,
-instead of waiting for "all" events.
-
-udev 139
-========
-Bugfixes.
-
-The installed watch for block device metadata changes is now removed
-during event hadling, because some (broken) tools may be called from udev
-rules and (wrongly) open the device with write access. After the finished
-event handling the watch is restored.
-
-udev 138
-========
-Bugfixes.
-
-Device nodes can be watched for changes with inotify with OPTIONS="watch".
-If closed after being opened for writing, a "change" uevent will occur.
-/dev/disk/by-{label,uuid}/* symlinks will be automatically updated.
-
-udev 137
-========
-Bugfixes.
-
-The udevadm test command has no longer a --force option, nodes and symlinks
-are always updated with a test run now.
-
-The udevd daemon can be started with --resolve-names=never to avoid all user
-and group lookups (e.g. in cut-down systems) or --resolve-names=late to
-lookup user and groups every time events are handled.
-
-udev 136
-========
-Bugfixes.
-
-We are currently merging the Ubuntu rules in the udev default rules,
-and get one step closer to provide a common Linux /dev setup, regarding
-device names, symlinks, and default device permissions. On udev startup,
-we now expect the following groups to be resolvable to their ids with
-glibc's getgrnam():
- disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, kmem.
-LDAP setups need to make sure, that these groups are always resolvable at
-bootup, with only the rootfs mounted, and without network access available.
-
-Some systems may need to add some new, currently not used groups, or need
-to add some users to new groups, but the cost of this change is minimal,
-compared to the pain the current, rather random, differences between the
-various distributions cause for upstream projects and third-party vendors.
-
-In general, "normal" users who log into a machine should never be a member
-of any such group, but the device-access should be managed by dynamic ACLs,
-which get added and removed for the specific users on login/logout and
-session activity/inactivity. These groups are only provided for custom setups,
-and mainly system services, to allow proper privilege separation.
-A video-streaming daemon uid would be a member of "audio" and "video", to get
-access to the sound and video devices, but no "normal" user should ever belong
-to the "audio" group, because he could listen to the built-in microphone with
-any ssh-session established from the other side of the world.
-
-/dev/serial/by-{id,path}/ now contains links for ttyUSB devices,
-which do not depend on the kernel device name. As usual, unique
-devices - only a single one per product connected, or a real
-USB serial number in the device - are always found with the same
-name in the by-id/ directory.
-Completely identical devices may overwrite their names in by-id/
-and can only be found reliably in the by-path/ directory. Devices
-specified by by-path/ must not change their connection, like the
-USB port number they are plugged in, to keep their name.
-
-To support some advanced features, Linux 2.6.22 is the oldest supported
-version now. The kernel config with enabled SYSFS_DEPRECATED is no longer
-supported. Older kernels should still work, and devices nodes should be
-reliably created, but some rules and libudev will not work correctly because
-the old kernels do not provide the expected information or interfaces.
-
-udev 135
-========
-Bugfixes.
-
-Fix for a possible segfault while swapping network interface names in udev
-versions 131-134.
-
-udev 134
-========
-Bugfixes.
-
-The group "video" is part of the default rules now.
-
-udev 133
-========
-Bugfix for kernels using SYSFS_DEPRECATED* option and finding parent
-block devices in some cases. No common distro uses this option anymore,
-and we do not get enough testing for this and recent udev versions. If
-this option is not needed to run some old distro with a new kernel,
-it should be disabled in the kernel config.
-
-Bugfix for the $links substitution variable, which may crash if no links
-are created. This should not happen in usual setups because we always
-create /dev/{block,char}/ links.
-
-The strings of the parsed rules, which are kept in memory, no longer
-contain duplicate entries, or duplicate tails of strings. This, and the
-new rules parsing/matching code reduces the total in-memory size of
-a huge distro rule sets to 0.08 MB, compared to the 1.2MB of udev
-version 130.
-
-The export of DEVTYPE=disk/partition got removed from the default
-rules. This value is available from the kernel. The pnp shell script
-modprobe hack is removed from the default rules. ACPI devices have _proper_
-modalias support and take care of the same functionality.
-Installations which support old kernels, but install current default
-udev rules may want to add that to the compat rules file.
-
-Libvolume_id now always probes for all known filesystems, and does not
-stop at the first match. Some filesystems are marked as "exclusive probe",
-and if any other filesytem type matches at the same time, libvolume_id
-will, by default, not return any probing result. This is intended to prevent
-mis-detection with conflicting left-over signatures found from earlier
-file system formats. That way, we no longer depend on the probe-order
-in case of multiple competing signatures. In some setups the kernel allows
-to mount a volume with just the old filesystem signature still in place.
-This may damage the new filesystem and cause data-loss, just by mounting
-it. Because volume_id can not decide which one the correct signature is,
-the wrong signatures need to be removed manually from the volume, or the
-volume needs to be reformatted, to enable filesystem detection and possible
-auto-mounting.
-
-udev 132
-========
-Fix segfault if compiled without optimization and dbg() does not get
-compiled out and uses variables which are not available.
-
-udev 131
-========
-Bugfixes. (And maybe new bugs. :))
-
-The rule matching engine got converted from a rule list to a token
-array which reduced the in-memory rules representation of a full
-featured distros with thousends of udev rules from 1.2MB to 0.12 MB.
-Limits like 5 ENV and ATTR matches, and one single instance for most
-other keys per rule are gone.
-
-The NAME assignment is no longer special cased. If later rules assign
-a NAME value again, the former value will be overwritten. As usual
-for most other keys, the NAME value can be protected by doing a final
-assignment with NAME:="<value>".
-
-All udev code now uses libudev, which is also exported. The library
-is still under development, marked as experimental, and its interface
-may change as long as the DeviceKit integration is not finished.
-
-Many thanks to Alan Jenkins for his continuous help, and finding and
-optimizing some of the computing expensive parts.
-
-udev 130
-========
-Bugfixes.
-
-Kernel devices and device nodes are connected now by reverse indizes in
-/sys and /dev. A device number retrieved by a stat() or similar, the
-kernel device directory can be found by looking up:
- /sys/dev/{block,char}/<maj>:<min>
-and the device node of the same device by looking up:
- /dev/{block,char}/<maj>:<min>
-
-udev 129
-========
-Fix recently introduced bug, which caused a compilation without large
-file support, where vol_id does not recognize raid signatures at the end
-of a volume.
-
-Firewire disks now create both, by-id/scsi-* and by-id/ieee-* links.
-Seems some kernel versions prevent the creation of the ieee-* links,
-so people used the scsi-* link which disappeared now.
-
-More libudev work. Almost all udevadm functionality comes from libudev
-now.
-
-udevadm trigger has a new option --type, which allows to trigger events
-for "devices", for "subsystems", or "failed" devices. The old option
---retry-failed" still works, but is no longer mentioned in the man page.
-
-udev 128
-========
-Bugfixes.
-
-The udevadm info --device-id-of-file= output has changed to use
-the obvious format. Possible current users should use the --export
-option which is not affected.
-
-The old udev commands symlinks to udevadm are not installed, if
-these symlinks are used, a warning is printed.
-
-udev 127
-========
-Bugfixes.
-
-Optical drive's media is no longer probed for raid signatures,
-reading the end of the device causes some devices to malfunction.
-Also the offset of the last session found is used now to probe
-for the filesystem.
-
-The volume_id library got a major version number update to 1,
-some deprecated functions are removed.
-
-A shared library "libudev" gets installed now to provide access
-to udev device information. DeviceKit, the successor of HAL, will
-need this library to access the udev database and search sysfs for
-devices.
-The library is currently in an experimental state, also the API is
-expected to change, as long as the DeviceKit integration is not
-finished.
-
-udev 126
-========
-We use ./configure now. See INSTALL for details. Current
-options are:
- --prefix=
- "/usr" - prefix for man pages, include files
- --exec-prefix=
- "" - the root filesystem, prefix for libs and binaries
- --sysconfdir=
- "/etc"
- --with-libdir-name=
- "lib" - directory name for libraries, not a path name
- multilib 64bit systems may use "lib64" instead of "lib"
- --enable-debug
- compile-in verbose debug messages
- --disable-logging
- disable all logging and compile-out all log strings
- --with-selinux
- link against SELInux libraries, to set the expected context
- for created files
-
-In the default rules, the group "disk" gets permissions 0660 instead
-of 0640. One small step closer to unify distro rules. Some day, all
-distros hopefully end up with the same set of rules.
-
-No symlinks to udevadm are installed anymore, if they are still needed,
-they should be provided by the package.
-
-udev 125
-========
-Bugfixes.
-
-Default udev rules, which are not supposed to be edited by the user, should
-be placed in /lib/udev/rules.d/ now, to make it clear that they are private to
-the udev package and will be replaced with an update. Udev will pick up rule
-files from:
- /lib/udev/rules.d/ - default installed rules
- /etc/udev/rules.d/ - user rules + on-the-fly generated rules
- /dev/.udev/rules.d/ - temporary non-persistent rules created after bootup
-It does not matter in which directory a rule file lives, all files are sorted
-in lexical order.
-
-To help creating /dev/root, we have now:
- $ udevadm info --export --export-prefix="ROOT_" --device-id-of-file=/
- ROOT_MAJOR=8
- ROOT_MINOR=5
-In case the current --device-id-of-file is already used, please switch to
-the --export format version, it saves the output parsing and the old
-format will be changed to use ':' as a separator, like the format in the
-sysfs 'dev' file.
-
-udev 124
-========
-Fix cdrom_id to properly recognize blank media.
-
-udev 123
-========
-Bugfixes.
-
-Tape drive id-data is queried from /dev/bsg/* instead of the tape
-nodes. This avoids rewinding tapes on open().
-
-udev 122
-========
-Bugfixes.
-
-The symlinks udevcontrol and udevtrigger are no longer installed by
-the Makefile.
-
-The scsi_id program does not depend on sysfs anymore. It can speak
-SGv4 now, so /dev/bsg/* device nodes can be used, to query SCSI device
-data, which should solve some old problems with tape devices, where
-we better do not open all tape device nodes to identify the device.
-
-udev 121
-========
-Many bugfixes.
-
-The cdrom_id program is replaced by an advanced version, which can
-detect most common device types, and also properties of the inserted
-media. This is part of moving some basic functionality from HAL into
-udev (and the kernel).
-
-udev 120
-========
-Bugfixes.
-
-The last WAIT_FOR_SYSFS rule is removed from the default rules.
-
-The symlinks to udevadm for the debugging tools: udevmonitor and
-udevtest are no longer created.
-
-The symlinks to the udevadm man page for the old tool names are
-no longer created.
-
-Abstract namespace sockets paths in RUN+="socket:@<path>" rules,
-should be prefixed with '@' to indicate that the path is not a
-real file.
-
-udev 119
-========
-Bugfixes.
-
-udev 118
-========
-Bugfixes.
-
-Udevstart is removed from the tree, it did not get installed for
-a long time now, and is long replaced by trigger and settle.
-
-udev 117
-========
-Bugfixes.
-
-All udev tools are merged into a single binary called udevadm.
-The old names of the tools are built-in commands in udevadm now.
-Symlinks to udevadm, with the names of the old tools, provide
-the same functionality as the standalone tools. There is also
-only a single udevadm.8 man page left for all tools.
-
-Tools like mkinitramfs should be checked, if they need to include
-udevadm in the list of files.
-
-udev 116
-========
-Bugfixes.
-
-udev 115
-========
-Bugfixes.
-
-The etc/udev/rules.d/ directory now contains a default set of basic
-udev rules. This initial version is the result of a rules file merge
-of Fedora and openSUSE. For these both distros only a few specific
-rules are left in their own file, named after the distro. Rules which
-are optionally installed, because they are only valid for a specific
-architecture, or rules for subsystems which are not always used are
-in etc/udev/packages/.
-
-udev 114
-========
-Bugfixes.
-
-Dynamic rules can be created in /dev/.udev/rules.d/ to trigger
-actions by dynamically created rules.
-
-SYMLINK=="<value>" matches agains the entries in the list of
-currently defined symlinks. The links are not created in the
-filesystem at that point in time, but the values can be matched.
+ * Linking against libacl for ACLs is optional again. If
+ disabled, support tracking device access for active logins
+ goes becomes unavailable, and so does access to the user
+ journals by the respective users.
-RUN{ignore_error}+="<program>" will ignore any exit code from the
-program and not record as a failed event.
+ * If a group "adm" exists, journal files are automatically
+ owned by them, thus allow members of this group full access
+ to the system journal as well as all user journals.
-udev 113
-========
-Bugfixes.
+ * The journal now stores the SELinux context of the logging
+ client for all entries.
-Final merge of patches/features from the Ubuntu package.
+ * Add C++ inclusion guards to all public headers
-udev 112
-========
-Bugfixes.
-
-Control characters in filesystem label strings are no longer silenty
-removed, but hex-encoded, to be able to uniquely identify the device
-by its symlink in /dev/disk/by-label/.
-If libvolume_id is used by mount(8), LABEL= will work as expected,
-if slashes or other characters are used in the label string.
-
-To test the existence of a file, TEST=="<file>" and TEST!="<file>"
-can be specified now. The TEST key accepts an optional mode mask
-TEST{0100}=="<is executable file>".
-
-Scsi_id now supports a mode without expecting scsi-specific sysfs
-entries to allow the extraction of cciss-device persistent properties.
-
-udev 111
-========
-Bugfixes.
-
-In the future, we may see uuid's which are just simple character
-strings (see the DDF Raid Specification). For that reason vol_id now
-exports ID_FS_UUID_SAFE, just like ID_FS_LABEL_SAFE. For things like
-the creation of symlinks, the *_SAFE values ensure, that no control
-or whitespace characters are used in the filename.
-
-Possible users of libvolume_id, please use the volume_id_get_* functions.
-The public struct will go away in a future release of the library.
-
-udev 110
-========
-Bugfixes.
-
-Removal of useless extras/eventrecorder.sh.
-
-udev 109
-========
-Bugfixes.
-
-udev 108
-========
-Bugfixes.
-
-The directory multiplexer for dev.d/ and hotplug.d are finally removed
-from the udev package.
-
-udev 107
-========
-Bugfixes.
-
-Symlinks can have priorities now, the priority is assigned to the device
-and specified with OPTIONS="link_priority=100". Devices with higher
-priorities overwrite the symlinks of devices with lower priorities.
-If the device that currently owns the link, goes away, the symlink
-will be removed, and recreated, pointing to the next device with the
-highest actual priority. This should make /dev/disk/by-{label,uuid,id}
-more reliable, if multiple devices contain the same metadata and overwrite
-these symlinks.
-
-The dasd_id program is removed from the udev tree, and dasdinfo, with the
-needed rules, are part of the s390-tools now.
-
-Please add KERNEL=="[0-9]*:[0-9]*" to the scsi wait-for-sysfs rule,
-we may get the scsi sysfs mess fixed some day, and this will only catch
-the devices we are looking for.
-
-USB serial numbers for storage devices have the target:lun now appended,
-to make it possibble to distinguish broken multi-lun devices with all
-the same SCSI identifiers.
-
-Note: The extra "run_directory" which searches and executes stuff in
-/etc/hotplug.d/ and /etc/dev.d/ is long deprecated, and will be removed
-with the next release. Make sure, that you don't use it anymore, or
-provides your own implementation of that inefficient stuff.
-We are tired of reports about a "slow udev", because these directories
-contain stuff, that runs with _every_ event, instead of using rules,
-that run programs only for the matching events.
-
-udev 106
-========
-Bugfixes.
-
-udev 105
-========
-Bugfixes.
-
-DRIVER== will match only for devices that actually have a real
-driver. DRIVERS== must be used, if parent devices should be
-included in the match.
-
-Libvolume_id's "linux_raid" detection needed another fix.
-
-udev 104
-========
-Bugfixes.
-
-udev 103
-========
-Add additional check to volume_id detection of via_raid, cause
-some company decided to put a matching pattern all over the empty
-storage area of their music players.
-
-udev 102
-========
-Fix path_id for SAS devices.
-
-udev 101
-========
-The udev daemon can be started with --debug-trace now, which will
-execute all events serialized to get a chance to catch a possible
-action that crashes the box.
-
-A warning is logged, if PHYSDEV* keys, the "device" link, or a parent
-device attribute like $attr{../file} is used, only WAIT_FOR_SYSFS rules
-are excluded from the warning. Referencing parent attributes directly
-may break when something in the kernel driver model changes. Udev will
-just find the attribute by walking up the parent chain.
-
-Udevtrigger now sorts the list of devices depending on the device
-dependency, so a "usb" device is triggered after the parent "pci"
-device.
-
-udev 100
-========
-Revert persistent-storage ata-serial '_' '-' replacement.
-
-udev 099
-========
-Bugfixes.
-
-Udevtrigger can now filter the list of devices to be triggered. Matches
-for subsystems or sysfs attributes can be specified.
-
-The entries in /dev/.udev/queue and /dev/.udev/failed have changed to
-zero-sized files to avoid pointing to /sys and confuse broken tools which
-scan the /dev directory. To retry failed events, udevtrigger --retry-failed
-should be used now.
-
-The rules and scripts to create udev rules for persistent network
-devices and optical drives are in the extras/rules_generator directory
-now. If you use something similar, please consider replacing your own
-version with this, to share the support effort. The rule_generator
-installs its own rules into /etc/udev/rules.d.
-
-The cdrom_id tool installs its own rule now in /etc/udev/rules.d, cause
-the rule_generator depends on cdrom_id to be called in an earlier rule.
-
-udev 098
-========
-Bugfixes.
-
-Renaming of some key names (the old names still work):
-BUS -> SUBSYSTEMS, ID -> KERNELS, SYSFS -> ATTRS, DRIVER -> DRIVERS.
-(The behavior of the key DRIVER will change soon in one of the next
-releases, to match only the event device, please switch to DRIVERS
-instead. If DRIVER is used, it will behave like DRIVERS, but an error
-is logged.
-With the new key names, we have a more consistent and simpler scheme.
-We can match the properties of the event device only, with: KERNEL,
-SUBSYSTEM, ATTR, DRIVER. Or include all the parent devices in the match,
-with: KERNELS, SUBSYSTEMS, ATTRS, DRIVERS. ID, BUS, SYSFS, DRIVER are no
-longer mentioned in the man page and should be switched in the rule
-files.
-
-ATTR{file}="value" can be used now, to write to a sysfs file of the
-event device. Instead of:
- ..., SYSFS{type}=="0|7|14", RUN+="/bin/sh -c 'echo 60 > /sys$$DEVPATH/timeout'"
-we now can do:
- ..., ATTR{type}=="0|7|14", ATTR{timeout}="60"
-
-All the PHYSDEV* keys are deprecated and will be removed from a
-future kernel:
- PHYDEVPATH - is the path of a parent device and should not be
- needed at all.
- PHYSDEVBUS - is just a SUBSYSTEM value of a parent, and can be
- matched with SUBSYSTEMS==
- PHYSDEVDRIVER - for bus devices it is available as ENV{DRIVER}.
- Newer kernels will have DRIVER in the environment,
- for older kernels udev puts in. Class device will
- no longer carry this property of a parent and
- DRIVERS== can be used to match such a parent value.
-Note that ENV{DRIVER} is only available for a few bus devices, where
-the driver is already bound at device event time. On coldplug, the
-events for a lot devices are already bound to a driver, and they will have
-that value set. But on hotplug, at the time the kernel creates the device,
-it can't know what driver may claim the device after that, therefore
-in most cases it will be empty.
-
-Failed events should now be re-triggered with:
- udevtrigger --retry-failed.
-Please switch to this command, so we keep the details of the /dev/.udev/failed/
-files private to the udev tools. We may need to switch the current symlink
-target, cause some obviously broken tools try to scan all files in /dev
-including /dev/.udev/, find the links to /sys and end up stat()'ing sysfs files
-million times. This takes ages on slow boxes.
-
-The udevinfo attribute walk (-a) now works with giving a device node
-name (-n) instead of a devpath (-p). The query now always works, also when
-no database file was created by udev.
-
-The built-in /etc/passwd /etc/group parser is removed, we always depend on
-getpwnam() and getgrnam() now. One of the next releases will depend on
-fnmatch() and may use getopt_long().
-
-udev 097
-========
-Bugfixes and small improvements.
-
-udev 096
-========
-Fix path_id for recent kernels.
-
-udev 095
-========
-%e is finally gone.
-
-Added support for swapping network interface names, by temporarily
-renaming the device and wait for the target name to become free.
-
-udev 094
-========
-The built-in MODALIAS key and substitution is removed.
-
-udev 093
-========
-The binary firmware helper is replaced by the usual simple
-shell script. Udevsend is removed from the tree.
-
-udev 092
-========
-Bugfix release.
-
-udev 091
-========
-Some more keys require the correct use of '==' and '=' depending
-on the kind of operation beeing an assignment or a match. Rules
-with invalid operations are skipped and logged to syslog. Please
-test with udevtest if the parsing of your rules throws errors and
-fix possibly broken rules.
-
-udev 090
-========
-Provide "udevsettle" to wait for all current udev events to finish.
-It also watches the current kernel netlink queue by comparing the
-even sequence number to make sure that there are no current pending
-events that have not already arrived in the daemon.
-
-udev 089
-========
-Fix rule to skip persistent rules for removable IDE devices, which
-also skipped optical IDE drives.
-
-All *_id program are installed in /lib/udev/ by default now.
-
-No binary is stripped anymore as this should be done in the
-packaging process and not at build time.
-
-libvolume_id is provided as a shared library now and vol_id is
-linked against it. Also one of the next HAL versions will require
-this library, and the HAL build process will also require the
-header file to be installed. The copy of the same code in HAL will
-be removed to have only a single copy left on the system.
-
-udev 088
-========
-Add persistent links for SCSI tapes. The rules file is renamed
-to 60-persistent-storage.rules.
-
-Create persistent path for usb devices. Can be used for all sorts
-of devices that can't be distinguished by other properties like
-multiple identical keyboards and mice connected to the same box.
-
-Provide "udevtrigger" program to request events on coldplug. The
-shell script is much too slow with thousends of devices.
-
-udev 087
-========
-Fix persistent disk rules to exclude removable IDE drives.
-
-Warn if %e, $modalias or MODALIAS is used.
-
-udev 086
-========
-Fix queue export, which wasn't correct for subsequent add/remove
-events for the same device.
-
-udev 085
-========
-Fix cramfs detection on big endian.
-
-Make WAIT_FOR_SYSFS usable in "normal" rules and silent if the whole
-device goes away.
-
-udev 084
-========
-If BUS== and SYSFS{}== have been used in the same rule, the sysfs
-attributes were only checked at the parent device that matched the
-by BUS requested subsystem. Fix it to also look at the device we
-received the event for.
-
-Build variable CROSS has changed to CROSS_COMPILE to match the kernel
-build name.
-
-udev 083
-========
-Fix a bug where NAME="" would prevent RUN from beeing executed.
-
-RUN="/bin/program" does not longer automatically add the subsystem
-as the first parameter. This is from the days of /sbin/hotplug
-which is dead now and it's just confusing to need to add a space at
-the end of the program name to prevent this.
-If you use rules that need the subsystem as the first parameter,
-like the old "udev_run_hotlugd" and "udev_run_devd", add the subsystem
-to the key like RUN+="/bin/program $env{SUBSYSTEM}".
-
-udev 082
-========
-The udev man page has moved to udev(7) as it does not describe a command
-anymore. The programs udev, udevstart and udevsend are no longer installed
-by default and must be copied manually, if they should be installed or
-included in a package.
-
-Fix a bug where "ignore_device" could run earlier collected RUN keys before
-the ignore rule was applied.
-
-More preparation for future sysfs changes. usb_id and scsi_id no longer
-depend on a magic order of devices in the /devices chain. Specific devices
-should be requested by their subsytem.
-
-This will always find the scsi parent device without depending on a specific
-path position:
- dev = sysfs_device_get(devpath);
- dev_usb = sysfs_device_get_parent_with_subsystem(dev, "scsi");
-
-The "device" link in the current sysfs layout will be automatically
-_resolved_ as a parent and in the new sysfs layout it will just _be_ the
-parent in the devpath. If a device is requested by it's symlink, like all
-class devices in the new sysfs layout will look like, it gets automatically
-resolved and substituted with the real devpath and not the symlink path.
-
-Note:
-A similar logic must be applied to _all_ sysfs users, including
-scripts, that search along parent devices in sysfs. The explicit use of
-the "device" link must be avoided. With the future sysfs layout all
-DEVPATH's will start with /devices/ and have a "subsystem" symlink poiting
-back to the "class" or the "bus". The layout of the parent devices in
-/devices is not necessarily expected to be stable across kernel releases and
-searching for parents by their subsystem should make sysfs users tolerant
-for changed parent chains.
-
-udev 081
-========
-Prepare udev to work with the experimental kernel patch, that moves
-/sys/class devices to /sys/devices and /sys/block to /sys/class/block.
-
-Clarify BUS, ID, $id usage and fix $id behavior. This prepares for
-moving the class devices to /sys/devices.
-
-Thanks again to Marco for help finding a hopefully nice compromise
-to make %b simpler and working again.
-
-udev 080
-========
-Complete removal of libsysfs, replaced by simple helper functions
-which are much simpler and a bit faster. The udev daemon operatesentirely
-on event parameters and does not use sysfs for simple rules anymore.
-Please report any new bugs/problems, that may be caused by this big
-change. They will be fixed immediately.
-
-The enumeration format character '%e' is deprecated and will be
-removed sometimes from a future udev version. It never worked correctly
-outside of udevstart, so we can't use it with the new parallel
-coldplug. A simple enumeration is as useless as the devfs naming
-scheme, just get rid of both if you still use it.
-
-MODALIAS and $modalias is not needed and will be removed from one of
-the next udev versions, replace it in all rules with ENV{MODALIAS} or
-the sysfs "modalias" value.
-
-Thanks a lot to Marco for all his help on finding and fixing bugs.
-
-udev 079
-========
-Let scsi_id request libata drive serial numbers from page 0x80.
-
-Renamed etc/udev/persistent.rules to persistent-disk.rules and
-added /dev/disk/by-name/* for device mapper device names.
-
-Removed %e from the man page. It never worked reliably outside
-of udevstart and udevstart is no longer recommended to use.
-
-udev 078
-========
-Symlinks are now exported to the event environment. Hopefully it's no
-longer needed to run udevinfo from an event process, like it was
-mentioned on the hotplug list:
- UDEV [1134776873.702967] add@/block/sdb
- ...
- DEVNAME=/dev/sdb
- DEVLINKS=/dev/disk/by-id/usb-IBM_Memory_Key_0218B301030027E8 /dev/disk/by-path/usb-0218B301030027E8:0:0:0
-
-udev 077
-========
-Fix a problem if udevsend is used as the hotplug handler and tries to use
-syslog, which causes a "vc" event loop. 2.6.15 will make udevsend obsolete
-and this kind of problems will hopefully go away soon.
-
-udev 076
-========
-All built-in logic to work around bad sysfs timing is removed with this
-version. The need to wait for sysfs files is almost fixed with a kernel
-version that doesn't work with this udev version anyway. Until we fix
-the timing of the "bus" link creation, the former integrated logic should
-be emulated by a rule placed before all other rules:
- ACTION=="add", DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
-
-The option "udev_db" does no longer exist. All udev state will be in
-/$udev_root/.udev/ now, there is no longer an option to set this
-to anything else.
-If the init script or something else used this value, just depend on
-this hardcoded path. But remember _all_content_ of this directory is
-still private to udev and can change at any time.
-
-Default location for rule sripts and helper programs is now: /lib/udev/.
-Everything that is not useful on the commandline should go into this
-directory. Some of the helpers in the extras folder are installed there
-now. The rules need to be changed, to find the helpers there.
-
-Also /lib/udev/devices is recommended as a directory where packages or
-the user can place real device nodes, which get copied over to /dev at
-every boot. This should replace the various solutions with custom config
-files.
-
-Udevsend does no longer start the udev daemon. This must be done with
-the init script that prepares /dev on tmpfs and creates the initial nodes,
-before starting the daemon.
-
-udev 075
-========
-Silent a too verbose error logging for the old hotplug.d/ dev.d/
-emulation.
-
-The copy of klibc is removed. A systemwide installed version of klibc
-should be used to build a klibc udev now.
-
-udev 074
-========
-NAME="" will not create any nodes, but execute RUN keys. To completely
-ignore an event the OPTION "ignore_device" should be used.
-
-After removal of the reorder queue, events with a TIMEOUT can be executed
-without any queuing now.
-
-udev 073
-========
-Fixed bug in udevd, if inotify is not available. We depend on netlink
-uevents now, kernels without that event source will not work with that
-version of udev anymore.
-
-udev 072
-========
-The rule parsing happens now in the daemon once at startup, all udev
-event processes inherit the already parsed rules from the daemon.
-It is shipped with SUSE10.0 and reduces heavily the system load at
-startup. The option to save precompiled rules and let the udev process
-pick the them up is removed, as it's no longer needed.
-
-Kernel 2.6.15 will have symlinks at /class/input pointing to the real
-device. Libsysfs is changed to "translate" the requested link into the
-real device path, as it would happen with the hotplug event. Otherwise
-device removal and the udev database will not work.
-
-Using 'make STRIPCMD=' will leave the binaries unstripped for debugging
-and packaging.
-
-A few improvements for vol_id, the filesytem probing code.
-
-udev 071
-========
-Fix a stupid typo in extras/run_directory for "make install".
-
-scsi_id creates the temporary devnode now in /dev for usage with a
-non-writable /tmp directory.
-
-The uevent kernel socket buffer can carry app. 50.000 events now,
-let's see who can break this again. :)
-
-The upcoming kernel will have a new input driver core integration.
-Some class devices are now symlinks to the real device. libsysfs
-needs a fix for this to work correctly. Udevstart of older udev
-versions will _not_ create these devices!
-
-udev 070
-========
-Fix a 'install' target in the Makefile, that prevents EXTRAS from
-beeing installed.
-
-udev 069
-========
-A bunch of mostly trivial bugfixes. From now on no node name or
-symlink name can contain any character than plain whitelisted ascii
-characters or validated utf8 byte-streams. This is needed for the
-/dev/disk/by-label/* links, because we import untrusted data and
-export it to the filesystem.
-
-udev 068
-========
-More bugfixes. If udevd was started from the kernel, we don't
-have stdin/stdout/stderr, which broke the forked tools in some
-situations.
-
-udev 067
-========
-Bugfix. udevstart event ordering was broken for a long time.
-The new run_program() uncovered it, because /dev/null was not
-available while we try to run external programs.
-Now udevstart should create it before we run anything.
-
-udev 066
-========
-Minor bugfixes and some distro rules updates. If you don't have the
-persistent disk rules in /dev/disk/by-*/* on your distro, just
-grab it from here. :)
-
-udev 065
-========
-We can use socket communication now to pass events from udev to
-other programs:
- RUN+="socket:/org/freedesktop/hal/udev_event"
-will pass the whole udev event to the HAL daemon without the need
-for a forked helper. (See ChangeLog for udevmonitor, as an example)
-
-udev 064
-========
-Mostly bugfixes and see ChangeLog.
-
-The test for the existence of an environment value should be
-switched from:
- ENV{KEY}=="*" to ENV{KEY}=="?*"
-because "*" will not fail anymore, if the key does not exist or
-is empty.
-
-udev 063
-========
-Bugfixes and a few tweaks described in the ChangeLog.
-
-udev 062
-========
-Mostly a Bugfix release.
-
-Added WAIT_FOR_SYSFS="<attribute>" to be able to fight against the sysfs
-timing with custom rules.
-
-udev 061
-========
-We changed the internal rule storage format. Our large rule files took
-2 MB of RAM, with the change we are down to 99kB.
-
-If the device-node has been created with default name and no symlink or
-options are to remenber, it is not longer stored in the udevdb. HAL will
-need to be updated to work correctly with that change.
-
-To overrride optimization flags, OPTFLAGS may be used now.
-
-udev 060
-========
-Bugfix release.
-
-udev 059
-========
-Major changes happened with this release. The goal is to take over the
-complete kernel-event handling and provide a more efficient way to dispatch
-kernel events. Replacing most of the current shell script logic and the
-kernel forked helper with a netlink-daemon and a rule-based event handling.
-
-o udevd listens to netlink events now. The first valid netlink event
- will make udevd ignore any message from udevsend that contains a
- SEQNUM, to avoid duplicate events. The forked events can be disabled
- with:
- echo "" > /proc/sys/kernel/hotplug
- For full support, the broken input-subsytem needs to be fixed, not to
- bypass the driver core.
-
-o /etc/dev.d/ + /etc/hotplug.d/ directory multiplexing is completely
- removed from udev itself and must be emulated by calling small
- helper binaries provided in the extras folder:
- make EXTRAS=extras/run_directory/
- will build udev_run_devd and udev_run_hotplugd, which can be called
- from a rule if needed:
- RUN+="/sbin/udev_run_hotplugd"
- The recommended way to handle this is to convert all the calls from
- the directories to explicit udev rules and get completely rid of the
- multiplexing. (To catch a ttyUSB event, you now no longer need to
- fork and exit 300 tty script instances you are not interested in, it
- is just one rule that matches exactly the device.)
-
-o udev handles now _all_ events not just events for class and block
- devices, this way it is possible to control the complete event
- behavior with udev rules. Especially useful for rules like:
- ACTION="add", DEVPATH="/devices/*", MODALIAS=="?*", RUN+="/sbin/modprobe $modalias"
-
-o As used in the modalias rule, udev supports now textual
- substitution placeholder along with the usual format chars. This
- needs to be documented, for now it's only visible in udev_rules_parse.c.
-
-o The rule keys support now more operations. This is documented in the
- man page. It is possible to add values to list-keys like the SYMLINK
- and RUN list with KEY+="value" and to clear the list by assigning KEY="".
- Also "final"-assignments are supported by using KEY:="value", which will
- prevent changing the key by any later rule.
-
-o kernel 2.6.12 has the "detached_state" attribute removed from
- sysfs, which was used to recognize sysfs population. We switched that
- to wait for the "bus" link, which is only available in kernels after 2.6.11.
- Running this udev version on older kernels may cause a short delay for
- some events.
-
-o To provide infrastructure for persistent device naming, the id programs:
- scsi_id, vol_id (former udev_volume_id), and ata_id (new) are able now
- to export the probed data in environment key format:
- pim:~ # /sbin/ata_id --export /dev/hda
- ID_MODEL=HTS726060M9AT00
- ID_SERIAL=MRH401M4G6UM9B
- ID_REVISION=MH4OA6BA
-
- The following rules:
- KERNEL="hd*[!0-9]", IMPORT="/sbin/ata_id --export $tempnode"
- KERNEL="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_MODEL}_$env{ID_SERIAL}"
-
- Will create:
- kay@pim:~> tree /dev/disk
- /dev/disk
- |-- by-id
- | |-- HTS726060M9AT00_MRH401M4G6UM9B -> ../../hda
- | `-- IBM-Memory_Key -> ../../sda
- |-- by-label
- | |-- swap -> ../../hda1
- | |-- date -> ../../sda1
- | `-- home -> ../../hda3
- `-- by-uuid
- |-- 2E08712B0870F2E7 -> ../../hda3
- |-- 9352cfef-7687-47bc-a2a3-34cf136f72e1 -> ../../hda1
- |-- E845-7A89 -> ../../sda1
- `-- b2a61681-3812-4f13-a4ff-920d70604299 -> ../../hda2
-
- The IMPORT= operation will import these keys in the environment and make
- it available for later PROGRAM= and RUN= executed programs. The keys are
- also stored in the udevdb and can be queried from there with one of the
- next udev versions.
-
-o A few binaries are silently added to the repository, which can be used
- to replay kernel events from initramfs instead of using coldplug. udevd
- can be instructed now to queue-up events while the stored events from
- initramfs are filled into the udevd-queue. This code is still under
- development and there is no documentation now besides the code itself.
- The additional binaries get compiled, but are not installed by default.
-
-o There is also a temporary fix for a performance problem where too many
- events happen in parallel and every event needs to parse the rules.
- udev can now read precompiled rules stored on disk. This is likely to be
- replaced by a more elegant solution in a future udev version.
-
-udev 058
-========
-With kernel version 2.6.12, the sysfs file "detached_state" was removed.
-Fix for libsysfs not to expect this file was added.
-
-udev 057
-========
-All rules are applied now, but only the first matching rule with a NAME-key
-will be applied. All later rules with NAME-key are completely ignored. This
-way system supplied symlinks or permissions gets applied to user-defined
-naming rules.
-
-Note:
-Please check your rules setup, if you may need to add OPTIONS="last_rule"
-to some rules, to keep the old behavior.
-
-The rules are read on "remove"-events too. That makes is possible to match
-with keys that are available on remove (KERNEL, SUBSYSTEM, ID, ENV, ...) to
-instruct udev to ignore an event (OPTIONS="ignore_device").
-The new ACTION-key may be used to let a rule act only at a "remove"-event.
-
-The new RUN-key supports rule-based execution of programs after device-node
-handling. This is meant as a general replacement for the dev.d/-directories
-to give fine grained control over the execution of programs.
-
-The %s{}-sysfs format char replacement values are searched at any of the
-devices in the device chain now, not only at the class-device.
-
-We support log priority levels now. The value udev_log in udev.conf is used
-to determine what is printed to syslog. This makes it possible to
-run a version with compiled-in debug messages in a production environment
-which is sometimes needed to find a bug.
-It is still possible to supress the inclusion of _any_ syslog usage with
-USE_LOG=false to create the smallest possible binaries if needed.
-The configured udev_log value can be overridden with the environment variable
-UDEV_LOG.
-
-udev 056
-========
-Possible use of a system-wide klibc:
- make USE_KLIBC=true KLCC=/usr/bin/klcc all
-will link against an external klibc and our own version will be ignored.
-
-udev 055
-========
-We support an unlimited count of symlinks now.
-
-If USE_STATIC=true is passed to a glibc build, we link statically and use
-a built-in userdb parser to resolve user and group names.
-
-The PLACE= key is gone. It can be replaced by an ID= for a long time, because
-we walk up the chain of physical devices to find a match.
-
-The KEY="<value>" format supports '=', '==', '!=,' , '+=' now. This makes it
-easy to skip certain attribute matches without composing rules with weird
-character class negations like:
- KERNEL="[!s][!c][!d]*"
-this can now be replaced with:
- KERNEL!="scd*"
-The current simple '=' is still supported, and should work as it does today,
-but existing rules should be converted if possible, to be better readable.
-
-We have new ENV{}== key now, to match against a maximum of 5 environment
-variables.
-
-udevstart is its own binary again, because we don't need co carry this araound
-with every forked event.
+ * New output mode "cat" in the journal to print only text
+ messages, without any meta data like date or time.
+
+ * Include tiny X server wrapper as a temporary stop-gap to
+ teach XOrg udev display enumeration. This is used by display
+ managers such as gdm, and will go away as soon as XOrg
+ learned native udev hotplugging for display devices.
+
+ * Add new systemd-cat tool for executing arbitrary programs
+ with STDERR/STDOUT connected to the journal. Can also act as
+ BSD logger replacement, and does so by default.
+
+ * Optionally store all locally generated coredumps in the
+ journal along with meta data.
+
+ * systemd-tmpfiles learnt four new commands: n, L, c, b, for
+ writing short strings to files (for usage for /sys), and for
+ creating symlinks, character and block device nodes.
+
+ * New unit file option ControlGroupPersistent= to make cgroups
+ persistent, following the mechanisms outlined in
+ http://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups
+
+ * Support multiple local RTCs in a sane way
+
+ * No longer monopolize IO when replaying readahead data on
+ rotating disks, since we might starve non-file-system IO to
+ death, since fanotify() will not see accesses done by blkid,
+ or fsck.
+
+ * Don't show kernel threads in systemd-cgls anymore, unless
+ requested with new -k switch.
+
+ Contributions from: Dan Horák, Kay Sievers, Lennart
+ Poettering, Michal Schmidt
+
+CHANGES WITH 38:
+ * This is mostly a test release, but incorporates many
+ bugfixes.
+
+ * The git repository moved to:
+ git://anongit.freedesktop.org/systemd/systemd
+ ssh://git.freedesktop.org/git/systemd/systemd
+
+ * First release with the journal
+ http://0pointer.de/blog/projects/the-journal.html
+
+ * The journal replaces both systemd-kmsg-syslogd and
+ systemd-stdout-bridge.
+
+ * New sd_pid_get_unit() API call in libsystemd-logind
+
+ * Many systemadm clean-ups
+
+ * Introduce remote-fs-pre.target which is ordered before all
+ remote mounts and may be used to start services before all
+ remote mounts.
+
+ * Added Mageia support
+
+ * Add bash completion for systemd-loginctl
+
+ * Actively monitor PID file creation for daemons which exit in
+ the parent process before having finished writing the PID
+ file in the daemon process. Daemons which do this need to be
+ fixed (i.e. PID file creation must have finished before the
+ parent exits), but we now react a bit more gracefully to them.
+
+ * Add colourful boot output, mimicking the well-known output
+ of existing distributions.
+
+ * New option PassCredentials= for socket units, for
+ compatibility with a recent kernel ABI breakage.
+
+ * /etc/rc.local is now hooked in via a generator binary, and
+ thus will no longer act as synchronization point during
+ boot.
+
+ * systemctl list-unit-files now supports --root=.
+
+ * systemd-tmpfiles now understands two new commands: z, Z for
+ relabelling files according to the SELinux database. This is
+ useful to apply SELinux labels to specific files in /sys,
+ among other things.
+
+ * Output of SysV services is now forwarded to both the console
+ and the journal by default, not only just the console.
+
+ * New man pages for all APIs from libsystemd-login.
+
+ * The build tree got reorganized and a the build system is a
+ lot more modular allowing embedded setups to specifically
+ select the components of systemd they are interested in.
+
+ * Support for Linux systems lacking the kernel VT subsystem is
+ restored.
+
+ * configure's --with-rootdir= got renamed to
+ --with-rootprefix= to follow the naming used by udev and
+ kmod
+
+ * Unless specified otherwise we'll now install to /usr instead
+ of /usr/local by default.
+
+ * Processes with '@' in argv[0][0] are now excluded from the
+ final shut-down killing spree, following the logic explained
+ in:
+ http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons
+
+ * All processes remaining in a service cgroup when we enter
+ the START or START_PRE states are now killed with
+ SIGKILL. That means it is no longer possible to spawn
+ background processes from ExecStart= lines (which was never
+ supported anyway, and bad style).
+
+ * New PropagateReloadTo=/PropagateReloadFrom= options to bind
+ reloading of units together.
+
+ Contributions from: Bill Nottingham, Daniel Walsh, Dave
+ Reisner, Dexter Morgan, Gregs Gregs, Jonathan Nieder, Kay
+ Sievers, Lennart Poettering, Michael Biebl, Michal Schmidt,
+ Michał Górny, Ran Benita, Thomas Jarosch, Tim Waugh, Tollef
+ Fog Heen, Tom Gundersen, Zbigniew Jędrzejewski-Szmek
diff --git a/README b/README
index 38459c6b2..6b0eb51ec 100644
--- a/README
+++ b/README
@@ -1,101 +1,104 @@
-udev - Linux userspace device management
-
-Integrating udev in the system has complex dependencies and may differ from
-distribution to distribution. A system may not be able to boot up or work
-reliably without a properly installed udev version. The upstream udev project
-does not recommend replacing a distro's udev installation with the upstream
-version.
-
-The upstream udev project's set of default rules may require a most recent
-kernel release to work properly.
-
-Tools and rules shipped by udev are not public API and may change at any time.
-Never call any private tool in /usr/lib/udev from any external application; it
-might just go away in the next release. Access to udev information is only offered
-by udevadm and libudev. Tools and rules in /usr/lib/udev and the entire contents
-of the /run/udev directory are private to udev and do change whenever needed.
-
-Requirements:
- - Version 2.6.34 of the Linux kernel with sysfs, procfs, signalfd, inotify,
- unix domain sockets, networking and hotplug enabled
-
- - Some architectures might need a later kernel, that supports accept4(),
- or need to backport the accept4() syscall wiring in the kernel.
-
- - These options are required:
- CONFIG_DEVTMPFS=y
- CONFIG_HOTPLUG=y
- CONFIG_INOTIFY_USER=y
- CONFIG_NET=y
- CONFIG_PROC_FS=y
- CONFIG_SIGNALFD=y
- CONFIG_SYSFS=y
- CONFIG_SYSFS_DEPRECATED*=n
- CONFIG_UEVENT_HELPER_PATH=""
-
- - These options might be needed:
- CONFIG_BLK_DEV_BSG=y (SCSI devices)
- CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
-
- - The /dev directory needs the 'devtmpfs' filesystem mounted.
- Udev only manages the permissions and ownership of the
- kernel-provided device nodes, and possibly creates additional symlinks.
-
- - Udev requires /run to be writable, which is usually done by mounting a
- 'tmpfs' filesystem.
-
- - This version of udev does not work properly with the CONFIG_SYSFS_DEPRECATED*
- option enabled.
-
- - The deprecated hotplug helper /sbin/hotplug should be disabled in the
- kernel configuration, it is not needed today, and may render the system
- unusable because the kernel may create too many processes in parallel
- so that the system runs out-of-memory.
-
- - The proc filesystem must be mounted on /proc, and the sysfs filesystem must
- be mounted at /sys. No other locations are supported by a standard
- udev installation.
-
- - The default rule sset requires the following group names resolvable at udev startup:
- disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, and kmem.
- Especially in LDAP setups, it is required that getgrnam() be able to resolve
- these group names with only the rootfs mounted and while no network is
- available.
-
- - Some udev extras have external dependencies like:
- libglib2, usbutils, pciutils, and gperf.
- All these extras can be disabled with configure options.
-
-Setup:
- - The udev daemon should be started to handle device events sent by the kernel.
- During bootup, the events for already existing devices can be replayed, so
- that they are configured by udev. The systemd service files contain the
- needed commands to start the udev daemon and the coldplug sequence.
-
- - Restarting the daemon never applies any rules to existing devices.
-
- - New/changed rule files are picked up automatically; there is usually no
- daemon restart or signal needed.
-
-Operation:
- - Based on events the kernel sends out on device creation/removal, udev
- creates/removes device nodes and symlinks in the /dev directory.
-
- - All kernel events are matched against a set of specified rules, which
- possibly hook into the event processing and load required kernel
- modules to set up devices. For all devices, the kernel exports a major/minor
- number; if needed, udev creates a device node with the default kernel
- device name. If specified, udev applies permissions/ownership to the device
- node, creates additional symlinks pointing to the node, and executes
- programs to handle the device.
-
- - The events udev handles, and the information udev merges into its device
- database, can be accessed with libudev:
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/
-
-For more details about udev and udev rules, see the udev man pages:
- http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/
-
-Please direct any comment/question to the linux-hotplug mailing list at:
- linux-hotplug@vger.kernel.org
+systemd System and Service Manager
+
+DETAILS:
+ http://0pointer.de/blog/projects/systemd.html
+
+WEB SITE:
+ http://www.freedesktop.org/wiki/Software/systemd
+
+GIT:
+ git://anongit.freedesktop.org/systemd/systemd
+ ssh://git.freedesktop.org/git/systemd/systemd
+
+GITWEB:
+ http://cgit.freedesktop.org/systemd/systemd
+
+MAILING LIST:
+ http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+ http://lists.freedesktop.org/mailman/listinfo/systemd-commits
+
+IRC:
+ #systemd on irc.freenode.org
+
+BUG REPORTS:
+ https://bugs.freedesktop.org/enter_bug.cgi?product=systemd
+
+AUTHOR:
+ Lennart Poettering with major support from Kay Sievers
+
+LICENSE:
+ GPLv2+ for all code, except sd-daemon.[ch] and
+ sd-readahead.[ch] which are MIT
+
+REQUIREMENTS:
+ Linux kernel >= 2.6.39
+ with devtmpfs
+ with cgroups (but it's OK to disable all controllers)
+ optional but strongly recommended: autofs4, ipv6
+ libudev >= 172
+ dbus >= 1.4.0
+ libcap
+ PAM >= 1.1.2 (optional)
+ libcryptsetup (optional)
+ libaudit (optional)
+ libselinux (optional)
+ tcpwrappers (optional)
+
+ When you build from git you need the following additional dependencies:
+
+ docbook-xsl
+ xsltproc
+ automake
+ autoconf
+ libtool
+ gperf
+ make, gcc, and similar tools
+
+ During runtime you need the following dependencies:
+
+ util-linux > v2.18 (requires fsck -l, agetty -s)
+ sulogin (from sysvinit-tools, optional but recommended)
+ plymouth (optional)
+ dracut (optional)
+
+ When systemd-hostnamed is used it is strongly recommended to
+ install nss-myhostname to ensure that in a world of
+ dynamically changing hostnames the hostname stays resolveable
+ under all circumstances. In fact, systemd-hostnamed will warn
+ if nss-myhostname is not installed. Packagers are encouraged to
+ add a dependency on nss-myhostname to the package that
+ includes systemd-hostnamed.
+
+ Note that D-Bus can link against libsystemd-login.so, which
+ results in a cyclic build dependency. To accomodate for this
+ please build D-Bus without systemd first, then build systemd,
+ then rebuild D-Bus with systemd support.
+
+WARNINGS:
+ systemd will warn you during boot if /etc/mtab is not a
+ symlink to /proc/mounts. Please ensure that /etc/mtab is a
+ proper symlink.
+
+ systemd will warn you during boot if /usr is on a different
+ file system than /. While in systemd itself very little will
+ break if /usr is on a separate partition many of its
+ dependencies very likely will break sooner or later in one
+ form or another. For example udev rules tend to refer to
+ binaries in /usr, binaries that link to libraries in /usr or
+ binaries that refer to data files in /usr. Since these
+ breakages are not always directly visible systemd will warn
+ about this, since this kind of file system setup is not really
+ supported anymore by the basic set of Linux OS components.
+
+ For more information on this issue consult
+ http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
+
+ENGINEERING AND CONSULTING SERVICES:
+ ProFUSION <http://profusion.mobi> offers professional
+ engineering and consulting services for systemd for embedded
+ and other use. Please contact Gustavo Barbieri
+ <barbieri@profusion.mobi> for more information.
+
+ Disclaimer: This notice is not a recommendation or official
+ endorsement. However, ProFUSION's upstream work has been very
+ beneficial for the systemd project.
diff --git a/TODO b/TODO
index 8b8b9c8f8..4f3b15704 100644
--- a/TODO
+++ b/TODO
@@ -1,22 +1,344 @@
- - find a way to tell udev to not cancel firmware
- requests in initramfs
+Bugfixes:
- - scsi_id -> sg3_utils?
+* swap units that are activated by one name but shown in the kernel under another are semi-broken
- - make gtk-doc optional like kmod
+* make anaconda write timeout=0 for encrypted devices
- - move /usr/lib/udev/devices/ to tmpfiles
+* make sure timeouts are applied to Type=oneshot services.
- - trigger --subsystem-match=usb/usb_device
+* Dangling symlinks of .automount unit files in .wants/ directories, set up
+ automount points even when the original .automount file did not exist
+ anymore. Only the .mount unit was still around.
- - kill rules_generator
+* make polkit checks async
- - have a $attrs{} ?
+* properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
- - remove RUN+="socket:"
+Features:
- - libudev.so.1
- - symbol versioning
- - return object with *_unref()
- - udev_monitor_from_socket()
- - udev_queue_get_failed_list_entry()
+* allow configuration of console width/height in vconsole.conf
+
+* PrivateTmp should apply to both /tmp and /var/tmp
+
+* fstab should take priority over units in /usr
+
+* cleanup syslog 'priority' vs. 'level' wording
+
+* journal: if mmap() fails for mapping window try to unmap a a few older maps
+
+* add flag file for shutdownd so that clients can check whether a shutdown is queued
+
+* dbus upstream still refers to dbus.target and shouldn't
+
+* when a service has the same env var set twice we actually store it twice and return that in systemctl show -p... We should only show the last setting
+
+* add man page documenting all kernel cmdline options, including stuff like fsck.mode=
+
+* show getty in container mode, not sulogin
+
+* support container_ttys=
+
+* journald: make configurable "store-on-var", "store-on-run", "dont-store", "auto"
+ (store-persistent, store-volatile?)
+
+* Add ConditionReadWriteFileSystem= so that systemd-sysctl doesn't get executed when /proc/sys is read-only
+
+* unset container= and container_uuid= for child processes
+
+* when bind mounting /etc/machine-id, do so from /run/machine-id
+
+* introduce mix of BindTo and Requisite
+
+* journalctl: show multiline log messages sanely, expand tabs, and show all valid utf8 messages
+
+* introduce NeedsMounts= or so to create .mount dependencies automatically for a specific path
+
+* add DeleteSocketsOnStop=yes|no option to socket units
+
+* add shutdown inhibit API for usage by libvirt and friends
+
+* journal: store euid in journal if it differs from uid
+
+* support chrony in addition to ntpd in timedated
+
+* document crypttab(5)
+
+* There's currently no way to cancel fsck (used to be possible via C-c or c on the console)
+
+* hook up /dev/watchdog with main event loop for embedded, server uses
+
+* when dumping cgroup contents, include main/control PID of a service, explicitly
+
+* keep an eye on https://bugzilla.gnome.org/show_bug.cgi?id=670100
+
+* D-Bus: always pass cred data along each message
+
+* journal: allow turning off logging entirely
+
+* journal: sanely deal with entries which are larger than the individual file size, but where the componets would fit
+
+* add command to systemctl to plot dependency graph as tree (see rhbz 795365)
+
+* make logind reserve tty10 or so for text logins, so that gdm never picks it up
+
+* add option to sockets to avoid activation. Instead just drop packets/connections, see http://cyberelk.net/tim/2012/02/15/portreserve-systemd-solution/
+
+* isolate for getty is still broken, due to logind
+
+* default unix qlen is too small (10). bump sysctl? add sockopt?
+
+* support units generated by a generator and placed in /run/systemd/system/; the directory is
+ currently ignored because it is empty before the generatores are executed
+
+* Possibly, detect whether SysV init scripts can do reloading by looking for "echo Usage:" lines
+
+* figure out whether we should leave dbus around during shutdown
+
+* add interface to allow immediate rotation of the journal, and even flushing.
+
+* dbus: in fedora, make the machine a symlink to /etc/machine-id
+
+* journald: reuse XZ context
+
+* logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API
+
+* write RPM spec macros for presets
+
+* journal: write man pages for API
+
+* journal: OR matches are borked
+
+* journal: extend hash tables as we go
+
+* journal: API for looking for retrieving "all values of this field"
+
+* journal: deal nicely with byte-by-byte copied files, especially regards header
+
+* journal: local deserializer of export mode, http server
+
+* journal: message catalog
+
+* journal: forward-secure signatures
+
+* document the exit codes when services fail before they are exec()ed
+
+* rework namespace support, don't use pivot_root, and mount things after creating the namespace, not before
+
+* systemctl journal command
+
+* journalctl: --cursor support, priority filtering
+
+* systemctl status: show coredumps
+
+* systemctl status: show whether journal was rotated since service started
+
+* save coredump in Windows/Mozilla minidump format
+
+* support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting)
+
+* journal: allow per-entry control on /var vs. /run (think incognito browser mode)
+
+* clean up session cgroups that remain after logout (think sshd), but eventually run empty
+
+* support "systemctl stop foobar@.service" to stop all units matching a certain template
+
+* move to LGPL2+
+
+* logind: allow showing logout dialog from system
+
+* document that %% can be used to write % in a string that is specifier extended
+
+* when an instanced service exits, remove its parent cgroup too if possible.
+
+* Make libselinux, libattr, libcap, libdl dependencies only of the tools which actually need them.
+
+* as Tom Gundersen pointed out there's a always a dep loop if people use crypto file systems with random keys
+
+* unset container=, container_uuid= in PID1?
+
+* automatically escape unit names passed on the service (i.e. think "systemctl start serial-getty.service@serial/by-path/jshdfjsdfhkjh" being automatically escaped as necessary.
+
+* if we can not get user quota for tmpfs, mount a separate tmpfs instance
+ for every user in /run/user/$USER with a configured maximum size
+
+* default to actual 32bit PIDs, via /proc/sys/kernel/pid_max
+
+* add an option to make mounts private/shareable and so on, enable this for root by default
+
+* be able to specify a forced restart of service A where service B depends on, in case B
+ needs to be auto-respawned?
+
+* Something is wrong with symlink handling of "autovt@.service" in "systemctl list-unit-files"
+
+* when a bus name of a service disappears from the bus make sure to queue further activation requests
+
+* something like ConditionExec= or ExecStartPre= without failure state
+
+* tmpfiles: apply "x" on "D" too (see patch from William Douglas)
+
+* don't set $HOME in services unless requested
+
+* hide PAM/TCPWrap options in fragment parser when compile time disabled
+
+* when we automatically restart a service, ensure we restart its rdeps, too.
+
+* allow Type=simple with PIDFile=
+ https://bugzilla.redhat.com/show_bug.cgi?id=723942
+
+* move PAM code into its own binary
+
+* warn if the user stops a service but not its associated socket
+
+* logind: spawn user@..service on login
+
+* logind: non-local X11 server handling
+
+* implement Register= switch in .socket units to enable registration
+ in Avahi, RPC and other socket registration services.
+
+* make sure systemd-ask-password-wall does not shutdown systemd-ask-password-console too early
+
+* readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO
+
+* readahead: check whether a btrfs volume includes ssd by checking mount flag "ssd"
+
+* support sd_notify() style notification when reload begins (RELOADING=1), reload is finished (READY=1), and add ReloadSignal= then to use in combination
+
+* support sd_notify() style notification when shutting down, to make auto-exit bus services work (STOPPING=1)
+
+* verify that the AF_UNIX sockets of a service in the fs still exist
+ when we start a service in order to avoid confusion when a user
+ assumes starting a service is enough to make it accessible
+
+* Make it possible to set the keymap independently from the font on
+ the kernel cmdline. Right now setting one resets also the other.
+
+* move nss-myhostname into systemd
+
+* and a dbus call to generate target from current state
+
+* drop /.readahead on bigger upgrades with yum
+
+* add inode nr check to readahead to suppress preloading changed files
+
+* add support for /bin/mount -s
+
+* GC unreferenced jobs (such as .device jobs)
+
+* when failing to start a service due to ratelimiting, try again later, if restart=always is set
+
+* write blog stories about:
+ - enabling dbus services
+ - status update
+ - how to make changes to sysctl and sysfs attributes
+ - remote access
+ - how to pass throw-away units to systemd, or dynamically change properties of existing units
+ - how to integrate cgconfig and suchlike with systemd
+ - resource control in systemd
+
+* allow port=0 in .socket units
+
+* move readahead files into /var, look for them with .path units
+
+* teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
+
+* support systemd.mask= on the kernel command line.
+
+* when key file cannot be found, read it from kbd in cryptsetup
+
+* reuse mkdtemp namespace dirs in /tmp?
+
+* recreate systemd's D-Bus private socket file on SIGUSR2
+
+* Support --test based on current system state
+
+* investigate whether the gnome pty helper should be moved into systemd, to provide cgroup support.
+
+* maybe introduce ExecRestartPre=
+
+* configurable jitter for timer events
+
+* timer events with system resume
+
+* timer events on calendar time
+
+* dot output for --test showing the 'initial transaction'
+
+* calendar time support in timer, iCalendar semantics for the timer stuff (RFC2445)
+ http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=99ee5315dac6211e972fa3f23bcc9a0343ff58c4
+
+* implicitly import "defaults" settings file into all types
+* exec settings override
+* writable cgroups dbus properties for live changes
+
+* read config fragments for all units from /lib/systemd/system/foobar.service.d/ to override/extend specific settings
+
+* port over to LISTEN_FDS/LISTEN_PID:
+ - rpcbind (/var/run/rpcbind.sock!) HAVEPATCH
+ - cups HAVEPATCH
+ - postfix, saslauthd
+ - apache/samba
+ - libvirtd (/var/run/libvirt/libvirt-sock-ro)
+ - bluetoothd (/var/run/sdp! @/org/bluez/audio!)
+ - distccd
+
+* auditd service files
+
+* fingerprint.target, wireless.target, gps.target, netdevice.target
+
+* io priority during initialization
+
+* systemctl list-jobs - show dependencies
+
+* add systemctl switch to dump transaction without executing it
+
+* suspend, resume support?
+
+* drop cap bounding set in readahead and other services
+
+External:
+
+* dbus:
+ - get process transport into dbus for systemctl -P/-H (PENDING)
+ - dbus --user
+ - natively watch for dbus-*.service symlinks (PENDING)
+ - allow specification of socket mode/umask when allocating DBusServer
+ - allow disabling of fd passing when connecting a AF_UNIX connection
+ - allow disabling of UID passing for AUTH EXTERNAL
+
+* systemd --user
+ PR_SET_CHILD_REAPER patch: https://lkml.org/lkml/2011/7/28/426
+ (patch in linux-next, on the way to the next kernel)
+
+* fix alsa mixer restore to not print error when no config is stored
+
+* gnome-shell python script/glxinfo/is-accelerated must die
+
+* make cryptsetup lower --iter-time
+
+* patch kernel for xattr support in /dev, /proc/, /sys and /sys/fs/cgroup?
+
+* NTP: the kernel's 11-minutes-mode syncs the system time to the RTC, but only
+ in an ~30 minutes window. It does not adjust larger differences. Find a way
+ to tell the kernel, to always do a full time sync when the RTC is in UTC and
+ we are in 11-minutes-mode. When we trust the system time to NTP we also want
+ the RTC to sync up.
+
+* patch kernel for cpu feature modalias for autoloading aes/kvm/...
+ (patches in linux-next, on the way to the next kernel)
+
+* kernel: add device_type = "fb", "fbcon" to class "graphics"
+
+Regularly:
+
+* look for close() vs. close_nointr() vs. close_nointr_nofail()
+
+* check for strerror(r) instead of strerror(-r)
+
+* Use PR_SET_PROCTITLE_AREA if it becomes available in the kernel
+
+* %m in printf() instead of strerror();
+
+* pahole
+
+* set_put(), hashmap_put() return values check. i.e. == 0 doesn't free()!
diff --git a/autogen.sh b/autogen.sh
index 55ee03afd..9ca53772a 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,44 +1,56 @@
-#!/bin/sh -e
+#!/bin/bash
+
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with systemd; If not, see <http://www.gnu.org/licenses/>.
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
- cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
- chmod +x .git/hooks/pre-commit && \
- echo "Activated pre-commit hook."
+ cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
+ chmod +x .git/hooks/pre-commit && \
+ echo "Activated pre-commit hook."
fi
-gtkdocize
-autoreconf --install --symlink
+intltoolize --force --automake
+autoreconf --force --install --symlink
libdir() {
- echo $(cd $1/$(gcc -print-multi-os-directory); pwd)
+ echo $(cd $1/$(gcc -print-multi-os-directory); pwd)
}
-args="$args \
---prefix=/usr \
+args="\
--sysconfdir=/etc \
+--localstatedir=/var \
--libdir=$(libdir /usr/lib) \
---with-selinux \
---enable-gtk-doc"
+--libexecdir=/usr/lib"
-if [ -L /bin ]; then
-args="$args \
---libexecdir=/usr/lib \
---with-systemdsystemunitdir=/usr/lib/systemd/system \
-"
-else
+if [ ! -L /bin ]; then
args="$args \
--with-rootprefix= \
----with-rootlibdir=$(libdir /lib) \
---bindir=/sbin \
---libexecdir=/lib \
---with-systemdsystemunitdir=/lib/systemd/system \
+--with-rootlibdir=$(libdir /lib) \
"
fi
-echo
-echo "----------------------------------------------------------------"
-echo "Initialized build system. For a common configuration please run:"
-echo "----------------------------------------------------------------"
-echo
-echo "./configure CFLAGS='-g -O1' $args"
-echo
+if [ "x$1" != "xc" ]; then
+ echo
+ echo "----------------------------------------------------------------"
+ echo "Initialized build system. For a common configuration please run:"
+ echo "----------------------------------------------------------------"
+ echo
+ echo "./configure CFLAGS='-g -O0' $args"
+ echo
+else
+ echo ./configure CFLAGS='-g -O0' $args
+ ./configure CFLAGS='-g -O0' $args
+ make clean
+fi
diff --git a/configure.ac b/configure.ac
index b31b62f28..9a9a78923 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,242 +1,657 @@
-AC_PREREQ(2.60)
-AC_INIT([udev],
- [182],
- [linux-hotplug@vger.kernel.org],
- [udev],
- [http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html])
-AC_CONFIG_SRCDIR([src/udevd.c])
-AC_CONFIG_AUX_DIR([build-aux])
-AM_INIT_AUTOMAKE([check-news foreign 1.11 -Wall -Wno-portability silent-rules tar-pax no-dist-gzip dist-xz subdir-objects])
+# 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 General Public License as published by
+# the Free Software Foundation; either version 2 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with systemd; If not, see <http://www.gnu.org/licenses/>.
+
+AC_PREREQ(2.63)
+
+AC_INIT([systemd],[44],[systemd-devel@lists.freedesktop.org])
+AC_CONFIG_SRCDIR([src/main.c])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS([config.h])
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
-AC_CONFIG_MACRO_DIR([m4])
+AC_PREFIX_DEFAULT([/usr])
+AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax no-dist-gzip dist-xz subdir-objects check-news])
+
+AC_SUBST(PACKAGE_URL, [http://www.freedesktop.org/wiki/Software/systemd])
+
+AC_CANONICAL_HOST
+AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
+AS_IF([test "x$host_cpu" = "xmips" || test "x$host_cpu" = "xmipsel" ||
+ test "x$host_cpu" = "xmips64" || test "x$host_cpu" = "xmips64el"],
+ [AC_DEFINE(ARCH_MIPS, [], [Whether on mips arch])])
+
AM_SILENT_RULES([yes])
-LT_INIT([disable-static])
-AC_PROG_AWK
-AC_PROG_SED
+
+# i18n stuff for the PolicyKit policy files
+IT_PROG_INTLTOOL([0.40.0])
+
+GETTEXT_PACKAGE=systemd
+AC_SUBST(GETTEXT_PACKAGE)
+
AC_PROG_MKDIR_P
-GTK_DOC_CHECK(1.10)
-AC_PREFIX_DEFAULT([/usr])
+AC_PROG_LN_S
+AC_PROG_SED
+AC_PROG_GREP
+AC_PROG_AWK
+
+AC_PROG_CC
+AC_PROG_CC_C99
+AM_PROG_CC_C_O
+AC_PROG_GCC_TRADITIONAL
+
+AC_CHECK_TOOL(OBJCOPY, objcopy)
+AC_CHECK_TOOL(STRINGS, strings)
+AC_CHECK_TOOL(GPERF, gperf)
+if test -z "$GPERF" ; then
+ AC_MSG_ERROR([*** gperf not found])
+fi
+
+CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
+ -pipe \
+ -Wall \
+ -W \
+ -Wextra \
+ -Wno-inline \
+ -Wvla \
+ -Wundef \
+ -Wformat=2 \
+ -Wlogical-op \
+ -Wsign-compare \
+ -Wformat-security \
+ -Wmissing-include-dirs \
+ -Wformat-nonliteral \
+ -Wold-style-definition \
+ -Wpointer-arith \
+ -Winit-self \
+ -Wdeclaration-after-statement \
+ -Wfloat-equal \
+ -Wmissing-prototypes \
+ -Wstrict-prototypes \
+ -Wredundant-decls \
+ -Wmissing-declarations \
+ -Wmissing-noreturn \
+ -Wshadow \
+ -Wendif-labels \
+ -Wcast-align \
+ -Wstrict-aliasing=2 \
+ -Wwrite-strings \
+ -Wno-long-long \
+ -Wno-overlength-strings \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -Wno-unused-result \
+ -Werror=overflow \
+ -Wp,-D_FORTIFY_SOURCE=2 \
+ -ffast-math \
+ -fno-common \
+ -fdiagnostics-show-option \
+ -fno-strict-aliasing \
+ -fvisibility=hidden \
+ -ffunction-sections \
+ -fdata-sections])
+AC_SUBST([WARNINGFLAGS], $with_cflags)
+
+CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
+ -Wl,--as-needed \
+ -Wl,--gc-sections])
+AC_SUBST([GCLDFLAGS], $with_ldflags)
+
+LT_PREREQ(2.2)
+LT_INIT
+
+AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])])
+AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([*** Dynamic linking loader library not found])])
+
+save_LIBS="$LIBS"
+LIBS=
+AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
+AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
+CAP_LIBS="$LIBS"
+LIBS="$save_LIBS"
+AC_SUBST(CAP_LIBS)
+
+# This makes sure pkg.m4 is available.
+m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
+
+PKG_CHECK_MODULES(UDEV, [ libudev >= 172 ])
+PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.3.2 ])
+PKG_CHECK_MODULES(KMOD, [ libkmod >= 5 ])
+
+have_ima=yes
+AC_ARG_ENABLE([ima], AS_HELP_STRING([--disable-ima],[Disable optional IMA support]),
+ [case "${enableval}" in
+ yes) have_ima=yes ;;
+ no) have_ima=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-ima) ;;
+ esac],
+ [have_ima=yes])
+
+if test "x${have_ima}" != xno ; then
+ AC_DEFINE(HAVE_IMA, 1, [Define if IMA is available])
+fi
+
+have_selinux=no
+AC_ARG_ENABLE(selinux, AS_HELP_STRING([--disable-selinux], [Disable optional SELINUX support]))
+if test "x$enable_selinux" != "xno"; then
+ PKG_CHECK_MODULES(SELINUX, [ libselinux ],
+ [AC_DEFINE(HAVE_SELINUX, 1, [Define if SELinux is available]) have_selinux=yes], have_selinux=no)
+ if test "x$have_selinux" = xno -a "x$enable_selinux" = xyes; then
+ AC_MSG_ERROR([*** SELinux support requested but libraries not found])
+ fi
+fi
+AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"])
+
+have_xz=no
+AC_ARG_ENABLE(xz, AS_HELP_STRING([--disable-xz], [Disable optional XZ support]))
+if test "x$enable_xz" != "xno"; then
+ PKG_CHECK_MODULES(XZ, [ liblzma ],
+ [AC_DEFINE(HAVE_XZ, 1, [Define if XZ is available]) have_xz=yes], have_xz=no)
+ if test "x$have_xz" = xno -a "x$enable_xz" = xyes; then
+ AC_MSG_ERROR([*** Xz support requested but libraries not found])
+ fi
+fi
+AM_CONDITIONAL(HAVE_XZ, [test "$have_xz" = "yes"])
+
+AC_ARG_ENABLE([tcpwrap],
+ AS_HELP_STRING([--disable-tcpwrap],[Disable optional TCP wrappers support]),
+ [case "${enableval}" in
+ yes) have_tcpwrap=yes ;;
+ no) have_tcpwrap=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-tcpwrap) ;;
+ esac],
+ [have_tcpwrap=auto])
+
+if test "x${have_tcpwrap}" != xno ; then
+ ACX_LIBWRAP
+ if test "x${LIBWRAP_LIBS}" = x ; then
+ if test "x$have_tcpwrap" = xyes ; then
+ AC_MSG_ERROR([*** TCP wrappers support not found.])
+ fi
+ have_tcpwrap=no
+ else
+ have_tcpwrap=yes
+ fi
+else
+ LIBWRAP_LIBS=
+fi
+AC_SUBST(LIBWRAP_LIBS)
+
+AC_ARG_ENABLE([pam],
+ AS_HELP_STRING([--disable-pam],[Disable optional PAM support]),
+ [case "${enableval}" in
+ yes) have_pam=yes ;;
+ no) have_pam=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-pam) ;;
+ esac],
+ [have_pam=auto])
+
+if test "x${have_pam}" != xno ; then
+ AC_CHECK_HEADERS(
+ [security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
+ [have_pam=yes],
+ [if test "x$have_pam" = xyes ; then
+ AC_MSG_ERROR([*** PAM headers not found.])
+ fi])
+
+ AC_CHECK_LIB(
+ [pam],
+ [pam_syslog],
+ [have_pam=yes],
+ [if test "x$have_pam" = xyes ; then
+ AC_MSG_ERROR([*** libpam not found.])
+ fi])
+
+ if test "x$have_pam" = xyes ; then
+ PAM_LIBS="-lpam -lpam_misc"
+ AC_DEFINE(HAVE_PAM, 1, [PAM available])
+ else
+ have_pam=no
+ fi
+else
+ PAM_LIBS=
+fi
+AC_SUBST(PAM_LIBS)
+AM_CONDITIONAL([HAVE_PAM], [test "x$have_pam" != xno])
+
+AC_ARG_ENABLE([acl],
+ AS_HELP_STRING([--disable-acl],[Disable optional ACL support]),
+ [case "${enableval}" in
+ yes) have_acl=yes ;;
+ no) have_acl=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-acl) ;;
+ esac],
+ [have_acl=auto])
+
+if test "x${have_acl}" != xno ; then
+ AC_CHECK_HEADERS(
+ [sys/acl.h acl/libacl.h],
+ [have_acl=yes],
+ [if test "x$have_acl" = xyes ; then
+ AC_MSG_ERROR([*** ACL headers not found.])
+ fi])
+
+ AC_CHECK_LIB(
+ [acl],
+ [acl_get_file],
+ [have_acl=yes],
+ [if test "x$have_acl" = xyes ; then
+ AC_MSG_ERROR([*** libacl not found.])
+ fi])
+
+ if test "x$have_acl" = xyes ; then
+ ACL_LIBS="-lacl"
+ AC_DEFINE(HAVE_ACL, 1, [ACL available])
+ else
+ have_acl=no
+ fi
+else
+ ACL_LIBS=
+fi
+AC_SUBST(ACL_LIBS)
+AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
+
+AC_ARG_ENABLE([audit],
+ AS_HELP_STRING([--disable-audit],[Disable optional AUDIT support]),
+ [case "${enableval}" in
+ yes) have_audit=yes ;;
+ no) have_audit=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-audit) ;;
+ esac],
+ [have_audit=auto])
+
+if test "x${have_audit}" != xno ; then
+ AC_CHECK_HEADERS(
+ [libaudit.h],
+ [have_audit=yes],
+ [if test "x$have_audit" = xyes ; then
+ AC_MSG_ERROR([*** AUDIT headers not found.])
+ fi])
+
+ AC_CHECK_LIB(
+ [audit],
+ [audit_open],
+ [have_audit=yes],
+ [if test "x$have_audit" = xyes ; then
+ AC_MSG_ERROR([*** libaudit not found.])
+ fi])
+
+ if test "x$have_audit" = xyes ; then
+ AUDIT_LIBS="-laudit"
+ AC_DEFINE(HAVE_AUDIT, 1, [AUDIT available])
+ else
+ have_audit=no
+ fi
+else
+ AUDIT_LIBS=
+fi
+AC_SUBST(AUDIT_LIBS)
+
+have_libcryptsetup=no
+AC_ARG_ENABLE(libcryptsetup, AS_HELP_STRING([--disable-libcryptsetup], [disable libcryptsetup tools]))
+if test "x$enable_libcryptsetup" != "xno"; then
+ PKG_CHECK_MODULES(LIBCRYPTSETUP, [ libcryptsetup ],
+ [AC_DEFINE(HAVE_LIBCRYPTSETUP, 1, [Define if libcryptsetup is available]) have_libcryptsetup=yes], have_libcryptsetup=no)
+ if test "x$have_libcryptsetup" = xno -a "x$enable_libcryptsetup" = xyes; then
+ AC_MSG_ERROR([*** libcryptsetup support requested but libraries not found])
+ fi
+fi
+AM_CONDITIONAL(HAVE_LIBCRYPTSETUP, [test "$have_libcryptsetup" = "yes"])
+
+have_binfmt=no
+AC_ARG_ENABLE(binfmt, AS_HELP_STRING([--disable-binfmt], [disable binfmt tool]))
+if test "x$enable_binfmt" != "xno"; then
+ have_binfmt=yes
+fi
+AM_CONDITIONAL(ENABLE_BINFMT, [test "$have_binfmt" = "yes"])
+
+have_vconsole=no
+AC_ARG_ENABLE(vconsole, AS_HELP_STRING([--disable-vconsole], [disable vconsole tool]))
+if test "x$enable_vconsole" != "xno"; then
+ have_vconsole=yes
+fi
+AM_CONDITIONAL(ENABLE_VCONSOLE, [test "$have_vconsole" = "yes"])
+
+have_readahead=no
+AC_ARG_ENABLE(readahead, AS_HELP_STRING([--disable-readahead], [disable readahead tools]))
+if test "x$enable_readahead" != "xno"; then
+ have_readahead=yes
+fi
+AM_CONDITIONAL(ENABLE_READAHEAD, [test "$have_readahead" = "yes"])
+
+have_quotacheck=no
+AC_ARG_ENABLE(quotacheck, AS_HELP_STRING([--disable-quotacheck], [disable quotacheck tools]))
+if test "x$enable_quotacheck" != "xno"; then
+ have_quotacheck=yes
+fi
+AM_CONDITIONAL(ENABLE_QUOTACHECK, [test "$have_quotacheck" = "yes"])
+
+have_randomseed=no
+AC_ARG_ENABLE(randomseed, AS_HELP_STRING([--disable-randomseed], [disable randomseed tools]))
+if test "x$enable_randomseed" != "xno"; then
+ have_randomseed=yes
+fi
+AM_CONDITIONAL(ENABLE_RANDOMSEED, [test "$have_randomseed" = "yes"])
+
+have_logind=no
+AC_ARG_ENABLE(logind, AS_HELP_STRING([--disable-logind], [disable login daemon]))
+if test "x$enable_logind" != "xno"; then
+ have_logind=yes
+fi
+AM_CONDITIONAL(ENABLE_LOGIND, [test "$have_logind" = "yes"])
+AS_IF([test "$have_logind" = "yes"], [ AC_DEFINE(HAVE_LOGIND, [1], [Logind support available]) ])
+
+have_hostnamed=no
+AC_ARG_ENABLE(hostnamed, AS_HELP_STRING([--disable-hostnamed], [disable hostname daemon]))
+if test "x$enable_hostnamed" != "xno"; then
+ have_hostnamed=yes
+fi
+AM_CONDITIONAL(ENABLE_HOSTNAMED, [test "$have_hostnamed" = "yes"])
+
+have_timedated=no
+AC_ARG_ENABLE(timedated, AS_HELP_STRING([--disable-timedated], [disable timedate daemon]))
+if test "x$enable_timedated" != "xno"; then
+ have_timedated=yes
+fi
+AM_CONDITIONAL(ENABLE_TIMEDATED, [test "$have_timedated" = "yes"])
+
+have_localed=no
+AC_ARG_ENABLE(localed, AS_HELP_STRING([--disable-localed], [disable locale daemon]))
+if test "x$enable_localed" != "xno"; then
+ have_localed=yes
+fi
+AM_CONDITIONAL(ENABLE_LOCALED, [test "$have_localed" = "yes"])
+
+have_coredump=no
+AC_ARG_ENABLE(coredump, AS_HELP_STRING([--disable-coredump], [disable coredump hook]))
+if test "x$enable_coredump" != "xno"; then
+ have_coredump=yes
+fi
+AM_CONDITIONAL(ENABLE_COREDUMP, [test "$have_coredump" = "yes"])
+
+have_manpages=no
+AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
+if test "x$enable_manpages" != "xno"; then
+ have_manpages=yes
+fi
+AM_CONDITIONAL(ENABLE_MANPAGES, [test "$have_manpages" = "yes"])
AC_PATH_PROG([XSLTPROC], [xsltproc])
AM_CONDITIONAL(HAVE_XSLTPROC, test x"$XSLTPROC" != x)
-AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([POSIX RT library not found])])
+AC_PATH_PROG([M4], [m4])
+
+AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO],[Specify the distribution to target: One of fedora, suse, debian, ubuntu, arch, gentoo, slackware, altlinux, mandriva, meego, mageia, angstrom or other]))
+if test "z$with_distro" = "z"; then
+ if test "$cross_compiling" = yes; then
+ AC_MSG_WARN([Target distribution cannot be reliably detected when cross-compiling. You should specify it with --with-distro (see $0 --help for recognized distros)])
+ else
+ with_distro=$($GREP '^ID=' /etc/os-release | $SED 's/ID=//');
+ fi
+ if test "z$with_distro" = "z"; then
+ with_distro=other
+ fi
+fi
+with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' `
+AC_DEFINE_UNQUOTED(DISTRIBUTION, ["${with_distro}"], [Target Distribution])
-PKG_CHECK_MODULES(BLKID, blkid >= 2.20)
+# Location of the init scripts as mandated by LSB
+SYSTEM_SYSVINIT_PATH=/etc/init.d
+SYSTEM_SYSVRCND_PATH=/etc/rc.d
-PKG_CHECK_MODULES(KMOD, libkmod >= 5)
+M4_DEFINES=
+have_plymouth=no
+
+case $with_distro in
+ fedora)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ AC_DEFINE(TARGET_FEDORA, [], [Target is Fedora/RHEL])
+ M4_DEFINES=-DTARGET_FEDORA=1
+ have_plymouth=yes
+ ;;
+ opensuse|suse)
+ SYSTEM_SYSVRCND_PATH=/etc/init.d
+ AC_DEFINE(TARGET_SUSE, [], [Target is openSUSE/SLE])
+ M4_DEFINES=-DTARGET_SUSE=1
+ have_plymouth=yes
+ ;;
+ debian)
+ SYSTEM_SYSVRCND_PATH=/etc
+ AC_DEFINE(TARGET_DEBIAN, [], [Target is Debian])
+ M4_DEFINES=-DTARGET_DEBIAN=1
+ ;;
+ ubuntu)
+ SYSTEM_SYSVRCND_PATH=/etc
+ AC_DEFINE(TARGET_UBUNTU, [], [Target is Ubuntu])
+ M4_DEFINES=-DTARGET_UBUNTU=1
+ ;;
+ arch)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d
+ SYSTEM_SYSVRCND_PATH=/etc
+ AC_DEFINE(TARGET_ARCH, [], [Target is ArchLinux])
+ M4_DEFINES=-DTARGET_ARCH=1
+ ;;
+ gentoo)
+ SYSTEM_SYSVINIT_PATH=
+ SYSTEM_SYSVRCND_PATH=
+ AC_DEFINE(TARGET_GENTOO, [], [Target is Gentoo])
+ M4_DEFINES=-DTARGET_GENTOO=1
+ ;;
+ slackware)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ AC_DEFINE(TARGET_SLACKWARE, [], [Target is Slackware])
+ M4_DEFINES=-DTARGET_SLACKWARE=1
+ ;;
+ frugalware)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d
+ AC_DEFINE(TARGET_FRUGALWARE, [], [Target is Frugalware])
+ M4_DEFINES=-DTARGET_FRUGALWARE=1
+ have_plymouth=yes
+ ;;
+ altlinux)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ AC_DEFINE(TARGET_ALTLINUX, [], [Target is ALTLinux])
+ M4_DEFINES=-DTARGET_ALTLINUX=1
+ have_plymouth=yes
+ ;;
+ mandriva)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ AC_DEFINE(TARGET_MANDRIVA, [], [Target is Mandriva])
+ M4_DEFINES=-DTARGET_MANDRIVA=1
+ have_plymouth=yes
+ ;;
+ meego)
+ SYSTEM_SYSVINIT_PATH=
+ SYSTEM_SYSVRCND_PATH=
+ AC_DEFINE(TARGET_MEEGO, [], [Target is MeeGo])
+ M4_DEFINES=-DTARGET_MEEGO=1
+ ;;
+ angstrom)
+ SYSTEM_SYSVRCND_PATH=/etc
+ AC_DEFINE(TARGET_ANGSTROM, [], [Target is Ångström])
+ M4_DEFINES=-DTARGET_ANGSTROM=1
+ ;;
+ mageia)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ AC_DEFINE(TARGET_MAGEIA, [], [Target is Mageia])
+ M4_DISTRO_FLAG=-DTARGET_MAGEIA=1
+ have_plymouth=yes
+ ;;
+ other)
+ ;;
+ *)
+ AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, SysV init scripts could not be found! (patches welcome); you can specify --with-distro=other to skip this check])
+ ;;
+esac
+
+AC_ARG_WITH([sysvinit-path],
+ [AS_HELP_STRING([--with-sysvinit-path=PATH],
+ [Specify the path to where the SysV init scripts are located @<:@default=based on distro@:>@])],
+ [SYSTEM_SYSVINIT_PATH="$withval"],
+ [])
+
+AC_ARG_WITH([sysvrcd-path],
+ [AS_HELP_STRING([--with-sysvrcd-path=PATH],
+ [Specify the path to the base directory for the SysV rcN.d directories @<:@default=based on distro@:>@])],
+ [SYSTEM_SYSVRCND_PATH="$withval"],
+ [])
+
+AC_SUBST(SYSTEM_SYSVINIT_PATH)
+AC_SUBST(SYSTEM_SYSVRCND_PATH)
+AC_SUBST(M4_DEFINES)
+
+if test "x${SYSTEM_SYSVINIT_PATH}" != "x" -a "x${SYSTEM_SYSVRCND_PATH}" != "x"; then
+ AC_DEFINE(HAVE_SYSV_COMPAT, [], [SysV init scripts and rcN.d links are supported.])
+ SYSTEM_SYSV_COMPAT="yes"
+ M4_DEFINES="$M4_DEFINES -DHAVE_SYSV_COMPAT"
+elif test "x${SYSTEM_SYSVINIT_PATH}" != "x" -o "x${SYSTEM_SYSVRCND_PATH}" != "x"; then
+ AC_MSG_ERROR([*** You need both --with-sysvinit-path=PATH and --with-sysvrcd-path=PATH to enable SysV compatibility support, or both empty to disable it.])
+else
+ SYSTEM_SYSV_COMPAT="no"
+fi
+
+AC_ARG_WITH([tty-gid],
+ [AS_HELP_STRING([--with-tty-gid=GID],
+ [Specify the numeric GID of the 'tty' group])],
+ [AC_DEFINE_UNQUOTED(TTY_GID, [$withval], [GID of the 'tty' group])],
+ [])
+
+AC_ARG_ENABLE(plymouth, AS_HELP_STRING([--enable-plymouth], [enable plymouth support]))
+if test -n "$enable_plymouth"; then
+ have_plymouth="$enable_plymouth"
+fi
+
+AM_CONDITIONAL(TARGET_FEDORA, test x"$with_distro" = xfedora)
+AM_CONDITIONAL(TARGET_SUSE, test x"$with_distro" = xsuse)
+AM_CONDITIONAL(TARGET_DEBIAN, test x"$with_distro" = xdebian)
+AM_CONDITIONAL(TARGET_UBUNTU, test x"$with_distro" = xubuntu)
+AM_CONDITIONAL(TARGET_DEBIAN_OR_UBUNTU, test x"$with_distro" = xdebian -o x"$with_distro" = xubuntu)
+AM_CONDITIONAL(TARGET_ARCH, test x"$with_distro" = xarch)
+AM_CONDITIONAL(TARGET_GENTOO, test x"$with_distro" = xgentoo)
+AM_CONDITIONAL(TARGET_SLACKWARE, test x"$with_distro" = xslackware)
+AM_CONDITIONAL(TARGET_FRUGALWARE, test x"$with_distro" = xfrugalware)
+AM_CONDITIONAL(TARGET_ALTLINUX, test x"$with_distro" = xaltlinux)
+AM_CONDITIONAL(TARGET_MANDRIVA, test x"$with_distro" = xmandriva)
+AM_CONDITIONAL(TARGET_MEEGO, test x"$with_distro" = xmeego)
+AM_CONDITIONAL(TARGET_ANGSTROM, test x"$with_distro" = xangstrom)
+AM_CONDITIONAL(TARGET_MAGEIA, test x"$with_distro" = xmageia)
+
+AM_CONDITIONAL(HAVE_PLYMOUTH, test "$have_plymouth" = "yes")
+AM_CONDITIONAL(HAVE_SYSV_COMPAT, test "$SYSTEM_SYSV_COMPAT" = "yes")
+
+AC_ARG_WITH([dbuspolicydir],
+ AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
+ [],
+ [with_dbuspolicydir=`pkg-config --variable=sysconfdir dbus-1`/dbus-1/system.d])
+
+AC_ARG_WITH([dbussessionservicedir],
+ AS_HELP_STRING([--with-dbussessionservicedir=DIR], [D-Bus session service directory]),
+ [],
+ [with_dbussessionservicedir=`pkg-config --variable=session_bus_services_dir dbus-1`])
+
+AC_ARG_WITH([dbussystemservicedir],
+ AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]),
+ [],
+ [with_dbussystemservicedir=`pkg-config --variable=session_bus_services_dir dbus-1`/../system-services])
+
+AC_ARG_WITH([dbusinterfacedir],
+ AS_HELP_STRING([--with-dbusinterfacedir=DIR], [D-Bus interface directory]),
+ [],
+ [with_dbusinterfacedir=`pkg-config --variable=session_bus_services_dir dbus-1`/../interfaces])
+
+AC_ARG_WITH([udevrulesdir],
+ AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules]),
+ [],
+ [with_udevrulesdir=`pkg-config --variable=udevdir udev`/rules.d])
AC_ARG_WITH([rootprefix],
- AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
- [], [with_rootprefix=${ac_default_prefix}])
-AC_SUBST([rootprefix], [$with_rootprefix])
+ AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]),
+ [], [with_rootprefix=${ac_default_prefix}])
AC_ARG_WITH([rootlibdir],
- AS_HELP_STRING([--with-rootlibdir=DIR], [rootfs directory to install shared libraries]),
- [], [with_rootlibdir=$libdir])
-AC_SUBST([rootlib_execdir], [$with_rootlibdir])
-
-AC_ARG_WITH([selinux],
- AS_HELP_STRING([--with-selinux], [enable SELinux support]),
- [], [with_selinux=no])
-AS_IF([test "x$with_selinux" = "xyes"], [
- LIBS_save=$LIBS
- AC_CHECK_LIB(selinux, getprevcon,
- [],
- AC_MSG_ERROR([SELinux selected but libselinux not found]))
- LIBS=$LIBS_save
- SELINUX_LIBS="-lselinux -lsepol"
- AC_DEFINE(WITH_SELINUX, [1] ,[SELinux support.])
-])
-AC_SUBST([SELINUX_LIBS])
-AM_CONDITIONAL(WITH_SELINUX, [test "x$with_selinux" = "xyes"])
-
-AC_ARG_ENABLE([debug],
- AS_HELP_STRING([--enable-debug], [enable debug messages @<:@default=disabled@:>@]),
- [], [enable_debug=no])
-AS_IF([test "x$enable_debug" = "xyes"], [ AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.]) ])
-
-AC_ARG_ENABLE([logging],
- AS_HELP_STRING([--disable-logging], [disable system logging @<:@default=enabled@:>@]),
- [], enable_logging=yes)
-AS_IF([test "x$enable_logging" = "xyes"], [ AC_DEFINE(ENABLE_LOGGING, [1], [System logging.]) ])
-
-AC_ARG_ENABLE([manpages],
- AS_HELP_STRING([--disable-manpages], [disable man pages @<:@default=enabled@:>@]),
- [], enable_manpages=yes)
-AM_CONDITIONAL([ENABLE_MANPAGES], [test "x$enable_manpages" = "xyes"])
-
-if test "x$cross_compiling" = "xno" ; then
- AC_CHECK_FILES([/usr/share/pci.ids], [pciids=/usr/share/pci.ids])
- AC_CHECK_FILES([/usr/share/hwdata/pci.ids], [pciids=/usr/share/hwdata/pci.ids])
- AC_CHECK_FILES([/usr/share/misc/pci.ids], [pciids=/usr/share/misc/pci.ids])
-fi
-
-AC_ARG_WITH(usb-ids-path,
- [AS_HELP_STRING([--with-usb-ids-path=DIR], [Path to usb.ids file])],
- [USB_DATABASE=${withval}],
- [if test -n "$usbids" ; then
- USB_DATABASE="$usbids"
- else
- PKG_CHECK_MODULES(USBUTILS, usbutils >= 0.82)
- AC_SUBST([USB_DATABASE], [$($PKG_CONFIG --variable=usbids usbutils)])
- fi])
-AC_MSG_CHECKING([for USB database location])
-AC_MSG_RESULT([$USB_DATABASE])
-AC_SUBST(USB_DATABASE)
-
-AC_ARG_WITH(pci-ids-path,
- [AS_HELP_STRING([--with-pci-ids-path=DIR], [Path to pci.ids file])],
- [PCI_DATABASE=${withval}],
- [if test -n "$pciids" ; then
- PCI_DATABASE="$pciids"
- else
- AC_MSG_ERROR([pci.ids not found, try --with-pci-ids-path=])
- fi])
-AC_MSG_CHECKING([for PCI database location])
-AC_MSG_RESULT([$PCI_DATABASE])
-AC_SUBST(PCI_DATABASE)
-
-AC_ARG_WITH(firmware-path,
- AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]],
- [Firmware search path (default=ROOTPREFIX/lib/firmware/updates:ROOTPREFIX/lib/firmware)]),
- [], [with_firmware_path="$rootprefix/lib/firmware/updates:$rootprefix/lib/firmware"])
-OLD_IFS=$IFS
-IFS=:
-for i in $with_firmware_path; do
- if test "x${FIRMWARE_PATH}" = "x"; then
- FIRMWARE_PATH="\\\"${i}/\\\""
- else
- FIRMWARE_PATH="${FIRMWARE_PATH}, \\\"${i}/\\\""
- fi
-done
-IFS=$OLD_IFS
-AC_SUBST([FIRMWARE_PATH], [$FIRMWARE_PATH])
-
-AC_ARG_WITH([systemdsystemunitdir],
- AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
- [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
-AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) ])
-AM_CONDITIONAL(WITH_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != "xno" ])
-
-# ------------------------------------------------------------------------------
-# GUdev - libudev gobject interface
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([gudev],
- AS_HELP_STRING([--disable-gudev], [disable Gobject libudev support @<:@default=enabled@:>@]),
- [], [enable_gudev=yes])
-AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0]) ])
-
-AC_ARG_ENABLE([introspection],
- AS_HELP_STRING([--disable-introspection], [disable GObject introspection @<:@default=enabled@:>@]),
- [], [enable_introspection=yes])
-AS_IF([test "x$enable_introspection" = "xyes"], [
- PKG_CHECK_MODULES([INTROSPECTION], [gobject-introspection-1.0 >= 0.6.2])
- AC_DEFINE([ENABLE_INTROSPECTION], [1], [enable GObject introspection support])
- AC_SUBST([G_IR_SCANNER], [$($PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0)])
- AC_SUBST([G_IR_COMPILER], [$($PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0)])
- AC_SUBST([G_IR_GENERATE], [$($PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0)])
- AC_SUBST([GIRDIR], [$($PKG_CONFIG --define-variable=datadir=${datadir} --variable=girdir gobject-introspection-1.0)])
- AC_SUBST([GIRTYPELIBDIR], [$($PKG_CONFIG --define-variable=libdir=${libdir} --variable=typelibdir gobject-introspection-1.0)])
-])
-AM_CONDITIONAL([ENABLE_INTROSPECTION], [test "x$enable_introspection" = "xyes"])
-AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"])
-
-# ------------------------------------------------------------------------------
-# keymap - map custom hardware's multimedia keys
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([keymap],
- AS_HELP_STRING([--disable-keymap], [disable keymap fixup support @<:@default=enabled@:>@]),
- [], [enable_keymap=yes])
-AS_IF([test "x$enable_keymap" = "xyes"], [
- AC_PATH_PROG([GPERF], [gperf])
- if test -z "$GPERF"; then
- AC_MSG_ERROR([gperf is needed])
- fi
-
- AC_CHECK_HEADER([linux/input.h], [:], AC_MSG_ERROR([kernel headers not found]))
- AC_SUBST([INCLUDE_PREFIX], [$(echo '#include <linux/input.h>' | eval $ac_cpp -E - | sed -n '/linux\/input.h/ {s:.*"\(.*\)/linux/input.h".*:\1:; p; q}')])
-])
-AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"])
-
-# ------------------------------------------------------------------------------
-# mtd_probe - autoloads FTL module for mtd devices
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([mtd_probe],
- AS_HELP_STRING([--disable-mtd_probe], [disable MTD support @<:@default=enabled@:>@]),
- [], [enable_mtd_probe=yes])
-AM_CONDITIONAL([ENABLE_MTD_PROBE], [test "x$enable_mtd_probe" = "xyes"])
-
-# ------------------------------------------------------------------------------
-# rule_generator - persistent network and optical device rule generator
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([rule_generator],
- AS_HELP_STRING([--enable-rule_generator], [enable persistent network + cdrom links support @<:@default=disabled@:>@]),
- [], [enable_rule_generator=no])
-AM_CONDITIONAL([ENABLE_RULE_GENERATOR], [test "x$enable_rule_generator" = "xyes"])
-
-# ------------------------------------------------------------------------------
-# create_floppy_devices - historical floppy kernel device nodes (/dev/fd0h1440, ...)
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([floppy],
- AS_HELP_STRING([--enable-floppy], [enable legacy floppy support @<:@default=disabled@:>@]),
- [], [enable_floppy=no])
-AM_CONDITIONAL([ENABLE_FLOPPY], [test "x$enable_floppy" = "xyes"])
-
-my_CFLAGS="-Wall \
--Wmissing-declarations -Wmissing-prototypes \
--Wnested-externs -Wpointer-arith \
--Wpointer-arith -Wsign-compare -Wchar-subscripts \
--Wstrict-prototypes -Wshadow \
--Wformat-security -Wtype-limits"
-AC_SUBST([my_CFLAGS])
-
-AC_CONFIG_HEADERS(config.h)
-AC_CONFIG_FILES([
- Makefile
- src/docs/Makefile
- src/docs/version.xml
- src/gudev/docs/Makefile
- src/gudev/docs/version.xml
+ AS_HELP_STRING([--with-rootlibdir=DIR], [Root directory for libraries necessary for boot]),
+ [],
+ [with_rootlibdir=${libdir}])
+
+AC_ARG_WITH([pamlibdir],
+ AS_HELP_STRING([--with-pamlibdir=DIR], [Directory for PAM modules]),
+ [],
+ [with_pamlibdir=${with_rootlibdir}/security])
+
+AC_ARG_ENABLE([split-usr],
+ AS_HELP_STRING([--enable-split-usr], [Assume that /bin, /sbin aren\'t symlinks into /usr]),
+ [],
+ [AS_IF([test "x${ac_default_prefix}" != "x${with_rootprefix}"], [
+ enable_split_usr=yes
+ ], [
+ enable_split_usr=no
+ ])])
+
+AS_IF([test "x${enable_split_usr}" = "xyes"], [
+ AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr])
])
+AC_SUBST([dbuspolicydir], [$with_dbuspolicydir])
+AC_SUBST([dbussessionservicedir], [$with_dbussessionservicedir])
+AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir])
+AC_SUBST([dbusinterfacedir], [$with_dbusinterfacedir])
+AC_SUBST([udevrulesdir], [$with_udevrulesdir])
+AC_SUBST([pamlibdir], [$with_pamlibdir])
+AC_SUBST([rootprefix], [$with_rootprefix])
+AC_SUBST([rootlibdir], [$with_rootlibdir])
+
+AC_CONFIG_FILES([Makefile po/Makefile.in])
AC_OUTPUT
AC_MSG_RESULT([
- $PACKAGE $VERSION
- ========
+ $PACKAGE_NAME $VERSION
+ Distribution: ${with_distro}
+ SysV compatibility: ${SYSTEM_SYSV_COMPAT}
+ SysV init scripts: ${SYSTEM_SYSVINIT_PATH}
+ SysV rc?.d directories: ${SYSTEM_SYSVRCND_PATH}
+ libcryptsetup: ${have_libcryptsetup}
+ tcpwrap: ${have_tcpwrap}
+ PAM: ${have_pam}
+ AUDIT: ${have_audit}
+ IMA: ${have_ima}
+ SELinux: ${have_selinux}
+ XZ: ${have_xz}
+ ACL: ${have_acl}
+ binfmt: ${have_binfmt}
+ vconsole: ${have_vconsole}
+ readahead: ${have_readahead}
+ quotacheck: ${have_quotacheck}
+ randomseed: ${have_randomseed}
+ logind: ${have_logind}
+ hostnamed: ${have_hostnamed}
+ timedated: ${have_timedated}
+ localed: ${have_localed}
+ coredump: ${have_coredump}
+ plymouth: ${have_plymouth}
prefix: ${prefix}
- rootprefix: ${rootprefix}
- sysconfdir: ${sysconfdir}
- bindir: ${bindir}
- libdir: ${libdir}
- rootlibdir: ${rootlib_execdir}
- libexecdir: ${libexecdir}
- datarootdir: ${datarootdir}
- mandir: ${mandir}
- includedir: ${includedir}
- include_prefix: ${INCLUDE_PREFIX}
- systemdsystemunitdir: ${systemdsystemunitdir}
- firmware path: ${FIRMWARE_PATH}
- usb.ids: ${USB_DATABASE}
- pci.ids: ${PCI_DATABASE}
-
- compiler: ${CC}
- cflags: ${CFLAGS}
- ldflags: ${LDFLAGS}
- xsltproc: ${XSLTPROC}
- gperf: ${GPERF}
-
- logging: ${enable_logging}
- debug: ${enable_debug}
- selinux: ${with_selinux}
-
- man pages ${enable_manpages}
- gudev: ${enable_gudev}
- gintrospection: ${enable_introspection}
- keymap: ${enable_keymap}
- mtd_probe: ${enable_mtd_probe}
- rule_generator: ${enable_rule_generator}
- floppy: ${enable_floppy}
+ rootprefix: ${with_rootprefix}
+ libexec dir: ${libexecdir}
+ lib dir: ${libdir}
+ rootlib dir: ${with_rootlibdir}
+ PAM modules dir: ${with_pamlibdir}
+ udev rules dir: ${with_udevrulesdir}
+ D-Bus policy dir: ${with_dbuspolicydir}
+ D-Bus session dir: ${with_dbussessionservicedir}
+ D-Bus system dir: ${with_dbussystemservicedir}
+ D-Bus interfaces dir: ${with_dbusinterfacedir}
+ Split /usr: ${enable_split_usr}
+ man pages: ${have_manpages}
])
diff --git a/introspect.awk b/introspect.awk
new file mode 100644
index 000000000..593191384
--- /dev/null
+++ b/introspect.awk
@@ -0,0 +1,13 @@
+BEGIN {
+ print "<!DOCTYPE node PUBLIC DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"
+ print "DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER>"
+ print "<node>"
+}
+
+// {
+ print
+}
+
+END {
+ print "</node>"
+}
diff --git a/m4/.gitignore b/m4/.gitignore
index 0ca2c0372..55eaa803a 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -1,4 +1,6 @@
+intltool.m4
libtool.m4
-lt*m4
-gtk-doc.m4
-
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+lt~obsolete.m4
diff --git a/m4/acx_libwrap.m4 b/m4/acx_libwrap.m4
new file mode 100644
index 000000000..ccf8afc0a
--- /dev/null
+++ b/m4/acx_libwrap.m4
@@ -0,0 +1,19 @@
+AC_DEFUN([ACX_LIBWRAP], [
+LIBWRAP_LIBS=
+saved_LIBS="$LIBS"
+LIBS="$LIBS -lwrap"
+AC_MSG_CHECKING([for tcpwrap library and headers])
+AC_LINK_IFELSE(
+[AC_LANG_PROGRAM(
+[#include <tcpd.h>
+#include <syslog.h>
+int allow_severity = LOG_INFO;
+int deny_severity = LOG_WARNING;],
+[struct request_info *req;
+return hosts_access (req);])],
+[AC_DEFINE(HAVE_LIBWRAP, [], [Have tcpwrap?])
+LIBWRAP_LIBS="-lwrap"
+AC_MSG_RESULT(yes)],
+[AC_MSG_RESULT(no)])
+LIBS="$saved_LIBS"
+])
diff --git a/m4/attributes.m4 b/m4/attributes.m4
new file mode 100644
index 000000000..e354375e3
--- /dev/null
+++ b/m4/attributes.m4
@@ -0,0 +1,288 @@
+dnl Macros to check the presence of generic (non-typed) symbols.
+dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
+dnl Copyright (c) 2006-2008 xine project
+dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+dnl 02110-1301, USA.
+dnl
+dnl As a special exception, the copyright owners of the
+dnl macro gives unlimited permission to copy, distribute and modify the
+dnl configure scripts that are the output of Autoconf when processing the
+dnl Macro. You need not follow the terms of the GNU General Public
+dnl License when using or distributing such scripts, even though portions
+dnl of the text of the Macro appear in them. The GNU General Public
+dnl License (GPL) does govern all other use of the material that
+dnl constitutes the Autoconf Macro.
+dnl
+dnl This special exception to the GPL applies to versions of the
+dnl Autoconf Macro released by this project. When you make and
+dnl distribute a modified version of the Autoconf Macro, you may extend
+dnl this special exception to the GPL to apply to your modified version as
+dnl well.
+
+dnl Check if FLAG in ENV-VAR is supported by compiler and append it
+dnl to WHERE-TO-APPEND variable
+dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
+
+AC_DEFUN([CC_CHECK_FLAG_APPEND], [
+ AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
+ AS_TR_SH([cc_cv_$2_$3]),
+ [eval "AS_TR_SH([cc_save_$2])='${$2}'"
+ eval "AS_TR_SH([$2])='$3'"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
+ [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
+ [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
+ eval "AS_TR_SH([$2])='$cc_save_$2'"])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
+ [eval "$1='${$1} $3'"])
+])
+
+dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
+AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
+ for flag in $3; do
+ CC_CHECK_FLAG_APPEND($1, $2, $flag)
+ done
+])
+
+dnl Check if the flag is supported by linker (cacheable)
+dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
+
+AC_DEFUN([CC_CHECK_LDFLAGS], [
+ AC_CACHE_CHECK([if $CC supports $1 flag],
+ AS_TR_SH([cc_cv_ldflags_$1]),
+ [ac_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $1"
+ AC_LINK_IFELSE([int main() { return 1; }],
+ [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
+ [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
+ LDFLAGS="$ac_save_LDFLAGS"
+ ])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
+ [$2], [$3])
+])
+
+dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
+dnl the current linker to avoid undefined references in a shared object.
+AC_DEFUN([CC_NOUNDEFINED], [
+ dnl We check $host for which systems to enable this for.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ case $host in
+ dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
+ dnl are requested, as different implementations are present; to avoid problems
+ dnl use -Wl,-z,defs only for those platform not behaving this way.
+ *-freebsd* | *-openbsd*) ;;
+ *)
+ dnl First of all check for the --no-undefined variant of GNU ld. This allows
+ dnl for a much more readable commandline, so that people can understand what
+ dnl it does without going to look for what the heck -z defs does.
+ for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
+ CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
+ break
+ done
+ ;;
+ esac
+
+ AC_SUBST([LDFLAGS_NOUNDEFINED])
+])
+
+dnl Check for a -Werror flag or equivalent. -Werror is the GCC
+dnl and ICC flag that tells the compiler to treat all the warnings
+dnl as fatal. We usually need this option to make sure that some
+dnl constructs (like attributes) are not simply ignored.
+dnl
+dnl Other compilers don't support -Werror per se, but they support
+dnl an equivalent flag:
+dnl - Sun Studio compiler supports -errwarn=%all
+AC_DEFUN([CC_CHECK_WERROR], [
+ AC_CACHE_CHECK(
+ [for $CC way to treat warnings as errors],
+ [cc_cv_werror],
+ [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
+ [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
+ ])
+])
+
+AC_DEFUN([CC_CHECK_ATTRIBUTE], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
+ AS_TR_SH([cc_cv_attribute_$1]),
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
+ [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
+ [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
+ [AC_DEFINE(
+ AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
+ [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
+ )
+ $4],
+ [$5])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
+ CC_CHECK_ATTRIBUTE(
+ [constructor],,
+ [void __attribute__((constructor)) ctor() { int a; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
+ CC_CHECK_ATTRIBUTE(
+ [format], [format(printf, n, n)],
+ [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
+ CC_CHECK_ATTRIBUTE(
+ [format_arg], [format_arg(printf)],
+ [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
+ CC_CHECK_ATTRIBUTE(
+ [visibility_$1], [visibility("$1")],
+ [void __attribute__((visibility("$1"))) $1_function() { }],
+ [$2], [$3])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
+ CC_CHECK_ATTRIBUTE(
+ [nonnull], [nonnull()],
+ [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
+ CC_CHECK_ATTRIBUTE(
+ [unused], ,
+ [void some_function(void *foo, __attribute__((unused)) void *bar);],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
+ CC_CHECK_ATTRIBUTE(
+ [sentinel], ,
+ [void some_function(void *foo, ...) __attribute__((sentinel));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
+ CC_CHECK_ATTRIBUTE(
+ [deprecated], ,
+ [void some_function(void *foo, ...) __attribute__((deprecated));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
+ CC_CHECK_ATTRIBUTE(
+ [alias], [weak, alias],
+ [void other_function(void *foo) { }
+ void some_function(void *foo) __attribute__((weak, alias("other_function")));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
+ CC_CHECK_ATTRIBUTE(
+ [malloc], ,
+ [void * __attribute__((malloc)) my_alloc(int n);],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_PACKED], [
+ CC_CHECK_ATTRIBUTE(
+ [packed], ,
+ [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_CONST], [
+ CC_CHECK_ATTRIBUTE(
+ [const], ,
+ [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
+ [$1], [$2])
+])
+
+AC_DEFUN([CC_FLAG_VISIBILITY], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
+ [cc_cv_flag_visibility],
+ [cc_flag_visibility_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
+ cc_cv_flag_visibility='yes',
+ cc_cv_flag_visibility='no')
+ CFLAGS="$cc_flag_visibility_save_CFLAGS"])
+
+ AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
+ [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
+ [Define this if the compiler supports the -fvisibility flag])
+ $1],
+ [$2])
+])
+
+AC_DEFUN([CC_FUNC_EXPECT], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if compiler has __builtin_expect function],
+ [cc_cv_func_expect],
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [int some_function() {
+ int a = 3;
+ return (int)__builtin_expect(a, 3);
+ }])],
+ [cc_cv_func_expect=yes],
+ [cc_cv_func_expect=no])
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ AS_IF([test "x$cc_cv_func_expect" = "xyes"],
+ [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
+ [Define this if the compiler supports __builtin_expect() function])
+ $1],
+ [$2])
+])
+
+AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
+ [cc_cv_attribute_aligned],
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ for cc_attribute_align_try in 64 32 16 8 4 2; do
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ int main() {
+ static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
+ return c;
+ }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
+ done
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ if test "x$cc_cv_attribute_aligned" != "x"; then
+ AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
+ [Define the highest alignment supported])
+ fi
+])
diff --git a/man/Makefile b/man/Makefile
new file mode 120000
index 000000000..bd1047548
--- /dev/null
+++ b/man/Makefile
@@ -0,0 +1 @@
+../src/Makefile \ No newline at end of file
diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml
new file mode 100644
index 000000000..f5ec805e2
--- /dev/null
+++ b/man/binfmt.d.xml
@@ -0,0 +1,111 @@
+<?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 2011 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+<refentry id="binfmt.d">
+
+ <refentryinfo>
+ <title>binfmt.d</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>binfmt.d</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>binfmt.d</refname>
+ <refpurpose>Configure additional binary formats at boot</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/binfmt.d/*.conf</filename></para>
+ <para><filename>/run/binfmt.d/*.conf</filename></para>
+ <para><filename>/usr/lib/binfmt.d/*.conf</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><command>systemd</command> uses
+ files from the above directories to configure
+ additional binary formats to register during boot in
+ the kernel.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Configuration Format</title>
+
+ <para>Each file contains a list of binfmt_misc kernel
+ binary format rules. Consult <ulink
+ url="http://www.kernel.org/doc/Documentation/binfmt_misc.txt">binfmt_misc.txt</ulink>
+ for more information on registration of additional
+ binary formats and how to write rules.</para>
+
+ <para>Empty lines and lines beginning with ; and # are
+ ignored. Note that this means you may not use ; and #
+ as delimiter in binary format rules.</para>
+
+ <para>Each configuration file is named in the style of
+ <filename>&lt;program&gt;.conf</filename>.
+ Files in <filename>/etc/</filename> overwrite
+ files with the same name in <filename>/usr/lib/</filename>.
+ Files in <filename>/run</filename> overwrite files with
+ the same name in <filename>/etc/</filename> and
+ <filename>/usr/lib/</filename>. Packages should install their
+ configuration files in <filename>/usr/lib/</filename>, files
+ in <filename>/etc/</filename> are reserved for the local
+ administration, which possibly decides to overwrite the
+ configurations installed from packages. All files are sorted
+ by filename in alphabetical order, regardless in which of the
+ directories they reside, to ensure that a specific
+ configuration file takes precedence over another file with
+ an alphabetically later name.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Example</title>
+ <example>
+ <title>/etc/binfmt.d/wine.conf example:</title>
+
+ <programlisting># Start WINE on Windows executables
+:DOSWin:M::MZ::/usr/bin/wine:</programlisting>
+ </example>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>wine</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/custom-html.xsl b/man/custom-html.xsl
new file mode 100644
index 000000000..2d2f45879
--- /dev/null
+++ b/man/custom-html.xsl
@@ -0,0 +1,29 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+
+<!--
+ This file is part of systemd.
+
+ Copyright 2011 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+
+<!-- Switch things to UTF-8, ISO-8859-1 is soo yesteryear -->
+<xsl:output method="html" encoding="UTF-8" indent="no"/>
+
+</xsl:stylesheet>
diff --git a/man/daemon.xml b/man/daemon.xml
new file mode 100644
index 000000000..997ee5b25
--- /dev/null
+++ b/man/daemon.xml
@@ -0,0 +1,948 @@
+<?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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="daemon">
+
+ <refentryinfo>
+ <title>daemon</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>daemon</refentrytitle>
+ <manvolnum>7</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>daemon</refname>
+ <refpurpose>Writing and Packaging System Daemons</refpurpose>
+ </refnamediv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>A daemon is a service process that runs in the
+ background and supervises the system or provides
+ functionality to other processes. Traditionally,
+ daemons are implemented following a scheme originating
+ in SysV Unix. Modern daemons should follow a simpler
+ yet more powerful scheme (here called "new-style"
+ daemons), as implemented by
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. This
+ manual page covers both schemes, and in
+ particular includes recommendations for daemons that
+ shall be included in the systemd init system.</para>
+
+ <refsect2>
+ <title>SysV Daemons</title>
+
+ <para>When a traditional SysV daemon
+ starts, it should execute the following steps
+ as part of the initialization. Note that these
+ steps are unnecessary for new-style daemons (see below),
+ and should only be implemented if compatibility
+ with SysV is essential.</para>
+
+ <orderedlist>
+ <listitem><para>Close all open file
+ descriptors except STDIN, STDOUT,
+ STDERR (i.e. the first three file
+ descriptors 0, 1, 2). This ensures
+ that no accidentally passed file
+ descriptor stays around in the daemon
+ process. On Linux this is best
+ implemented by iterating through
+ <filename>/proc/self/fd</filename>,
+ with a fallback of iterating from file
+ descriptor 3 to the value returned by
+ <function>getrlimit()</function> for
+ RLIMIT_NOFILE.</para></listitem>
+
+ <listitem><para>Reset all signal
+ handlers to their default. This is
+ best done by iterating through the
+ available signals up to the limit of
+ _NSIG and resetting them to
+ SIG_DFL.</para></listitem>
+
+ <listitem><para>Reset the signal mask
+ using
+ <function>sigprocmask()</function>.</para></listitem>
+
+ <listitem><para>Sanitize the
+ environment block, removing or
+ resetting environment variables that
+ might negatively impact daemon
+ runtime.</para></listitem>
+
+ <listitem><para>Call <function>fork()</function>,
+ to create a background
+ process.</para></listitem>
+
+ <listitem><para>In the child, call
+ <function>setsid()</function> to
+ detach from any terminal and create an
+ independent session.</para></listitem>
+
+ <listitem><para>In the child, call
+ <function>fork()</function> again, to
+ ensure the daemon can never re-acquire
+ a terminal again.</para></listitem>
+
+ <listitem><para>Call <function>exit()</function> in the
+ first child, so that only the second
+ child (the actual daemon process)
+ stays around. This ensures that the
+ daemon process is reparented to
+ init/PID 1, as all daemons should
+ be.</para></listitem>
+
+ <listitem><para>In the daemon process,
+ connect <filename>/dev/null</filename>
+ to STDIN, STDOUT,
+ STDERR.</para></listitem>
+
+ <listitem><para>In the daemon process,
+ reset the umask to 0, so that the file
+ modes passed to <function>open()</function>, <function>mkdir()</function> and
+ suchlike directly control the access
+ mode of the created files and
+ directories.</para></listitem>
+
+ <listitem><para>In the daemon process,
+ change the current directory to the
+ root directory (/), in order to avoid
+ that the daemon involuntarily
+ blocks mount points from being
+ unmounted.</para></listitem>
+
+ <listitem><para>In the daemon process,
+ write the daemon PID (as returned by
+ <function>getpid()</function>) to a
+ PID file, for example
+ <filename>/var/run/foobar.pid</filename>
+ (for a hypothetical daemon "foobar"),
+ to ensure that the daemon cannot be
+ started more than once. This must be
+ implemented in race-free fashion so
+ that the PID file is only updated when
+ at the same time it is verified that
+ the PID previously stored in the PID
+ file no longer exists or belongs to a
+ foreign process. Commonly some kind of
+ file locking is employed to implement
+ this logic.</para></listitem>
+
+ <listitem><para>In the daemon process,
+ drop privileges, if possible and
+ applicable.</para></listitem>
+
+ <listitem><para>From the daemon
+ process notify the original process
+ started that initialization is
+ complete. This can be implemented via
+ an unnamed pipe or similar
+ communication channel that is created
+ before the first
+ <function>fork()</function> and hence
+ available in both the original and the
+ daemon process.</para></listitem>
+
+ <listitem><para>Call
+ <function>exit()</function> in the
+ original process. The process that
+ invoked the daemon must be able to
+ rely that this
+ <function>exit()</function> happens
+ after initialization is complete and
+ all external communication channels
+ established and
+ accessible.</para></listitem>
+ </orderedlist>
+
+ <para>The BSD <function>daemon()</function> function should not be
+ used, as it implements only a subset of these steps.</para>
+
+ <para>A daemon that needs to provide
+ compatibility with SysV systems should
+ implement the scheme pointed out
+ above. However, it is recommended to make this
+ behaviour optional and configurable via a
+ command line argument, to ease debugging as
+ well as to simplify integration into systems
+ using systemd.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>New-Style Daemons</title>
+
+ <para>Modern services for Linux should be
+ implemented as new-style daemons. This makes it
+ easier to supervise and control them at
+ runtime and simplifies their
+ implementation.</para>
+
+ <para>For developing a new-style daemon none
+ of the initialization steps recommended for
+ SysV daemons need to be implemented. New-style
+ init systems such as systemd make all of them
+ redundant. Moreover, since some of these steps
+ interfere with process monitoring, file
+ descriptor passing and other functionality of
+ the init system it is recommended not to
+ execute them when run as new-style
+ service.</para>
+
+ <para>Note that new-style init systems
+ guarantee execution of daemon processes in
+ clean process contexts: it is guaranteed that
+ the environment block is sanitized, that the
+ signal handlers and mask is reset and that no
+ left-over file descriptors are passed. Daemons
+ will be executed in their own session, and
+ STDIN/STDOUT/STDERR connected to
+ <filename>/dev/null</filename> unless
+ otherwise configured. The umask is reset.</para>
+
+ <para>It is recommended for new-style daemons
+ to implement the following:</para>
+
+ <orderedlist>
+ <listitem><para>If SIGTERM is
+ received, shut down the daemon and
+ exit cleanly.</para></listitem>
+
+ <listitem><para>If SIGHUP is received,
+ reload the configuration files, if
+ this applies.</para></listitem>
+
+ <listitem><para>Provide a correct exit
+ code from the main daemon process, as
+ this is used by the init system to
+ detect service errors and problems. It
+ is recommended to follow the exit code
+ scheme as defined in the <ulink
+ url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
+ recommendations for SysV init
+ scripts</ulink>.</para></listitem>
+
+ <listitem><para>If possible and
+ applicable expose the daemon's control
+ interface via the D-Bus IPC system and
+ grab a bus name as last step of
+ initialization.</para></listitem>
+
+ <listitem><para>For integration in
+ systemd, provide a
+ <filename>.service</filename> unit
+ file that carries information about
+ starting, stopping and otherwise
+ maintaining the daemon. See
+ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para></listitem>
+
+ <listitem><para>As much as possible,
+ rely on the init systemd's
+ functionality to limit the access of
+ the daemon to files, services and
+ other resources. i.e. in the case of
+ systemd, rely on systemd's resource
+ limit control instead of implementing
+ your own, rely on systemd's privilege
+ dropping code instead of implementing
+ it in the daemon, and similar. See
+ <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for the available
+ controls.</para></listitem>
+
+ <listitem><para>If D-Bus is used, make
+ your daemon bus-activatable, via
+ supplying a D-Bus service activation
+ configuration file. This has multiple
+ advantages: your daemon may be started
+ lazily on-demand; it may be started in
+ parallel to other daemons requiring it
+ -- which maximizes parallelization and
+ boot-up speed; your daemon can be
+ restarted on failure, without losing
+ any bus requests, as the bus queues
+ requests for activatable services. See
+ below for details.</para></listitem>
+
+ <listitem><para>If your daemon
+ provides services to other local
+ processes or remote clients via a
+ socket, it should be made
+ socket-activatable following the
+ scheme pointed out below. Like D-Bus
+ activation this enables on-demand
+ starting of services as well as it
+ allows improved parallelization of
+ service start-up. Also, for state-less
+ protocols (such as syslog, DNS) a
+ daemon implementing socket-based
+ activation can be restarted without
+ losing a single request. See below for
+ details.</para></listitem>
+
+ <listitem><para>If applicable a daemon
+ should notify the init system about
+ startup completion or status updates
+ via the
+ <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ interface.</para></listitem>
+
+ <listitem><para>Instead of using the
+ <function>syslog()</function> call to log directly to the
+ system syslog service, a new-style daemon may
+ choose to simply log to STDERR via
+ <function>fprintf()</function>, which is then forwarded to
+ syslog by the init system. If log
+ priorities are necessary these can be
+ encoded by prefixing individual log
+ lines with strings like "&lt;4&gt;"
+ (for log priority 4 "WARNING" in the
+ syslog priority scheme), following a
+ similar style as the Linux kernel's
+ <function>printk()</function> priority system. In fact,
+ using this style of logging also
+ enables the init system to optionally
+ direct all application logging to the
+ kernel log buffer (kmsg), as
+ accessible via
+ <citerefentry><refentrytitle>dmesg</refentrytitle><manvolnum>1</manvolnum></citerefentry>. This
+ kind of logging may be enabled by
+ setting
+ <varname>StandardError=syslog</varname>
+ in the service unit file. For details
+ see
+ <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ and
+ <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
+
+ </orderedlist>
+
+ <para>These recommendations are similar but
+ not identical to the <ulink
+ url="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/LaunchOnDemandDaemons.html#//apple_ref/doc/uid/TP40001762-104738">Apple
+ MacOS X Daemon Requirements</ulink>.</para>
+ </refsect2>
+
+ </refsect1>
+ <refsect1>
+ <title>Activation</title>
+
+ <para>New-style init systems provide multiple
+ additional mechanisms to activate services, as
+ detailed below. It is common that services are
+ configured to be activated via more than one mechanism
+ at the same time. An example for systemd:
+ <filename>bluetoothd.service</filename> might get
+ activated either when Bluetooth hardware is plugged
+ in, or when an application accesses its programming
+ interfaces via D-Bus. Or, a print server daemon might
+ get activated when traffic arrives at an IPP port, or
+ when a printer is plugged in, or when a file is queued
+ in the printer spool directory. Even for services that
+ are intended to be started on system bootup
+ unconditionally it is a good idea to implement some of
+ the various activation schemes outlined below, in
+ order to maximize parallelization: if a daemon
+ implements a D-Bus service or listening socket,
+ implementing the full bus and socket activation scheme
+ allows starting of the daemon with its clients in
+ parallel (which speeds up boot-up), since all its
+ communication channels are established already, and no
+ request is lost because client requests will be queued
+ by the bus system (in case of D-Bus) or the kernel (in
+ case of sockets), until the activation is
+ completed.</para>
+
+ <refsect2>
+ <title>Activation on Boot</title>
+
+ <para>Old-style daemons are usually activated
+ exclusively on boot (and manually by the
+ administrator) via SysV init scripts, as
+ detailed in the <ulink
+ url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
+ Linux Standard Base Core
+ Specification</ulink>. This method of
+ activation is supported ubiquitously on Linux
+ init systems, both old-style and new-style
+ systems. Among other issues SysV init scripts
+ have the disadvantage of involving shell
+ scripts in the boot process. New-style init
+ systems generally employ updated versions of
+ activation, both during boot-up and during
+ runtime and using more minimal service
+ description files.</para>
+
+ <para>In systemd, if the developer or
+ administrator wants to make sure a service or
+ other unit is activated automatically on boot
+ it is recommended to place a symlink to the
+ unit file in the <filename>.wants/</filename>
+ directory of either
+ <filename>multi-user.target</filename> or
+ <filename>graphical.target</filename>, which
+ are normally used as boot targets at system
+ startup. See
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details about the
+ <filename>.wants/</filename> directories, and
+ <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ for details about the two boot targets.</para>
+
+ </refsect2>
+
+ <refsect2>
+ <title>Socket-Based Activation</title>
+
+ <para>In order to maximize the possible
+ parallelization and robustness and simplify
+ configuration and development, it is
+ recommended for all new-style daemons that
+ communicate via listening sockets to employ
+ socket-based activation. In a socket-based
+ activation scheme the creation and binding of
+ the listening socket as primary communication
+ channel of daemons to local (and sometimes
+ remote) clients is moved out of the daemon
+ code and into the init system. Based on
+ per-daemon configuration the init system
+ installs the sockets and then hands them off
+ to the spawned process as soon as the
+ respective daemon is to be started.
+ Optionally activation of the service can be
+ delayed until the first inbound traffic
+ arrives at the socket, to implement on-demand
+ activation of daemons. However, the primary
+ advantage of this scheme is that all providers
+ and all consumers of the sockets can be
+ started in parallel as soon as all sockets
+ are established. In addition to that daemons
+ can be restarted with losing only a minimal
+ number of client transactions or even any
+ client request at all (the latter is
+ particularly true for state-less protocols,
+ such as DNS or syslog), because the socket
+ stays bound and accessible during the restart,
+ and all requests are queued while the daemon
+ cannot process them.</para>
+
+ <para>New-style daemons which support socket
+ activation must be able to receive their
+ sockets from the init system, instead of of
+ creating and binding them themselves. For
+ details about the programming interfaces for
+ this scheme provided by systemd see
+ <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ and
+ <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>. For
+ details about porting existing daemons to
+ socket-based activation see below. With
+ minimal effort it is possible to implement
+ socket-based activation in addition to
+ traditional internal socket creation in the
+ same codebase in order to support both
+ new-style and old-style init systems from the
+ same daemon binary.</para>
+
+ <para>systemd implements socket-based
+ activation via <filename>.socket</filename>
+ units, which are described in
+ <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>. When
+ configuring socket units for socket-based
+ activation it is essential that all listening
+ sockets are pulled in by the special target
+ unit <filename>sockets.target</filename>. It
+ is recommended to place a
+ <varname>WantedBy=sockets.target</varname>
+ directive in the <literal>[Install]</literal>
+ section, to automatically add such a
+ dependency on installation of a socket
+ unit. Unless
+ <varname>DefaultDependencies=no</varname> is
+ set the necessary ordering dependencies are
+ implicitly created for all socket units. For
+ more information about
+ <filename>sockets.target</filename> see
+ <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>. It
+ is not necessary or recommended to place any
+ additional dependencies on socket units (for
+ example from
+ <filename>multi-user.target</filename> or
+ suchlike) when one is installed in
+ <filename>sockets.target</filename>.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Bus-Based Activation</title>
+
+ <para>When the D-Bus IPC system is used for
+ communication with clients, new-style daemons
+ should employ bus activation so that they are
+ automatically activated when a client
+ application accesses their IPC
+ interfaces. This is configured in D-Bus
+ service files (not to be confused with systemd
+ service unit files!). To ensure that D-Bus
+ uses systemd to start-up and maintain the
+ daemon use the
+ <varname>SystemdService=</varname> directive
+ in these service files, to configure the
+ matching systemd service for a D-Bus
+ service. e.g.: for a D-Bus service whose D-Bus
+ activation file is named
+ <filename>org.freedesktop.RealtimeKit.service</filename>,
+ make sure to set
+ <varname>SystemdService=rtkit-daemon.service</varname>
+ in that file, to bind it to the systemd
+ service
+ <filename>rtkit-daemon.service</filename>. This
+ is needed to make sure that the daemon is
+ started in a race-free fashion when activated
+ via multiple mechanisms simultaneously.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Device-Based Activation</title>
+
+ <para>Often, daemons that manage a particular
+ type of hardware should be activated only when
+ the hardware of the respective kind is plugged
+ in or otherwise becomes available. In a
+ new-style init system it is possible to bind
+ activation to hardware plug/unplug events. In
+ systemd, kernel devices appearing in the
+ sysfs/udev device tree can be exposed as units
+ if they are tagged with the string
+ "<literal>systemd</literal>". Like any other
+ kind of unit they may then pull in other units
+ when activated (i.e. Plugged in) and thus
+ implement device-based activation. Systemd
+ dependencies may be encoded in the udev
+ database via the
+ <varname>SYSTEMD_WANTS=</varname>
+ property. See
+ <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details. Often it is nicer to pull in
+ services from devices only indirectly via
+ dedicated targets. Example: instead of pulling
+ in <filename>bluetoothd.service</filename>
+ from all the various bluetooth dongles and
+ other hardware available, pull in
+ bluetooth.target from them and
+ <filename>bluetoothd.service</filename> from
+ that target. This provides for nicer
+ abstraction and gives administrators the
+ option to enable
+ <filename>bluetoothd.service</filename> via
+ controlling a
+ <filename>bluetooth.target.wants/</filename>
+ symlink uniformly with a command like
+ <command>enable</command> of
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ instead of manipulating the udev
+ ruleset.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Path-Based Activation</title>
+
+ <para>Often, runtime of daemons processing
+ spool files or directories (such as a printing
+ system) can be delayed until these file system
+ objects change state, or become
+ non-empty. New-style init systems provide a
+ way to bind service activation to file system
+ changes. systemd implements this scheme via
+ path-based activation configured in
+ <filename>.path</filename> units, as outlined
+ in
+ <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Timer-Based Activation</title>
+
+ <para>Some daemons that implement clean-up
+ jobs that are intended to be executed in
+ regular intervals benefit from timer-based
+ activation. In systemd, this is implemented
+ via <filename>.timer</filename> units, as
+ described in
+ <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>Other Forms of Activation</title>
+
+ <para>Other forms of activation have been
+ suggested and implemented in some
+ systems. However, often there are simpler or
+ better alternatives, or they can be put
+ together of combinations of the schemes
+ above. Example: sometimes it appears useful to
+ start daemons or <filename>.socket</filename>
+ units when a specific IP address is configured
+ on a network interface, because network
+ sockets shall be bound to the
+ address. However, an alternative to implement
+ this is by utilizing the Linux IP_FREEBIND
+ socket option, as accessible via
+ <varname>FreeBind=yes</varname> in systemd
+ socket files (see
+ <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details). This option, when enabled,
+ allows sockets to be bound to a non-local, not
+ configured IP address, and hence allows
+ bindings to a particular IP address before it
+ actually becomes available, making such an
+ explicit dependency to the configured address
+ redundant. Another often suggested trigger for
+ service activation is low system
+ load. However, here too, a more convincing
+ approach might be to make proper use of
+ features of the operating system: in
+ particular, the CPU or IO scheduler of
+ Linux. Instead of scheduling jobs from
+ userspace based on monitoring the OS
+ scheduler, it is advisable to leave the
+ scheduling of processes to the OS scheduler
+ itself. systemd provides fine-grained access
+ to the CPU and IO schedulers. If a process
+ executed by the init system shall not
+ negatively impact the amount of CPU or IO
+ bandwidth available to other processes, it
+ should be configured with
+ <varname>CPUSchedulingPolicy=idle</varname>
+ and/or
+ <varname>IOSchedulingClass=idle</varname>. Optionally,
+ this may be combined with timer-based
+ activation to schedule background jobs during
+ runtime and with minimal impact on the system,
+ and remove it from the boot phase
+ itself.</para>
+ </refsect2>
+
+ </refsect1>
+ <refsect1>
+ <title>Integration with Systemd</title>
+
+ <refsect2>
+ <title>Writing Systemd Unit Files</title>
+
+ <para>When writing systemd unit files, it is
+ recommended to consider the following
+ suggestions:</para>
+
+ <orderedlist>
+ <listitem><para>If possible do not use
+ the <varname>Type=forking</varname>
+ setting in service files. But if you
+ do, make sure to set the PID file path
+ using <varname>PIDFile=</varname>. See
+ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details.</para></listitem>
+
+ <listitem><para>If your daemon
+ registers a D-Bus name on the bus,
+ make sure to use
+ <varname>Type=dbus</varname> in the
+ service file if
+ possible.</para></listitem>
+
+ <listitem><para>Make sure to set a
+ good human-readable description string
+ with
+ <varname>Description=</varname>.</para></listitem>
+
+ <listitem><para>Do not disable
+ <varname>DefaultDependencies=</varname>,
+ unless you really know what you do and
+ your unit is involved in early boot or
+ late system shutdown.</para></listitem>
+
+ <listitem><para>Normally, little if
+ any dependencies should need to
+ be defined explicitly. However, if you
+ do configure explicit dependencies, only refer to
+ unit names listed on
+ <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ or names introduced by your own
+ package to keep the unit file
+ operating
+ system-independent.</para></listitem>
+
+ <listitem><para>Make sure to include
+ an <literal>[Install]</literal>
+ section including installation
+ information for the unit file. See
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ for details. To activate your service
+ on boot make sure to add a
+ <varname>WantedBy=multi-user.target</varname>
+ or
+ <varname>WantedBy=graphical.target</varname>
+ directive. To activate your socket on
+ boot, make sure to add
+ <varname>WantedBy=sockets.target</varname>. Usually
+ you also want to make sure that when
+ your service is installed your socket
+ is installed too, hence add
+ <varname>Also=foo.socket</varname> in
+ your service file
+ <filename>foo.service</filename>, for
+ a hypothetical program
+ <filename>foo</filename>.</para></listitem>
+
+ </orderedlist>
+ </refsect2>
+
+ <refsect2>
+ <title>Installing Systemd Service Files</title>
+
+ <para>At the build installation time
+ (e.g. <command>make install</command> during
+ package build) packages are recommended to
+ install their systemd unit files in the
+ directory returned by <command>pkg-config
+ systemd
+ --variable=systemdsystemunitdir</command> (for
+ system services), resp. <command>pkg-config
+ systemd
+ --variable=systemduserunitdir</command>
+ (for user services). This will make the
+ services available in the system on explicit
+ request but not activate them automatically
+ during boot. Optionally, during package
+ installation (e.g. <command>rpm -i</command>
+ by the administrator) symlinks should be
+ created in the systemd configuration
+ directories via the <command>enable</command>
+ command of the
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ tool, to activate them automatically on
+ boot.</para>
+
+ <para>Packages using
+ <citerefentry><refentrytitle>autoconf</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ are recommended to use a configure script
+ excerpt like the following to determine the
+ unit installation path during source
+ configuration:</para>
+
+ <programlisting>PKG_PROG_PKG_CONFIG
+AC_ARG_WITH([systemdsystemunitdir],
+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
+ [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
+if test "x$with_systemdsystemunitdir" != xno; then
+ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
+fi
+AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])</programlisting>
+
+ <para>This snippet allows automatic
+ installation of the unit files on systemd
+ machines, and optionally allows their
+ installation even on machines lacking
+ systemd. (Modification of this snippet for the
+ user unit directory is left as an exercise for the
+ reader.)</para>
+
+ <para>Additionally, to ensure that
+ <command>make distcheck</command> continues to
+ work, it is recommended to add the following
+ to the top-level <filename>Makefile.am</filename>
+ file in
+ <citerefentry><refentrytitle>automake</refentrytitle><manvolnum>1</manvolnum></citerefentry>-based
+ projects:</para>
+
+ <programlisting>DISTCHECK_CONFIGURE_FLAGS = \
+ --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)</programlisting>
+
+ <para>Finally, unit files should be installed in the system with an automake excerpt like the following:</para>
+
+ <programlisting>if HAVE_SYSTEMD
+systemdsystemunit_DATA = \
+ foobar.socket \
+ foobar.service
+endif</programlisting>
+
+ <para>In the
+ <citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ <filename>.spec</filename> file use a snippet like
+ the following to enable/disable the service
+ during installation/deinstallation. Consult
+ the packaging guidelines of your distribution
+ for details and the equivalent for other
+ package managers:</para>
+
+ <programlisting>%post
+if [ $1 -eq 1 ]; then
+ # On install (not upgrade), enable (but don't start) the
+ # units by default
+ /bin/systemctl enable foobar.service foobar.socket >/dev/null 2>&amp;1 || :
+
+ # Alternatively, just call
+ # /bin/systemctl daemon-reload >/dev/null 2>&amp;1 || :
+ # here, if the daemon should not be enabled by default on
+ # installation
+fi
+
+%preun
+if [ $1 -eq 0 ]; then
+ # On uninstall (not upgrade), disable and stop the units
+ /bin/systemctl --no-reload disable foobar.service foobar.socket >/dev/null 2>&amp;1 || :
+ /bin/systemctl stop foobar.service foobar.socket >/dev/null 2>&amp;1 || :
+fi
+
+%postun
+# Reload init system configuration, to make systemd honour changed
+# or deleted unit files
+/bin/systemctl daemon-reload >/dev/null 2>&amp;1 || :
+if [ $1 -ge 1 ] ; then
+ # On upgrade (not uninstall), optionally, restart the daemon
+ /bin/systemctl try-restart foobar.service >/dev/null 2>&amp;1 || :
+fi</programlisting>
+
+ <para>Depending on whether your service should
+ or should not be started/stopped/restarted
+ during package installation, deinstallation or
+ upgrade, a different set of commands may be
+ specified. See
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ for details.</para>
+
+ <para>To facilitate upgrades from a package
+ version that shipped only SysV init scripts to
+ a package version that ships both a SysV init
+ script and a native systemd service file, use
+ a fragment like the following:</para>
+
+ <programlisting>%triggerun -- foobar &lt; 0.47.11-1
+if /sbin/chkconfig --level 5 foobar ; then
+ /bin/systemctl --no-reload enable foobar.service foobar.socket >/dev/null 2>&amp;1 || :
+fi</programlisting>
+
+ <para>Where 0.47.11-1 is the first package
+ version that includes the native unit
+ file. This fragment will ensure that the first
+ time the unit file is installed it will be
+ enabled if and only if the SysV init script is
+ enabled, thus making sure that the enable
+ status is not changed. Note that
+ <command>chkconfig</command> is a command
+ specific to Fedora which can be used to check
+ whether a SysV init script is enabled. Other
+ operating systems will have to use different
+ commands here.</para>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Porting Existing Daemons</title>
+
+ <para>Since new-style init systems such as systemd are
+ compatible with traditional SysV init systems it is
+ not strictly necessary to port existing daemons to the
+ new style. However doing so offers additional
+ functionality to the daemons as well as simplifying
+ integration into new-style init systems.</para>
+
+ <para>To port an existing SysV compatible daemon the
+ following steps are recommended:</para>
+
+ <orderedlist>
+ <listitem><para>If not already implemented,
+ add an optional command line switch to the
+ daemon to disable daemonization. This is
+ useful not only for using the daemon in
+ new-style init systems, but also to ease
+ debugging.</para></listitem>
+
+ <listitem><para>If the daemon offers
+ interfaces to other software running on the
+ local system via local AF_UNIX sockets,
+ consider implementing socket-based activation
+ (see above). Usually a minimal patch is
+ sufficient to implement this: Extend the
+ socket creation in the daemon code so that
+ <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ is checked for already passed sockets
+ first. If sockets are passed (i.e. when
+ <function>sd_listen_fds()</function> returns a
+ positive value), skip the socket creation step
+ and use the passed sockets. Secondly, ensure
+ that the file-system socket nodes for local
+ AF_UNIX sockets used in the socket-based
+ activation are not removed when the daemon
+ shuts down, if sockets have been
+ passed. Third, if the daemon normally closes
+ all remaining open file descriptors as part of
+ its initialization, the sockets passed from
+ the init system must be spared. Since
+ new-style init systems guarantee that no
+ left-over file descriptors are passed to
+ executed processes, it might be a good choice
+ to simply skip the closing of all remaining
+ open file descriptors if sockets are
+ passed.</para></listitem>
+
+ <listitem><para>Write and install a systemd
+ unit file for the service (and the sockets if
+ socket-based activation is used, as well as a
+ path unit file, if the daemon processes a
+ spool directory), see above for
+ details.</para></listitem>
+
+ <listitem><para>If the daemon exposes
+ interfaces via D-Bus, write and install a
+ D-Bus activation file for the service, see
+ above for details.</para></listitem>
+ </orderedlist>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/halt.xml b/man/halt.xml
new file mode 100644
index 000000000..97a53ba35
--- /dev/null
+++ b/man/halt.xml
@@ -0,0 +1,181 @@
+<?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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="halt">
+
+ <refentryinfo>
+ <title>halt</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>halt</refentrytitle>
+ <manvolnum>8</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>halt</refname>
+ <refname>poweroff</refname>
+ <refname>reboot</refname>
+ <refpurpose>Halt, power-off or reboot the machine</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>halt <arg choice="opt" rep="repeat">OPTIONS</arg></command>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>poweroff <arg choice="opt" rep="repeat">OPTIONS</arg></command>
+ </cmdsynopsis>
+ <cmdsynopsis>
+ <command>reboot <arg choice="opt" rep="repeat">OPTIONS</arg></command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><command>halt</command>,
+ <command>poweroff</command>, <command>reboot</command>
+ may be used to halt, power-off or reboot the
+ machine.</para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following options are understood:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>--help</option></term>
+
+ <listitem><para>Prints a short help
+ text and exits.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--halt</option></term>
+
+ <listitem><para>Halt the machine,
+ regardless which one of the three
+ commands is invoked.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-p</option></term>
+ <term><option>--poweroff</option></term>
+
+ <listitem><para>Power-off the machine,
+ regardless which one of the three
+ commands is invoked.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--reboot</option></term>
+
+ <listitem><para>Reboot the machine,
+ regardless which one of the three
+ commands is invoked.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-f</option></term>
+ <term><option>--force</option></term>
+
+ <listitem><para>Force immediate halt,
+ power-off, reboot. Don't contact the
+ init system.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-w</option></term>
+ <term><option>--wtmp-only</option></term>
+
+ <listitem><para>Only write wtmp
+ shutdown entry, don't actually halt,
+ power-off, reboot.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-d</option></term>
+ <term><option>--no-wtmp</option></term>
+
+ <listitem><para>Don't write wtmp
+ shutdown entry.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-n</option></term>
+ <term><option>--no-sync</option></term>
+
+ <listitem><para>Don't sync hard disks/storage media before
+ halt, power-off,
+ reboot.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--no-wall</option></term>
+
+ <listitem><para>Don't send wall
+ message before
+ halt, power-off, reboot.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Exit status</title>
+
+ <para>On success 0 is returned, a non-zero failure
+ code otherwise.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Notes</title>
+
+ <para>These are legacy commands available for
+ compatibility only.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>shutdown</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>wall</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/hostname.xml b/man/hostname.xml
new file mode 100644
index 000000000..1acda1af5
--- /dev/null
+++ b/man/hostname.xml
@@ -0,0 +1,95 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="hostname">
+ <refentryinfo>
+ <title>/etc/hostname</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>hostname</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>hostname</refname>
+ <refpurpose>Local host name configuration file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/hostname</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>The <filename>/etc/hostname</filename> file
+ configures the name of the local system that is set
+ during boot, with the
+ <citerefentry><refentrytitle>sethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+ system call. It should contain a single
+ newline-terminated host name string. The
+ host name may be a free-form string up to 64 characters
+ in length, however it is recommended that it consists
+ only of 7bit ASCII lower-case characters and no spaces or dots,
+ and limits itself to the format allowed for DNS domain
+ name labels, even though this is not a
+ strict requirement.</para>
+
+ <para>Depending on the operating system other
+ configuration files might be checked for configuration
+ of the host name as well, however only as fallback.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>History</title>
+
+ <para>The simple configuration file format of
+ <filename>/etc/hostname</filename> originates from
+ Debian GNU/Linux.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/journalctl.xml b/man/journalctl.xml
new file mode 100644
index 000000000..f6e46cfbc
--- /dev/null
+++ b/man/journalctl.xml
@@ -0,0 +1,260 @@
+<?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 2012 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="journalctl">
+
+ <refentryinfo>
+ <title>journalctl</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>journalctl</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>journalctl</refname>
+ <refpurpose>Query the systemd journal</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>journalctl <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt">MATCH</arg></command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><command>journalctl</command> may be
+ used to query the contents of the
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ journal.</para>
+
+ <para>If called without parameter will show the full
+ contents of the journal, starting with the oldest
+ entry collected.</para>
+
+ <para>If a match argument is passed the output is
+ filtered accordingly. A match is in the format
+ <literal>FIELD=VALUE</literal>,
+ e.g. <literal>_SYSTEMD_UNIT=httpd.service</literal>.</para>
+
+ <para>Output is interleaved from all accessible
+ journal files, whether they are rotated or currently
+ being written, and regardless whether they belong to the
+ system itself or are accessible user journals.</para>
+
+ <para>All users are granted access to their private
+ per-user journals. However, by default only root and
+ users who are members of the <literal>adm</literal>
+ group get access to the system journal and the
+ journals of other users.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following options are understood:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>--help</option></term>
+ <term><option>-h</option></term>
+
+ <listitem><para>Prints a short help
+ text and exits.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--version</option></term>
+
+ <listitem><para>Prints a short version
+ string and exits.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--no-pager</option></term>
+
+ <listitem><para>Do not pipe output into a
+ pager.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--all</option></term>
+ <term><option>-a</option></term>
+
+ <listitem><para>Show all fields in
+ full, even if they include unprintable
+ characters or are very
+ long.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--follow</option></term>
+ <term><option>-f</option></term>
+
+ <listitem><para>Show only most recent
+ journal entries, and continously print
+ new entries as they are appended to
+ the journal.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--lines=</option></term>
+ <term><option>-n</option></term>
+
+ <listitem><para>Controls the number of
+ journal lines to show, counting from
+ the most recent ones. Takes a positive
+ integer argument. In follow mode
+ defaults to 10, otherwise is unset
+ thus not limiting how many lines are
+ shown.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--no-tail</option></term>
+
+ <listitem><para>Show all stored output
+ lines, even in follow mode. Undoes the
+ effect of
+ <option>--lines=</option>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--output=</option></term>
+ <term><option>-o</option></term>
+
+ <listitem><para>Controls the
+ formatting of the journal entries that are
+ shown. Takes one of
+ <literal>short</literal>,
+ <literal>short-monotonic</literal>,
+ <literal>verbose</literal>,
+ <literal>export</literal>,
+ <literal>json</literal>,
+ <literal>cat</literal>. <literal>short</literal>
+ is the default and generates an output
+ that is mostly identical to the
+ formatting of classic syslog log
+ files, showing one line per journal
+ entry. <literal>short-monotonic</literal>
+ is very similar but shows monotonic
+ timestamps instead of wallclock
+ timestamps. <literal>verbose</literal>
+ shows the full structered entry items
+ with all
+ fiels. <literal>export</literal>
+ serializes the journal into a binary
+ (but mostly text-based) stream
+ suitable for backups and network
+ transfer. <literal>json</literal>
+ formats entries as JSON data
+ structures. <literal>cat</literal>
+ generates a very terse output only
+ showing the actual message of each
+ journal entry with no meta data, not
+ even a timestamp.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--quiet</option></term>
+ <term><option>-q</option></term>
+
+ <listitem><para>Suppresses any warning
+ message regarding inaccessable system
+ journals when run as normal
+ user.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--local</option></term>
+ <term><option>-l</option></term>
+
+ <listitem><para>Show only locally
+ generated messages.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--new-id128</option></term>
+
+ <listitem><para>Instead of showing
+ journal contents generate a new 128
+ bit ID suitable for identifying
+ messages. This is intended for usage
+ by developers who need a new
+ identifier for a new message they
+ introduce and want to make
+ recognizable. Will print the new ID in
+ three different formats which can be
+ copied into source code or
+ similar.</para></listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Exit status</title>
+
+ <para>On success 0 is returned, a non-zero failure
+ code otherwise.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Environment</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><varname>$SYSTEMD_PAGER</varname></term>
+ <listitem><para>Pager to use when
+ <option>--no-pager</option> is not given;
+ overrides <varname>$PAGER</varname>. Setting
+ this to an empty string or the value
+ <literal>cat</literal> is equivalent to passing
+ <option>--no-pager</option>.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/journald.conf.xml b/man/journald.conf.xml
new file mode 100644
index 000000000..a9b0f66de
--- /dev/null
+++ b/man/journald.conf.xml
@@ -0,0 +1,254 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="journald.conf">
+ <refentryinfo>
+ <title>journald.conf</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>journald.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>journald.conf</refname>
+ <refpurpose>Journal service configuration file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>journald.conf</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>This files configures various parameters of the systemd journal service.</para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>All options are configured in the
+ <literal>[Journal]</literal> section:</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><varname>Compress=</varname></term>
+
+ <listitem><para>Takes a boolean
+ value. If enabled (the default) data
+ objects that shall be stored in the
+ journal and are larger than a certain
+ threshold are compressed with the XZ
+ compression algorithm before they are
+ written to the file
+ system.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>RateLimitInterval=</varname></term>
+ <term><varname>RateLimitBurst=</varname></term>
+
+ <listitem><para>Configures the rate
+ limiting that is applied to all
+ messages generated on the system. If
+ in the time interval defined by
+ <varname>RateLimitInterval=</varname>
+ more messages than specified in
+ <varname>RateLimitBurst=</varname> are
+ logged by a service all further
+ messages within the interval are
+ dropped, until the interval is over. A
+ message about the number of dropped
+ messages is generated. This rate
+ limiting is applied per-service, so
+ that two services which log do not
+ interfere with each other's
+ limit. Defaults to 100 messages in
+ 10s. The time specification for
+ <varname>RateLimitInterval=</varname>
+ may be specified in the following
+ units: <literal>s</literal>,
+ <literal>min</literal>,
+ <literal>h</literal>,
+ <literal>ms</literal>,
+ <literal>us</literal>. To turn off any
+ kind of rate limiting, set either
+ value to 0.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>SystemMaxUse=</varname></term>
+ <term><varname>SystemKeepFree=</varname></term>
+ <term><varname>SystemMaxFileSize=</varname></term>
+ <term><varname>SystemMinFileSize=</varname></term>
+ <term><varname>RuntimeMaxUse=</varname></term>
+ <term><varname>RuntimeKeepFree=</varname></term>
+ <term><varname>RuntimeMaxFileSize=</varname></term>
+ <term><varname>RuntimeMinFileSize=</varname></term>
+
+ <listitem><para>Enforce size limits on
+ the journal files stored. The options
+ prefixed with
+ <literal>System</literal> apply to the
+ journal files when stored on a
+ persistant file system, more
+ specifically
+ <filename>/var/log/journal</filename>. The
+ options prefixed with
+ <literal>Runtime</literal> apply to
+ the journal files when stored on a
+ volatile in-memory file system, more
+ specifically
+ <filename>/run/log/journal</filename>. The
+ former is used only when
+ <filename>/var</filename> is mounted,
+ writable and the directory
+ <filename>/var/log/journal</filename>
+ exists. Otherwise only the latter
+ applies. Note that this means that
+ during early boot and if the
+ administrator disabled persistant
+ logging only the latter options apply,
+ while the former apply if persistant
+ logging is enabled and the system is
+ fully booted
+ up. <varname>SystemMaxUse=</varname>
+ and <varname>RuntimeMaxUse=</varname>
+ control how much disk space the
+ journal may use up at
+ maximum. Defaults to 10% of the size
+ of the respective file
+ system. <varname>SystemKeepFree=</varname>
+ and
+ <varname>RuntimeKeepFree=</varname>
+ control how much disk space the
+ journal shall always leave free for
+ other uses if less than the disk space
+ configured in
+ <varname>SystemMaxUse=</varname> and
+ <varname>RuntimeMaxUse=</varname> is
+ available. Defaults to 5% of the size
+ of the respective file
+ system. <varname>SystemMaxFileSize=</varname>
+ and
+ <varname>RuntimeMaxFileSize=</varname>
+ control how large individual journal
+ files may grow at maximum. This
+ influences the granularity in which
+ disk space is made available through
+ rotation, i.e. deletion of historic
+ data. Defaults to one eigth of the
+ values configured with
+ <varname>SystemMaxUse=</varname> and
+ <varname>RuntimeMaxUse=</varname>, so
+ that usually seven rotated journal
+ files are kept as
+ history. <varname>SystemMinFileSize=</varname>
+ and
+ <varname>RuntimeMinFileSize=</varname>
+ control how large individual journal
+ files grow at minimum. Defaults to
+ 64K. Specify values in bytes or use
+ K, M, G, T, P, E as units for the
+ specified sizes. Note that size limits
+ are enforced synchronously to journal
+ files as they are extended, and need
+ no explicit rotation step triggered by
+ time.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ForwardToSyslog=</varname></term>
+ <term><varname>ForwardToKMsg=</varname></term>
+ <term><varname>ForwardToConsole=</varname></term>
+
+ <listitem><para>Control whether log
+ messages received by the journal
+ daemon shall be forwarded to a
+ traditional syslog daemon, to the
+ kernel log buffer (kmsg), or to the
+ system console. These options take
+ boolean arguments. If forwarding to
+ syslog is enabled but no syslog daemon
+ is running the respective option has
+ no effect. By default only forwarding
+ to syslog is enabled. These settings
+ may be overriden at boot time with the
+ kernel command line options
+ <literal>systemd_journald.forward_to_syslog=</literal>,
+ <literal>systemd_journald.forward_to_kmsg=</literal>
+ and
+ <literal>systemd_journald.forward_to_console=</literal>. If
+ forwarding to the kernel log buffer and
+ <varname>ImportKernel=</varname> is
+ enabled at the same time care is taken
+ to avoid logging loops. It is safe to
+ use these options in combination.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ImportKernel=</varname></term>
+
+ <listitem><para>Controls whether
+ kernel log messages shall be stored in
+ the journal. Takes a boolean argument
+ and defaults to enabled. Note that
+ currently only one userspace service
+ can read kernel messages at a time,
+ which means that kernel log message
+ reading might get corrupted if it
+ is enabled in more than one service,
+ for example in both the journal and a
+ traditional syslog service.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/locale.conf.xml b/man/locale.conf.xml
new file mode 100644
index 000000000..37239974b
--- /dev/null
+++ b/man/locale.conf.xml
@@ -0,0 +1,146 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="locale.conf">
+ <refentryinfo>
+ <title>locale.conf</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>locale.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>locale.conf</refname>
+ <refpurpose>configuration file for locale settings</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/locale.conf</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>The <filename>/etc/locale.conf</filename> file
+ configures system-wide locale settings.</para>
+
+ <para>The basic file format of
+ <filename>locale.conf</filename> is a
+ newline-separated list of environment-like
+ shell-compatible variable assignments. It is possible
+ to source the configuration from shell scripts,
+ however, beyond mere variable assignments no shell
+ features are supported, allowing applications to read
+ the file without implementing a shell compatible
+ execution engine.</para>
+
+ <para>Note that the kernel command line options
+ <varname>locale.LANG=</varname>,
+ <varname>locale.LANGUAGE=</varname>,
+ <varname>locale.LC_CTYPE=</varname>,
+ <varname>locale.LC_NUMERIC=</varname>,
+ <varname>locale.LC_TIME=</varname>,
+ <varname>locale.LC_COLLATE=</varname>,
+ <varname>locale.LC_MONETARY=</varname>,
+ <varname>locale.LC_MESSAGES=</varname>,
+ <varname>locale.LC_PAPER=</varname>,
+ <varname>locale.LC_NAME=</varname>,
+ <varname>locale.LC_ADDRESS=</varname>,
+ <varname>locale.LC_TELEPHONE=</varname>,
+ <varname>locale.LC_MEASUREMENT=</varname>,
+ <varname>locale.LC_IDENTIFICATION=</varname> may be
+ used to override the locale settings at boot.</para>
+
+ <para>The locale settings configured in
+ <filename>/etc/locale.conf</filename> are system-wide
+ and are inherited by every service or user, unless
+ overridden or unset by individual programs or
+ individual users.</para>
+
+ <para>Depending on the operating system other
+ configuration files might be checked for locale
+ configuration as well, however only as
+ fallback.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following locale settings may be set using
+ <filename>/etc/locale.conf</filename>:
+ <varname>LANG=</varname>,
+ <varname>LANGUAGE=</varname>,
+ <varname>LC_CTYPE=</varname>,
+ <varname>LC_NUMERIC=</varname>,
+ <varname>LC_TIME=</varname>,
+ <varname>LC_COLLATE=</varname>,
+ <varname>LC_MONETARY=</varname>,
+ <varname>LC_MESSAGES=</varname>,
+ <varname>LC_PAPER=</varname>,
+ <varname>LC_NAME=</varname>,
+ <varname>LC_ADDRESS=</varname>,
+ <varname>LC_TELEPHONE=</varname>,
+ <varname>LC_MEASUREMENT=</varname>,
+ <varname>LC_IDENTIFICATION=</varname>. Note that
+ <varname>LC_ALL</varname> may not be be configured in
+ this file. For details about the meaning and semantics
+ of these settings, refer to
+ <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Example</title>
+
+ <example>
+ <title>German locale with English messages</title>
+
+ <para><filename>/etc/locale.conf:</filename></para>
+
+ <programlisting>LANG=de_DE.UTF-8
+LC_MESSAGES=C</programlisting>
+ </example>
+
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/loginctl.xml b/man/loginctl.xml
new file mode 100644
index 000000000..af1d631cf
--- /dev/null
+++ b/man/loginctl.xml
@@ -0,0 +1,457 @@
+<?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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="loginctl">
+
+ <refentryinfo>
+ <title>loginctl</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>loginctl</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>loginctl</refname>
+ <refpurpose>Control the systemd login manager</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>loginctl <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="req">COMMAND</arg> <arg choice="opt" rep="repeat">NAME</arg></command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><command>loginctl</command> may be used to
+ introspect and control the state of the
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ login manager.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following options are understood:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>--help</option></term>
+ <term><option>-h</option></term>
+
+ <listitem><para>Prints a short help
+ text and exits.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--version</option></term>
+
+ <listitem><para>Prints a short version
+ string and exits.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--property=</option></term>
+ <term><option>-p</option></term>
+
+ <listitem><para>When showing
+ session/user/ properties, limit
+ display to certain properties as
+ specified as argument. If not
+ specified all set properties are
+ shown. The argument should be a
+ property name, such as
+ <literal>Sessions</literal>. If
+ specified more than once all
+ properties with the specified names
+ are shown.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--all</option></term>
+ <term><option>-a</option></term>
+
+ <listitem><para>When showing
+ unit/job/manager properties, show all
+ properties regardless whether they are
+ set or not.</para></listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><option>--no-pager</option></term>
+
+ <listitem><para>Do not pipe output into a
+ pager.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--kill-who=</option></term>
+
+ <listitem><para>When used with
+ <command>kill-session</command>,
+ choose which processes to kill. Must
+ be one of <option>leader</option>, or
+ <option>all</option> to select whether
+ to kill only the leader process of the
+ session or all processes of the
+ session. If omitted defaults to
+ <option>all</option>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--signal=</option></term>
+ <term><option>-s</option></term>
+
+ <listitem><para>When used with
+ <command>kill-session</command> or
+ <command>kill-user</command>, choose
+ which signal to send to selected
+ processes. Must be one of the well
+ known signal specifiers such as
+ SIGTERM, SIGINT or SIGSTOP. If omitted
+ defaults to
+ <option>SIGTERM</option>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-H</option></term>
+ <term><option>--host</option></term>
+
+ <listitem><para>Execute operation
+ remotely. Specify a hostname, or
+ username and hostname separated by @,
+ to connect to. This will use SSH to
+ talk to the remote login manager
+ instance.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-P</option></term>
+ <term><option>--privileged</option></term>
+
+ <listitem><para>Acquire privileges via
+ PolicyKit before executing the
+ operation.</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>The following commands are understood:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><command>list-sessions</command></term>
+
+ <listitem><para>List current sessions.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>session-status [ID...]</command></term>
+
+ <listitem><para>Show terse runtime
+ status information about one or more
+ sessions. This function is intended to
+ generate human-readable output. If you
+ are looking for computer-parsable
+ output, use
+ <command>show-session</command>
+ instead.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>show-session [ID...]</command></term>
+
+ <listitem><para>Show properties of one
+ or more sessions or the manager
+ itself. If no argument is specified
+ properties of the manager will be
+ shown. If a session ID is specified
+ properties of the session is shown. By
+ default, empty properties are
+ suppressed. Use <option>--all</option>
+ to show those too. To select specific
+ properties to show use
+ <option>--property=</option>. This
+ command is intended to be used
+ whenever computer-parsable output is
+ required. Use
+ <command>session-status</command> if
+ you are looking for formatted
+ human-readable
+ output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>activate [ID...]</command></term>
+
+ <listitem><para>Activate one or more
+ sessions. This brings one or more
+ sessions into the foreground, if
+ another session is currently in the
+ foreground on the respective
+ seat.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>lock-session [ID...]</command></term>
+ <term><command>unlock-session [ID...]</command></term>
+
+ <listitem><para>Activates/deactivates
+ the screen lock on one or more
+ sessions, if the session supports it.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>terminate-session [ID...]</command></term>
+
+ <listitem><para>Terminates a
+ session. This kills all processes of
+ the session and deallocates all
+ resources attached to the
+ session.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>kill-session [ID...]</command></term>
+
+ <listitem><para>Send a signal to one
+ or more processes of the session. Use
+ <option>--kill-who=</option> to select
+ which process to kill. Use
+ <option>--signal=</option> to select
+ the signal to send.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>list-users</command></term>
+
+ <listitem><para>List currently logged
+ in users.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>user-status [USER...]</command></term>
+
+ <listitem><para>Show terse runtime
+ status information about one or more
+ logged in users. This function is
+ intended to generate human-readable
+ output. If you are looking for
+ computer-parsable output, use
+ <command>show-user</command>
+ instead. Users may be specified by
+ their usernames or numeric user
+ IDs.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>show-user [USER...]</command></term>
+
+ <listitem><para>Show properties of one
+ or more users or the manager
+ itself. If no argument is specified
+ properties of the manager will be
+ shown. If a user is specified
+ properties of the user is shown. By
+ default, empty properties are
+ suppressed. Use <option>--all</option>
+ to show those too. To select specific
+ properties to show use
+ <option>--property=</option>. This
+ command is intended to be used
+ whenever computer-parsable output is
+ required. Use
+ <command>user-status</command> if
+ you are looking for formatted
+ human-readable
+ output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>enable-linger [USER...]</command></term>
+ <term><command>disable-linger [USER...]</command></term>
+
+ <listitem><para>Enable/disable user
+ lingering for one or more users. If
+ enabled for a specific user a user
+ manager is spawned for him/her at
+ boot, and kept around after
+ logouts. This allows users who aren't
+ logged in to run long-running
+ services.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>terminate-user [USER...]</command></term>
+
+ <listitem><para>Terminates all
+ sessions of a user. This kills all
+ processes of all sessions of the user
+ and deallocates all runtime resources
+ attached to the
+ user.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>kill-user [USER...]</command></term>
+
+ <listitem><para>Send a signal to all
+ processes of a user. Use
+ <option>--signal=</option> to select
+ the signal to send.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>list-seats</command></term>
+
+ <listitem><para>List currently
+ available seats on the local
+ system.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>seat-status [NAME...]</command></term>
+
+ <listitem><para>Show terse runtime
+ status information about one or more
+ seats. This function is
+ intended to generate human-readable
+ output. If you are looking for
+ computer-parsable output, use
+ <command>show-seat</command>
+ instead.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>show-seat [NAME...]</command></term>
+
+ <listitem><para>Show properties of one
+ or more seats or the manager
+ itself. If no argument is specified
+ properties of the manager will be
+ shown. If a seat is specified
+ properties of the seat are shown. By
+ default, empty properties are
+ suppressed. Use <option>--all</option>
+ to show those too. To select specific
+ properties to show use
+ <option>--property=</option>. This
+ command is intended to be used
+ whenever computer-parsable output is
+ required. Use
+ <command>seat-status</command> if you
+ are looking for formatted
+ human-readable
+ output.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>attach [NAME] [DEVICE...]</command></term>
+
+ <listitem><para>Attach one or more
+ devices to a seat. The devices should
+ be specified via device paths in the
+ <filename>/sys</filename> file
+ system. To create a new seat attach at
+ least one graphics card to a
+ previously unused seat names. seat
+ names may consist only of a-z, A-Z,
+ 0-9, "-" and "_" and must be prefixed
+ with "seat". To drop assignment of a
+ device to a specific seat just
+ reassign it to a different seat, or
+ use
+ <command>flush-devices</command>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>flush-devices</command></term>
+
+ <listitem><para>Removes all device
+ assignments previously created with
+ <command>attach</command>. After this
+ call only automatically generated
+ seats will remain and all seat
+ hardware is assigned to
+ them.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>terminate-seat [NAME...]</command></term>
+
+ <listitem><para>Terminates all
+ sessions on a seat. This kills all
+ processes of all sessions on a seat and
+ deallocates all runtime resources
+ attached to them.</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Exit status</title>
+
+ <para>On success 0 is returned, a non-zero failure
+ code otherwise.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Environment</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><varname>$SYSTEMD_PAGER</varname></term>
+ <listitem><para>Pager to use when
+ <option>--no-pager</option> is not given;
+ overrides <varname>$PAGER</varname>. Setting
+ this to an empty string or the value
+ <literal>cat</literal> is equivalent to passing
+ <option>--no-pager</option>.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/logind.conf.xml b/man/logind.conf.xml
new file mode 100644
index 000000000..950f81fa9
--- /dev/null
+++ b/man/logind.conf.xml
@@ -0,0 +1,175 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="logind.conf">
+ <refentryinfo>
+ <title>logind.conf</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>logind.conf</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>logind.conf</refname>
+ <refpurpose>Login manager configuration file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>logind.conf</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>This files configures various parameters of the systemd login manager.</para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>All options are configured in the
+ <literal>[Login]</literal> section:</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><varname>NAutoVTs=</varname></term>
+
+ <listitem><para>Takes a positive
+ integer. How many virtual terminals to
+ allocate by default and when switched
+ to autospawn <literal>autovt</literal>
+ services on (if they are otherwise
+ unused). These services are
+ instantiated from a template of
+ <filename>autovt@.service</filename>
+ with the virtual terminal TTY name,
+ e.g. <filename>autovt@tty4.service</filename>. By
+ default
+ <filename>autovt@.service</filename>
+ is linked to
+ <filename>getty@.service</filename>,
+ i.e. login prompts are started
+ dynamically as the user switches to
+ unused virtual terminals, and this
+ parameter hence controls how many
+ gettys are available on the virtual
+ terminals. Defaults to 6. When set to
+ 0, automatic spawning of
+ <literal>autovt</literal> services is
+ disabled.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>KillUserProcesses=</varname></term>
+
+ <listitem><para>Takes a boolean
+ argument. Configures whether the
+ processes of a user should be killed
+ when she or he completely logs out (i.e. after
+ her/his last session ended). Defaults to
+ <literal>no</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>KillOnlyUsers=</varname></term>
+ <term><varname>KillExcludeUsers=</varname></term>
+
+ <listitem><para>These settings take
+ space separated lists of user names
+ that influence the effect of
+ <varname>KillUserProcesses=</varname>. If
+ not empty only processes of users
+ listed in
+ <varname>KillOnlyUsers</varname> will
+ be killed when they log out
+ entirely. Processes of users listed in
+ <varname>KillExcludeUsers=</varname>
+ are excluded from being
+ killed. <varname>KillExcludeUsers=</varname>
+ defaults to <literal>root</literal>
+ and takes precedence over
+ <varname>KillOnlyUsers=</varname>
+ which defaults to the empty list.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>Controllers=</varname></term>
+ <term><varname>ResetControllers=</varname></term>
+
+ <listitem><para>These settings control
+ the default control group hierarchies
+ users logging are added to. When
+ logging in users will get private
+ control groups in all hierarchies
+ listed in
+ <varname>Controllers=</varname> and be
+ reset to the root control group in all
+ hierarchies listed in
+ <varname>ResetControllers=</varname>. <varname>Controllers=</varname>
+ defaults to the empty list,
+ <varname>ResetControllers=</varname>
+ defaults to
+ <literal>cpu</literal>.</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Note that setting
+ <varname>KillUserProcesses=1</varname> will break tools
+ like
+ <citerefentry><refentrytitle>screen</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
+
+ <para>Note that <varname>KillUserProcesses=1</varname>
+ is a weaker version of
+ <varname>kill-session-processes=1</varname> which may
+ be configured per-service for
+ <citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>. The
+ latter kills processes of a session as soon as it
+ ends, the former kills processes as soon as the last
+ session of the user ends.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/machine-id.xml b/man/machine-id.xml
new file mode 100644
index 000000000..97c622c6f
--- /dev/null
+++ b/man/machine-id.xml
@@ -0,0 +1,143 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="machine-id">
+ <refentryinfo>
+ <title>/etc/machine-id</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>machine-id</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>machine-id</refname>
+ <refpurpose>local machine ID configuration file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/machine-id</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>The <filename>/etc/machine-id</filename> file
+ contains the unique machine id of the local system
+ that is set during installation. The machine ID is a
+ single newline-terminated, hexadecimal, lowercase 32
+ character machine ID string. (When decoded from
+ hexadecimal this corresponds with a 16 byte/128 bit
+ string.)</para>
+
+ <para>The machine ID is usually generated from a
+ random source during system installation and stays
+ constant for all subsequent boots. Optionally, for
+ stateless systems it is generated during runtime at
+ boot if it is found to be empty.</para>
+
+ <para>The machine ID does not change based on user
+ configuration, or when hardware is replaced.</para>
+
+ <para>This machine ID adheres to the same format and
+ logic as the D-Bus machine ID.</para>
+
+ <para>Programs may use this ID to identify the host
+ with a globally unique ID in the network, that does
+ not change even if the local network configuration
+ changes. Due to this and its greater length it is
+ a more useful replacement for the
+ <citerefentry><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ call POSIX specifies.</para>
+
+ <para>The
+ <citerefentry><refentrytitle>systemd-machine-id-setup</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ tool may be used by installer tools to initialize the
+ machine ID at install time.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Relation to OSF UUIDs</title>
+
+ <para>Note that the machine ID historically is not an
+ OSF UUID as defined by <ulink
+ url="http://tools.ietf.org/html/rfc4122">RFC
+ 4122</ulink>, nor a Microsoft GUID. Starting with
+ systemd v30 newly generated machine IDs however do
+ qualify as v4 UUIDs.</para>
+
+ <para>In order to maintain compatibility with existing
+ installations, an application requiring a UUID should
+ decode the machine ID, and then apply the following
+ operations to turn it into a valid OSF v4 UUID. With
+ <literal>id</literal> being an unsigned character
+ array:</para>
+
+ <programlisting>/* Set UUID version to 4 --- truly random generation */
+id[6] = (id[6] &amp; 0x0F) | 0x40;
+/* Set the UUID variant to DCE */
+id[8] = (id[8] &amp; 0x3F) | 0x80;</programlisting>
+
+ <para>(This code is inspired by
+ <literal>generate_random_uuid()</literal> of
+ <filename>drivers/char/random.c</filename> from the
+ kernel sources.)</para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>History</title>
+
+ <para>The simple configuration file format of
+ <filename>/etc/machine-id</filename> originates in the
+ <filename>/var/lib/dbus/machine-id</filename> file
+ introduced by D-Bus. In fact this latter file might be a
+ symlink to
+ <varname>/etc/machine-id</varname>.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd-machine-id-setup</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/machine-info.xml b/man/machine-info.xml
new file mode 100644
index 000000000..240da25a6
--- /dev/null
+++ b/man/machine-info.xml
@@ -0,0 +1,147 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="machine-info">
+ <refentryinfo>
+ <title>machine-info</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>machine-info</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>machine-info</refname>
+ <refpurpose>Local machine information file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/machine-info</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>The <filename>/etc/machine-info</filename> file
+ contains machine meta data.</para>
+
+ <para>The basic file format of
+ <filename>machine-info</filename> is a
+ newline-separated list of environment-like
+ shell-compatible variable assignments. It is possible
+ to source the configuration from shell scripts,
+ however, beyond mere variable assignments no shell
+ features are supported, allowing applications to read
+ the file without implementing a shell compatible
+ execution engine.</para>
+
+ <para><filename>/etc/machine-info</filename> contains
+ meta data about the machine that is set by the user or
+ administrator.</para>
+
+ <para>Depending on the operating system other
+ configuration files might be checked for machine
+ information as well, however only as fallback.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following machine meta data parameters may
+ be set using
+ <filename>/etc/machine-info</filename>:</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><varname>PRETTY_HOSTNAME=</varname></term>
+
+ <listitem><para>A pretty
+ human-readable UTF8 machine identifier
+ string. This should contain a name
+ like <literal>Lennart's
+ Laptop</literal> which is useful to
+ present to the user and does not
+ suffer by the syntax limitations of
+ internet domain names. If possible the
+ internet host name as configured in
+ <filename>/etc/hostname</filename>
+ should be kept similar to this
+ one. Example: if this value is
+ <literal>Lennart's Computer</literal>
+ an Internet host name of
+ <literal>lennarts-computer</literal>
+ might be a good choice. If this
+ parameter is not set an application
+ should fall back to the Internet host
+ name for presentation
+ purposes.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ICON_NAME=</varname></term>
+
+ <listitem><para>An icon identifying
+ this machine according to the <ulink
+ url="http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html">XDG
+ Icon Naming Specification</ulink>. If
+ this parameter is not set an
+ application should fall back to
+ <literal>computer</literal> or a
+ similar icon name.</para></listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Example</title>
+
+ <programlisting>PRETTY_HOSTNAME="Lennart's Computer"
+ICON_NAME=computer-laptop</programlisting>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml
new file mode 100644
index 000000000..e2f7d5c68
--- /dev/null
+++ b/man/modules-load.d.xml
@@ -0,0 +1,112 @@
+<?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 2011 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+<refentry id="modules-load.d">
+
+ <refentryinfo>
+ <title>modules-load.d</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>modules-load.d</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>modules-load.d</refname>
+ <refpurpose>Configure kernel modules to load at boot</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/modules-load.d/*.conf</filename></para>
+ <para><filename>/run/modules-load.d/*.conf</filename></para>
+ <para><filename>/usr/lib/modules-load.d/*.conf</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><command>systemd</command> uses
+ files from the above directories to configure
+ kernel modules to load during boot in a static list.
+ Each configuration file is named in the style of
+ <filename>/etc/modules-load.d/&lt;program&gt;.conf</filename>. Note
+ that it is usually a better idea to use the automatic
+ module loading by PCI ID, by DMI ID or similar
+ triggers configured in the kernel modules themselves
+ instead of relying on static configuration like
+ this.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Configuration Format</title>
+
+ <para>The configuration files should simply contain a
+ list of kernel module names to load, separated by
+ newlines. Empty lines and lines whose first
+ non-whitespace character is # or ; are ignored.</para>
+
+ <para>Each configuration file is named in the style of
+ <filename>&lt;program&gt;.conf</filename>.
+ Files in <filename>/etc/</filename> overwrite
+ files with the same name in <filename>/usr/lib/</filename>.
+ Files in <filename>/run</filename> overwrite files with
+ the same name in <filename>/etc/</filename> and
+ <filename>/usr/lib/</filename>. Packages should install their
+ configuration files in <filename>/usr/lib/</filename>, files
+ in <filename>/etc/</filename> are reserved for the local
+ administration, which possibly decides to overwrite the
+ configurations installed from packages. All files are sorted
+ by filename in alphabetical order, regardless in which of the
+ directories they reside, to ensure that a specific
+ configuration file takes precedence over another file with
+ an alphabetically later name.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Example</title>
+ <example>
+ <title>/etc/modules-load.d/virtio-net.conf example:</title>
+
+ <programlisting># Load virtio-net.ko at boot
+virtio-net</programlisting>
+ </example>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/man/os-release.xml b/man/os-release.xml
new file mode 100644
index 000000000..ff8fdf16b
--- /dev/null
+++ b/man/os-release.xml
@@ -0,0 +1,350 @@
+<?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
+<!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 General Public License as published by
+ the Free Software Foundation; either version 2 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<refentry id="os-release">
+ <refentryinfo>
+ <title>os-release</title>
+ <productname>systemd</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>os-release</refentrytitle>
+ <manvolnum>5</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>os-release</refname>
+ <refpurpose>Operating system identification</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <para><filename>/etc/os-release</filename></para>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>The <filename>/etc/os-release</filename> file
+ contains operating system identification data.</para>
+
+ <para>The basic file format of
+ <filename>os-release</filename> is a newline-separated
+ list of environment-like shell-compatible variable
+ assignments. It is possible to source the
+ configuration from shell scripts, however, beyond mere
+ variable assignments no shell features are supported
+ (this means variable expansion is explicitly not
+ supported), allowing applications to read the file
+ without implementing a shell compatible execution
+ engine. Variable assignment values should be enclosed
+ in double or single quotes if they include spaces,
+ semicolons or other special characters outside of A-Z,
+ a-z, 0-9. All strings should be in UTF-8 format, and
+ non-printable characters should not be used. If double
+ or single quotes or backslashes are to be used within
+ variable assignments they should be escaped with
+ backslashes, following shell style. It is not
+ supported to concatenate multiple individually quoted
+ strings. Lines beginning with "#" shall be ignored as
+ comments.</para>
+
+ <para><filename>/etc/os-release</filename> contains
+ data that is defined by the operating system vendor
+ and should not be changed by the administrator.</para>
+
+ <para>As this file only encodes names and identifiers
+ it should not be localized.</para>
+
+ <para>The file <filename>/etc/os-release</filename> might
+ be a symlink to another file, but it is important that
+ the file is available from earliest boot on, and hence
+ must be located on the root file system.</para>
+
+ <para>For a longer rationale for
+ <filename>/etc/os-release</filename> please refer to
+ the <ulink
+ url="http://0pointer.de/blog/projects/os-release">Announcement of <filename>/etc/os-release</filename></ulink>.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Options</title>
+
+ <para>The following OS identifications parameters may be set using
+ <filename>/etc/os-release</filename>:</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><varname>NAME=</varname></term>
+
+ <listitem><para>A string identifying
+ the operating system, without a
+ version component, and suitable for
+ presentation to the user. If not set
+ defaults to
+ <literal>NAME=Linux</literal>. Example:
+ <literal>NAME=Fedora</literal> or
+ <literal>NAME="Debian
+ GNU/Linux"</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>VERSION=</varname></term>
+
+ <listitem><para>A string identifying
+ the operating system version,
+ excluding any OS name information,
+ possibly including a release code
+ name, and suitable for presentation to
+ the user. This field is
+ optional. Example:
+ <literal>VERSION=17</literal> or
+ <literal>VERSION="17 (Beefy
+ Miracle)"</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ID=</varname></term>
+
+ <listitem><para>A lower-case string
+ (no spaces or other characters outside
+ of 0-9, a-z, ".", "_" and "-")
+ identifying the operating system,
+ excluding any version information and
+ suitable for processing by scripts or
+ usage in generated file names. If not
+ set defaults to
+ <literal>ID=linux</literal>. Example:
+ <literal>ID=fedora</literal> or
+ <literal>ID=debian</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ID_LIKE=</varname></term>
+
+ <listitem><para>A space-separated list
+ of operating system identifiers in the
+ same syntax as the
+ <varname>ID=</varname> setting. Should
+ list identifiers of operating systems
+ that are closely related to the local
+ operating system in regards to
+ packaging and programming interfaces,
+ for example listing one or more
+ OS identifiers the local
+ OS is a derivative from. An
+ OS should generally only list other OS
+ identifiers it itself is a derivative
+ from, and not any OSes that
+ are derived from it, but symmetric
+ relationships are possible. Build
+ scripts and similar should check this
+ variable if they need to identify the
+ local operating system and the value
+ of <varname>ID=</varname> is not
+ recognized. Operating systems should
+ be listed in order of how closely the
+ local operating system relates to the
+ listed ones, starting with the
+ closest. This field is
+ optional. Example: for an operating
+ system with
+ <literal>ID=centos</literal> an
+ assignment of <literal>ID_LIKE="rhel
+ fedora"</literal> would be
+ appropriate. For an operating system
+ with <literal>ID=ubuntu</literal> an
+ assignment of
+ <literal>ID_LIKE=debian</literal> is
+ appropriate.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>VERSION_ID=</varname></term>
+
+ <listitem><para>A lower-case string
+ (mostly numeric, no spaces or other
+ characters outside of 0-9, a-z, ".",
+ "_" and "-") identifying the operating
+ system version, excluding any OS name
+ information or release code name, and
+ suitable for processing by scripts or
+ usage in generated file names. This
+ field is optional. Example:
+ <literal>VERSION_ID=17</literal> or
+ <literal>VERSION_ID=11.04</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>PRETTY_NAME=</varname></term>
+
+ <listitem><para>A pretty operating
+ system name in a format suitable for
+ presentation to the user. May or may
+ not contain a release code name or OS
+ version of some kind, as suitable. If
+ not set defaults to
+ <literal>PRETTY_NAME="Linux"</literal>. Example:
+ <literal>PRETTY_NAME="Fedora 17 (Beefy
+ Miracle)"</literal>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>ANSI_COLOR=</varname></term>
+
+ <listitem><para>A suggested
+ presentation color when showing the
+ OS name on the console. This
+ should be specified as string suitable
+ for inclusion in the ESC [ m
+ ANSI/ECMA-48 escape code for setting
+ graphical rendition. This field is
+ optional. Example:
+ <literal>ANSI_COLOR="0;31"</literal>
+ for red, or
+ <literal>ANSI_COLOR="1;34"</literal>
+ for light blue.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>CPE_NAME=</varname></term>
+
+ <listitem><para>A CPE name for the
+ operating system, following the <ulink
+ url="http://cpe.mitre.org/specification/">Common
+ Platform Enumeration
+ Specification</ulink> as proposed by
+ the MITRE Corporation. This field
+ is optional. Example:
+ <literal>CPE_NAME="cpe:/o:fedoraproject:fedora:17"</literal>
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>HOME_URL=</varname></term>
+ <term><varname