forked from pool/systemd
Accepting request 100588 from home:tittiatcoke:branches:Base:System
Package needs OK from fcrozat. Update to the latest systemd-38 version. Additional listen.conf so that rsyslog keeps working. Also added xz as an explicit buildrequires to ensure that the tarball can be unpacked. OBS-URL: https://build.opensuse.org/request/show/100588 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=232
This commit is contained in:
parent
437761c103
commit
a29d3c0ae3
@ -1,4 +1,4 @@
|
|||||||
From 5c894bc1e45f7c34bf7fc4ca0d20bf1c3b679bef Mon Sep 17 00:00:00 2001
|
m 5c894bc1e45f7c34bf7fc4ca0d20bf1c3b679bef Mon Sep 17 00:00:00 2001
|
||||||
From: Frederic Crozat <fcrozat@suse.com>
|
From: Frederic Crozat <fcrozat@suse.com>
|
||||||
Date: Thu, 18 Aug 2011 18:28:01 +0200
|
Date: Thu, 18 Aug 2011 18:28:01 +0200
|
||||||
Subject: [PATCH] handle disable_caplock and compose_table and kbd_rate
|
Subject: [PATCH] handle disable_caplock and compose_table and kbd_rate
|
||||||
@ -9,8 +9,8 @@ Subject: [PATCH] handle disable_caplock and compose_table and kbd_rate
|
|||||||
|
|
||||||
Index: systemd-37/src/vconsole-setup.c
|
Index: systemd-37/src/vconsole-setup.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- systemd-37.orig/src/vconsole-setup.c
|
--- systemd-37.orig/src/vconsole/vconsole-setup.c
|
||||||
+++ systemd-37/src/vconsole-setup.c
|
+++ systemd-37/src/vconsole/vconsole-setup.c
|
||||||
@@ -40,6 +40,7 @@
|
@@ -40,6 +40,7 @@
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
@ -19,7 +19,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
|
|
||||||
static bool is_vconsole(int fd) {
|
static bool is_vconsole(int fd) {
|
||||||
unsigned char data[1];
|
unsigned char data[1];
|
||||||
@@ -79,8 +80,8 @@ static int disable_utf8(int fd) {
|
@@ -79,8 +80,8 @@
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
@@ -99,6 +100,8 @@ static int load_keymap(const char *vc, c
|
@@ -99,6 +100,8 @@
|
||||||
args[i++] = map;
|
args[i++] = map;
|
||||||
if (map_toggle)
|
if (map_toggle)
|
||||||
args[i++] = map_toggle;
|
args[i++] = map_toggle;
|
||||||
@ -39,7 +39,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
args[i++] = NULL;
|
args[i++] = NULL;
|
||||||
|
|
||||||
if ((pid = fork()) < 0) {
|
if ((pid = fork()) < 0) {
|
||||||
@@ -150,6 +153,101 @@ static int load_font(const char *vc, con
|
@@ -150,6 +153,101 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,8 +141,8 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
const char *vc;
|
const char *vc;
|
||||||
char *vc_keymap = NULL;
|
char *vc_keymap = NULL;
|
||||||
@@ -163,8 +261,16 @@ int main(int argc, char **argv) {
|
@@ -163,8 +261,16 @@
|
||||||
#ifdef TARGET_MANDRIVA
|
#if defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
|
||||||
char *vc_keytable = NULL;
|
char *vc_keytable = NULL;
|
||||||
#endif
|
#endif
|
||||||
+#ifdef TARGET_SUSE
|
+#ifdef TARGET_SUSE
|
||||||
@ -158,7 +158,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
int r = EXIT_FAILURE;
|
int r = EXIT_FAILURE;
|
||||||
pid_t font_pid = 0, keymap_pid = 0;
|
pid_t font_pid = 0, keymap_pid = 0;
|
||||||
|
|
||||||
@@ -265,6 +371,10 @@ int main(int argc, char **argv) {
|
@@ -265,6 +371,10 @@
|
||||||
#elif defined(TARGET_SUSE)
|
#elif defined(TARGET_SUSE)
|
||||||
if ((r = parse_env_file("/etc/sysconfig/keyboard", NEWLINE,
|
if ((r = parse_env_file("/etc/sysconfig/keyboard", NEWLINE,
|
||||||
"KEYTABLE", &vc_keymap,
|
"KEYTABLE", &vc_keymap,
|
||||||
@ -169,7 +169,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
NULL)) < 0) {
|
NULL)) < 0) {
|
||||||
|
|
||||||
if (r != -ENOENT)
|
if (r != -ENOENT)
|
||||||
@@ -280,6 +390,7 @@ int main(int argc, char **argv) {
|
@@ -280,6 +390,7 @@
|
||||||
if (r != -ENOENT)
|
if (r != -ENOENT)
|
||||||
log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));
|
log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
|
|
||||||
#elif defined(TARGET_ARCH)
|
#elif defined(TARGET_ARCH)
|
||||||
if ((r = parse_env_file("/etc/rc.conf", NEWLINE,
|
if ((r = parse_env_file("/etc/rc.conf", NEWLINE,
|
||||||
@@ -436,7 +547,11 @@ int main(int argc, char **argv) {
|
@@ -436,7 +547,11 @@
|
||||||
if (!utf8)
|
if (!utf8)
|
||||||
disable_utf8(fd);
|
disable_utf8(fd);
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
load_font(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0)
|
load_font(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0)
|
||||||
r = EXIT_SUCCESS;
|
r = EXIT_SUCCESS;
|
||||||
|
|
||||||
@@ -444,6 +559,14 @@ finish:
|
@@ -444,6 +559,14 @@
|
||||||
if (keymap_pid > 0)
|
if (keymap_pid > 0)
|
||||||
wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);
|
wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
if (font_pid > 0)
|
if (font_pid > 0)
|
||||||
wait_for_terminate_and_warn(KBD_SETFONT, font_pid);
|
wait_for_terminate_and_warn(KBD_SETFONT, font_pid);
|
||||||
|
|
||||||
@@ -451,6 +574,12 @@ finish:
|
@@ -451,6 +574,12 @@
|
||||||
free(vc_font);
|
free(vc_font);
|
||||||
free(vc_font_map);
|
free(vc_font_map);
|
||||||
free(vc_font_unimap);
|
free(vc_font_unimap);
|
||||||
@ -218,3 +218,4 @@ Index: systemd-37/src/vconsole-setup.c
|
|||||||
|
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
close_nointr_nofail(fd);
|
close_nointr_nofail(fd);
|
||||||
|
Only in new/src/vconsole: vconsole-setup.c.orig
|
||||||
|
@ -7,11 +7,15 @@ Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf
|
|||||||
src/service.c | 16 +++++++++-------
|
src/service.c | 16 +++++++++-------
|
||||||
1 files changed, 9 insertions(+), 7 deletions(-)
|
1 files changed, 9 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/service.c b/src/service.c
|
Index: systemd-37/src/service.c
|
||||||
index c2053ce..4abc7e7 100644
|
===================================================================
|
||||||
--- a/src/service.c
|
--- systemd-37.orig/src/service.c
|
||||||
+++ b/src/service.c
|
+++ systemd-37/src/service.c
|
||||||
@@ -3031,18 +3031,20 @@ static void sysv_facility_in_insserv_conf(Manager *mgr) {
|
@@ -3028,22 +3028,23 @@ static void sysv_facility_in_insserv_con
|
||||||
|
if (sysv_translate_facility(parsed[0], NULL, &facility) < 0)
|
||||||
|
continue;
|
||||||
|
if ((u = manager_get_unit(mgr, facility)) && (u->meta.type == UNIT_TARGET)) {
|
||||||
|
- UnitDependency e;
|
||||||
char *dep = NULL, *name, **j;
|
char *dep = NULL, *name, **j;
|
||||||
|
|
||||||
STRV_FOREACH (j, parsed+1) {
|
STRV_FOREACH (j, parsed+1) {
|
||||||
@ -39,6 +43,3 @@ index c2053ce..4abc7e7 100644
|
|||||||
free(dep);
|
free(dep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--
|
|
||||||
1.7.3.4
|
|
||||||
|
|
||||||
|
@ -1,40 +1,109 @@
|
|||||||
|
|
||||||
Devices with random keys (swap), should not be ordered before local-fs.target,
|
Rather than ordering systemd-random-seed-load.service after local-fs.target,
|
||||||
as this creates a cycle with systemd-load-random-seed.service (and also it
|
start it by path-activation.
|
||||||
does not make sense, a swap device is not a local-fs).
|
|
||||||
|
We need write access to the seed, so we order the path unit after
|
||||||
|
remount-rootfs.service (in case /var is on the root fs).
|
||||||
|
|
||||||
|
A better solution might be to introduce PathIsWritable=, but that is not
|
||||||
|
necessary in order to solve the problem, and I don't know of any other
|
||||||
|
usecases for it.
|
||||||
|
|
||||||
|
Cc: Frederic Crozat <fcrozat@suse.com>
|
||||||
|
Cc: Michal Schmidt <mschmidt@redhat.com>
|
||||||
---
|
---
|
||||||
src/cryptsetup-generator.c | 6 ++++--
|
|
||||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/cryptsetup-generator.c b/src/cryptsetup-generator.c
|
This is my second attempt at solving this problem. The first one had
|
||||||
index 6f3aa78..a48b7a4 100644
|
some issues as pointed out by Frederic and Michael.
|
||||||
--- a/src/cryptsetup-generator.c
|
|
||||||
+++ b/src/cryptsetup-generator.c
|
Makefile.am | 7 +++++--
|
||||||
@@ -112,8 +112,7 @@ static int create_disk(
|
TODO | 2 --
|
||||||
"DefaultDependencies=no\n"
|
units/.gitignore | 1 +
|
||||||
"BindTo=%s dev-mapper-%%i.device\n"
|
units/systemd-random-seed-load.path.in | 18 ++++++++++++++++++
|
||||||
"After=systemd-readahead-collect.service systemd-readahead-replay.service %s\n"
|
units/systemd-random-seed-load.service.in | 3 +--
|
||||||
- "Before=umount.target\n"
|
5 files changed, 25 insertions(+), 6 deletions(-)
|
||||||
- "Before=local-fs.target\n",
|
create mode 100644 units/systemd-random-seed-load.path.in
|
||||||
+ "Before=umount.target\n",
|
|
||||||
d, d);
|
diff -urB systemd-38/Makefile.am new/Makefile.am
|
||||||
|
--- systemd-38/Makefile.am 2012-01-11 04:01:36.734404653 +0100
|
||||||
|
+++ new/Makefile.am 2012-01-18 09:53:12.763115731 +0100
|
||||||
|
@@ -1530,11 +1530,14 @@
|
||||||
|
|
||||||
if (!nofail)
|
nodist_systemunit_DATA += \
|
||||||
@@ -125,6 +124,9 @@ static int create_disk(
|
units/systemd-random-seed-save.service \
|
||||||
streq(password, "/dev/hw_random")))
|
- units/systemd-random-seed-load.service
|
||||||
fprintf(f,
|
+ units/systemd-random-seed-load.service \
|
||||||
"After=systemd-random-seed-load.service\n");
|
+ units/systemd-random-seed-load.path
|
||||||
+ else
|
+
|
||||||
+ fprintf(f,
|
|
||||||
+ "Before=local-fs.target\n");
|
|
||||||
|
|
||||||
fprintf(f,
|
EXTRA_DIST += \
|
||||||
"\n[Service]\n"
|
units/systemd-random-seed-save.service.in \
|
||||||
|
- units/systemd-random-seed-load.service.in
|
||||||
|
+ units/systemd-random-seed-load.service.in \
|
||||||
|
+ units/systemd-random-seed-load.path.in
|
||||||
|
|
||||||
|
systemd_random_seed_SOURCES = \
|
||||||
|
src/random-seed.c
|
||||||
|
@@ -1550,8 +1553,8 @@
|
||||||
|
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 )
|
||||||
|
+ rm -f systemd-random-seed-load.path && \
|
||||||
|
+ $(LN_S) ../systemd-random-seed-load.path systemd-random-seed-load.path )
|
||||||
|
|
||||||
|
INSTALL_DATA_HOOKS += \
|
||||||
|
randomseed-install-data-hook
|
||||||
|
@@ -2052,6 +2055,7 @@
|
||||||
|
-e 's,@exec_prefix\@,$(exec_prefix),g' \
|
||||||
|
-e 's,@libdir\@,$(libdir),g' \
|
||||||
|
-e 's,@includedir\@,$(includedir),g' \
|
||||||
|
+ -e 's,@localstatedir\@,$(localstatedir),g' \
|
||||||
|
< $< > $@ || rm $@
|
||||||
|
|
||||||
|
units/%: units/%.in Makefile
|
||||||
|
diff --git a/units/systemd-random-seed-load.path.in b/units/systemd-random-seed-load.path.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..614c1d4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/units/systemd-random-seed-load.path.in
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+# 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.
|
||||||
|
+
|
||||||
|
+[Unit]
|
||||||
|
+Description=Random Seed
|
||||||
|
+DefaultDependencies=no
|
||||||
|
+Conflicts=shutdown.target
|
||||||
|
+Before=basic.target shutdown.target
|
||||||
|
+# in case the seed is on the rootfs, we must
|
||||||
|
+# wait for the rootfs to be remonuted rw
|
||||||
|
+After=remount-rootfs.service
|
||||||
|
+
|
||||||
|
+[Path]
|
||||||
|
+PathExists=@localstatedir@/lib/random-seed
|
||||||
|
diff --git a/units/systemd-random-seed-load.service.in b/units/systemd-random-seed-load.service.in
|
||||||
|
index a2b6a55..2bcf1aa 100644
|
||||||
|
--- a/units/systemd-random-seed-load.service.in
|
||||||
|
+++ b/units/systemd-random-seed-load.service.in
|
||||||
|
@@ -8,9 +8,8 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Load Random Seed
|
||||||
|
DefaultDependencies=no
|
||||||
|
-Wants=local-fs.target
|
||||||
|
Conflicts=shutdown.target
|
||||||
|
-After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
|
||||||
|
+After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-random-seed-load.path
|
||||||
|
Before=sysinit.target shutdown.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
--
|
--
|
||||||
1.7.7
|
1.7.8
|
||||||
|
|
||||||
|
|
||||||
_______________________________________________
|
|
||||||
systemd-devel mailing list
|
|
||||||
systemd-devel@lists.freedesktop.org
|
|
||||||
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
|
|
||||||
|
|
||||||
|
@ -1,131 +0,0 @@
|
|||||||
From 5831e9b726ab6e76b28a94861a014d3bc2aa3015 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Thu, 10 Nov 2011 12:53:39 +0100
|
|
||||||
Subject: [PATCH] job: colored status messages on boot
|
|
||||||
|
|
||||||
The lack or green/red status marks on boot has been described by some
|
|
||||||
users as "critical", "dramatic", "dealbreaker", "showstopper". Seriously.
|
|
||||||
---
|
|
||||||
src/job.c | 13 +++++++------
|
|
||||||
src/unit.c | 24 ++++++++++++++++++++----
|
|
||||||
src/unit.h | 2 +-
|
|
||||||
3 files changed, 28 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/job.c b/src/job.c
|
|
||||||
index 20971da..1520d81 100644
|
|
||||||
--- a/src/job.c
|
|
||||||
+++ b/src/job.c
|
|
||||||
@@ -484,19 +484,20 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
|
|
||||||
switch (result) {
|
|
||||||
|
|
||||||
case JOB_DONE:
|
|
||||||
- unit_status_printf(u, "Started %s.\n", unit_description(u));
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, "Started %s", unit_description(u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JOB_FAILED:
|
|
||||||
- unit_status_printf(u, "Starting %s " ANSI_HIGHLIGHT_ON "failed" ANSI_HIGHLIGHT_OFF ", see 'systemctl status %s' for details.\n", unit_description(u), u->meta.id);
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_ON "FAILED" ANSI_HIGHLIGHT_OFF, "Failed to start %s", unit_description(u));
|
|
||||||
+ unit_status_printf(u, NULL, "See 'systemctl status %s' for details.", u->meta.id);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JOB_DEPENDENCY:
|
|
||||||
- unit_status_printf(u, "Starting %s " ANSI_HIGHLIGHT_ON "aborted" ANSI_HIGHLIGHT_OFF " because a dependency failed.\n", unit_description(u));
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_ON " ABORT" ANSI_HIGHLIGHT_OFF, "Dependency failed. Aborted start of %s", unit_description(u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JOB_TIMEOUT:
|
|
||||||
- unit_status_printf(u, "Starting %s " ANSI_HIGHLIGHT_ON "timed out" ANSI_HIGHLIGHT_OFF ".\n", unit_description(u), u->meta.id);
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_ON " TIME " ANSI_HIGHLIGHT_OFF, "Timed out starting %s", unit_description(u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
@@ -508,12 +509,12 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
|
|
||||||
switch (result) {
|
|
||||||
|
|
||||||
case JOB_TIMEOUT:
|
|
||||||
- unit_status_printf(u, "Stopping %s " ANSI_HIGHLIGHT_ON "timed out" ANSI_HIGHLIGHT_OFF ".\n", unit_description(u), u->meta.id);
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_ON " TIME " ANSI_HIGHLIGHT_OFF, "Timed out stopping %s", unit_description(u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JOB_DONE:
|
|
||||||
case JOB_FAILED:
|
|
||||||
- unit_status_printf(u, "Stopped %s.\n", unit_description(u));
|
|
||||||
+ unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, "Stopped %s", unit_description(u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
diff --git a/src/unit.c b/src/unit.c
|
|
||||||
index 903a8e4..ad4063b 100644
|
|
||||||
--- a/src/unit.c
|
|
||||||
+++ b/src/unit.c
|
|
||||||
@@ -924,7 +924,7 @@ int unit_start(Unit *u) {
|
|
||||||
|
|
||||||
unit_add_to_dbus_queue(u);
|
|
||||||
|
|
||||||
- unit_status_printf(u, "Starting %s...\n", unit_description(u));
|
|
||||||
+ unit_status_printf(u, NULL, "Starting %s...", unit_description(u));
|
|
||||||
return UNIT_VTABLE(u)->start(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -966,7 +966,7 @@ int unit_stop(Unit *u) {
|
|
||||||
|
|
||||||
unit_add_to_dbus_queue(u);
|
|
||||||
|
|
||||||
- unit_status_printf(u, "Stopping %s...\n", unit_description(u));
|
|
||||||
+ unit_status_printf(u, NULL, "Stopping %s...", unit_description(u));
|
|
||||||
return UNIT_VTABLE(u)->stop(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2426,8 +2426,11 @@ int unit_coldplug(Unit *u) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void unit_status_printf(Unit *u, const char *format, ...) {
|
|
||||||
+void unit_status_printf(Unit *u, const char *status, const char *format, ...) {
|
|
||||||
va_list ap;
|
|
||||||
+ char *s, *e;
|
|
||||||
+ int err;
|
|
||||||
+ const unsigned emax = status ? 80 - (sizeof("[ OK ]")-1) : 80;
|
|
||||||
|
|
||||||
assert(u);
|
|
||||||
assert(format);
|
|
||||||
@@ -2442,8 +2445,21 @@ void unit_status_printf(Unit *u, const char *format, ...) {
|
|
||||||
return;
|
|
||||||
|
|
||||||
va_start(ap, format);
|
|
||||||
- status_vprintf(format, ap);
|
|
||||||
+ err = vasprintf(&s, format, ap);
|
|
||||||
va_end(ap);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ e = ellipsize(s, emax, 100);
|
|
||||||
+ free(s);
|
|
||||||
+ if (!e)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ if (status)
|
|
||||||
+ status_printf("%s%*s[%s]\n", e, emax - strlen(e), "", status);
|
|
||||||
+ else
|
|
||||||
+ status_printf("%s\n", e);
|
|
||||||
+ free(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool unit_need_daemon_reload(Unit *u) {
|
|
||||||
diff --git a/src/unit.h b/src/unit.h
|
|
||||||
index 7da5723..b32c1a7 100644
|
|
||||||
--- a/src/unit.h
|
|
||||||
+++ b/src/unit.h
|
|
||||||
@@ -512,7 +512,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants);
|
|
||||||
|
|
||||||
int unit_coldplug(Unit *u);
|
|
||||||
|
|
||||||
-void unit_status_printf(Unit *u, const char *format, ...);
|
|
||||||
+void unit_status_printf(Unit *u, const char *status, const char *format, ...);
|
|
||||||
|
|
||||||
bool unit_need_daemon_reload(Unit *u);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
From 563ba9ea6e60774086555998b957edf923e24b46 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Mon, 17 Oct 2011 11:12:12 +0200
|
|
||||||
Subject: [PATCH] manager: fix a crash in isolating
|
|
||||||
|
|
||||||
HASHMAP_FOREACH is safe against the removal of the current entry, but
|
|
||||||
not against the removal of other entries. job_finish_and_invalidate()
|
|
||||||
can recursively remove other entries.
|
|
||||||
|
|
||||||
It triggered an assertion failure:
|
|
||||||
Assertion 'j->installed' failed at src/manager.c:1218, function
|
|
||||||
transaction_apply(). Aborting.
|
|
||||||
|
|
||||||
Fix the crash by iterating from the beginning when there is a
|
|
||||||
possibility that the iterator could be invalid.
|
|
||||||
|
|
||||||
It is O(n^2) in the worst case, but that's better than a crash.
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=717325
|
|
||||||
---
|
|
||||||
src/job.c | 19 ++++++++++++++-----
|
|
||||||
src/manager.c | 7 ++++++-
|
|
||||||
2 files changed, 20 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/job.c b/src/job.c
|
|
||||||
index 5c0913b..20971da 100644
|
|
||||||
--- a/src/job.c
|
|
||||||
+++ b/src/job.c
|
|
||||||
@@ -527,6 +527,7 @@ int job_finish_and_invalidate(Job *j, JobResult result) {
|
|
||||||
Unit *other;
|
|
||||||
JobType t;
|
|
||||||
Iterator i;
|
|
||||||
+ bool recursed = false;
|
|
||||||
|
|
||||||
assert(j);
|
|
||||||
assert(j->installed);
|
|
||||||
@@ -573,23 +574,29 @@ int job_finish_and_invalidate(Job *j, JobResult result) {
|
|
||||||
if (other->meta.job &&
|
|
||||||
(other->meta.job->type == JOB_START ||
|
|
||||||
other->meta.job->type == JOB_VERIFY_ACTIVE ||
|
|
||||||
- other->meta.job->type == JOB_RELOAD_OR_START))
|
|
||||||
+ other->meta.job->type == JOB_RELOAD_OR_START)) {
|
|
||||||
job_finish_and_invalidate(other->meta.job, JOB_DEPENDENCY);
|
|
||||||
+ recursed = true;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
SET_FOREACH(other, u->meta.dependencies[UNIT_BOUND_BY], i)
|
|
||||||
if (other->meta.job &&
|
|
||||||
(other->meta.job->type == JOB_START ||
|
|
||||||
other->meta.job->type == JOB_VERIFY_ACTIVE ||
|
|
||||||
- other->meta.job->type == JOB_RELOAD_OR_START))
|
|
||||||
+ other->meta.job->type == JOB_RELOAD_OR_START)) {
|
|
||||||
job_finish_and_invalidate(other->meta.job, JOB_DEPENDENCY);
|
|
||||||
+ recursed = true;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRED_BY_OVERRIDABLE], i)
|
|
||||||
if (other->meta.job &&
|
|
||||||
!other->meta.job->override &&
|
|
||||||
(other->meta.job->type == JOB_START ||
|
|
||||||
other->meta.job->type == JOB_VERIFY_ACTIVE ||
|
|
||||||
- other->meta.job->type == JOB_RELOAD_OR_START))
|
|
||||||
+ other->meta.job->type == JOB_RELOAD_OR_START)) {
|
|
||||||
job_finish_and_invalidate(other->meta.job, JOB_DEPENDENCY);
|
|
||||||
+ recursed = true;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
} else if (t == JOB_STOP) {
|
|
||||||
|
|
||||||
@@ -597,8 +604,10 @@ int job_finish_and_invalidate(Job *j, JobResult result) {
|
|
||||||
if (other->meta.job &&
|
|
||||||
(other->meta.job->type == JOB_START ||
|
|
||||||
other->meta.job->type == JOB_VERIFY_ACTIVE ||
|
|
||||||
- other->meta.job->type == JOB_RELOAD_OR_START))
|
|
||||||
+ other->meta.job->type == JOB_RELOAD_OR_START)) {
|
|
||||||
job_finish_and_invalidate(other->meta.job, JOB_DEPENDENCY);
|
|
||||||
+ recursed = true;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -626,7 +635,7 @@ finish:
|
|
||||||
|
|
||||||
manager_check_finished(u->meta.manager);
|
|
||||||
|
|
||||||
- return 0;
|
|
||||||
+ return recursed;
|
|
||||||
}
|
|
||||||
|
|
||||||
int job_start_timer(Job *j) {
|
|
||||||
diff --git a/src/manager.c b/src/manager.c
|
|
||||||
index e626347..6d20258 100644
|
|
||||||
--- a/src/manager.c
|
|
||||||
+++ b/src/manager.c
|
|
||||||
@@ -1214,13 +1214,18 @@ static int transaction_apply(Manager *m, JobMode mode) {
|
|
||||||
|
|
||||||
/* When isolating first kill all installed jobs which
|
|
||||||
* aren't part of the new transaction */
|
|
||||||
+ rescan:
|
|
||||||
HASHMAP_FOREACH(j, m->jobs, i) {
|
|
||||||
assert(j->installed);
|
|
||||||
|
|
||||||
if (hashmap_get(m->transaction_jobs, j->unit))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- job_finish_and_invalidate(j, JOB_CANCELED);
|
|
||||||
+ /* 'j' itself is safe to remove, but if other jobs
|
|
||||||
+ are invalidated recursively, our iterator may become
|
|
||||||
+ invalid and we need to start over. */
|
|
||||||
+ if (job_finish_and_invalidate(j, JOB_CANCELED) > 0)
|
|
||||||
+ goto rescan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.3.4
|
|
||||||
|
|
@ -1,81 +0,0 @@
|
|||||||
From 1dc995370987660ff045ff4d7cf512da0390cf96 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Sat, 19 Nov 2011 01:14:11 +0100
|
|
||||||
Subject: [PATCH 1/2] pam-module: use the correct session type "unspecified"
|
|
||||||
|
|
||||||
logind does not understand "other".
|
|
||||||
---
|
|
||||||
src/pam-module.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/pam-module.c b/src/pam-module.c
|
|
||||||
index dd05f93..e650886 100644
|
|
||||||
--- a/src/pam-module.c
|
|
||||||
+++ b/src/pam-module.c
|
|
||||||
@@ -472,7 +472,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
|
|
||||||
get_seat_from_display(display, &seat, &vtnr);
|
|
||||||
|
|
||||||
type = !isempty(display) ? "x11" :
|
|
||||||
- !isempty(tty) ? "tty" : "other";
|
|
||||||
+ !isempty(tty) ? "tty" : "unspecified";
|
|
||||||
|
|
||||||
remote = !isempty(remote_host) && !streq(remote_host, "localhost") && !streq(remote_host, "localhost.localdomain");
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
|
|
||||||
From 1a4459d63323cdfdb8751077e555ddbbf80564b1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Sat, 19 Nov 2011 01:17:46 +0100
|
|
||||||
Subject: [PATCH 2/2] pam-module: treat "cron" in PAM_TTY as empty tty
|
|
||||||
|
|
||||||
cron sets PAM_TTY to "cron" and it has been doing it for a long time.
|
|
||||||
It cannot be changed because user configurations may depend on it.
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=727315
|
|
||||||
---
|
|
||||||
src/logind-session.c | 4 ++--
|
|
||||||
src/pam-module.c | 4 ++++
|
|
||||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/logind-session.c b/src/logind-session.c
|
|
||||||
index b0a09e3..63ee758 100644
|
|
||||||
--- a/src/logind-session.c
|
|
||||||
+++ b/src/logind-session.c
|
|
||||||
@@ -536,7 +536,7 @@ int session_start(Session *s) {
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
- log_full(s->display || s->tty ? LOG_INFO : LOG_DEBUG,
|
|
||||||
+ log_full(s->type == SESSION_TTY || s->type == SESSION_X11 ? LOG_INFO : LOG_DEBUG,
|
|
||||||
"New session %s of user %s.", s->id, s->user->name);
|
|
||||||
|
|
||||||
/* Create cgroup */
|
|
||||||
@@ -659,7 +659,7 @@ int session_stop(Session *s) {
|
|
||||||
assert(s);
|
|
||||||
|
|
||||||
if (s->started)
|
|
||||||
- log_full(s->display || s->tty ? LOG_INFO : LOG_DEBUG,
|
|
||||||
+ log_full(s->type == SESSION_TTY || s->type == SESSION_X11 ? LOG_INFO : LOG_DEBUG,
|
|
||||||
"Removed session %s.", s->id);
|
|
||||||
|
|
||||||
/* Kill cgroup */
|
|
||||||
diff --git a/src/pam-module.c b/src/pam-module.c
|
|
||||||
index e650886..46b7bec 100644
|
|
||||||
--- a/src/pam-module.c
|
|
||||||
+++ b/src/pam-module.c
|
|
||||||
@@ -463,6 +463,10 @@ _public_ PAM_EXTERN int pam_sm_open_session(
|
|
||||||
if (isempty(display))
|
|
||||||
display = tty;
|
|
||||||
tty = "";
|
|
||||||
+ } else if (streq(tty, "cron")) {
|
|
||||||
+ /* cron has been setting PAM_TTY to "cron" for a very long time
|
|
||||||
+ * and it cannot stop doing that for compatibility reasons. */
|
|
||||||
+ tty = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isempty(cvtnr))
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Index: systemd-37/src/cryptsetup-generator.c
|
Index: systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- systemd-37.orig/src/cryptsetup-generator.c
|
--- systemd-37.orig/src/cryptsetup/cryptsetup-generator.c
|
||||||
+++ systemd-37/src/cryptsetup-generator.c
|
+++ systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
@@ -138,7 +138,7 @@ static int create_disk(
|
@@ -138,7 +138,7 @@ static int create_disk(
|
||||||
const char *password,
|
const char *password,
|
||||||
const char *options) {
|
const char *options) {
|
||||||
|
@ -8,11 +8,11 @@ Subject: [PATCH] delay fsck / cryptsetup after md / dmraid / lvm are started
|
|||||||
units/fsck@.service.in | 2 +-
|
units/fsck@.service.in | 2 +-
|
||||||
2 files changed, 2 insertions(+), 1 deletions(-)
|
2 files changed, 2 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/cryptsetup-generator.c b/src/cryptsetup-generator.c
|
Index: systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
index 14fcce8..e62f0e0 100644
|
===================================================================
|
||||||
--- a/src/cryptsetup-generator.c
|
--- systemd-37.orig/src/cryptsetup/cryptsetup-generator.c
|
||||||
+++ b/src/cryptsetup-generator.c
|
+++ systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
@@ -186,6 +186,7 @@ static int create_disk(
|
@@ -112,6 +112,7 @@ static int create_disk(
|
||||||
"DefaultDependencies=no\n"
|
"DefaultDependencies=no\n"
|
||||||
"BindTo=%s dev-mapper-%%i.device\n"
|
"BindTo=%s dev-mapper-%%i.device\n"
|
||||||
"After=systemd-readahead-collect.service systemd-readahead-replay.service %s\n"
|
"After=systemd-readahead-collect.service systemd-readahead-replay.service %s\n"
|
||||||
@ -20,10 +20,10 @@ index 14fcce8..e62f0e0 100644
|
|||||||
"Before=umount.target\n",
|
"Before=umount.target\n",
|
||||||
d, d);
|
d, d);
|
||||||
|
|
||||||
diff --git a/units/fsck@.service.in b/units/fsck@.service.in
|
Index: systemd-37/units/fsck@.service.in
|
||||||
index e1f7736..c1870ce 100644
|
===================================================================
|
||||||
--- a/units/fsck@.service.in
|
--- systemd-37.orig/units/fsck@.service.in
|
||||||
+++ b/units/fsck@.service.in
|
+++ systemd-37/units/fsck@.service.in
|
||||||
@@ -9,7 +9,7 @@
|
@@ -9,7 +9,7 @@
|
||||||
Description=File System Check on %f
|
Description=File System Check on %f
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
@ -33,6 +33,3 @@ index e1f7736..c1870ce 100644
|
|||||||
Before=shutdown.target
|
Before=shutdown.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
From c5419d4239ceb4c3bd0263a0a810cf24a072b3c0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Thu, 10 Nov 2011 09:55:47 +0100
|
|
||||||
Subject: [PATCH] service: don't warn if the pidfile still exists after
|
|
||||||
SIGCHLD
|
|
||||||
|
|
||||||
A service that drops its privileges may not be able to remove it when it
|
|
||||||
exits. The stale pidfile is not a problem as long as the service
|
|
||||||
carefully recognizes it on its next start.
|
|
||||||
|
|
||||||
systemd would produce a warning after the service exits:
|
|
||||||
PID ... read from file ... does not exist. Your service or init
|
|
||||||
script might be broken.
|
|
||||||
|
|
||||||
Silence the warning in this case. Still warn if this error is detected
|
|
||||||
when loading the pidfile after service start.
|
|
||||||
|
|
||||||
Noticed by Miroslav Lichvar in
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=752396
|
|
||||||
---
|
|
||||||
src/service.c | 9 +++++----
|
|
||||||
1 files changed, 5 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/service.c b/src/service.c
|
|
||||||
index eb475d9..6fc2484 100644
|
|
||||||
--- a/src/service.c
|
|
||||||
+++ b/src/service.c
|
|
||||||
@@ -1290,7 +1290,7 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) {
|
|
||||||
free(p2);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int service_load_pid_file(Service *s, bool warn_if_missing) {
|
|
||||||
+static int service_load_pid_file(Service *s, bool may_warn) {
|
|
||||||
char *k;
|
|
||||||
int r;
|
|
||||||
pid_t pid;
|
|
||||||
@@ -1301,7 +1301,7 @@ static int service_load_pid_file(Service *s, bool warn_if_missing) {
|
|
||||||
return -ENOENT;
|
|
||||||
|
|
||||||
if ((r = read_one_line_file(s->pid_file, &k)) < 0) {
|
|
||||||
- if (warn_if_missing)
|
|
||||||
+ if (may_warn)
|
|
||||||
log_warning("Failed to read PID file %s after %s. The service might be broken.",
|
|
||||||
s->pid_file, service_state_to_string(s->state));
|
|
||||||
return r;
|
|
||||||
@@ -1314,8 +1314,9 @@ static int service_load_pid_file(Service *s, bool warn_if_missing) {
|
|
||||||
return r;
|
|
||||||
|
|
||||||
if (kill(pid, 0) < 0 && errno != EPERM) {
|
|
||||||
- log_warning("PID %lu read from file %s does not exist. Your service or init script might be broken.",
|
|
||||||
- (unsigned long) pid, s->pid_file);
|
|
||||||
+ if (may_warn)
|
|
||||||
+ log_warning("PID %lu read from file %s does not exist. Your service or init script might be broken.",
|
|
||||||
+ (unsigned long) pid, s->pid_file);
|
|
||||||
return -ESRCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 9a46fc3b9014de1bf0ed1f3004a536b08a19ebb3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Tue, 6 Dec 2011 00:47:28 +0100
|
|
||||||
Subject: [PATCH] unit: garbage collect units with load error
|
|
||||||
|
|
||||||
Units that failed to load were never cleaned up. It was possible to
|
|
||||||
reach the 128K limit of units by attempting to load a bunch of nonsense.
|
|
||||||
|
|
||||||
Bug observed by Reartes Guillermo in
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=680122
|
|
||||||
---
|
|
||||||
src/unit.c | 1 +
|
|
||||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/unit.c b/src/unit.c
|
|
||||||
index 2a549e2..018e986 100644
|
|
||||||
--- a/src/unit.c
|
|
||||||
+++ b/src/unit.c
|
|
||||||
@@ -858,6 +858,7 @@ fail:
|
|
||||||
u->meta.load_state = UNIT_ERROR;
|
|
||||||
u->meta.load_error = r;
|
|
||||||
unit_add_to_dbus_queue(u);
|
|
||||||
+ unit_add_to_gc_queue(u);
|
|
||||||
|
|
||||||
log_debug("Failed to load configuration for %s: %s", u->meta.id, strerror(-r));
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
1
listen.conf
Normal file
1
listen.conf
Normal file
@ -0,0 +1 @@
|
|||||||
|
$SystemLogSocketName /run/systemd/journal/syslog
|
@ -1,586 +0,0 @@
|
|||||||
From 4d8a7798e7f12c6400495cbc4d0ad57ed20ce90a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Wed, 16 Nov 2011 23:45:01 +0100
|
|
||||||
Subject: [PATCH 1/3] execute: avoid logging to closed fds
|
|
||||||
|
|
||||||
Several functions called from the "sd(EXEC)" process try to log messages
|
|
||||||
when all the file descriptors are already closed, including the logging
|
|
||||||
ones. The logging functions do not expect their fds to be closed and
|
|
||||||
they hit an assertion failure. The failure wants to be logged too,
|
|
||||||
so there is an infinite recursion, ended by a SIGSEGV.
|
|
||||||
|
|
||||||
When we close all fds, we must let log.c know about it.
|
|
||||||
---
|
|
||||||
src/execute.c | 1 +
|
|
||||||
src/log.c | 4 ++++
|
|
||||||
src/log.h | 1 +
|
|
||||||
3 files changed, 6 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/execute.c b/src/execute.c
|
|
||||||
index 250d53a..0651014 100644
|
|
||||||
--- a/src/execute.c
|
|
||||||
+++ b/src/execute.c
|
|
||||||
@@ -1016,6 +1016,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
/* Close sockets very early to make sure we don't
|
|
||||||
* block init reexecution because it cannot bind its
|
|
||||||
* sockets */
|
|
||||||
+ log_forget_fds();
|
|
||||||
if (close_all_fds(socket_fd >= 0 ? &socket_fd : fds,
|
|
||||||
socket_fd >= 0 ? 1 : n_fds) < 0) {
|
|
||||||
r = EXIT_FDS;
|
|
||||||
diff --git a/src/log.c b/src/log.c
|
|
||||||
index b8ce122..5c5b734 100644
|
|
||||||
--- a/src/log.c
|
|
||||||
+++ b/src/log.c
|
|
||||||
@@ -237,6 +237,10 @@ void log_close(void) {
|
|
||||||
log_close_syslog();
|
|
||||||
}
|
|
||||||
|
|
||||||
+void log_forget_fds(void) {
|
|
||||||
+ console_fd = kmsg_fd = syslog_fd = -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void log_set_max_level(int level) {
|
|
||||||
assert((level & LOG_PRIMASK) == level);
|
|
||||||
|
|
||||||
diff --git a/src/log.h b/src/log.h
|
|
||||||
index c402afb..9942e3e 100644
|
|
||||||
--- a/src/log.h
|
|
||||||
+++ b/src/log.h
|
|
||||||
@@ -57,6 +57,7 @@ int log_get_max_level(void);
|
|
||||||
|
|
||||||
int log_open(void);
|
|
||||||
void log_close(void);
|
|
||||||
+void log_forget_fds(void);
|
|
||||||
|
|
||||||
void log_close_syslog(void);
|
|
||||||
void log_close_kmsg(void);
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
|
|
||||||
From 9ba353983adc026b75a503c1381f6e5c8062f3e0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Thu, 17 Nov 2011 00:16:22 +0100
|
|
||||||
Subject: [PATCH 2/3] execute: make setup_pam() return -errno when possible
|
|
||||||
|
|
||||||
The only caller currently checks if the result is non-zero,
|
|
||||||
so nothing changes there.
|
|
||||||
---
|
|
||||||
src/execute.c | 8 +++++++-
|
|
||||||
1 files changed, 7 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/execute.c b/src/execute.c
|
|
||||||
index 0651014..2039861 100644
|
|
||||||
--- a/src/execute.c
|
|
||||||
+++ b/src/execute.c
|
|
||||||
@@ -716,6 +716,7 @@ static int setup_pam(
|
|
||||||
pam_handle_t *handle = NULL;
|
|
||||||
sigset_t ss, old_ss;
|
|
||||||
int pam_code = PAM_SUCCESS;
|
|
||||||
+ int err;
|
|
||||||
char **e = NULL;
|
|
||||||
bool close_session = false;
|
|
||||||
pid_t pam_pid = 0, parent_pid;
|
|
||||||
@@ -835,6 +836,11 @@ static int setup_pam(
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
fail:
|
|
||||||
+ if (pam_code != PAM_SUCCESS)
|
|
||||||
+ err = -EPERM; /* PAM errors do not map to errno */
|
|
||||||
+ else
|
|
||||||
+ err = -errno;
|
|
||||||
+
|
|
||||||
if (handle) {
|
|
||||||
if (close_session)
|
|
||||||
pam_code = pam_close_session(handle, PAM_DATA_SILENT);
|
|
||||||
@@ -851,7 +857,7 @@ fail:
|
|
||||||
kill(pam_pid, SIGCONT);
|
|
||||||
}
|
|
||||||
|
|
||||||
- return EXIT_PAM;
|
|
||||||
+ return err;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
|
|
||||||
From 4c2630ebf23b6348174f0bdf1110e90efe45259c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Thu, 17 Nov 2011 00:21:16 +0100
|
|
||||||
Subject: [PATCH 3/3] execute: log errors from "sd(EXEC)"
|
|
||||||
|
|
||||||
To give the administrator more hints about failures occuring in spawning
|
|
||||||
of commands than just the exit code, log the strerror.
|
|
||||||
All fds are closed, so reopen the log.
|
|
||||||
|
|
||||||
Related-to: https://bugzilla.redhat.com/show_bug.cgi?id=752901
|
|
||||||
---
|
|
||||||
src/execute.c | 138 +++++++++++++++++++++++++++++++++++++++--------------
|
|
||||||
src/exit-status.c | 3 +
|
|
||||||
src/exit-status.h | 3 +-
|
|
||||||
3 files changed, 107 insertions(+), 37 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/execute.c b/src/execute.c
|
|
||||||
index 2039861..481725d 100644
|
|
||||||
--- a/src/execute.c
|
|
||||||
+++ b/src/execute.c
|
|
||||||
@@ -989,7 +989,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pid == 0) {
|
|
||||||
- int i;
|
|
||||||
+ int i, err;
|
|
||||||
sigset_t ss;
|
|
||||||
const char *username = NULL, *home = NULL;
|
|
||||||
uid_t uid = (uid_t) -1;
|
|
||||||
@@ -1015,6 +1015,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (sigemptyset(&ss) < 0 ||
|
|
||||||
sigprocmask(SIG_SETMASK, &ss, NULL) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_SIGNAL_MASK;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1023,14 +1024,16 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
* block init reexecution because it cannot bind its
|
|
||||||
* sockets */
|
|
||||||
log_forget_fds();
|
|
||||||
- if (close_all_fds(socket_fd >= 0 ? &socket_fd : fds,
|
|
||||||
- socket_fd >= 0 ? 1 : n_fds) < 0) {
|
|
||||||
+ err = close_all_fds(socket_fd >= 0 ? &socket_fd : fds,
|
|
||||||
+ socket_fd >= 0 ? 1 : n_fds);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_FDS;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!context->same_pgrp)
|
|
||||||
if (setsid() < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_SETSID;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1038,12 +1041,14 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
if (context->tcpwrap_name) {
|
|
||||||
if (socket_fd >= 0)
|
|
||||||
if (!socket_tcpwrap(socket_fd, context->tcpwrap_name)) {
|
|
||||||
+ err = -EACCES;
|
|
||||||
r = EXIT_TCPWRAP;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < (int) n_fds; i++) {
|
|
||||||
if (!socket_tcpwrap(fds[i], context->tcpwrap_name)) {
|
|
||||||
+ err = -EACCES;
|
|
||||||
r = EXIT_TCPWRAP;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1059,11 +1064,14 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
/* Set up terminal for the question */
|
|
||||||
if ((r = setup_confirm_stdio(context,
|
|
||||||
- &saved_stdin, &saved_stdout)))
|
|
||||||
+ &saved_stdin, &saved_stdout))) {
|
|
||||||
+ err = -errno;
|
|
||||||
goto fail_child;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* Now ask the question. */
|
|
||||||
if (!(line = exec_command_line(argv))) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1072,18 +1080,21 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
free(line);
|
|
||||||
|
|
||||||
if (r < 0 || response == 'n') {
|
|
||||||
+ err = -ECANCELED;
|
|
||||||
r = EXIT_CONFIRM;
|
|
||||||
goto fail_child;
|
|
||||||
} else if (response == 's') {
|
|
||||||
- r = 0;
|
|
||||||
+ err = r = 0;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Release terminal for the question */
|
|
||||||
if ((r = restore_confirm_stdio(context,
|
|
||||||
&saved_stdin, &saved_stdout,
|
|
||||||
- &keep_stdin, &keep_stdout)))
|
|
||||||
+ &keep_stdin, &keep_stdout))) {
|
|
||||||
+ err = -errno;
|
|
||||||
goto fail_child;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If a socket is connected to STDIN/STDOUT/STDERR, we
|
|
||||||
@@ -1091,28 +1102,35 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
if (socket_fd >= 0)
|
|
||||||
fd_nonblock(socket_fd, false);
|
|
||||||
|
|
||||||
- if (!keep_stdin)
|
|
||||||
- if (setup_input(context, socket_fd, apply_tty_stdin) < 0) {
|
|
||||||
+ if (!keep_stdin) {
|
|
||||||
+ err = setup_input(context, socket_fd, apply_tty_stdin);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_STDIN;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (!keep_stdout)
|
|
||||||
- if (setup_output(context, socket_fd, file_name_from_path(command->path), apply_tty_stdin) < 0) {
|
|
||||||
+ if (!keep_stdout) {
|
|
||||||
+ err = setup_output(context, socket_fd, file_name_from_path(command->path), apply_tty_stdin);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_STDOUT;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (setup_error(context, socket_fd, file_name_from_path(command->path), apply_tty_stdin) < 0) {
|
|
||||||
+ err = setup_error(context, socket_fd, file_name_from_path(command->path), apply_tty_stdin);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_STDERR;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (cgroup_bondings)
|
|
||||||
- if (cgroup_bonding_install_list(cgroup_bondings, 0) < 0) {
|
|
||||||
+ if (cgroup_bondings) {
|
|
||||||
+ err = cgroup_bonding_install_list(cgroup_bondings, 0);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_CGROUP;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (context->oom_score_adjust_set) {
|
|
||||||
char t[16];
|
|
||||||
@@ -1133,6 +1151,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (write_one_line_file("/proc/self/oom_adj", t) < 0
|
|
||||||
&& errno != EACCES) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_OOM_ADJUST;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1141,6 +1160,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (context->nice_set)
|
|
||||||
if (setpriority(PRIO_PROCESS, 0, context->nice) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_NICE;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1153,6 +1173,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (sched_setscheduler(0, context->cpu_sched_policy |
|
|
||||||
(context->cpu_sched_reset_on_fork ? SCHED_RESET_ON_FORK : 0), ¶m) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_SETSCHEDULER;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1160,18 +1181,21 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (context->cpuset)
|
|
||||||
if (sched_setaffinity(0, CPU_ALLOC_SIZE(context->cpuset_ncpus), context->cpuset) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_CPUAFFINITY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context->ioprio_set)
|
|
||||||
if (ioprio_set(IOPRIO_WHO_PROCESS, 0, context->ioprio) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_IOPRIO;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context->timer_slack_nsec_set)
|
|
||||||
if (prctl(PR_SET_TIMERSLACK, context->timer_slack_nsec) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_TIMERSLACK;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1181,36 +1205,45 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
if (context->user) {
|
|
||||||
username = context->user;
|
|
||||||
- if (get_user_creds(&username, &uid, &gid, &home) < 0) {
|
|
||||||
+ err = get_user_creds(&username, &uid, &gid, &home);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_USER;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (is_terminal_input(context->std_input))
|
|
||||||
- if (chown_terminal(STDIN_FILENO, uid) < 0) {
|
|
||||||
+ if (is_terminal_input(context->std_input)) {
|
|
||||||
+ err = chown_terminal(STDIN_FILENO, uid);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_STDIN;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (cgroup_bondings && context->control_group_modify)
|
|
||||||
- if (cgroup_bonding_set_group_access_list(cgroup_bondings, 0755, uid, gid) < 0 ||
|
|
||||||
- cgroup_bonding_set_task_access_list(cgroup_bondings, 0644, uid, gid) < 0) {
|
|
||||||
+ if (cgroup_bondings && context->control_group_modify) {
|
|
||||||
+ err = cgroup_bonding_set_group_access_list(cgroup_bondings, 0755, uid, gid);
|
|
||||||
+ if (err >= 0)
|
|
||||||
+ err = cgroup_bonding_set_task_access_list(cgroup_bondings, 0644, uid, gid);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_CGROUP;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (apply_permissions)
|
|
||||||
- if (enforce_groups(context, username, gid) < 0) {
|
|
||||||
+ if (apply_permissions) {
|
|
||||||
+ err = enforce_groups(context, username, gid);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_GROUP;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
umask(context->umask);
|
|
||||||
|
|
||||||
#ifdef HAVE_PAM
|
|
||||||
if (context->pam_name && username) {
|
|
||||||
- if (setup_pam(context->pam_name, username, context->tty_path, &pam_env, fds, n_fds) != 0) {
|
|
||||||
+ err = setup_pam(context->pam_name, username, context->tty_path, &pam_env, fds, n_fds);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_PAM;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1218,6 +1251,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
#endif
|
|
||||||
if (context->private_network) {
|
|
||||||
if (unshare(CLONE_NEWNET) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_NETWORK;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1229,23 +1263,28 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
strv_length(context->read_only_dirs) > 0 ||
|
|
||||||
strv_length(context->inaccessible_dirs) > 0 ||
|
|
||||||
context->mount_flags != MS_SHARED ||
|
|
||||||
- context->private_tmp)
|
|
||||||
- if ((r = setup_namespace(
|
|
||||||
- context->read_write_dirs,
|
|
||||||
- context->read_only_dirs,
|
|
||||||
- context->inaccessible_dirs,
|
|
||||||
- context->private_tmp,
|
|
||||||
- context->mount_flags)) < 0)
|
|
||||||
+ context->private_tmp) {
|
|
||||||
+ err = setup_namespace(context->read_write_dirs,
|
|
||||||
+ context->read_only_dirs,
|
|
||||||
+ context->inaccessible_dirs,
|
|
||||||
+ context->private_tmp,
|
|
||||||
+ context->mount_flags);
|
|
||||||
+ if (err < 0) {
|
|
||||||
+ r = EXIT_NAMESPACE;
|
|
||||||
goto fail_child;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (apply_chroot) {
|
|
||||||
if (context->root_directory)
|
|
||||||
if (chroot(context->root_directory) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_CHROOT;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (chdir(context->working_directory ? context->working_directory : "/") < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_CHDIR;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1256,11 +1295,13 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
if (asprintf(&d, "%s/%s",
|
|
||||||
context->root_directory ? context->root_directory : "",
|
|
||||||
context->working_directory ? context->working_directory : "") < 0) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (chdir(d) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
free(d);
|
|
||||||
r = EXIT_CHDIR;
|
|
||||||
goto fail_child;
|
|
||||||
@@ -1271,9 +1312,12 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
|
|
||||||
/* We repeat the fd closing here, to make sure that
|
|
||||||
* nothing is leaked from the PAM modules */
|
|
||||||
- if (close_all_fds(fds, n_fds) < 0 ||
|
|
||||||
- shift_fds(fds, n_fds) < 0 ||
|
|
||||||
- flags_fds(fds, n_fds, context->non_blocking) < 0) {
|
|
||||||
+ err = close_all_fds(fds, n_fds);
|
|
||||||
+ if (err >= 0)
|
|
||||||
+ err = shift_fds(fds, n_fds);
|
|
||||||
+ if (err >= 0)
|
|
||||||
+ err = flags_fds(fds, n_fds, context->non_blocking);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_FDS;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1285,22 +1329,27 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (setrlimit(i, context->rlimit[i]) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_LIMITS;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (context->capability_bounding_set_drop)
|
|
||||||
- if (do_capability_bounding_set_drop(context->capability_bounding_set_drop) < 0) {
|
|
||||||
+ if (context->capability_bounding_set_drop) {
|
|
||||||
+ err = do_capability_bounding_set_drop(context->capability_bounding_set_drop);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_CAPABILITIES;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (context->user)
|
|
||||||
- if (enforce_user(context, uid) < 0) {
|
|
||||||
+ if (context->user) {
|
|
||||||
+ err = enforce_user(context, uid);
|
|
||||||
+ if (err < 0) {
|
|
||||||
r = EXIT_USER;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* PR_GET_SECUREBITS is not privileged, while
|
|
||||||
* PR_SET_SECUREBITS is. So to suppress
|
|
||||||
@@ -1308,18 +1357,21 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
* PR_SET_SECUREBITS unless necessary. */
|
|
||||||
if (prctl(PR_GET_SECUREBITS) != context->secure_bits)
|
|
||||||
if (prctl(PR_SET_SECUREBITS, context->secure_bits) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_SECUREBITS;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context->capabilities)
|
|
||||||
if (cap_set_proc(context->capabilities) < 0) {
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_CAPABILITIES;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(our_env = new0(char*, 7))) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1327,12 +1379,14 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
if (n_fds > 0)
|
|
||||||
if (asprintf(our_env + n_env++, "LISTEN_PID=%lu", (unsigned long) getpid()) < 0 ||
|
|
||||||
asprintf(our_env + n_env++, "LISTEN_FDS=%u", n_fds) < 0) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (home)
|
|
||||||
if (asprintf(our_env + n_env++, "HOME=%s", home) < 0) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1340,6 +1394,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
if (username)
|
|
||||||
if (asprintf(our_env + n_env++, "LOGNAME=%s", username) < 0 ||
|
|
||||||
asprintf(our_env + n_env++, "USER=%s", username) < 0) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1348,6 +1403,7 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
context->std_output == EXEC_OUTPUT_TTY ||
|
|
||||||
context->std_error == EXEC_OUTPUT_TTY)
|
|
||||||
if (!(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1362,11 +1418,13 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
files_env,
|
|
||||||
pam_env,
|
|
||||||
NULL))) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(final_argv = replace_env_argv(argv, final_env))) {
|
|
||||||
+ err = -ENOMEM;
|
|
||||||
r = EXIT_MEMORY;
|
|
||||||
goto fail_child;
|
|
||||||
}
|
|
||||||
@@ -1374,9 +1432,17 @@ int exec_spawn(ExecCommand *command,
|
|
||||||
final_env = strv_env_clean(final_env);
|
|
||||||
|
|
||||||
execve(command->path, final_argv, final_env);
|
|
||||||
+ err = -errno;
|
|
||||||
r = EXIT_EXEC;
|
|
||||||
|
|
||||||
fail_child:
|
|
||||||
+ if (r != 0) {
|
|
||||||
+ log_open();
|
|
||||||
+ log_warning("Failed at step %s spawning %s: %s",
|
|
||||||
+ exit_status_to_string(r, EXIT_STATUS_SYSTEMD),
|
|
||||||
+ command->path, strerror(-err));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
strv_free(our_env);
|
|
||||||
strv_free(final_env);
|
|
||||||
strv_free(pam_env);
|
|
||||||
diff --git a/src/exit-status.c b/src/exit-status.c
|
|
||||||
index 8ed1a0e..ab8907d 100644
|
|
||||||
--- a/src/exit-status.c
|
|
||||||
+++ b/src/exit-status.c
|
|
||||||
@@ -119,6 +119,9 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) {
|
|
||||||
|
|
||||||
case EXIT_NETWORK:
|
|
||||||
return "NETWORK";
|
|
||||||
+
|
|
||||||
+ case EXIT_NAMESPACE:
|
|
||||||
+ return "NAMESPACE";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/exit-status.h b/src/exit-status.h
|
|
||||||
index 3e977b1..44ef879 100644
|
|
||||||
--- a/src/exit-status.h
|
|
||||||
+++ b/src/exit-status.h
|
|
||||||
@@ -65,7 +65,8 @@ typedef enum ExitStatus {
|
|
||||||
EXIT_STDERR,
|
|
||||||
EXIT_TCPWRAP,
|
|
||||||
EXIT_PAM,
|
|
||||||
- EXIT_NETWORK
|
|
||||||
+ EXIT_NETWORK,
|
|
||||||
+ EXIT_NAMESPACE
|
|
||||||
|
|
||||||
} ExitStatus;
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
|||||||
From f6cebb3bd5a00d79c8131637c0f6796a75e6af99 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michal Schmidt <mschmidt@redhat.com>
|
|
||||||
Date: Sat, 19 Nov 2011 02:47:09 +0100
|
|
||||||
Subject: [PATCH] let mount and swap units log to the configured defaults
|
|
||||||
|
|
||||||
Related-to: https://bugzilla.redhat.com/show_bug.cgi?id=750032
|
|
||||||
---
|
|
||||||
src/mount.c | 6 ++++--
|
|
||||||
src/swap.c | 5 +++--
|
|
||||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/mount.c b/src/mount.c
|
|
||||||
index f9cfe91..47422cc 100644
|
|
||||||
--- a/src/mount.c
|
|
||||||
+++ b/src/mount.c
|
|
||||||
@@ -68,8 +68,10 @@ static void mount_init(Unit *u) {
|
|
||||||
|
|
||||||
/* The stdio/kmsg bridge socket is on /, in order to avoid a
|
|
||||||
* dep loop, don't use kmsg logging for -.mount */
|
|
||||||
- if (!unit_has_name(u, "-.mount"))
|
|
||||||
- m->exec_context.std_output = EXEC_OUTPUT_KMSG;
|
|
||||||
+ if (!unit_has_name(u, "-.mount")) {
|
|
||||||
+ m->exec_context.std_output = u->meta.manager->default_std_output;
|
|
||||||
+ m->exec_context.std_error = u->meta.manager->default_std_error;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* We need to make sure that /bin/mount is always called in
|
|
||||||
* the same process group as us, so that the autofs kernel
|
|
||||||
diff --git a/src/swap.c b/src/swap.c
|
|
||||||
index 54a8640..4fa30a3 100644
|
|
||||||
--- a/src/swap.c
|
|
||||||
+++ b/src/swap.c
|
|
||||||
@@ -74,7 +74,7 @@ static void swap_unset_proc_swaps(Swap *s) {
|
|
||||||
s->parameters_proc_swaps.what = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- static void swap_init(Unit *u) {
|
|
||||||
+static void swap_init(Unit *u) {
|
|
||||||
Swap *s = SWAP(u);
|
|
||||||
|
|
||||||
assert(s);
|
|
||||||
@@ -83,7 +83,8 @@ static void swap_unset_proc_swaps(Swap *s) {
|
|
||||||
s->timeout_usec = DEFAULT_TIMEOUT_USEC;
|
|
||||||
|
|
||||||
exec_context_init(&s->exec_context);
|
|
||||||
- s->exec_context.std_output = EXEC_OUTPUT_KMSG;
|
|
||||||
+ s->exec_context.std_output = u->meta.manager->default_std_output;
|
|
||||||
+ s->exec_context.std_error = u->meta.manager->default_std_error;
|
|
||||||
|
|
||||||
s->parameters_etc_fstab.priority = s->parameters_proc_swaps.priority = s->parameters_fragment.priority = -1;
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
@ -7,11 +7,11 @@ Subject: [PATCH] force lvm restart after cryptsetup target is reached
|
|||||||
src/cryptsetup-generator.c | 80 ++++++++++++++++++++++++++++++++++++++++++++
|
src/cryptsetup-generator.c | 80 ++++++++++++++++++++++++++++++++++++++++++++
|
||||||
1 files changed, 80 insertions(+), 0 deletions(-)
|
1 files changed, 80 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/cryptsetup-generator.c b/src/cryptsetup-generator.c
|
Index: systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
index a48b7a4..14fcce8 100644
|
===================================================================
|
||||||
--- a/src/cryptsetup-generator.c
|
--- systemd-37.orig/src/cryptsetup/cryptsetup-generator.c
|
||||||
+++ b/src/cryptsetup-generator.c
|
+++ systemd-37/src/cryptsetup/cryptsetup-generator.c
|
||||||
@@ -22,12 +22,14 @@
|
@@ -22,6 +22,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -19,14 +19,7 @@ index a48b7a4..14fcce8 100644
|
|||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "unit-name.h"
|
@@ -58,6 +59,71 @@ static bool has_option(const char *hayst
|
||||||
|
|
||||||
const char *arg_dest = "/tmp";
|
|
||||||
+bool random_seed = false;
|
|
||||||
|
|
||||||
static bool has_option(const char *haystack, const char *needle) {
|
|
||||||
const char *f = haystack;
|
|
||||||
@@ -58,6 +60,78 @@ static bool has_option(const char *haystack, const char *needle) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,10 +46,8 @@ index a48b7a4..14fcce8 100644
|
|||||||
+ "DefaultDependencies=no\n"
|
+ "DefaultDependencies=no\n"
|
||||||
+ "After=cryptsetup.target\n"
|
+ "After=cryptsetup.target\n"
|
||||||
+ "Wants=cryptsetup.target\n"
|
+ "Wants=cryptsetup.target\n"
|
||||||
|
+ "Before=local-fs.target\n"
|
||||||
+ "Before=shutdown.target\n");
|
+ "Before=shutdown.target\n");
|
||||||
+ if (!random_seed) {
|
|
||||||
+ fprintf(f, "After=local-fs.target\n");
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ fprintf(f,
|
+ fprintf(f,
|
||||||
+ "\n[Service]\n"
|
+ "\n[Service]\n"
|
||||||
@ -86,13 +77,8 @@ index a48b7a4..14fcce8 100644
|
|||||||
+ goto fail;
|
+ goto fail;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ free(to);
|
+ r=0;
|
||||||
+ to = NULL;
|
|
||||||
+
|
|
||||||
+ r = 0;
|
|
||||||
+ system ("TMPDIR=/run /usr/bin/sed -e 's/\\(After=.*\\) local-fs.target\\(.*\\)/\\1\\2/g' /lib/systemd/system/systemd-random-seed-load.service > /etc/systemd/system/systemd-random-seed-load.service ");
|
|
||||||
+fail:
|
+fail:
|
||||||
+
|
|
||||||
+ free(p);
|
+ free(p);
|
||||||
+ free(to);
|
+ free(to);
|
||||||
+
|
+
|
||||||
@ -105,19 +91,7 @@ index a48b7a4..14fcce8 100644
|
|||||||
static int create_disk(
|
static int create_disk(
|
||||||
const char *name,
|
const char *name,
|
||||||
const char *device,
|
const char *device,
|
||||||
@@ -122,8 +196,11 @@ static int create_disk(
|
@@ -291,6 +357,9 @@ int main(int argc, char *argv[]) {
|
||||||
if (password && (streq(password, "/dev/urandom") ||
|
|
||||||
streq(password, "/dev/random") ||
|
|
||||||
streq(password, "/dev/hw_random")))
|
|
||||||
+ {
|
|
||||||
fprintf(f,
|
|
||||||
"After=systemd-random-seed-load.service\n");
|
|
||||||
+ random_seed = true;
|
|
||||||
+ }
|
|
||||||
else
|
|
||||||
fprintf(f,
|
|
||||||
"Before=local-fs.target\n");
|
|
||||||
@@ -293,6 +370,9 @@ int main(int argc, char *argv[]) {
|
|
||||||
free(options);
|
free(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +101,3 @@ index a48b7a4..14fcce8 100644
|
|||||||
finish:
|
finish:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
|
12
sysctl-modules.patch
Normal file
12
sysctl-modules.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Index: systemd-37/units/systemd-sysctl.service.in
|
||||||
|
===================================================================
|
||||||
|
--- systemd-37.orig/units/systemd-sysctl.service.in
|
||||||
|
+++ systemd-37/units/systemd-sysctl.service.in
|
||||||
|
@@ -10,6 +10,7 @@ Description=Apply Kernel Variables
|
||||||
|
DefaultDependencies=no
|
||||||
|
Conflicts=shutdown.target
|
||||||
|
After=systemd-readahead-collect.service systemd-readahead-replay.service
|
||||||
|
+After=systemd-modules-load.service
|
||||||
|
Before=sysinit.target shutdown.target
|
||||||
|
ConditionPathExists=|/etc/sysctl.conf
|
||||||
|
ConditionDirectoryNotEmpty=|/lib/sysctl.d
|
@ -1,77 +0,0 @@
|
|||||||
In the case of completion for the 'restart' verb, passing the invalid
|
|
||||||
unit name (the colums header) causes completion to cease functioning
|
|
||||||
entirely, with the error:
|
|
||||||
|
|
||||||
Failed to issue method call: Unit name UNIT is not valid.
|
|
||||||
|
|
||||||
This adds a small wrapper function for systemctl which can have common
|
|
||||||
options added to it.
|
|
||||||
|
|
||||||
---
|
|
||||||
src/systemctl-bash-completion.sh | 20 ++++++++++++--------
|
|
||||||
1 files changed, 12 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/systemctl-bash-completion.sh b/src/systemctl-bash-completion.sh
|
|
||||||
index 6369a6c..6ebb792 100644
|
|
||||||
--- a/src/systemctl-bash-completion.sh
|
|
||||||
+++ b/src/systemctl-bash-completion.sh
|
|
||||||
@@ -15,6 +15,10 @@
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
+__systemctl() {
|
|
||||||
+ systemctl --no-legend "$@"
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
__contains_word () {
|
|
||||||
local word=$1; shift
|
|
||||||
for w in $*; do [[ $w = $word ]] && return 0; done
|
|
||||||
@@ -24,7 +28,7 @@ __contains_word () {
|
|
||||||
__filter_units_by_property () {
|
|
||||||
local property=$1 value=$2 ; shift ; shift
|
|
||||||
local -a units=( $* )
|
|
||||||
- local -a props=( $(systemctl show --property "$property" -- ${units[*]} | grep -v ^$) )
|
|
||||||
+ local -a props=( $(__systemctl show --property "$property" -- ${units[*]} | grep -v ^$) )
|
|
||||||
for ((i=0; $i < ${#units[*]}; i++)); do
|
|
||||||
if [[ "${props[i]}" = "$property=$value" ]]; then
|
|
||||||
echo "${units[i]}"
|
|
||||||
@@ -32,10 +36,10 @@ __filter_units_by_property () {
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
-__get_all_units () { systemctl list-units --full --all | awk ' {print $1}' ; }
|
|
||||||
-__get_active_units () { systemctl list-units --full | awk ' {print $1}' ; }
|
|
||||||
-__get_inactive_units () { systemctl list-units --full --all | awk '$3 == "inactive" {print $1}' ; }
|
|
||||||
-__get_failed_units () { systemctl list-units --full | awk '$3 == "failed" {print $1}' ; }
|
|
||||||
+__get_all_units () { __systemctl list-units --full --all | awk ' {print $1}' ; }
|
|
||||||
+__get_active_units () { __systemctl list-units --full | awk ' {print $1}' ; }
|
|
||||||
+__get_inactive_units () { __systemctl list-units --full --all | awk '$3 == "inactive" {print $1}' ; }
|
|
||||||
+__get_failed_units () { __systemctl list-units --full | awk '$3 == "failed" {print $1}' ; }
|
|
||||||
|
|
||||||
_systemctl () {
|
|
||||||
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
||||||
@@ -134,13 +138,13 @@ _systemctl () {
|
|
||||||
comps=''
|
|
||||||
|
|
||||||
elif __contains_word "$verb" ${VERBS[JOBS]}; then
|
|
||||||
- comps=$( systemctl list-jobs | awk '{print $1}' )
|
|
||||||
+ comps=$( __systemctl list-jobs | awk '{print $1}' )
|
|
||||||
|
|
||||||
elif __contains_word "$verb" ${VERBS[SNAPSHOTS]}; then
|
|
||||||
- comps=$( systemctl list-units --type snapshot --full --all | awk '{print $1}' )
|
|
||||||
+ comps=$( __systemctl list-units --type snapshot --full --all | awk '{print $1}' )
|
|
||||||
|
|
||||||
elif __contains_word "$verb" ${VERBS[ENVS]}; then
|
|
||||||
- comps=$( systemctl show-environment | sed 's_\([^=]\+=\).*_\1_' )
|
|
||||||
+ comps=$( __systemctl show-environment | sed 's_\([^=]\+=\).*_\1_' )
|
|
||||||
compopt -o nospace
|
|
||||||
fi
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
||||||
_______________________________________________
|
|
||||||
systemd-devel mailing list
|
|
||||||
systemd-devel@lists.freedesktop.org
|
|
||||||
http://lists.freedesktop.org/mailman/listinfo/systemd-devel
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:b38492bde73649cc3520953354ef446c268169c1d342614183655e9ee1a1bbc5
|
|
||||||
size 931101
|
|
3
systemd-38.tar.xz
Normal file
3
systemd-38.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:cd21eddc23457323fcb8775813a985d7bc429a63ea5adc6950a8bbe421e30d13
|
||||||
|
size 875736
|
@ -1,3 +1,32 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
|
- Update to version 38 :
|
||||||
|
- Bugfixes
|
||||||
|
- Implementation of a Journal Utility Library
|
||||||
|
- Implementation of a 128 Bit ID Utility Library
|
||||||
|
- 11 Patches integrated upstream
|
||||||
|
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
|
||||||
|
syslog socket goes away early during shutdown.
|
||||||
|
- Add listen.conf for rsyslog. This will ensure that it will still
|
||||||
|
work fine with rsyslog and the new journal.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 9 17:01:22 UTC 2012 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Add fix-is-enabled.patch: ensure systemctl is-enabled work
|
||||||
|
properly when systemd isn't running.
|
||||||
|
- Add logind-console.patch: do not bail logind if /dev/tty0 doesn't
|
||||||
|
exist (bnc#733022, bnc#735047).
|
||||||
|
- Add sysctl-modules.patch: ensure sysctl is started after modules
|
||||||
|
are loaded (bnc#725412).
|
||||||
|
- Fix warning in insserv patch.
|
||||||
|
- Update avoid-random-seed-cycle.patch with better upstream
|
||||||
|
approach.
|
||||||
|
- Update storage-after-cryptsetup.patch to restart lvm before
|
||||||
|
local-fs.target, not after it (bnc#740106).
|
||||||
|
- Increase pam-config dependency (bnc#713319).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Dec 7 15:15:07 UTC 2011 - fcrozat@suse.com
|
Wed Dec 7 15:15:07 UTC 2011 - fcrozat@suse.com
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package systemd-gtk
|
# spec file for package systemd-gtk
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -15,33 +15,38 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
# norootforbuild
|
|
||||||
|
|
||||||
|
|
||||||
Name: systemd-gtk
|
Name: systemd-gtk
|
||||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||||
Version: 37
|
Version: 38
|
||||||
Release: 1
|
Release: 0
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
BuildRequires: audit-devel
|
||||||
|
BuildRequires: dbus-1-devel
|
||||||
|
BuildRequires: glib2-devel
|
||||||
|
BuildRequires: gperf
|
||||||
|
BuildRequires: gtk2-devel
|
||||||
|
BuildRequires: intltool
|
||||||
|
BuildRequires: libacl-devel
|
||||||
|
BuildRequires: libcap-devel
|
||||||
|
BuildRequires: libcryptsetup-devel
|
||||||
|
BuildRequires: libgee-devel
|
||||||
|
BuildRequires: libnotify-devel
|
||||||
|
BuildRequires: libselinux-devel
|
||||||
|
BuildRequires: libsepol-devel
|
||||||
|
BuildRequires: libtool
|
||||||
|
BuildRequires: libudev-devel
|
||||||
|
BuildRequires: pam-devel
|
||||||
|
BuildRequires: pkg-config
|
||||||
|
BuildRequires: tcpd-devel
|
||||||
|
BuildRequires: udev
|
||||||
|
BuildRequires: xz
|
||||||
|
BuildRequires: xz-devel
|
||||||
|
Summary: Graphical front-end for systemd
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
||||||
BuildRequires: libudev-devel udev
|
|
||||||
BuildRequires: dbus-1-devel
|
|
||||||
BuildRequires: audit-devel
|
|
||||||
BuildRequires: gperf
|
|
||||||
BuildRequires: libcap-devel
|
|
||||||
BuildRequires: libacl-devel
|
|
||||||
BuildRequires: libtool
|
|
||||||
BuildRequires: tcpd-devel
|
|
||||||
BuildRequires: pam-devel
|
|
||||||
BuildRequires: libcryptsetup-devel
|
|
||||||
BuildRequires: pkg-config
|
|
||||||
BuildRequires: libselinux-devel libsepol-devel
|
|
||||||
BuildRequires: intltool
|
|
||||||
BuildRequires: gtk2-devel libnotify-devel
|
|
||||||
Summary: Graphical front-end for systemd
|
|
||||||
Requires: systemd = %{version}
|
Requires: systemd = %{version}
|
||||||
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.bz2
|
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
|
||||||
Source1: systemd-rpmlintrc
|
Source1: systemd-rpmlintrc
|
||||||
|
|
||||||
# Upstream First - Policy:
|
# Upstream First - Policy:
|
||||||
@ -64,7 +69,7 @@ export V=1
|
|||||||
%configure \
|
%configure \
|
||||||
--with-distro=suse \
|
--with-distro=suse \
|
||||||
--docdir=%{_docdir}/systemd \
|
--docdir=%{_docdir}/systemd \
|
||||||
--with-rootdir= \
|
--with-rootprefix= \
|
||||||
CFLAGS="%{optflags}"
|
CFLAGS="%{optflags}"
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
21
systemd-syslog_away_early_on_shutdown.patch
Normal file
21
systemd-syslog_away_early_on_shutdown.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
From ead51eb4ed55981f290e40a871ffbca6480c4cd3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lennart Poettering <lennart@poettering.net>
|
||||||
|
Date: Thu, 12 Jan 2012 03:34:50 +0000
|
||||||
|
Subject: units: make sure syslog socket goes away early during shutdown
|
||||||
|
|
||||||
|
---
|
||||||
|
diff --git a/units/syslog.socket b/units/syslog.socket
|
||||||
|
index 323fa86..657e791 100644
|
||||||
|
--- a/units/syslog.socket
|
||||||
|
+++ b/units/syslog.socket
|
||||||
|
@@ -11,6 +11,8 @@
|
||||||
|
Description=Syslog Socket
|
||||||
|
DefaultDependencies=no
|
||||||
|
Before=sockets.target syslog.target
|
||||||
|
+Conflicts=shutdown.target
|
||||||
|
+Before=shutdown.target
|
||||||
|
|
||||||
|
# Pull in syslog.target to tell people that /dev/log is now accessible
|
||||||
|
Wants=syslog.target
|
||||||
|
--
|
||||||
|
cgit v0.9.0.2-2-gbebe
|
@ -1,3 +1,32 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 18 09:03:51 UTC 2012 - tittiatcoke@gmail.com
|
||||||
|
|
||||||
|
- Update to version 38 :
|
||||||
|
- Bugfixes
|
||||||
|
- Implementation of a Journal Utility Library
|
||||||
|
- Implementation of a 128 Bit ID Utility Library
|
||||||
|
- 11 Patches integrated upstream
|
||||||
|
- Add systemd-syslog_away_early_on_shutdown.patch: make sure
|
||||||
|
syslog socket goes away early during shutdown.
|
||||||
|
- Add listen.conf for rsyslog. This will ensure that it will still
|
||||||
|
work fine with rsyslog and the new journal.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 9 17:01:22 UTC 2012 - fcrozat@suse.com
|
||||||
|
|
||||||
|
- Add fix-is-enabled.patch: ensure systemctl is-enabled work
|
||||||
|
properly when systemd isn't running.
|
||||||
|
- Add logind-console.patch: do not bail logind if /dev/tty0 doesn't
|
||||||
|
exist (bnc#733022, bnc#735047).
|
||||||
|
- Add sysctl-modules.patch: ensure sysctl is started after modules
|
||||||
|
are loaded (bnc#725412).
|
||||||
|
- Fix warning in insserv patch.
|
||||||
|
- Update avoid-random-seed-cycle.patch with better upstream
|
||||||
|
approach.
|
||||||
|
- Update storage-after-cryptsetup.patch to restart lvm before
|
||||||
|
local-fs.target, not after it (bnc#740106).
|
||||||
|
- Increase pam-config dependency (bnc#713319).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Dec 7 15:15:07 UTC 2011 - fcrozat@suse.com
|
Wed Dec 7 15:15:07 UTC 2011 - fcrozat@suse.com
|
||||||
|
|
||||||
|
88
systemd.spec
88
systemd.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package systemd
|
# spec file for package systemd
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -15,7 +15,6 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
# norootforbuild
|
|
||||||
|
|
||||||
%define build_plymouth 0
|
%define build_plymouth 0
|
||||||
|
|
||||||
@ -23,35 +22,39 @@
|
|||||||
|
|
||||||
Name: systemd
|
Name: systemd
|
||||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||||
Version: 37
|
Version: 38
|
||||||
Release: 1
|
Release: 0
|
||||||
|
Summary: A System and Session Manager
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
Group: System/Base
|
Group: System/Base
|
||||||
Summary: A System and Session Manager
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: libudev-devel udev
|
|
||||||
BuildRequires: dbus-1-devel
|
|
||||||
BuildRequires: audit-devel
|
BuildRequires: audit-devel
|
||||||
|
BuildRequires: dbus-1-devel
|
||||||
BuildRequires: gperf
|
BuildRequires: gperf
|
||||||
BuildRequires: libcap-devel
|
|
||||||
BuildRequires: libacl-devel
|
|
||||||
BuildRequires: libtool
|
|
||||||
BuildRequires: tcpd-devel
|
|
||||||
BuildRequires: pam-devel
|
|
||||||
BuildRequires: libcryptsetup-devel
|
|
||||||
BuildRequires: pkg-config
|
|
||||||
BuildRequires: libselinux-devel libsepol-devel
|
|
||||||
BuildRequires: intltool
|
BuildRequires: intltool
|
||||||
|
BuildRequires: libacl-devel
|
||||||
|
BuildRequires: libcap-devel
|
||||||
|
BuildRequires: libcryptsetup-devel
|
||||||
|
BuildRequires: libselinux-devel
|
||||||
|
BuildRequires: libsepol-devel
|
||||||
|
BuildRequires: libtool
|
||||||
|
BuildRequires: libudev-devel
|
||||||
|
BuildRequires: pam-devel
|
||||||
|
BuildRequires: pkg-config
|
||||||
|
BuildRequires: tcpd-devel
|
||||||
|
BuildRequires: udev
|
||||||
|
BuildRequires: xz
|
||||||
|
BuildRequires: xz-devel
|
||||||
Requires: udev >= 172
|
Requires: udev >= 172
|
||||||
Requires: dbus-1 >= 1.4.0
|
Requires: dbus-1 >= 1.4.0
|
||||||
Requires: kbd
|
Requires: kbd
|
||||||
Requires: util-linux >= 2.19
|
Requires: util-linux >= 2.19
|
||||||
Requires: pam-config
|
Requires: pam-config >= 0.79-5
|
||||||
Requires: systemd-presets-branding
|
Requires: systemd-presets-branding
|
||||||
Recommends: dbus-1-python
|
Recommends: dbus-1-python
|
||||||
Conflicts: filesystem < 11.5
|
Conflicts: filesystem < 11.5
|
||||||
Conflicts: mkinitrd < 2.7.0
|
Conflicts: mkinitrd < 2.7.0
|
||||||
Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.bz2
|
Source0: http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.xz
|
||||||
Source1: systemd-rpmlintrc
|
Source1: systemd-rpmlintrc
|
||||||
Source2: localfs.service
|
Source2: localfs.service
|
||||||
Source3: systemd-sysv-convert
|
Source3: systemd-sysv-convert
|
||||||
@ -62,6 +65,8 @@ Source7: systemd-bootsplash
|
|||||||
Source8: bootsplash-startup.service
|
Source8: bootsplash-startup.service
|
||||||
Source9: bootsplash-quit.service
|
Source9: bootsplash-quit.service
|
||||||
Source10: bootsplash-shutdown.service
|
Source10: bootsplash-shutdown.service
|
||||||
|
# Stop-gap, just to ensure things work fine with rsyslog without having to change the package right-away
|
||||||
|
Source11: listen.conf
|
||||||
Patch1: 0001-Add-bootsplash-handling-for-password-dialogs.patch
|
Patch1: 0001-Add-bootsplash-handling-for-password-dialogs.patch
|
||||||
# handle SUSE specific kbd settings
|
# handle SUSE specific kbd settings
|
||||||
Patch6: 0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch
|
Patch6: 0001-handle-disable_caplock-and-compose_table-and-kbd_rat.patch
|
||||||
@ -71,27 +76,20 @@ Patch10: 0001-service-Fix-dependencies-added-when-parsing-insserv..patch
|
|||||||
Patch13: 0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch
|
Patch13: 0001-service-flags-sysv-service-with-detected-pid-as-Rema.patch
|
||||||
Patch15: support-sysvinit.patch
|
Patch15: support-sysvinit.patch
|
||||||
Patch16: modules_on_boot.patch
|
Patch16: modules_on_boot.patch
|
||||||
Patch18: systemctl-completion-fix.patch
|
|
||||||
Patch19: avoid-random-seed-cycle.patch
|
Patch19: avoid-random-seed-cycle.patch
|
||||||
Patch22: new-lsb-headers.patch
|
Patch22: new-lsb-headers.patch
|
||||||
Patch23: storage-after-cryptsetup.patch
|
Patch23: storage-after-cryptsetup.patch
|
||||||
Patch24: delay-fsck-cryptsetup-after-md-lvm-dmraid.patch
|
Patch24: delay-fsck-cryptsetup-after-md-lvm-dmraid.patch
|
||||||
Patch31: lock-opensuse.patch
|
Patch31: lock-opensuse.patch
|
||||||
Patch33: crypt-loop-file.patch
|
Patch33: crypt-loop-file.patch
|
||||||
|
Patch36: sysctl-modules.patch
|
||||||
|
|
||||||
# Upstream First - Policy:
|
# Upstream First - Policy:
|
||||||
# Never add any patches to this package without the upstream commit id
|
# 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
|
# 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.
|
# an exception will be silently removed with the next version update.
|
||||||
Patch20: crash-isolating.patch
|
|
||||||
Patch21: no-tmpfs-fsck.patch
|
Patch21: no-tmpfs-fsck.patch
|
||||||
Patch25: cron-tty-pam.patch
|
Patch37: systemd-syslog_away_early_on_shutdown.patch
|
||||||
Patch26: do_not_warn_pidfile.patch
|
|
||||||
Patch27: mount-swap-log.patch
|
|
||||||
Patch28: color-on-boot.patch
|
|
||||||
Patch29: log_on_close.patch
|
|
||||||
Patch30: handle-racy-daemon.patch
|
|
||||||
Patch32: garbage_collect_units.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Systemd is a system and service manager, compatible with SysV and LSB
|
Systemd is a system and service manager, compatible with SysV and LSB
|
||||||
@ -104,8 +102,8 @@ transactional dependency-based service control logic. It can work as a
|
|||||||
drop-in replacement for sysvinit.
|
drop-in replacement for sysvinit.
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Group: Development/Libraries/C and C++
|
|
||||||
Summary: Development headers for systemd
|
Summary: Development headers for systemd
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Requires: pkg-config
|
Requires: pkg-config
|
||||||
|
|
||||||
@ -114,6 +112,7 @@ Development headers and auxiliary files for developing applications for systemd.
|
|||||||
|
|
||||||
%package sysvinit
|
%package sysvinit
|
||||||
Summary: System V init tools
|
Summary: System V init tools
|
||||||
|
Group: System/Base
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Provides: sbin_init
|
Provides: sbin_init
|
||||||
Conflicts: otherproviders(sbin_init)
|
Conflicts: otherproviders(sbin_init)
|
||||||
@ -126,6 +125,7 @@ Drop-in replacement of System V init tools.
|
|||||||
|
|
||||||
%package plymouth
|
%package plymouth
|
||||||
Summary: Plymouth support for systemd
|
Summary: Plymouth support for systemd
|
||||||
|
Group: System/Base
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Requires: plymouth
|
Requires: plymouth
|
||||||
|
|
||||||
@ -142,22 +142,15 @@ Plymouth integration for systemd
|
|||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
%patch18 -p1
|
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
%patch23 -p1
|
%patch23 -p1
|
||||||
%patch24 -p1
|
%patch24 -p1
|
||||||
%patch25 -p1
|
|
||||||
%patch26 -p1
|
|
||||||
%patch27 -p1
|
|
||||||
%patch28 -p1
|
|
||||||
%patch29 -p1
|
|
||||||
%patch30 -p1
|
|
||||||
%patch31 -p1
|
%patch31 -p1
|
||||||
%patch32 -p1
|
|
||||||
%patch33 -p1
|
%patch33 -p1
|
||||||
|
%patch36 -p1
|
||||||
|
%patch37 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
@ -168,7 +161,8 @@ export V=1
|
|||||||
%configure \
|
%configure \
|
||||||
--with-distro=suse \
|
--with-distro=suse \
|
||||||
--docdir=%{_docdir}/systemd \
|
--docdir=%{_docdir}/systemd \
|
||||||
--with-rootdir= \
|
--with-rootprefix= \
|
||||||
|
--with-pamlibdir=/%{_lib}/security \
|
||||||
--disable-gtk \
|
--disable-gtk \
|
||||||
CFLAGS="%{optflags}"
|
CFLAGS="%{optflags}"
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
@ -231,6 +225,11 @@ ln -s /dev/null %{buildroot}/lib/systemd/system/stoppreload.service
|
|||||||
ln -s /dev/null %{buildroot}/lib/systemd/system/earlyxdm.service
|
ln -s /dev/null %{buildroot}/lib/systemd/system/earlyxdm.service
|
||||||
ln -s systemd-sysctl.service %{buildroot}/lib/systemd/system/sysctl.service
|
ln -s systemd-sysctl.service %{buildroot}/lib/systemd/system/sysctl.service
|
||||||
ln -s systemd-random-seed-load.service %{buildroot}/lib/systemd/system/random.service
|
ln -s systemd-random-seed-load.service %{buildroot}/lib/systemd/system/random.service
|
||||||
|
|
||||||
|
# Install rsyslog fragment
|
||||||
|
mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d/
|
||||||
|
install -m 0644 %{SOURCE11} %{buildroot}%{_sysconfdir}/rsyslog.d/
|
||||||
|
|
||||||
%if %{build_plymouth}
|
%if %{build_plymouth}
|
||||||
(cd %{buildroot} && find . -name '*plymouth*') > files.plymouth
|
(cd %{buildroot} && find . -name '*plymouth*') > files.plymouth
|
||||||
%endif
|
%endif
|
||||||
@ -286,6 +285,7 @@ rm -rf %{buildroot}
|
|||||||
/bin/systemd
|
/bin/systemd
|
||||||
/bin/systemctl
|
/bin/systemctl
|
||||||
/bin/systemd-notify
|
/bin/systemd-notify
|
||||||
|
/bin/systemd-journalctl
|
||||||
/bin/systemd-ask-password
|
/bin/systemd-ask-password
|
||||||
/bin/systemd-loginctl
|
/bin/systemd-loginctl
|
||||||
/bin/systemd-tty-ask-password-agent
|
/bin/systemd-tty-ask-password-agent
|
||||||
@ -297,6 +297,8 @@ rm -rf %{buildroot}
|
|||||||
%{_sbindir}/systemd-sysv-convert
|
%{_sbindir}/systemd-sysv-convert
|
||||||
%{_libdir}/libsystemd-daemon.so.*
|
%{_libdir}/libsystemd-daemon.so.*
|
||||||
%{_libdir}/libsystemd-login.so.*
|
%{_libdir}/libsystemd-login.so.*
|
||||||
|
%{_libdir}/libsystemd-id128.so.*
|
||||||
|
%{_libdir}/libsystemd-journal.so.*
|
||||||
%{_bindir}/systemd-cgls
|
%{_bindir}/systemd-cgls
|
||||||
/lib/systemd/systemd-*
|
/lib/systemd/systemd-*
|
||||||
%dir /lib/systemd/system-shutdown
|
%dir /lib/systemd/system-shutdown
|
||||||
@ -316,9 +318,11 @@ rm -rf %{buildroot}
|
|||||||
%dir %{_sysconfdir}/binfmt.d
|
%dir %{_sysconfdir}/binfmt.d
|
||||||
%dir /usr/lib/sysctl.d
|
%dir /usr/lib/sysctl.d
|
||||||
%dir %{_sysconfdir}/sysctl.d
|
%dir %{_sysconfdir}/sysctl.d
|
||||||
|
%dir %{_sysconfdir}/rsyslog.d
|
||||||
/usr/lib/tmpfiles.d/*.conf
|
/usr/lib/tmpfiles.d/*.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/systemd-logind.conf
|
%config(noreplace) %{_sysconfdir}/systemd/systemd-logind.conf
|
||||||
|
%config(noreplace) %{_sysconfdir}/systemd/systemd-journald.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/user.conf
|
%config(noreplace) %{_sysconfdir}/systemd/user.conf
|
||||||
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
||||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
|
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
|
||||||
@ -326,6 +330,7 @@ rm -rf %{buildroot}
|
|||||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
|
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
|
||||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
|
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
|
||||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
|
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.timedate1.conf
|
||||||
|
%config(noreplace) %{_sysconfdir}/rsyslog.d/listen.conf
|
||||||
%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
|
%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
|
||||||
%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
|
%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
|
||||||
%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
|
%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
|
||||||
@ -370,7 +375,7 @@ rm -rf %{buildroot}
|
|||||||
/usr/lib/systemd/user
|
/usr/lib/systemd/user
|
||||||
%dir %{_sysconfdir}/systemd
|
%dir %{_sysconfdir}/systemd
|
||||||
%dir %{_sysconfdir}/bash_completion.d
|
%dir %{_sysconfdir}/bash_completion.d
|
||||||
/etc/bash_completion.d/systemctl-bash-completion.sh
|
/etc/bash_completion.d/systemd-bash-completion.sh
|
||||||
/etc/rpm/macros.systemd
|
/etc/rpm/macros.systemd
|
||||||
%dir /var/lib/systemd
|
%dir /var/lib/systemd
|
||||||
%dir /var/lib/systemd/sysv-convert
|
%dir /var/lib/systemd/sysv-convert
|
||||||
@ -380,12 +385,19 @@ rm -rf %{buildroot}
|
|||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%{_libdir}/libsystemd-daemon.so
|
%{_libdir}/libsystemd-daemon.so
|
||||||
%{_libdir}/libsystemd-login.so
|
%{_libdir}/libsystemd-login.so
|
||||||
|
%{_libdir}/libsystemd-id128.so
|
||||||
|
%{_libdir}/libsystemd-journal.so
|
||||||
%dir %{_includedir}/systemd
|
%dir %{_includedir}/systemd
|
||||||
%{_includedir}/systemd/sd-login.h
|
%{_includedir}/systemd/sd-login.h
|
||||||
%{_includedir}/systemd/sd-daemon.h
|
%{_includedir}/systemd/sd-daemon.h
|
||||||
|
%{_includedir}/systemd/sd-id128.h
|
||||||
|
%{_includedir}/systemd/sd-journal.h
|
||||||
|
%{_includedir}/systemd/sd-messages.h
|
||||||
%{_datadir}/pkgconfig/systemd.pc
|
%{_datadir}/pkgconfig/systemd.pc
|
||||||
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
||||||
%{_libdir}/pkgconfig/libsystemd-login.pc
|
%{_libdir}/pkgconfig/libsystemd-login.pc
|
||||||
|
%{_libdir}/pkgconfig/libsystemd-id128.pc
|
||||||
|
%{_libdir}/pkgconfig/libsystemd-journal.pc
|
||||||
|
|
||||||
%if %{build_plymouth}
|
%if %{build_plymouth}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user