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'
8 %bcond_without audit # without audit support
9 %bcond_without cryptsetup # without cryptsetup support
10 %bcond_without gtk # build gtk tools
11 %bcond_without pam # PAM authentication support
12 %bcond_without selinux # without SELinux support
13 %bcond_without tcpd # libwrap (tcp_wrappers) support
15 Summary: A System and Service Manager
16 Summary(pl.UTF-8): systemd - zarządca systemu i usług dla Linuksa
22 Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.bz2
23 # Source0-md5: 1435f23be79c8c38d1121c6b150510f3
24 Source1: %{name}-sysv-convert
25 Source2: systemd_booted.c
26 Patch0: target-pld.patch
27 Patch1: config-pld.patch
28 URL: http://www.freedesktop.org/wiki/Software/systemd
29 %{?with_audit:BuildRequires: audit-libs-devel}
30 BuildRequires: autoconf >= 2.63
31 BuildRequires: automake >= 1:1.11
32 %{?with_cryptsetup:BuildRequires: cryptsetup-luks-devel}
33 BuildRequires: dbus-devel >= 1.3.2
34 BuildRequires: docbook-style-xsl
36 BuildRequires: glib2-devel >= 1:2.26.1
37 BuildRequires: gtk+2-devel >= 2:2.24.0
38 BuildRequires: libnotify-devel >= 0.7.0
41 BuildRequires: libcap-devel
42 %{?with_selinux:BuildRequires: libselinux-devel}
43 BuildRequires: libtool >= 2:2.2
44 %{?with_tcpd:BuildRequires: libwrap-devel}
45 BuildRequires: libxslt-progs
47 %{?with_pam:BuildRequires: pam-devel}
48 BuildRequires: pkgconfig >= 0.9.0
49 BuildRequires: rpmbuild(macros) >= 1.527
50 BuildRequires: udev-devel >= 172
51 BuildRequires: vala >= 0.10.0
52 Requires: %{name}-libs = %{version}-%{release}
53 Requires: %{name}-units = %{version}-%{release}
54 Requires: SysVinit-tools
56 Requires: dbus >= 1.3.2
57 Requires: dbus-systemd
58 Requires: filesystem >= 4.0
59 # python modules required by systemd-analyze
61 Requires: python-modules
63 Requires: setup >= 2.8.0-2
64 Requires: udev-core >= 1:172
65 Requires: udev-systemd >= 1:172
66 Requires: udev-libs >= 1:172
67 Suggests: ConsoleKit-systemd
68 Suggests: rsyslog-systemd
69 Provides: SysVinit = 2.86-26
70 Provides: readahead = 1:1.5.7-3
71 Provides: virtual(init-daemon)
73 Obsoletes: SysVinit < 2.86-26
74 Obsoletes: readahead < 1:1.5.7-3
75 Obsoletes: virtual(init-daemon)
76 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
78 %define _libexecdir %{_prefix}/lib
81 systemd is a system and service manager for Linux, compatible with
82 SysV and LSB init scripts. systemd provides aggressive parallelization
83 capabilities, uses socket and D-Bus activation for starting services,
84 offers on-demand starting of daemons, keeps track of processes using
85 Linux cgroups, supports snapshotting and restoring of the system
86 state, maintains mount and automount points and implements an
87 elaborate transactional dependency-based service control logic. It can
88 work as a drop-in replacement for sysvinit.
90 %description -l pl.UTF-8
91 systemd jest zarządcą systemu i usług dla Linuksa, kompatybilny ze
92 skryptami SysV i LSB. systemd udostępnia rozbudowane zdolności
93 paralelizacji, do uruchamiania usług używa socketów oraz D-Busa,
94 oferuje uruchamianie usług na życzenie, monitoruje procesy używając
95 linuksowych cgroups, wspomaga zapisywanie (snapshot) i odczytywanie
96 (restore) stanu systemu, zarządza (auto)mount pointami oraz
97 implementuje starannie opracowaną transakcjonalną, bazującą na
98 zależnościach logikę kontroli usług. Może pracować jako zastępca dla
102 Summary: Configuration files, directories and installation tool for systemd
104 Requires(post): coreutils
109 Basic configuration files, directories and installation tool for the
110 systemd system and service manager.
112 This is distro specific config, to override
113 use /etc/systemd/system
116 Summary: Graphical frontend for systemd
118 Requires: %{name} = %{version}-%{release}
122 Graphical front-end for systemd.
124 %package -n bash-completion-systemd
125 Summary: bash-completion for systemd
126 Group: Applications/Shells
128 Requires: bash-completion
130 %description -n bash-completion-systemd
131 bash-completion for systemd.
134 Summary: Shared systemd library
138 Shared systemd library.
141 Summary: Header files for systemd libraries
142 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek systemd
143 Group: Development/Libraries
144 Requires: %{name}-libs = %{version}-%{release}
147 Header files for systemd libraries.
149 %description devel -l pl.UTF-8
150 Pliki nagłówkowe bibliotek systemd.
156 cp -p %{SOURCE2} src/systemd_booted.c
164 %{__enable_disable audit} \
165 %{__enable_disable cryptsetup libcryptsetup} \
166 %{__enable_disable gtk} \
167 %{__enable_disable pam} \
168 %{__enable_disable selinux} \
169 %{__enable_disable tcpd tcpwrap} \
170 --disable-silent-rules \
175 ./libtool --mode=link --tag=CC %{__cc} %{rpmcppflags} %{rpmcflags} -o systemd_booted %{rpmldflags} src/systemd_booted.c -L. -lsystemd-daemon
178 rm -rf $RPM_BUILD_ROOT
181 DESTDIR=$RPM_BUILD_ROOT
183 ./libtool --mode=install install -m755 systemd_booted $RPM_BUILD_ROOT/bin/systemd_booted
185 for lib in libsystemd-daemon libsystemd-login; do
186 %{__mv} $RPM_BUILD_ROOT{%{_libdir}/$lib.so.*,/%{_lib}}
187 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/$lib.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/$lib.so
190 # Create SysV compatibility symlinks. systemctl/systemd are smart
191 # enough to detect in which way they are called.
192 install -d $RPM_BUILD_ROOT/sbin
193 ln -s ../bin/systemd $RPM_BUILD_ROOT/sbin/init
194 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/halt
195 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/poweroff
196 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/reboot
197 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/runlevel
198 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/shutdown
199 ln -s ../bin/systemctl $RPM_BUILD_ROOT/sbin/telinit
201 ln -s ../modules $RPM_BUILD_ROOT%{_sysconfdir}/modules-load.d/modules.conf
203 # We create all wants links manually at installation time to make sure
204 # they are not owned and hence overriden by rpm after the used deleted
206 %{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/*.target.wants
208 # do not cover /media (system-specific removable mountpoints) for now
209 # needs %post code to convert existing /media structure to tmpfiles
210 %{__rm} -f $RPM_BUILD_ROOT/lib/systemd/local-fs.target.wants/media.mount
211 # do not cover /var/run until packages need rpm-provided-only subdirectories
212 %{__rm} -f $RPM_BUILD_ROOT/lib/systemd/local-fs.target.wants/var-run.mount
214 # Make sure these directories are properly owned
215 install -d $RPM_BUILD_ROOT/lib/systemd/system/{basic,dbus,default,halt,kexec,poweroff,reboot,syslog}.target.wants
217 # Create new-style configuration files so that we can ghost-own them
218 touch $RPM_BUILD_ROOT%{_sysconfdir}/{hostname,locale.conf,machine-id,machine-info,os-release,timezone,vconsole.conf}
220 # Install SysV conversion tool for systemd
221 install -p %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
223 install -d $RPM_BUILD_ROOT/var/log
224 > $RPM_BUILD_ROOT/var/log/btmp
225 > $RPM_BUILD_ROOT/var/log/wtmp
228 # to shut up check-files
229 %{__rm} $RPM_BUILD_ROOT%{_bindir}/systemadm
230 %{__rm} $RPM_BUILD_ROOT%{_bindir}/systemd-gnome-ask-password-agent
231 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/systemadm.1*
234 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}
235 %{__rm} $RPM_BUILD_ROOT/%{_lib}/security/pam_systemd.la
236 %{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la
239 rm -rf $RPM_BUILD_ROOT
242 /bin/systemd-machine-id-setup > /dev/null 2>&1 || :
243 /bin/systemctl daemon-reexec > /dev/null 2>&1 || :
246 if [ $1 -ge 1 ]; then
247 /bin/systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
250 %post libs -p /sbin/ldconfig
251 %postun libs -p /sbin/ldconfig
254 if [ $1 -eq 1 ]; then
255 # Try to read default runlevel from the old inittab if it exists
256 runlevel=$(/bin/awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
257 if [ -z "$runlevel" ] ; then
258 target="/lib/systemd/system/graphical.target"
260 target="/lib/systemd/system/runlevel$runlevel.target"
263 # And symlink what we found to the new-style default.target
264 ln -sf "$target" /etc/systemd/system/default.target >/dev/null 2>&1 || :
266 # Enable the services we install by default.
267 /bin/systemctl enable \
270 systemd-readahead-replay.service \
271 systemd-readahead-collect.service >/dev/null 2>&1 || :
275 if [ $1 -eq 0 ] ; then
276 /bin/systemctl disable \
279 systemd-readahead-replay.service \
280 systemd-readahead-collect.service >/dev/null 2>&1 || :
282 %{__rm} -f /etc/systemd/system/default.target >/dev/null 2>&1 || :
286 if [ $1 -ge 1 ]; then
287 /bin/systemctl daemon-reload > /dev/null 2>&1 || :
291 %defattr(644,root,root,755)
292 %doc DISTRO_PORTING README TODO
293 /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
294 /etc/dbus-1/system.d/org.freedesktop.locale1.conf
295 /etc/dbus-1/system.d/org.freedesktop.login1.conf
296 /etc/dbus-1/system.d/org.freedesktop.systemd1.conf
297 /etc/dbus-1/system.d/org.freedesktop.timedate1.conf
298 %ghost %config(noreplace) %{_sysconfdir}/machine-id
299 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostname
300 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/locale.conf
301 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/machine-info
302 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/os-release
303 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/timezone
304 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vconsole.conf
305 %dir %{_sysconfdir}/systemd
306 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/systemd/*.conf
308 %attr(755,root,root) /bin/systemd
309 %attr(755,root,root) /bin/systemd-ask-password
310 %attr(755,root,root) /bin/systemd-loginctl
311 %attr(755,root,root) /bin/systemd-machine-id-setup
312 %attr(755,root,root) /bin/systemd-notify
313 %attr(755,root,root) /bin/systemd-tty-ask-password-agent
314 %attr(755,root,root) %{_bindir}/systemd-analyze
315 %attr(755,root,root) %{_bindir}/systemd-cgls
316 %attr(755,root,root) %{_bindir}/systemd-nspawn
317 %attr(755,root,root) %{_bindir}/systemd-sysv-convert
318 %attr(755,root,root) %{_bindir}/systemd-stdio-bridge
319 %attr(755,root,root) /sbin/halt
320 %attr(755,root,root) /sbin/init
321 %attr(755,root,root) /sbin/poweroff
322 %attr(755,root,root) /sbin/reboot
323 %attr(755,root,root) /sbin/runlevel
324 %attr(755,root,root) /sbin/shutdown
325 %attr(755,root,root) /sbin/telinit
326 %attr(755,root,root) /lib/systemd/systemd-*
327 %dir /lib/systemd/system-generators
328 %attr(755,root,root) /lib/systemd/system-generators/systemd-*-generator
329 %dir /lib/systemd/system-shutdown
330 /lib/udev/rules.d/99-systemd.rules
331 /lib/udev/rules.d/70-uaccess.rules
332 /lib/udev/rules.d/71-seat.rules
333 /lib/udev/rules.d/73-seat-late.rules
334 %dir %{_libexecdir}/systemd
335 %{_libexecdir}/systemd/user
336 %config(noreplace,missingok) %{_libexecdir}/tmpfiles.d/*.conf
337 %{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
338 %{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
339 %{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
340 %{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml
341 %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
342 %{_datadir}/dbus-1/system-services/org.freedesktop.hostname1.service
343 %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
344 %{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
345 %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
346 %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
347 %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
348 %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
349 %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy
350 %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
351 %{_datadir}/polkit-1/actions/org.freedesktop.timedate1.policy
352 %dir %{_datadir}/systemd
353 %{_datadir}/systemd/kbd-model-map
354 %{_mandir}/man1/init.1
355 %{_mandir}/man1/systemd.1*
356 %{_mandir}/man1/systemd-ask-password.1*
357 %{_mandir}/man1/systemd-cgls.1*
358 %{_mandir}/man1/systemd-notify.1*
359 %{_mandir}/man1/systemd-nspawn.1*
360 %{_mandir}/man1/systemd-loginctl.1*
361 %{_mandir}/man3/sd_booted.3*
362 %{_mandir}/man3/sd_is_fifo.3*
363 %{_mandir}/man3/sd_is_socket.3
364 %{_mandir}/man3/sd_is_socket_inet.3
365 %{_mandir}/man3/sd_is_socket_unix.3
366 %{_mandir}/man3/sd_listen_fds.3*
367 %{_mandir}/man3/sd_notify.3*
368 %{_mandir}/man3/sd_notifyf.3
369 %{_mandir}/man3/sd_readahead.3*
370 %{_mandir}/man5/binfmt.d.5*
371 %{_mandir}/man5/hostname.5*
372 %{_mandir}/man5/locale.conf.5*
373 %{_mandir}/man5/machine-id.5*
374 %{_mandir}/man5/machine-info.5*
375 %{_mandir}/man5/modules-load.d.5*
376 %{_mandir}/man5/os-release.5*
377 %{_mandir}/man5/sysctl.d.5*
378 %{_mandir}/man5/systemd.*.5*
379 %{_mandir}/man5/systemd-logind.conf.5*
380 %{_mandir}/man5/timezone.5*
381 %{_mandir}/man5/vconsole.conf.5*
382 %{_mandir}/man7/daemon.7*
383 %{_mandir}/man7/sd-daemon.7*
384 %{_mandir}/man7/sd-readahead.7*
385 %{_mandir}/man7/systemd.special.7*
386 %{_mandir}/man8/halt.8*
387 %{_mandir}/man8/poweroff.8
388 %{_mandir}/man8/reboot.8
389 %{_mandir}/man8/runlevel.8*
390 %{_mandir}/man8/shutdown.8*
391 %{_mandir}/man8/telinit.8*
392 %attr(640,root,root) %ghost /var/log/btmp
393 %attr(664,root,utmp) %ghost /var/log/wtmp
396 %attr(755,root,root) /%{_lib}/security/pam_systemd.so
397 %{_mandir}/man8/pam_systemd.8*
401 %defattr(644,root,root,755)
402 %attr(755,root,root) /%{_lib}/libsystemd-daemon.so.*.*.*
403 %attr(755,root,root) %ghost /%{_lib}/libsystemd-daemon.so.0
404 %attr(755,root,root) /%{_lib}/libsystemd-login.so.*.*.*
405 %attr(755,root,root) %ghost /%{_lib}/libsystemd-login.so.0
408 %defattr(644,root,root,755)
409 %dir %{_sysconfdir}/binfmt.d
410 %dir %{_sysconfdir}/modules-load.d
411 %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/modules-load.d/modules.conf
412 %dir %{_sysconfdir}/sysctl.d
413 %dir %{_sysconfdir}/systemd
414 %dir %{_sysconfdir}/systemd/system
415 %dir %{_sysconfdir}/tmpfiles.d
416 %dir %{_libexecdir}/binfmt.d
417 %dir %{_libexecdir}/modules-load.d
418 %dir %{_libexecdir}/sysctl.d
419 %attr(755,root,root) /bin/systemctl
420 %attr(755,root,root) /bin/systemd-tmpfiles
421 %attr(755,root,root) /bin/systemd_booted
422 %{_mandir}/man1/systemctl.1*
423 %{_mandir}/man5/tmpfiles.d.5*
424 %{_mandir}/man8/systemd-tmpfiles.8*
425 %{_npkgconfigdir}/systemd.pc
427 /lib/systemd/system/*.automount
428 /lib/systemd/system/*.mount
429 /lib/systemd/system/*.path
430 /lib/systemd/system/*.service
431 /lib/systemd/system/*.socket
432 /lib/systemd/system/*.target
433 /lib/systemd/system/*.timer
434 /lib/systemd/system/basic.target.wants
435 /lib/systemd/system/dbus.target.wants
436 /lib/systemd/system/default.target.wants
437 /lib/systemd/system/final.target.wants
438 /lib/systemd/system/graphical.target.wants
439 /lib/systemd/system/halt.target.wants
440 /lib/systemd/system/kexec.target.wants
441 /lib/systemd/system/local-fs.target.wants
442 /lib/systemd/system/multi-user.target.wants
443 /lib/systemd/system/poweroff.target.wants
444 /lib/systemd/system/reboot.target.wants
445 /lib/systemd/system/runlevel?.target.wants
446 /lib/systemd/system/shutdown.target.wants
447 /lib/systemd/system/sockets.target.wants
448 /lib/systemd/system/sysinit.target.wants
449 /lib/systemd/system/syslog.target.wants
453 %defattr(644,root,root,755)
454 %attr(755,root,root) %{_bindir}/systemadm
455 %attr(755,root,root) %{_bindir}/systemd-gnome-ask-password-agent
456 %{_mandir}/man1/systemadm.1*
459 %files -n bash-completion-systemd
460 %defattr(644,root,root,755)
461 /etc/bash_completion.d/systemctl-bash-completion.sh
464 %defattr(644,root,root,755)
465 %{_includedir}/systemd
466 %attr(755,root,root) %{_libdir}/libsystemd-daemon.so
467 %attr(755,root,root) %{_libdir}/libsystemd-login.so
468 %{_pkgconfigdir}/libsystemd-daemon.pc
469 %{_pkgconfigdir}/libsystemd-login.pc