SHA256
1
0
forked from pool/systemd

- Update to version 41:

+ systemd binary is now installed in /lib/systemd (symlink for
  /bin/systemd is available now)
  + kernel modules are now loaded through libkmod
  + Watchdog support is now useful (not complete)
  + new kernel command line available to set system wide
    environment variable: systemd.setenv
  + journald capabilities set is now limited
  + SIGPIPE is ignored by default. This can be disabled with
    IgnoreSIGPIPE=no in unit files.
- Add fix-kmod-build.patch: fix build with libkmod
- Drop remote-fs-after-network.patch (merged upstream)
- Add dm-lvm-after-local-fs-pre-target.patch: ensure md / lvm
  /dmraid is started before mounting partitions, if fsck was
  disabled for them (bnc#733283).
- Update lsb-header patch to correctly disable heuristic if
  X-Systemd-RemainAfterExit is specified (whatever its value)
- Add fix-message-after-chkconfig.patch: don't complain if only
  sysv services are called in systemctl.
- Add is-enabled-non-existing-service.patch: fix error message when
  running is-enabled on non-existing service.

OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=242
This commit is contained in:
Frederic Crozat 2012-02-09 17:04:56 +00:00 committed by Git OBS Bridge
parent 012750d44e
commit f54de6a28b
15 changed files with 275 additions and 146 deletions

View File

@ -7,23 +7,21 @@ Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf
src/service.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
Index: systemd-40/src/service.c
Index: systemd-41/src/service.c
===================================================================
--- systemd-40.orig/src/service.c
+++ systemd-40/src/service.c
@@ -3162,23 +3162,32 @@ static void sysv_facility_in_insserv_con
--- systemd-41.orig/src/service.c
+++ systemd-41/src/service.c
@@ -3210,23 +3210,30 @@ static void sysv_facility_in_insserv_con
Unit *u;
if (sysv_translate_facility(parsed[0], NULL, &facility) < 0)
continue;
+ if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) {
+ /* insert also a Wants dependency from remote-fs-pre on remote-fs */
+ u = manager_get_unit(mgr, SPECIAL_REMOTE_FS_TARGET);
+ unit_add_dependency_by_name(u, UNIT_WANTS,
+ SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true);
+ unit_add_dependency_by_name(u, UNIT_WANTS, SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true);
+ free (facility);
+ facility=strdup(SPECIAL_REMOTE_FS_PRE_TARGET);
+ }
+
if ((u = manager_get_unit(mgr, facility)) && (u->type == UNIT_TARGET)) {
- UnitDependency e;
char *dep = NULL, *name, **j;

View File

@ -12,15 +12,13 @@ Fixes https://bugzilla.novell.com/show_bug.cgi?id=721426
src/service.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/service.c b/src/service.c
index 6b7064a..eb2699c 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2012,9 +2012,15 @@ static void service_enter_running(Service *s, bool success) {
main_pid_ok = main_pid_good(s);
Index: systemd-37/src/service.c
===================================================================
--- systemd-37.orig/src/service.c
+++ systemd-37/src/service.c
@@ -2014,8 +2014,13 @@ static void service_enter_running(Servic
cgroup_ok = cgroup_good(s);
+
if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) &&
- (s->bus_name_good || s->type != SERVICE_DBUS))
+ (s->bus_name_good || s->type != SERVICE_DBUS)) {
@ -33,6 +31,3 @@ index 6b7064a..eb2699c 100644
else if (s->remain_after_exit)
service_set_state(s, SERVICE_EXITED);
else
--
1.7.3.4

View File

@ -0,0 +1,9 @@
Index: systemd-37/units/local-fs-pre.target
===================================================================
--- systemd-37.orig/units/local-fs-pre.target
+++ systemd-37/units/local-fs-pre.target
@@ -9,3 +9,4 @@
[Unit]
Description=Local File Systems (Pre)
+After=md.service lvm.service dmraid.service

51
fix-kmod-build.patch Normal file
View File

@ -0,0 +1,51 @@
From 0bb96d9971975a42c102d87036c858e1347d6bc5 Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Thu, 9 Feb 2012 14:12:10 +0100
Subject: [PATCH] kmod-setup: fix build with libkmod
---
Makefile.am | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index fbf2358..c5b819e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -546,7 +546,8 @@ libsystemd_core_la_CFLAGS = \
$(UDEV_CFLAGS) \
$(LIBWRAP_CFLAGS) \
$(PAM_CFLAGS) \
- $(AUDIT_CFLAGS)
+ $(AUDIT_CFLAGS) \
+ $(KMOD_CFLAGS)
libsystemd_core_la_LIBADD = \
libsystemd-basic.la \
@@ -555,7 +556,8 @@ libsystemd_core_la_LIBADD = \
$(LIBWRAP_LIBS) \
$(PAM_LIBS) \
$(AUDIT_LIBS) \
- $(CAP_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
@@ -728,12 +730,10 @@ systemd_SOURCES = \
systemd_CFLAGS = \
$(AM_CFLAGS) \
$(DBUS_CFLAGS) \
- $(UDEV_CFLAGS) \
- $(KMOD_CFLAGS)
+ $(UDEV_CFLAGS)
systemd_LDADD = \
- libsystemd-core.la \
- $(KMOD_LIBS)
+ libsystemd-core.la
test_engine_SOURCES = \
src/test-engine.c
--
1.7.7

View File

@ -0,0 +1,40 @@
From ab5919fa1af147c2632fdae7bed4504c898a60af Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Thu, 9 Feb 2012 10:05:15 +0100
Subject: [PATCH] systemctl: check for no more work after chkconfig
Avoid a bogus message from 'systemctl enable ...' when all units given
are SysV services:
Warning: unit files do not carry install information. No operation
executed.
https://bugzilla.redhat.com/show_bug.cgi?id=787407
---
src/systemctl.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/systemctl.c b/src/systemctl.c
index 12264f8..ab6d126 100644
--- a/src/systemctl.c
+++ b/src/systemctl.c
@@ -3662,12 +3662,15 @@ static int enable_unit(DBusConnection *bus, char **args) {
int r;
DBusError error;
- dbus_error_init(&error);
-
r = enable_sysv_units(args);
if (r < 0)
return r;
+ if (!args[1])
+ return 0;
+
+ dbus_error_init(&error);
+
if (!bus || avoid_bus()) {
if (streq(verb, "enable")) {
r = unit_file_enable(arg_scope, arg_runtime, arg_root, args+1, arg_force, &changes, &n_changes);
--
1.7.7

View File

@ -0,0 +1,34 @@
From 81006b8ad8cfdbfdb418fc99918ee5c33eb5b35a Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Thu, 9 Feb 2012 10:36:56 +0100
Subject: [PATCH] install: fix incorrect 'Access denied' message with a
non-existent unit
With "systemctl is-enabled non-existent.service"
_UNIT_FILE_STATE_INVALID (-1) was wrongly interpreted as -errno.
Return -ENOENT in this case.
https://bugzilla.redhat.com/show_bug.cgi?id=766579
---
src/install.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/install.c b/src/install.c
index 1fb1f9d..174d79b 100644
--- a/src/install.c
+++ b/src/install.c
@@ -1571,10 +1571,10 @@ UnitFileState unit_file_get_state(
}
if (lstat(path, &st) < 0) {
+ r = -errno;
if (errno == ENOENT)
continue;
- r = -errno;
goto finish;
}
--
1.7.7

View File

@ -7,25 +7,26 @@ Subject: [PATCH] module-load: handle SUSE /etc/sysconfig/kernel module list
src/modules-load.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
Index: systemd-37/src/modules-load.c
Index: systemd-41/src/modules-load.c
===================================================================
--- systemd-37.orig/src/modules-load.c
+++ systemd-37/src/modules-load.c
@@ -36,6 +36,9 @@ int main(int argc, char *argv[]) {
char **arguments = NULL;
unsigned n_arguments = 0, n_allocated = 0;
--- systemd-41.orig/src/modules-load.c
+++ systemd-41/src/modules-load.c
@@ -44,6 +44,9 @@ static void systemd_kmod_log(void *data,
int main(int argc, char *argv[]) {
int r = EXIT_FAILURE;
char **files, **fn;
+#if defined(TARGET_SUSE)
+ char *modules_on_boot = NULL;
+#endif
struct kmod_ctx *ctx;
const int probe_flags = KMOD_PROBE_APPLY_BLACKLIST|KMOD_PROBE_IGNORE_LOADED;
if (argc > 1) {
log_error("This program takes no argument.");
@@ -126,6 +129,43 @@ int main(int argc, char *argv[]) {
@@ -141,9 +144,58 @@ int main(int argc, char *argv[]) {
fclose(f);
}
strv_free(files);
+#if defined(TARGET_SUSE)
+ log_debug("apply: /etc/sysconfig/kernel MODULES_LOADED_ON_BOOT");
+ if ((r = parse_env_file("/etc/sysconfig/kernel", NEWLINE,
+ "MODULES_LOADED_ON_BOOT", &modules_on_boot,
+ NULL)) < 0) {
@ -36,49 +37,53 @@ Index: systemd-37/src/modules-load.c
+ if (modules_on_boot) {
+ char **modules = strv_split(modules_on_boot,WHITESPACE);
+ char **module;
+ struct kmod_list *itr, *modlist = NULL;
+ int err;
+
+ if (modules) {
+ STRV_FOREACH(module, modules) {
+ if (n_arguments >= n_allocated) {
+ char **a;
+ unsigned m;
+ err = kmod_module_new_from_lookup(ctx, *module, &modlist);
+ if (err < 0) {
+ log_error("Failed to lookup alias '%s'", *module);
+ r = EXIT_FAILURE;
+ continue;
+ }
+ kmod_list_foreach(itr, modlist) {
+ struct kmod_module *mod = kmod_module_get_module(itr);
+ err = kmod_module_probe_insert_module(mod, probe_flags,
+ NULL, NULL, NULL, NULL);
+
+ m = MAX(16U, n_arguments*2);
+
+ if (!(a = realloc(arguments, sizeof(char*) * (m+1)))) {
+ log_error("Failed to increase module array size.");
+ free(*module);
+ if (err == 0)
+ log_info("Inserted module '%s'", kmod_module_get_name(mod));
+ else if (err == KMOD_PROBE_APPLY_BLACKLIST)
+ log_info("Module '%s' is blacklisted", kmod_module_get_name(mod));
+ else {
+ log_error("Failed to insert '%s': %s", kmod_module_get_name(mod),
+ strerror(-err));
+ r = EXIT_FAILURE;
+ continue;
+ }
+
+ arguments = a;
+ n_allocated = m;
+ kmod_module_unref(mod);
+ }
+ log_debug("adding module: %s\n", *module);
+ arguments[n_arguments++] = strdup(*module);
+ kmod_module_unref_list(modlist);
+ }
+ }
+ strv_free(modules);
+ }
+#endif
+
finish:
if (n_arguments > 3) {
@@ -138,6 +178,9 @@ finish:
}
strv_free(arguments);
strv_free(files);
+#if defined(TARGET_SUSE)
+ free(modules_on_boot);
+#endif
kmod_unref(ctx);
return r;
}
Index: systemd-37/units/systemd-modules-load.service.in
Index: systemd-41/units/systemd-modules-load.service.in
===================================================================
--- systemd-37.orig/units/systemd-modules-load.service.in
+++ systemd-37/units/systemd-modules-load.service.in
--- systemd-41.orig/units/systemd-modules-load.service.in
+++ systemd-41/units/systemd-modules-load.service.in
@@ -11,6 +11,7 @@ DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-readahead-collect.service systemd-readahead-replay.service

View File

@ -1,8 +1,8 @@
Index: systemd-37/src/service.c
Index: systemd-41/src/service.c
===================================================================
--- systemd-37.orig/src/service.c
+++ systemd-37/src/service.c
@@ -116,6 +116,7 @@ static void service_init(Unit *u) {
--- systemd-41.orig/src/service.c
+++ systemd-41/src/service.c
@@ -119,6 +119,7 @@ static void service_init(Unit *u) {
#ifdef HAVE_SYSV_COMPAT
s->sysv_start_priority = -1;
s->sysv_start_priority_from_rcnd = -1;
@ -10,7 +10,7 @@ Index: systemd-37/src/service.c
#endif
s->socket_fd = -1;
s->guess_main_pid = true;
@@ -805,6 +806,31 @@ static int service_load_sysv_path(Servic
@@ -861,6 +862,34 @@ static int service_load_sysv_path(Servic
} else
state = LSB;
@ -33,16 +33,29 @@ Index: systemd-37/src/service.c
+ free(s->pid_file);
+ s->pid_file = fn;
+ s->sysv_remain_after_exit_heuristic = false;
+ s->remain_after_exit = false;
+ } else if (startswith_no_case(t, "X-Systemd-RemainAfterExit:")) {
+ char *j;
+
+ state = LSB;
+ if ((j = strstrip(t+26)) && *j)
+ s->sysv_remain_after_exit_heuristic = !parse_boolean(j);
+ if ((j = strstrip(t+26)) && *j) {
+ s->remain_after_exit = parse_boolean(j);
+ s->sysv_remain_after_exit_heuristic = false;
+ }
}
}
}
@@ -2017,7 +2043,7 @@ static void service_enter_running(Servic
@@ -891,7 +920,8 @@ static int service_load_sysv_path(Servic
/* Special setting for all SysV services */
s->type = SERVICE_FORKING;
- s->remain_after_exit = !s->pid_file;
+ if (s->sysv_remain_after_exit_heuristic)
+ s->remain_after_exit = !s->pid_file;
s->guess_main_pid = false;
s->restart = SERVICE_RESTART_NO;
s->exec_context.ignore_sigpipe = false;
@@ -2030,7 +2060,7 @@ static void service_enter_running(Servic
if ((main_pid_ok > 0 || (main_pid_ok < 0 && cgroup_ok != 0)) &&
(s->bus_name_good || s->type != SERVICE_DBUS)) {
#ifdef HAVE_SYSV_COMPAT
@ -51,11 +64,11 @@ Index: systemd-37/src/service.c
s->remain_after_exit = false;
#endif
service_set_state(s, SERVICE_RUNNING);
Index: systemd-37/src/service.h
Index: systemd-41/src/service.h
===================================================================
--- systemd-37.orig/src/service.h
+++ systemd-37/src/service.h
@@ -139,6 +139,7 @@ struct Service {
--- systemd-41.orig/src/service.h
+++ systemd-41/src/service.h
@@ -157,6 +157,7 @@ struct Service {
#ifdef HAVE_SYSV_COMPAT
bool sysv_has_lsb:1;
bool sysv_enabled:1;

View File

@ -1,74 +0,0 @@
From db1355b1c181a4b1ac277064918d7c794dfb6edd Mon Sep 17 00:00:00 2001
From: Michal Schmidt <mschmidt@redhat.com>
Date: Tue, 7 Feb 2012 11:05:18 +0100
Subject: [PATCH] mount: adjust dependencies for remote filesystems
Currently remote mounts automatically get:
After=remote-fs-pre.target network.target
remote-fs-pre.target is already After=network.target. Just make sure
remote-fs-pre.target is pulled in by remote-fs.target if any remote
filesystems are configured.
For the mount units it is then sufficient to get:
After=remote-fs-pre.target
Later NetworkManager will hook its NM-wait-online.service into
remote-fs-pre.target.wants in order to remove the need for the administrator
to enable the service manually when he has any remote filesystems.
https://bugzilla.redhat.com/show_bug.cgi?id=787314
---
src/mount.c | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/mount.c b/src/mount.c
index 3411b73..0ae964b 100644
--- a/src/mount.c
+++ b/src/mount.c
@@ -320,7 +320,7 @@ static bool needs_quota(MountParameters *p) {
}
static int mount_add_fstab_links(Mount *m) {
- const char *target, *after = NULL, *after2 = NULL;
+ const char *target, *after, *tu_wants = NULL;
MountParameters *p;
Unit *tu;
int r;
@@ -350,23 +350,27 @@ static int mount_add_fstab_links(Mount *m) {
if (mount_is_network(p)) {
target = SPECIAL_REMOTE_FS_TARGET;
- after = SPECIAL_REMOTE_FS_PRE_TARGET;
- after2 = SPECIAL_NETWORK_TARGET;
+ after = tu_wants = SPECIAL_REMOTE_FS_PRE_TARGET;
} else {
target = SPECIAL_LOCAL_FS_TARGET;
after = SPECIAL_LOCAL_FS_PRE_TARGET;
}
- if ((r = manager_load_unit(UNIT(m)->manager, target, NULL, NULL, &tu)) < 0)
+ r = manager_load_unit(UNIT(m)->manager, target, NULL, NULL, &tu);
+ if (r < 0)
return r;
- if (after)
- if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true)) < 0)
+ if (tu_wants) {
+ r = unit_add_dependency_by_name(tu, UNIT_WANTS, tu_wants, NULL, true);
+ if (r < 0)
return r;
+ }
- if (after2)
- if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after2, NULL, true)) < 0)
+ if (after) {
+ r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true);
+ if (r < 0)
return r;
+ }
if (automount) {
Unit *am;
--
1.7.7

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5f0c04e45e593c0903698f3ab3eb3e565d68de26a91858c470675a090a05cab5
size 896004

3
systemd-41.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:edeb6d2fc9d55cf3ec0c09817e736238c224c615887ff23e8f314b52abe0468d
size 881864

View File

@ -1,3 +1,28 @@
-------------------------------------------------------------------
Thu Feb 9 16:19:38 UTC 2012 - fcrozat@suse.com
- Update to version 41:
+ systemd binary is now installed in /lib/systemd (symlink for
/bin/systemd is available now)
+ kernel modules are now loaded through libkmod
+ Watchdog support is now useful (not complete)
+ new kernel command line available to set system wide
environment variable: systemd.setenv
+ journald capabilities set is now limited
+ SIGPIPE is ignored by default. This can be disabled with
IgnoreSIGPIPE=no in unit files.
- Add fix-kmod-build.patch: fix build with libkmod
- Drop remote-fs-after-network.patch (merged upstream)
- Add dm-lvm-after-local-fs-pre-target.patch: ensure md / lvm
/dmraid is started before mounting partitions, if fsck was
disabled for them (bnc#733283).
- Update lsb-header patch to correctly disable heuristic if
X-Systemd-RemainAfterExit is specified (whatever its value)
- Add fix-message-after-chkconfig.patch: don't complain if only
sysv services are called in systemctl.
- Add is-enabled-non-existing-service.patch: fix error message when
running is-enabled on non-existing service.
-------------------------------------------------------------------
Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com

View File

@ -16,10 +16,9 @@
#
Name: systemd-gtk
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 40
Version: 41
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: audit-devel

View File

@ -1,3 +1,28 @@
-------------------------------------------------------------------
Thu Feb 9 16:19:38 UTC 2012 - fcrozat@suse.com
- Update to version 41:
+ systemd binary is now installed in /lib/systemd (symlink for
/bin/systemd is available now)
+ kernel modules are now loaded through libkmod
+ Watchdog support is now useful (not complete)
+ new kernel command line available to set system wide
environment variable: systemd.setenv
+ journald capabilities set is now limited
+ SIGPIPE is ignored by default. This can be disabled with
IgnoreSIGPIPE=no in unit files.
- Add fix-kmod-build.patch: fix build with libkmod
- Drop remote-fs-after-network.patch (merged upstream)
- Add dm-lvm-after-local-fs-pre-target.patch: ensure md / lvm
/dmraid is started before mounting partitions, if fsck was
disabled for them (bnc#733283).
- Update lsb-header patch to correctly disable heuristic if
X-Systemd-RemainAfterExit is specified (whatever its value)
- Add fix-message-after-chkconfig.patch: don't complain if only
sysv services are called in systemctl.
- Add is-enabled-non-existing-service.patch: fix error message when
running is-enabled on non-existing service.
-------------------------------------------------------------------
Tue Feb 7 14:43:58 UTC 2012 - fcrozat@suse.com

View File

@ -22,7 +22,7 @@
Name: systemd
Url: http://www.freedesktop.org/wiki/Software/systemd
Version: 40
Version: 41
Release: 0
Summary: A System and Session Manager
License: GPL-2.0+
@ -36,6 +36,7 @@ BuildRequires: intltool
BuildRequires: libacl-devel
BuildRequires: libcap-devel
BuildRequires: libcryptsetup-devel
BuildRequires: libkmod-devel
BuildRequires: libselinux-devel
BuildRequires: libsepol-devel
BuildRequires: libtool
@ -84,13 +85,16 @@ Patch24: delay-fsck-cryptsetup-after-md-lvm-dmraid.patch
Patch31: lock-opensuse.patch
Patch33: crypt-loop-file.patch
Patch36: sysctl-modules.patch
Patch38: dm-lvm-after-local-fs-pre-target.patch
# Upstream First - Policy:
# Never add any patches to this package without the upstream commit id
# in the patch. Any patches added here without a very good reason to make
# an exception will be silently removed with the next version update.
Patch21: no-tmpfs-fsck.patch
Patch37: remote-fs-after-network.patch
Patch37: fix-kmod-build.patch
Patch39: fix-message-after-chkconfig.patch
Patch40: is-enabled-non-existing-service.patch
%description
Systemd is a system and service manager, compatible with SysV and LSB
@ -152,6 +156,9 @@ Plymouth integration for systemd
%patch33 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%build
autoreconf -fiv
@ -189,7 +196,8 @@ ln -s ../bootsplash-startup.service %{buildroot}/lib/systemd/system/basic.target
ln -s ../bootsplash-quit.service %{buildroot}/lib/systemd/system/multi-user.target.wants/
ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/shutdown.target.wants/
ln -s ../bootsplash-shutdown.service %{buildroot}/lib/systemd/system/reboot.target.wants/
ln -s ../bin/systemd %{buildroot}/sbin/init
ln -s ../lib/systemd/systemd %{buildroot}/bin/systemd
ln -s ../lib/systemd/systemd %{buildroot}/sbin/init
ln -s ../bin/systemctl %{buildroot}/sbin/reboot
ln -s ../bin/systemctl %{buildroot}/sbin/halt
ln -s ../bin/systemctl %{buildroot}/sbin/shutdown
@ -388,6 +396,7 @@ rm -rf %{buildroot}
%dir /lib/systemd
/lib/systemd/system
/lib/systemd/system-generators
/lib/systemd/systemd
%dir /usr/lib/systemd
/usr/lib/systemd/user
%dir %{_sysconfdir}/systemd