1 # TODO: - move %_libexecdir/tmpfiles.d/* to /etc/tmpfiles.d?
2 # - shouldn't ../bin/systemctl symlinks be absolute? -no they shouldn't (think browsing mounted as chroot and seeing all blink due invalid link targets when doing ls)
3 # - separate init subpackage (with symlink), one can switch to
4 # systemd using init=/bin/systemd with other one installed
5 # - verify %_sysconfdir usage vs literal '/etc'
6 # - %post systemd-sysv-convert
9 %bcond_without audit # without audit support
10 %bcond_without cryptsetup # without cryptsetup support
11 %bcond_without gtk # build gtk tools
12 %bcond_without pam # PAM authentication support
13 %bcond_without selinux # without SELinux support
14 %bcond_without tcpd # libwrap (tcp_wrappers) support
16 Summary: A System and Service Manager
17 Summary(pl.UTF-8): systemd - zarządca systemu i usług dla Linuksa
23 Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.bz2
24 # Source0-md5: 1435f23be79c8c38d1121c6b150510f3
25 Source1: %{name}-sysv-convert
26 Source2: systemd_booted.c
27 Patch0: target-pld.patch
28 Patch1: config-pld.patch
29 Patch2: shut-sysv-up.patch
30 URL: http://www.freedesktop.org/wiki/Software/systemd
31 %{?with_audit:BuildRequires: audit-libs-devel}
32 BuildRequires: autoconf >= 2.63
33 BuildRequires: automake >= 1:1.11
34 %{?with_cryptsetup:BuildRequires: cryptsetup-luks-devel}
35 BuildRequires: dbus-devel >= 1.3.2
36 BuildRequires: docbook-style-xsl
38 BuildRequires: glib2-devel >= 1:2.26.1
39 BuildRequires: gtk+2-devel >= 2:2.24.0
40 BuildRequires: libnotify-devel >= 0.7.0
43 BuildRequires: libcap-devel
44 %{?with_selinux:BuildRequires: libselinux-devel}
45 BuildRequires: libtool >= 2:2.2
46 %{?with_tcpd:BuildRequires: libwrap-devel}
47 BuildRequires: libxslt-progs
49 %{?with_pam:BuildRequires: pam-devel}
50 BuildRequires: pkgconfig >= 0.9.0
51 BuildRequires: rpmbuild(macros) >= 1.527
52 BuildRequires: udev-devel >= 172
53 BuildRequires: vala >= 0.10.0
54 Requires: %{name}-libs = %{version}-%{release}
55 Requires: %{name}-units = %{version}-%{release}
56 Requires: SysVinit-tools
58 Requires: dbus >= 1.3.2
59 Requires: dbus-systemd
60 Requires: filesystem >= 4.0
62 Requires: setup >= 2.8.0-2
63 Requires: udev-core >= 1:172
64 Requires: udev-systemd >= 1:172
65 Requires: udev-libs >= 1:172
66 Suggests: ConsoleKit-systemd
67 Suggests: fsck >= 2.20
68 # python modules required by systemd-analyze
70 Suggests: python-modules
71 Suggests: rsyslog-systemd
72 Provides: readahead = 1:1.5.7-3
74 Provides: virtual(init-daemon)
76 Obsoletes: readahead < 1:1.5.7-3
77 Obsoletes: virtual(init-daemon)
78 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
80 %define _libexecdir %{_prefix}/lib
83 systemd is a system and service manager for Linux, compatible with
84 SysV and LSB init scripts. systemd provides aggressive parallelization
85 capabilities, uses socket and D-Bus activation for starting services,
86 offers on-demand starting of daemons, keeps track of processes using
87 Linux cgroups, supports snapshotting and restoring of the system
88 state, maintains mount and automount points and implements an
89 elaborate transactional dependency-based service control logic. It can
90 work as a drop-in replacement for sysvinit.
92 %description -l pl.UTF-8
93 systemd jest zarządcą systemu i usług dla Linuksa, kompatybilny ze
94 skryptami SysV i LSB. systemd udostępnia rozbudowane zdolności
95 paralelizacji, do uruchamiania usług używa socketów oraz D-Busa,
96 oferuje uruchamianie usług na życzenie, monitoruje procesy używając
97 linuksowych cgroups, wspomaga zapisywanie (snapshot) i odczytywanie
98 (restore) stanu systemu, zarządza (auto)mount pointami oraz
99 implementuje starannie opracowaną transakcjonalną, bazującą na
100 zależnościach logikę kontroli usług. Może pracować jako zastępca dla
104 Summary: Configuration files, directories and installation tool for systemd
106 Requires(post): coreutils
111 Basic configuration files, directories and installation tool for the
112 systemd system and service manager.
114 This is common config, use /etc/systemd/system to override.
117 Summary: Graphical frontend for systemd
119 Requires: %{name} = %{version}-%{release}
123 Graphical front-end for systemd.
125 %package -n bash-completion-systemd
126 Summary: bash-completion for systemd
127 Group: Applications/Shells
129 Requires: bash-completion
131 %description -n bash-completion-systemd
132 bash-completion for systemd.
135 Summary: Shared systemd library
139 Shared systemd library.
142 Summary: Header files for systemd libraries
143 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek systemd
144 Group: Development/Libraries
145 Requires: %{name}-libs = %{version}-%{release}
148 Header files for systemd libraries.
150 %description devel -l pl.UTF-8
151 Pliki nagłówkowe bibliotek systemd.
158 cp -p %{SOURCE2} src/systemd_booted.c
166 %{__enable_disable audit} \
167 %{__enable_disable cryptsetup libcryptsetup} \
168 %{__enable_disable gtk} \
169 %{__enable_disable pam} \
170 %{__enable_disable selinux} \
171 %{__enable_disable tcpd tcpwrap} \
172 --disable-silent-rules \
177 ./libtool --mode=link --tag=CC %{__cc} %{rpmcppflags} %{rpmcflags} -o systemd_booted %{rpmldflags} src/systemd_booted.c -L. -lsystemd-daemon
180 rm -rf $RPM_BUILD_ROOT
183 DESTDIR=$RPM_BUILD_ROOT
185 ./libtool --mode=install install -m755 systemd_booted $RPM_BUILD_ROOT/bin/systemd_booted
187 for lib in libsystemd-daemon libsystemd-login; do
188 %{__mv} $RPM_BUILD_ROOT{%{_libdir}/$lib.so.*,/%{_lib}}
189 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/$lib.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/$lib.so
192 # Create SysV compatibility symlinks. systemctl/systemd are smart
193 # enough to detect the way they were called
194 install -d $RPM_BUILD_ROOT/sbin
195 ln -s ../bin/systemd $RPM_BUILD_ROOT/sbin/init
196 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/halt
197 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/poweroff
198 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/reboot
199 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/runlevel
200 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/shutdown
201 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/telinit
203 ln -s ../modules $RPM_BUILD_ROOT%{_sysconfdir}/modules-load.d/modules.conf
205 # All wants links are created at %post to make sure they are not owned
206 # and hence overriden by rpm if the user deletes them (missingok?)
207 %{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/*.target.wants
209 # do not cover /media (system-specific removable mountpoints) for now
210 # needs %post code to convert existing /media structure to tmpfiles
211 %{__rm} -f $RPM_BUILD_ROOT/lib/systemd/local-fs.target.wants/media.mount
212 # do not cover /var/run until packages need rpm-provided-only subdirectories
213 %{__rm} -f $RPM_BUILD_ROOT/lib/systemd/local-fs.target.wants/var-run.mount
215 # Make sure these directories are properly owned:
216 # - halt,kexec,poweroff,reboot: generic ones used by ConsoleKit-systemd,
217 # - syslog _might_ be used by some syslog implementation (none for now),
218 # - isn't dbus populated by dbus-systemd only (so to be moved there)?
219 # - default should be left intact by distro packages, shouldn't it?
220 install -d $RPM_BUILD_ROOT/lib/systemd/system/{dbus,default,halt,kexec,poweroff,reboot,syslog}.target.wants
222 # Create new-style configuration files so that we can ghost-own them
223 touch $RPM_BUILD_ROOT%{_sysconfdir}/{hostname,locale.conf,machine-id,machine-info,os-release,timezone,vconsole.conf}
225 # Install SysV conversion tool for systemd
226 install -p %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
228 install -d $RPM_BUILD_ROOT/var/log
229 > $RPM_BUILD_ROOT/var/log/btmp
230 > $RPM_BUILD_ROOT/var/log/wtmp
233 # to shut up check-files
234 %{__rm} $RPM_BUILD_ROOT%{_bindir}/systemadm
235 %{__rm} $RPM_BUILD_ROOT%{_bindir}/systemd-gnome-ask-password-agent
236 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/systemadm.1*
239 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}
240 %{__rm} $RPM_BUILD_ROOT/%{_lib}/security/pam_systemd.la
241 %{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la
244 rm -rf $RPM_BUILD_ROOT
247 /bin/systemd-machine-id-setup > /dev/null 2>&1 || :
248 /bin/systemctl daemon-reexec > /dev/null 2>&1 || :
251 if [ $1 -ge 1 ]; then
252 /bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
255 %post libs -p /sbin/ldconfig
256 %postun libs -p /sbin/ldconfig
259 if [ $1 -eq 1 ]; then
260 # Try to read default runlevel from the old inittab if it exists
261 runlevel=$(/bin/awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
262 if [ -z "$runlevel" ] ; then
263 target="/lib/systemd/system/graphical.target"
265 target="/lib/systemd/system/runlevel$runlevel.target"
268 # And symlink what we found to the new-style default.target
269 ln -sf "$target" /etc/systemd/system/default.target >/dev/null 2>&1 || :
271 # Enable the services we install by default.
272 /bin/systemctl enable \
275 systemd-readahead-replay.service \
276 systemd-readahead-collect.service >/dev/null 2>&1 || :
280 if [ $1 -eq 0 ] ; then
281 /bin/systemctl disable \
284 systemd-readahead-replay.service \
285 systemd-readahead-collect.service >/dev/null 2>&1 || :
287 %{__rm} -f /etc/systemd/system/default.target >/dev/null 2>&1 || :
291 if [ $1 -ge 1 ]; then
292 /bin/systemctl daemon-reload > /dev/null 2>&1 || :
296 %defattr(644,root,root,755)
297 %doc DISTRO_PORTING README TODO
298 /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
299 /etc/dbus-1/system.d/org.freedesktop.locale1.conf
300 /etc/dbus-1/system.d/org.freedesktop.login1.conf
301 /etc/dbus-1/system.d/org.freedesktop.systemd1.conf
302 /etc/dbus-1/system.d/org.freedesktop.timedate1.conf
303 %ghost %config(noreplace) %{_sysconfdir}/machine-id
304 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostname
305 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/locale.conf
306 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/machine-info
307 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/os-release
308 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/timezone
309 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vconsole.conf
310 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/systemd/*.conf
311 %dir %{_sysconfdir}/systemd/user
313 %attr(755,root,root) /bin/systemd
314 %attr(755,root,root) /bin/systemd-ask-password
315 %attr(755,root,root) /bin/systemd-loginctl
316 %attr(755,root,root) /bin/systemd-machine-id-setup
317 %attr(755,root,root) /bin/systemd-notify
318 %attr(755,root,root) /bin/systemd-tty-ask-password-agent
319 %attr(755,root,root) %{_bindir}/systemd-analyze
320 %attr(755,root,root) %{_bindir}/systemd-cgls
321 %attr(755,root,root) %{_bindir}/systemd-nspawn
322 %attr(755,root,root) %{_bindir}/systemd-stdio-bridge
323 %attr(755,root,root) %{_bindir}/systemd-sysv-convert
324 %attr(755,root,root) /sbin/halt
325 %attr(755,root,root) /sbin/init
326 %attr(755,root,root) /sbin/poweroff
327 %attr(755,root,root) /sbin/reboot
328 %attr(755,root,root) /sbin/runlevel
329 %attr(755,root,root) /sbin/shutdown
330 %attr(755,root,root) /sbin/telinit
331 %attr(755,root,root) /lib/systemd/systemd-*
332 %dir /lib/systemd/system-generators
333 %attr(755,root,root) /lib/systemd/system-generators/systemd-*-generator
334 %dir /lib/systemd/system-shutdown
335 /lib/udev/rules.d/99-systemd.rules
336 /lib/udev/rules.d/70-uaccess.rules
337 /lib/udev/rules.d/71-seat.rules
338 /lib/udev/rules.d/73-seat-late.rules
339 %dir %{_libexecdir}/systemd
340 %{_libexecdir}/systemd/user
341 %dir %{_libexecdir}/systemd/user-generators
342 %config(noreplace,missingok) %{_libexecdir}/tmpfiles.d/*.conf
343 %{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
344 %{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
345 %{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
346 %{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml
347 %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
348 %{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
349 %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
350 %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
351 %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
352 %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
353 %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
354 %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
355 %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy
356 %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
357 %{_datadir}/polkit-1/actions/org.freedesktop.timedate1.policy
358 %dir %{_datadir}/systemd
359 %{_datadir}/systemd/kbd-model-map
360 %{_mandir}/man1/init.1
361 %{_mandir}/man1/systemd.1*
362 %{_mandir}/man1/systemd-*.1*
363 %{_mandir}/man3/sd_booted.3*
364 %{_mandir}/man3/sd_is_fifo.3*
365 %{_mandir}/man3/sd_is_socket.3
366 %{_mandir}/man3/sd_is_socket_inet.3
367 %{_mandir}/man3/sd_is_socket_unix.3
368 %{_mandir}/man3/sd_listen_fds.3*
369 %{_mandir}/man3/sd_notify.3*
370 %{_mandir}/man3/sd_notifyf.3
371 %{_mandir}/man3/sd_readahead.3*
372 %{_mandir}/man5/binfmt.d.5*
373 %{_mandir}/man5/hostname.5*
374 %{_mandir}/man5/locale.conf.5*
375 %{_mandir}/man5/machine-id.5*
376 %{_mandir}/man5/machine-info.5*
377 %{_mandir}/man5/modules-load.d.5*
378 %{_mandir}/man5/os-release.5*
379 %{_mandir}/man5/sysctl.d.5*
380 %{_mandir}/man5/systemd.*.5*
381 %{_mandir}/man5/systemd-logind.conf.5*
382 %{_mandir}/man5/timezone.5*
383 %{_mandir}/man5/vconsole.conf.5*
384 %{_mandir}/man7/daemon.7*
385 %{_mandir}/man7/sd-daemon.7*
386 %{_mandir}/man7/sd-readahead.7*
387 %{_mandir}/man7/systemd.special.7*
388 %{_mandir}/man8/halt.8*
389 %{_mandir}/man8/poweroff.8
390 %{_mandir}/man8/reboot.8
391 %{_mandir}/man8/runlevel.8*
392 %{_mandir}/man8/shutdown.8*
393 %{_mandir}/man8/telinit.8*
394 %attr(640,root,root) %ghost /var/log/btmp
395 %attr(664,root,utmp) %ghost /var/log/wtmp
398 %attr(755,root,root) /%{_lib}/security/pam_systemd.so
399 %{_mandir}/man8/pam_systemd.8*
403 %defattr(644,root,root,755)
404 %attr(755,root,root) /%{_lib}/libsystemd-daemon.so.*.*.*
405 %attr(755,root,root) %ghost /%{_lib}/libsystemd-daemon.so.0
406 %attr(755,root,root) /%{_lib}/libsystemd-login.so.*.*.*
407 %attr(755,root,root) %ghost /%{_lib}/libsystemd-login.so.0
410 %defattr(644,root,root,755)
411 %dir %{_sysconfdir}/binfmt.d
412 %dir %{_sysconfdir}/modules-load.d
413 %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/modules-load.d/modules.conf
414 %dir %{_sysconfdir}/sysctl.d
415 %dir %{_sysconfdir}/systemd
416 %dir %{_sysconfdir}/systemd/system
417 %dir %{_sysconfdir}/tmpfiles.d
418 %dir %{_libexecdir}/binfmt.d
419 %dir %{_libexecdir}/modules-load.d
420 %dir %{_libexecdir}/sysctl.d
421 %attr(755,root,root) /bin/systemctl
422 %attr(755,root,root) /bin/systemd-tmpfiles
423 %attr(755,root,root) /bin/systemd_booted
424 %{_mandir}/man1/systemctl.1*
425 %{_mandir}/man5/tmpfiles.d.5*
426 %{_mandir}/man8/systemd-tmpfiles.8*
427 %{_npkgconfigdir}/systemd.pc
429 /lib/systemd/system/*.automount
430 /lib/systemd/system/*.mount
431 /lib/systemd/system/*.path
432 /lib/systemd/system/*.service
433 /lib/systemd/system/*.socket
434 /lib/systemd/system/*.target
435 /lib/systemd/system/*.timer
436 %dir /lib/systemd/system/*.wants
437 %config(noreplace,missingok) /lib/systemd/system/*.wants/*
441 %defattr(644,root,root,755)
442 %attr(755,root,root) %{_bindir}/systemadm
443 %attr(755,root,root) %{_bindir}/systemd-gnome-ask-password-agent
444 %{_mandir}/man1/systemadm.1*
447 %files -n bash-completion-systemd
448 %defattr(644,root,root,755)
449 /etc/bash_completion.d/systemctl-bash-completion.sh
452 %defattr(644,root,root,755)
453 %{_includedir}/%{name}
454 %attr(755,root,root) %{_libdir}/libsystemd-daemon.so
455 %attr(755,root,root) %{_libdir}/libsystemd-login.so
456 %{_pkgconfigdir}/libsystemd-daemon.pc
457 %{_pkgconfigdir}/libsystemd-login.pc