forked from pool/systemd
Accepting request 286310 from home:jengelh:systemd
- Reinstate and improve (remove huge indents from) tty-ask-password-agent-on-console.patch, 0014-journald-with-journaling-FS.patch, rootsymlink_generator. OBS-URL: https://build.opensuse.org/request/show/286310 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=847
This commit is contained in:
parent
2a176fe605
commit
8b6afdd7bf
@ -1,15 +1,15 @@
|
||||
---
|
||||
rules/99-systemd.rules.in | 2
|
||||
src/core/manager.c | 24 ++++++++--
|
||||
src/shared/util.c | 101 ++++++++++++++++++++++++++++++++++++++++++++--
|
||||
src/core/manager.c | 24 ++++++++---
|
||||
src/shared/util.c | 99 ++++++++++++++++++++++++++++++++++++++++++++--
|
||||
src/shared/util.h | 1
|
||||
4 files changed, 118 insertions(+), 10 deletions(-)
|
||||
4 files changed, 116 insertions(+), 10 deletions(-)
|
||||
|
||||
|
||||
Index: systemd-218/rules/99-systemd.rules.in
|
||||
Index: systemd/rules/99-systemd.rules.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/rules/99-systemd.rules.in
|
||||
+++ systemd-218/rules/99-systemd.rules.in
|
||||
--- systemd.orig/rules/99-systemd.rules.in
|
||||
+++ systemd/rules/99-systemd.rules.in
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
ACTION=="remove", GOTO="systemd_end"
|
||||
@ -19,11 +19,11 @@ Index: systemd-218/rules/99-systemd.rules.in
|
||||
|
||||
KERNEL=="vport*", TAG+="systemd"
|
||||
|
||||
Index: systemd-218/src/core/manager.c
|
||||
Index: systemd/src/core/manager.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/core/manager.c
|
||||
+++ systemd-218/src/core/manager.c
|
||||
@@ -110,7 +110,7 @@ static int manager_watch_jobs_in_progres
|
||||
--- systemd.orig/src/core/manager.c
|
||||
+++ systemd/src/core/manager.c
|
||||
@@ -113,7 +113,7 @@ static int manager_watch_jobs_in_progres
|
||||
|
||||
#define CYLON_BUFFER_EXTRA (2*(sizeof(ANSI_RED_ON)-1) + sizeof(ANSI_HIGHLIGHT_RED_ON)-1 + 2*(sizeof(ANSI_HIGHLIGHT_OFF)-1))
|
||||
|
||||
@ -32,7 +32,7 @@ Index: systemd-218/src/core/manager.c
|
||||
char *p = buffer;
|
||||
|
||||
assert(buflen >= CYLON_BUFFER_EXTRA + width + 1);
|
||||
@@ -119,12 +119,14 @@ static void draw_cylon(char buffer[], si
|
||||
@@ -122,12 +122,14 @@ static void draw_cylon(char buffer[], si
|
||||
if (pos > 1) {
|
||||
if (pos > 2)
|
||||
p = mempset(p, ' ', pos-2);
|
||||
@ -49,7 +49,7 @@ Index: systemd-218/src/core/manager.c
|
||||
*p++ = '*';
|
||||
}
|
||||
|
||||
@@ -135,7 +137,8 @@ static void draw_cylon(char buffer[], si
|
||||
@@ -138,7 +140,8 @@ static void draw_cylon(char buffer[], si
|
||||
*p++ = '*';
|
||||
if (pos < width-1)
|
||||
p = mempset(p, ' ', width-1-pos);
|
||||
@ -59,7 +59,7 @@ Index: systemd-218/src/core/manager.c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,6 +155,7 @@ void manager_flip_auto_status(Manager *m
|
||||
@@ -155,6 +158,7 @@ void manager_flip_auto_status(Manager *m
|
||||
}
|
||||
|
||||
static void manager_print_jobs_in_progress(Manager *m) {
|
||||
@ -67,7 +67,7 @@ Index: systemd-218/src/core/manager.c
|
||||
_cleanup_free_ char *job_of_n = NULL;
|
||||
Iterator i;
|
||||
Job *j;
|
||||
@@ -176,10 +180,20 @@ static void manager_print_jobs_in_progre
|
||||
@@ -180,10 +184,20 @@ static void manager_print_jobs_in_progre
|
||||
assert(counter == print_nr + 1);
|
||||
assert(j);
|
||||
|
||||
@ -89,11 +89,11 @@ Index: systemd-218/src/core/manager.c
|
||||
|
||||
m->jobs_in_progress_iteration++;
|
||||
|
||||
Index: systemd-218/src/shared/util.c
|
||||
Index: systemd/src/shared/util.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/shared/util.c
|
||||
+++ systemd-218/src/shared/util.c
|
||||
@@ -3182,6 +3182,7 @@ int status_vprintf(const char *status, b
|
||||
--- systemd.orig/src/shared/util.c
|
||||
+++ systemd/src/shared/util.c
|
||||
@@ -3212,6 +3212,7 @@ int status_vprintf(const char *status, b
|
||||
struct iovec iovec[6] = {};
|
||||
int n = 0;
|
||||
static bool prev_ephemeral;
|
||||
@ -101,7 +101,7 @@ Index: systemd-218/src/shared/util.c
|
||||
|
||||
assert(format);
|
||||
|
||||
@@ -3195,6 +3196,41 @@ int status_vprintf(const char *status, b
|
||||
@@ -3225,6 +3226,41 @@ int status_vprintf(const char *status, b
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
@ -143,7 +143,7 @@ Index: systemd-218/src/shared/util.c
|
||||
if (ellipse) {
|
||||
char *e;
|
||||
size_t emax, sl;
|
||||
@@ -3217,8 +3253,12 @@ int status_vprintf(const char *status, b
|
||||
@@ -3247,8 +3283,12 @@ int status_vprintf(const char *status, b
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,7 +158,7 @@ Index: systemd-218/src/shared/util.c
|
||||
prev_ephemeral = ephemeral;
|
||||
|
||||
if (status) {
|
||||
@@ -3474,8 +3514,22 @@ void columns_lines_cache_reset(int signu
|
||||
@@ -3504,8 +3544,22 @@ void columns_lines_cache_reset(int signu
|
||||
bool on_tty(void) {
|
||||
static int cached_on_tty = -1;
|
||||
|
||||
@ -182,7 +182,7 @@ Index: systemd-218/src/shared/util.c
|
||||
|
||||
return cached_on_tty;
|
||||
}
|
||||
@@ -3493,6 +3547,27 @@ int files_same(const char *filea, const
|
||||
@@ -3523,6 +3577,27 @@ int files_same(const char *filea, const
|
||||
a.st_ino == b.st_ino;
|
||||
}
|
||||
|
||||
@ -210,11 +210,11 @@ Index: systemd-218/src/shared/util.c
|
||||
int running_in_chroot(void) {
|
||||
int ret;
|
||||
|
||||
@@ -3976,7 +4051,25 @@ bool tty_is_vc_resolve(const char *tty)
|
||||
@@ -4006,7 +4081,23 @@ bool tty_is_vc_resolve(const char *tty)
|
||||
const char *default_term_for_tty(const char *tty) {
|
||||
assert(tty);
|
||||
|
||||
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt102";
|
||||
- return tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
|
||||
+ if (tty_is_vc_resolve(tty))
|
||||
+ return "TERM=linux";
|
||||
+
|
||||
@ -230,18 +230,16 @@ Index: systemd-218/src/shared/util.c
|
||||
+ if (streq(mode, "3270"))
|
||||
+ return "TERM=ibm327x";
|
||||
+ }
|
||||
+ if (streq(tty, "ttyS1"))
|
||||
+ return "TERM=vt220";
|
||||
+#endif
|
||||
+ return "TERM=vt102";
|
||||
+ return "TERM=vt220";
|
||||
}
|
||||
|
||||
bool dirent_is_file(const struct dirent *de) {
|
||||
Index: systemd-218/src/shared/util.h
|
||||
Index: systemd/src/shared/util.h
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/shared/util.h
|
||||
+++ systemd-218/src/shared/util.h
|
||||
@@ -474,6 +474,7 @@ unsigned lines(void);
|
||||
--- systemd.orig/src/shared/util.h
|
||||
+++ systemd/src/shared/util.h
|
||||
@@ -475,6 +475,7 @@ unsigned lines(void);
|
||||
void columns_lines_cache_reset(int _unused_ signum);
|
||||
|
||||
bool on_tty(void);
|
||||
|
@ -1,11 +1,22 @@
|
||||
---
|
||||
src/journal/journald-server.c | 29 +++++++++++++++++++++++++++--
|
||||
1 file changed, 27 insertions(+), 2 deletions(-)
|
||||
From: werner@suse.de
|
||||
Upstream: marked as openSUSE-specific fix originally, but may well
|
||||
worth be to be sent upstream.
|
||||
|
||||
Index: systemd-218/src/journal/journald-server.c
|
||||
Original description:
|
||||
(none)
|
||||
|
||||
Augmented description [jengelh@inai.de]:
|
||||
Disable COW on journal files, as that is naturally leading to a lot
|
||||
of unwanted fragmentation on btrfs.
|
||||
No word on compression…
|
||||
---
|
||||
src/journal/journald-server.c | 34 ++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 34 insertions(+)
|
||||
|
||||
Index: systemd/src/journal/journald-server.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/journald-server.c
|
||||
+++ systemd-218/src/journal/journald-server.c
|
||||
--- systemd.orig/src/journal/journald-server.c
|
||||
+++ systemd/src/journal/journald-server.c
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <sys/signalfd.h>
|
||||
@ -14,45 +25,50 @@ Index: systemd-218/src/journal/journald-server.c
|
||||
#include <linux/sockios.h>
|
||||
#include <sys/statvfs.h>
|
||||
#include <sys/mman.h>
|
||||
@@ -921,7 +922,7 @@ finish:
|
||||
@@ -917,6 +918,38 @@ finish:
|
||||
dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id, priority, object_pid);
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * On journaling and/or compressing file systems, avoid doubling the efforts
|
||||
+ * for the system, that is, set NOCOW and NOCOMP inode flags. Check for every
|
||||
+ * single flag, as otherwise, some of the file systems may return EOPNOTSUPP on
|
||||
+ * a single unkown flag (like BtrFS does).
|
||||
+ *
|
||||
+ * …but src/journal/journal-file.c already sets NOCOW too…⸘
|
||||
+ */
|
||||
+static void disable_cow(const char *dir, const Server *serv)
|
||||
+{
|
||||
+ unsigned long flags;
|
||||
+ int fd = open(dir, O_DIRECTORY);
|
||||
+
|
||||
+ if (fd < 0)
|
||||
+ return;
|
||||
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
|
||||
+ unsigned long old = flags;
|
||||
+ if (!(flags & FS_NOATIME_FL) &&
|
||||
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOATIME_FL) == 0)
|
||||
+ flags |= FS_NOATIME_FL;
|
||||
+ if (!(flags & FS_NOCOW_FL) &&
|
||||
+ ioctl(fd, FS_IOC_SETFLAGS, flags | FS_NOCOW_FL) == 0)
|
||||
+ flags |= FS_NOCOW_FL;
|
||||
+ if (!(flags & FS_NOCOMP_FL) && serv->compress) {
|
||||
+ flags &= ~FS_COMPR_FL;
|
||||
+ flags |= FS_NOCOMP_FL;
|
||||
+ }
|
||||
+ if (old != flags)
|
||||
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
|
||||
+ }
|
||||
+ close(fd);
|
||||
+}
|
||||
|
||||
static int system_journal_open(Server *s, bool flush_requested) {
|
||||
- int r;
|
||||
+ int r, fd;
|
||||
char *fn;
|
||||
sd_id128_t machine;
|
||||
char ids[33];
|
||||
@@ -947,7 +948,31 @@ static int system_journal_open(Server *s
|
||||
(void) mkdir("/var/log/journal/", 0755);
|
||||
int r;
|
||||
@@ -946,6 +979,7 @@ static int system_journal_open(Server *s
|
||||
|
||||
fn = strappenda("/var/log/journal/", ids);
|
||||
- (void) mkdir(fn, 0755);
|
||||
+ (void)mkdir(fn, 0755);
|
||||
+
|
||||
+ /*
|
||||
+ * On journaling and/or compressing file systems avoid doubling the
|
||||
+ * efforts for the system, that is set NOCOW and NOCOMP inode flags.
|
||||
+ * Check for every single flag as otherwise some of the file systems
|
||||
+ * may return EOPNOTSUPP on one unkown flag (like BtrFS does).
|
||||
+ */
|
||||
+ if ((fd = open(fn, O_DIRECTORY)) >= 0) {
|
||||
+ long flags;
|
||||
+ if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == 0) {
|
||||
+ int old = flags;
|
||||
+ if (!(flags&FS_NOATIME_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOATIME_FL) == 0)
|
||||
+ flags |= FS_NOATIME_FL;
|
||||
+ if (!(flags&FS_NOCOW_FL) && ioctl(fd, FS_IOC_SETFLAGS, flags|FS_NOCOW_FL) == 0)
|
||||
+ flags |= FS_NOCOW_FL;
|
||||
+ if (!(flags&FS_NOCOMP_FL) && s->compress) {
|
||||
+ flags &= ~FS_COMPR_FL;
|
||||
+ flags |= FS_NOCOMP_FL;
|
||||
+ }
|
||||
+ if (old != flags)
|
||||
+ ioctl(fd, FS_IOC_SETFLAGS, flags);
|
||||
+ }
|
||||
+ close(fd);
|
||||
+ }
|
||||
fn = strjoina("/var/log/journal/", ids);
|
||||
(void) mkdir(fn, 0755);
|
||||
+ disable_cow(fn, s);
|
||||
|
||||
fn = strappenda(fn, "/system.journal");
|
||||
fn = strjoina(fn, "/system.journal");
|
||||
r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, s->seal, &s->system_metrics, s->mmap, NULL, &s->system_journal);
|
||||
|
@ -12,10 +12,10 @@
|
||||
shell-completion/bash/udevadm | 6 +++++-
|
||||
11 files changed, 70 insertions(+), 11 deletions(-)
|
||||
|
||||
Index: systemd-218/shell-completion/bash/coredumpctl
|
||||
Index: systemd/shell-completion/bash/coredumpctl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/coredumpctl
|
||||
+++ systemd-218/shell-completion/bash/coredumpctl
|
||||
--- systemd.orig/shell-completion/bash/coredumpctl
|
||||
+++ systemd/shell-completion/bash/coredumpctl
|
||||
@@ -44,6 +44,10 @@ _coredumpctl() {
|
||||
[DUMP]='dump gdb'
|
||||
)
|
||||
@ -33,13 +33,13 @@ Index: systemd-218/shell-completion/bash/coredumpctl
|
||||
|
||||
-complete -F _coredumpctl coredumpctl
|
||||
+complete -o default -o bashdefault -F _coredumpctl coredumpctl
|
||||
Index: systemd-218/shell-completion/bash/hostnamectl
|
||||
Index: systemd/shell-completion/bash/hostnamectl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/hostnamectl
|
||||
+++ systemd-218/shell-completion/bash/hostnamectl
|
||||
--- systemd.orig/shell-completion/bash/hostnamectl
|
||||
+++ systemd/shell-completion/bash/hostnamectl
|
||||
@@ -30,6 +30,10 @@ _hostnamectl() {
|
||||
local OPTS='-h --help --version --transient --static --pretty
|
||||
--no-ask-password -H --host'
|
||||
--no-ask-password -H --host --machine'
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
+ return 0
|
||||
@ -54,12 +54,12 @@ Index: systemd-218/shell-completion/bash/hostnamectl
|
||||
|
||||
-complete -F _hostnamectl hostnamectl
|
||||
+complete -o default -o bashdefault -F _hostnamectl hostnamectl
|
||||
Index: systemd-218/shell-completion/bash/journalctl
|
||||
Index: systemd/shell-completion/bash/journalctl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/journalctl
|
||||
+++ systemd-218/shell-completion/bash/journalctl
|
||||
@@ -51,6 +51,10 @@ _journalctl() {
|
||||
--verify-key'
|
||||
--- systemd.orig/shell-completion/bash/journalctl
|
||||
+++ systemd/shell-completion/bash/journalctl
|
||||
@@ -55,6 +55,10 @@ _journalctl() {
|
||||
--root --machine'
|
||||
)
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
@ -69,16 +69,16 @@ Index: systemd-218/shell-completion/bash/journalctl
|
||||
if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then
|
||||
case $prev in
|
||||
--boot|--this-boot|-b)
|
||||
@@ -116,4 +120,4 @@ _journalctl() {
|
||||
@@ -120,4 +124,4 @@ _journalctl() {
|
||||
fi
|
||||
}
|
||||
|
||||
-complete -F _journalctl journalctl
|
||||
+complete -o default -o bashdefault -F _journalctl journalctl
|
||||
Index: systemd-218/shell-completion/bash/kernel-install
|
||||
Index: systemd/shell-completion/bash/kernel-install
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/kernel-install
|
||||
+++ systemd-218/shell-completion/bash/kernel-install
|
||||
--- systemd.orig/shell-completion/bash/kernel-install
|
||||
+++ systemd/shell-completion/bash/kernel-install
|
||||
@@ -18,11 +18,22 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
@ -108,13 +108,13 @@ Index: systemd-218/shell-completion/bash/kernel-install
|
||||
|
||||
-complete -F _kernel_install kernel-install
|
||||
+complete -o default -o bashdefault -F _kernel_install kernel-install
|
||||
Index: systemd-218/shell-completion/bash/localectl
|
||||
Index: systemd/shell-completion/bash/localectl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/localectl
|
||||
+++ systemd-218/shell-completion/bash/localectl
|
||||
--- systemd.orig/shell-completion/bash/localectl
|
||||
+++ systemd/shell-completion/bash/localectl
|
||||
@@ -36,6 +36,10 @@ _localectl() {
|
||||
local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
|
||||
-H --host'
|
||||
-H --host --machine'
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
+ return 0
|
||||
@ -129,13 +129,13 @@ Index: systemd-218/shell-completion/bash/localectl
|
||||
|
||||
-complete -F _localectl localectl
|
||||
+complete -o default -o bashdefault -F _localectl localectl
|
||||
Index: systemd-218/shell-completion/bash/loginctl
|
||||
Index: systemd/shell-completion/bash/loginctl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/loginctl
|
||||
+++ systemd-218/shell-completion/bash/loginctl
|
||||
@@ -37,6 +37,10 @@ _loginctl () {
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s'
|
||||
)
|
||||
--- systemd.orig/shell-completion/bash/loginctl
|
||||
+++ systemd/shell-completion/bash/loginctl
|
||||
@@ -38,6 +38,10 @@ _loginctl () {
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --machine'
|
||||
)
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
+ return 0
|
||||
@ -144,16 +144,16 @@ Index: systemd-218/shell-completion/bash/loginctl
|
||||
if __contains_word "$prev" ${OPTS[ARG]}; then
|
||||
case $prev in
|
||||
--signal|-s)
|
||||
@@ -106,4 +110,4 @@ _loginctl () {
|
||||
@@ -107,4 +111,4 @@ _loginctl () {
|
||||
return 0
|
||||
}
|
||||
|
||||
-complete -F _loginctl loginctl
|
||||
+complete -o default -o bashdefault -F _loginctl loginctl
|
||||
Index: systemd-218/shell-completion/bash/systemctl.in
|
||||
Index: systemd/shell-completion/bash/systemctl.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/systemctl.in
|
||||
+++ systemd-218/shell-completion/bash/systemctl.in
|
||||
--- systemd.orig/shell-completion/bash/systemctl.in
|
||||
+++ systemd/shell-completion/bash/systemctl.in
|
||||
@@ -96,6 +96,10 @@ _systemctl () {
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
|
||||
)
|
||||
@ -171,10 +171,10 @@ Index: systemd-218/shell-completion/bash/systemctl.in
|
||||
|
||||
-complete -F _systemctl systemctl
|
||||
+complete -o default -o bashdefault -F _systemctl systemctl
|
||||
Index: systemd-218/shell-completion/bash/systemd-analyze
|
||||
Index: systemd/shell-completion/bash/systemd-analyze
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/systemd-analyze
|
||||
+++ systemd-218/shell-completion/bash/systemd-analyze
|
||||
--- systemd.orig/shell-completion/bash/systemd-analyze
|
||||
+++ systemd/shell-completion/bash/systemd-analyze
|
||||
@@ -47,6 +47,10 @@ _systemd_analyze() {
|
||||
[VERIFY]='verify'
|
||||
)
|
||||
@ -192,10 +192,10 @@ Index: systemd-218/shell-completion/bash/systemd-analyze
|
||||
|
||||
-complete -F _systemd_analyze systemd-analyze
|
||||
+complete -o default -o bashdefault -F _systemd_analyze systemd-analyze
|
||||
Index: systemd-218/shell-completion/bash/systemd-run
|
||||
Index: systemd/shell-completion/bash/systemd-run
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/systemd-run
|
||||
+++ systemd-218/shell-completion/bash/systemd-run
|
||||
--- systemd.orig/shell-completion/bash/systemd-run
|
||||
+++ systemd/shell-completion/bash/systemd-run
|
||||
@@ -17,6 +17,13 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
@ -228,13 +228,13 @@ Index: systemd-218/shell-completion/bash/systemd-run
|
||||
|
||||
-complete -F _systemd_run systemd-run
|
||||
+complete -o default -o bashdefault -F _systemd_run systemd-run
|
||||
Index: systemd-218/shell-completion/bash/timedatectl
|
||||
Index: systemd/shell-completion/bash/timedatectl
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/timedatectl
|
||||
+++ systemd-218/shell-completion/bash/timedatectl
|
||||
--- systemd.orig/shell-completion/bash/timedatectl
|
||||
+++ systemd/shell-completion/bash/timedatectl
|
||||
@@ -30,6 +30,10 @@ _timedatectl() {
|
||||
local OPTS='-h --help --version --adjust-system-clock --no-pager
|
||||
--no-ask-password -H --host'
|
||||
--no-ask-password -H --host --machine'
|
||||
|
||||
+ if __contains_word ">" ${COMP_WORDS[*]:0:COMP_CWORD}; then
|
||||
+ return 0
|
||||
@ -249,10 +249,10 @@ Index: systemd-218/shell-completion/bash/timedatectl
|
||||
|
||||
-complete -F _timedatectl timedatectl
|
||||
+complete -o default -o bashdefault -F _timedatectl timedatectl
|
||||
Index: systemd-218/shell-completion/bash/udevadm
|
||||
Index: systemd/shell-completion/bash/udevadm
|
||||
===================================================================
|
||||
--- systemd-218.orig/shell-completion/bash/udevadm
|
||||
+++ systemd-218/shell-completion/bash/udevadm
|
||||
--- systemd.orig/shell-completion/bash/udevadm
|
||||
+++ systemd/shell-completion/bash/udevadm
|
||||
@@ -36,6 +36,10 @@ _udevadm() {
|
||||
|
||||
local verbs=(info trigger settle control monitor hwdb test-builtin test)
|
||||
|
@ -4,14 +4,16 @@ Subject: create default links for primary cd_dvd drive
|
||||
|
||||
cdrom_id: created links for the default cd/dvd drive (bnc#783054).
|
||||
---
|
||||
rules/60-cdrom_id.rules | 5 ++++-
|
||||
rules/60-cdrom_id.rules | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- systemd-206.orig/rules/60-cdrom_id.rules
|
||||
+++ systemd-206/rules/60-cdrom_id.rules
|
||||
@@ -15,6 +15,9 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdr
|
||||
# enable the receiving of media eject button events
|
||||
IMPORT{program}="cdrom_id --lock-media $devnode"
|
||||
Index: systemd/rules/60-cdrom_id.rules
|
||||
===================================================================
|
||||
--- systemd.orig/rules/60-cdrom_id.rules
|
||||
+++ systemd/rules/60-cdrom_id.rules
|
||||
@@ -20,6 +20,9 @@ IMPORT{program}="cdrom_id --lock-media $
|
||||
# stale mounts after ejecting
|
||||
ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0"
|
||||
|
||||
-KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
|
||||
+KERNEL=="sr0", ENV{ID_CDROM}=="1", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
|
||||
|
@ -18,10 +18,10 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
||||
src/udev/scsi_id/scsi_serial.c | 19 +++++++++++++------
|
||||
4 files changed, 32 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: systemd-218/rules/60-persistent-storage.rules
|
||||
Index: systemd/rules/60-persistent-storage.rules
|
||||
===================================================================
|
||||
--- systemd-218.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd-218/rules/60-persistent-storage.rules
|
||||
--- systemd.orig/rules/60-persistent-storage.rules
|
||||
+++ systemd/rules/60-persistent-storage.rules
|
||||
@@ -46,6 +46,10 @@ KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="par
|
||||
KERNEL=="sd*[!0-9]", ENV{ID_BUS}=="ata", PROGRAM="scsi_id --whitelisted --replace-whitespace -p0x80 -d $devnode", RESULT=="?*", ENV{ID_SCSI_COMPAT}="$result", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
|
||||
KERNEL=="sd*[0-9]", ENV{ID_SCSI_COMPAT}=="?*", SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"
|
||||
@ -33,10 +33,10 @@ Index: systemd-218/rules/60-persistent-storage.rules
|
||||
# firewire
|
||||
KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
|
||||
KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
|
||||
Index: systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
Index: systemd/src/udev/scsi_id/scsi_id.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/scsi_id/scsi_id.c
|
||||
+++ systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_id.c
|
||||
+++ systemd/src/udev/scsi_id/scsi_id.c
|
||||
@@ -43,6 +43,7 @@ static const struct option options[] = {
|
||||
{ "replace-whitespace", no_argument, NULL, 'u' },
|
||||
{ "sg-version", required_argument, NULL, 's' },
|
||||
@ -53,15 +53,15 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
static bool reformat_serial = false;
|
||||
static bool export = false;
|
||||
static char vendor_str[64];
|
||||
@@ -313,6 +315,7 @@ static void help(void) {
|
||||
" -g,--whitelisted treat device as whitelisted\n"
|
||||
" -u,--replace-whitespace replace all whitespace by underscores\n"
|
||||
" -v,--verbose verbose logging\n"
|
||||
@@ -316,6 +318,7 @@ static void help(void) {
|
||||
" -g --whitelisted Treat device as whitelisted\n"
|
||||
" -u --replace-whitespace Replace all whitespace by underscores\n"
|
||||
" -v --verbose Verbose logging\n"
|
||||
+ " --truncated-serial truncated serial for compatibility with systems configured with by-id links created by udev < 184\n"
|
||||
" --version print version\n"
|
||||
" -x,--export print values as environment keys\n"
|
||||
" -h,--help print this help text\n\n");
|
||||
@@ -385,6 +388,10 @@ static int set_options(struct udev *udev
|
||||
" -x --export Print values as environment keys\n"
|
||||
, program_invocation_short_name);
|
||||
|
||||
@@ -387,6 +390,10 @@ static int set_options(struct udev *udev
|
||||
log_open();
|
||||
break;
|
||||
|
||||
@ -72,7 +72,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
case 'V':
|
||||
printf("%s\n", VERSION);
|
||||
exit(0);
|
||||
@@ -526,6 +533,9 @@ static int scsi_id(struct udev *udev, ch
|
||||
@@ -528,6 +535,9 @@ static int scsi_id(struct udev *udev, ch
|
||||
util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str));
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("ID_SERIAL=%s\n", serial_str);
|
||||
@ -82,7 +82,7 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
util_replace_whitespace(dev_scsi.serial_short, serial_str, sizeof(serial_str));
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("ID_SERIAL_SHORT=%s\n", serial_str);
|
||||
@@ -556,7 +566,10 @@ static int scsi_id(struct udev *udev, ch
|
||||
@@ -558,7 +568,10 @@ static int scsi_id(struct udev *udev, ch
|
||||
if (reformat_serial) {
|
||||
char serial_str[MAX_SERIAL_LEN];
|
||||
|
||||
@ -94,10 +94,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.c
|
||||
util_replace_chars(serial_str, NULL);
|
||||
printf("%s\n", serial_str);
|
||||
goto out;
|
||||
Index: systemd-218/src/udev/scsi_id/scsi_id.h
|
||||
Index: systemd/src/udev/scsi_id/scsi_id.h
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/scsi_id/scsi_id.h
|
||||
+++ systemd-218/src/udev/scsi_id/scsi_id.h
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_id.h
|
||||
+++ systemd/src/udev/scsi_id/scsi_id.h
|
||||
@@ -43,6 +43,7 @@ struct scsi_id_device {
|
||||
char kernel[64];
|
||||
char serial[MAX_SERIAL_LEN];
|
||||
@ -106,10 +106,10 @@ Index: systemd-218/src/udev/scsi_id/scsi_id.h
|
||||
int use_sg;
|
||||
|
||||
/* Always from page 0x80 e.g. 'B3G1P8500RWT' - may not be unique */
|
||||
Index: systemd-218/src/udev/scsi_id/scsi_serial.c
|
||||
Index: systemd/src/udev/scsi_id/scsi_serial.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/udev/scsi_id/scsi_serial.c
|
||||
+++ systemd-218/src/udev/scsi_id/scsi_serial.c
|
||||
--- systemd.orig/src/udev/scsi_id/scsi_serial.c
|
||||
+++ systemd/src/udev/scsi_id/scsi_serial.c
|
||||
@@ -96,7 +96,8 @@ static const char hex_str[]="0123456789a
|
||||
|
||||
static int do_scsi_page80_inquiry(struct udev *udev,
|
||||
|
@ -1,19 +1,24 @@
|
||||
Index: systemd-210/Makefile.am
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
rules/60-ssd-scheduler.rules | 11 +++++++++++
|
||||
2 files changed, 12 insertions(+)
|
||||
|
||||
Index: systemd/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-210.orig/Makefile.am
|
||||
+++ systemd-210/Makefile.am
|
||||
@@ -2546,6 +2546,7 @@ dist_udevrules_DATA += \
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -3576,6 +3576,7 @@ dist_udevrules_DATA += \
|
||||
rules/60-persistent-input.rules \
|
||||
rules/60-persistent-alsa.rules \
|
||||
rules/60-persistent-storage.rules \
|
||||
+ rules/60-ssd-scheduler.rules \
|
||||
rules/64-btrfs.rules \
|
||||
rules/75-net-description.rules \
|
||||
rules/75-tty-description.rules \
|
||||
Index: systemd-210/rules/60-ssd-scheduler.rules
|
||||
rules/70-mouse.rules \
|
||||
rules/70-touchpad.rules \
|
||||
Index: systemd/rules/60-ssd-scheduler.rules
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-210/rules/60-ssd-scheduler.rules
|
||||
+++ systemd/rules/60-ssd-scheduler.rules
|
||||
@@ -0,0 +1,11 @@
|
||||
+# do not edit this file, it will be overwritten on update
|
||||
+
|
||||
|
@ -1,16 +1,16 @@
|
||||
---
|
||||
Makefile.am | 19 ++++
|
||||
src/udev/rootsymlink_generator/rootsymlink_generator.c | 65 +++++++++++++++++
|
||||
Makefile.am | 19 +++++
|
||||
src/udev/rootsymlink_generator/rootsymlink_generator.c | 57 +++++++++++++++++
|
||||
units/systemd-udev-root-symlink.service | 10 ++
|
||||
units/systemd-udev-root-symlink.service.in | 10 ++
|
||||
4 files changed, 104 insertions(+)
|
||||
4 files changed, 96 insertions(+)
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -3660,6 +3660,25 @@ EXTRA_DIST += \
|
||||
test/rule-syntax-check.py
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -3862,6 +3862,25 @@ EXTRA_DIST += \
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
+rootsymlink_generator_SOURCES = \
|
||||
@ -35,11 +35,11 @@ Index: systemd-218/Makefile.am
|
||||
ata_id_SOURCES = \
|
||||
src/udev/ata_id/ata_id.c
|
||||
|
||||
Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
Index: systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
@@ -0,0 +1,65 @@
|
||||
+++ systemd/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
@@ -0,0 +1,57 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2014-2015 Robert Milasan <rmilasan@suse.com>
|
||||
+ *
|
||||
@ -73,42 +73,34 @@ Index: systemd-218/src/udev/rootsymlink_generator/rootsymlink_generator.c
|
||||
+
|
||||
+int main(void)
|
||||
+{
|
||||
+ char filename[BUFFER_SIZE], buf[BUFFER_SIZE];
|
||||
+ struct stat statbuf;
|
||||
+ int fd;
|
||||
+
|
||||
+ if (stat(_ROOTDEV_, &statbuf) != 0)
|
||||
+ if (stat(_ROOTDEV_, &statbuf) < 0)
|
||||
+ return 1;
|
||||
+
|
||||
+ if (major(statbuf.st_dev) > 0) {
|
||||
+ int fd = -1;
|
||||
+ char filename[BUFFER_SIZE];
|
||||
+
|
||||
+ if (mkdir(_PATH_, 0755) != 0 && errno != EEXIST)
|
||||
+ return errno;
|
||||
+
|
||||
+ snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_);
|
||||
+
|
||||
+ if ((fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC, 0644)) == -1)
|
||||
+ return errno;
|
||||
+ else {
|
||||
+ char buf[BUFFER_SIZE];
|
||||
+
|
||||
+ snprintf(buf, BUFFER_SIZE, "ACTION==\"add|change\", SUBSYSTEM==\"block\", ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n",
|
||||
+ major(statbuf.st_dev), minor(statbuf.st_dev));
|
||||
+
|
||||
+ if (write(fd, buf, strlen(buf)) == -1)
|
||||
+ return errno;
|
||||
+
|
||||
+ if (close(fd) == -1)
|
||||
+ return errno;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (major(statbuf.st_dev) <= 0)
|
||||
+ return 0;
|
||||
+ if (mkdir(_PATH_, 0755) < 0 && errno != EEXIST)
|
||||
+ return errno;
|
||||
+ snprintf(filename, BUFFER_SIZE, "%s/%s", _PATH_, _FILE_);
|
||||
+ fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0644);
|
||||
+ if (fd < 0)
|
||||
+ return errno;
|
||||
+ snprintf(buf, BUFFER_SIZE,
|
||||
+ "ACTION==\"add|change\", SUBSYSTEM==\"block\", "
|
||||
+ "ENV{MAJOR}==\"%d\", ENV{MINOR}==\"%d\", SYMLINK+=\"root\"\n",
|
||||
+ major(statbuf.st_dev), minor(statbuf.st_dev));
|
||||
+ if (write(fd, buf, strlen(buf)) < 0)
|
||||
+ return errno;
|
||||
+ if (close(fd) < 0)
|
||||
+ return errno;
|
||||
+ return 0;
|
||||
+}
|
||||
Index: systemd-218/units/systemd-udev-root-symlink.service
|
||||
Index: systemd/units/systemd-udev-root-symlink.service
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/units/systemd-udev-root-symlink.service
|
||||
+++ systemd/units/systemd-udev-root-symlink.service
|
||||
@@ -0,0 +1,10 @@
|
||||
+[Unit]
|
||||
+Description=Rule generator for /dev/root symlink
|
||||
@ -120,10 +112,10 @@ Index: systemd-218/units/systemd-udev-root-symlink.service
|
||||
+Type=oneshot
|
||||
+RemainAfterExit=yes
|
||||
+ExecStart=/usr/lib/udev/rootsymlink-generator
|
||||
Index: systemd-218/units/systemd-udev-root-symlink.service.in
|
||||
Index: systemd/units/systemd-udev-root-symlink.service.in
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/units/systemd-udev-root-symlink.service.in
|
||||
+++ systemd/units/systemd-udev-root-symlink.service.in
|
||||
@@ -0,0 +1,10 @@
|
||||
+[Unit]
|
||||
+Description=Rule generator for /dev/root symlink
|
||||
|
@ -7,10 +7,10 @@ forward suspend/hibernation calls to pm-utils, if installed (bnc#790157)
|
||||
src/sleep/sleep.c | 27 ++++++++++++++++++++++-----
|
||||
1 file changed, 22 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd-218/src/sleep/sleep.c
|
||||
Index: systemd/src/sleep/sleep.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/sleep/sleep.c
|
||||
+++ systemd-218/src/sleep/sleep.c
|
||||
--- systemd.orig/src/sleep/sleep.c
|
||||
+++ systemd/src/sleep/sleep.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
@ -39,7 +39,7 @@ Index: systemd-218/src/sleep/sleep.c
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -96,6 +95,8 @@ static int execute(char **modes, char **
|
||||
@@ -97,6 +96,8 @@ static int execute(char **modes, char **
|
||||
int r;
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
|
||||
@ -48,15 +48,15 @@ Index: systemd-218/src/sleep/sleep.c
|
||||
/* This file is opened first, so that if we hit an error,
|
||||
* we can abort before modifying any state. */
|
||||
f = fopen("/sys/power/state", "we");
|
||||
@@ -106,6 +107,7 @@ static int execute(char **modes, char **
|
||||
@@ -107,6 +108,7 @@ static int execute(char **modes, char **
|
||||
r = write_mode(modes);
|
||||
if (r < 0)
|
||||
return r;
|
||||
+ }
|
||||
|
||||
execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments);
|
||||
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, arguments);
|
||||
|
||||
@@ -114,8 +116,10 @@ static int execute(char **modes, char **
|
||||
@@ -115,8 +117,10 @@ static int execute(char **modes, char **
|
||||
LOG_MESSAGE("Suspending system..."),
|
||||
"SLEEP=%s", arg_verb,
|
||||
NULL);
|
||||
@ -68,7 +68,7 @@ Index: systemd-218/src/sleep/sleep.c
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -155,6 +159,7 @@ static int parse_argv(int argc, char *ar
|
||||
@@ -156,6 +160,7 @@ static int parse_argv(int argc, char *ar
|
||||
};
|
||||
|
||||
int c;
|
||||
@ -76,7 +76,7 @@ Index: systemd-218/src/sleep/sleep.c
|
||||
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
@@ -192,6 +197,18 @@ static int parse_argv(int argc, char *ar
|
||||
@@ -193,6 +198,18 @@ static int parse_argv(int argc, char *ar
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -13,10 +13,10 @@ systemd unit drop-in files to add dependencies
|
||||
create mode 100644 src/insserv-generator/Makefile
|
||||
create mode 100644 src/insserv-generator/insserv-generator.c
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -399,6 +399,7 @@ rootlibexec_PROGRAMS += \
|
||||
endif
|
||||
|
||||
@ -25,7 +25,7 @@ Index: systemd-218/Makefile.am
|
||||
systemd-getty-generator \
|
||||
systemd-fstab-generator \
|
||||
systemd-system-update-generator \
|
||||
@@ -2286,6 +2287,14 @@ systemd_delta_LDADD = \
|
||||
@@ -2328,6 +2329,14 @@ systemd_delta_LDADD = \
|
||||
libsystemd-shared.la
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
@ -40,10 +40,10 @@ Index: systemd-218/Makefile.am
|
||||
systemd_getty_generator_SOURCES = \
|
||||
src/getty-generator/getty-generator.c
|
||||
|
||||
Index: systemd-218/src/insserv-generator/Makefile
|
||||
Index: systemd/src/insserv-generator/Makefile
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/insserv-generator/Makefile
|
||||
+++ systemd/src/insserv-generator/Makefile
|
||||
@@ -0,0 +1,28 @@
|
||||
+# This file is part of systemd.
|
||||
+#
|
||||
@ -73,10 +73,10 @@ Index: systemd-218/src/insserv-generator/Makefile
|
||||
+ $(MAKE) -C .. clean
|
||||
+
|
||||
+.PHONY: all clean
|
||||
Index: systemd-218/src/insserv-generator/insserv-generator.c
|
||||
Index: systemd/src/insserv-generator/insserv-generator.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ systemd-218/src/insserv-generator/insserv-generator.c
|
||||
+++ systemd/src/insserv-generator/insserv-generator.c
|
||||
@@ -0,0 +1,312 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
|
||||
+
|
||||
@ -354,7 +354,7 @@ Index: systemd-218/src/insserv-generator/insserv-generator.c
|
||||
+
|
||||
+ while ((de = readdir(d))) {
|
||||
+ char *path = NULL;
|
||||
+ if (ignore_file(de->d_name))
|
||||
+ if (hidden_file(de->d_name))
|
||||
+ continue;
|
||||
+
|
||||
+ path = strjoin("/etc/insserv.conf.d/", de->d_name, NULL);
|
||||
|
@ -1,143 +1,135 @@
|
||||
---
|
||||
src/journal/catalog.c | 18 +++++++++++++++++-
|
||||
src/journal/journal-authenticate.c | 4 ++--
|
||||
src/journal/journal-file.c | 2 +-
|
||||
src/journal/journald-kmsg.c | 2 +-
|
||||
src/journal/mmap-cache.c | 22 +++++++++++++++++++++-
|
||||
5 files changed, 42 insertions(+), 6 deletions(-)
|
||||
From: werner@suse.de
|
||||
Upstream: marked as openSUSE-specific fix originally, but may well
|
||||
worth be to be sent upstream.
|
||||
|
||||
Index: systemd-218/src/journal/catalog.c
|
||||
Original description:
|
||||
(none)
|
||||
|
||||
Notes [jengelh@inai.de]:
|
||||
MAP_NONBLOCK is documented (mmap(2) in man-pages-3.69+) to render
|
||||
MAP_POPULATE ineffective. Why do we have it?
|
||||
What is the rationale for MAP_STACK?
|
||||
---
|
||||
src/journal/catalog.c | 12 +++++++++++-
|
||||
src/journal/journal-authenticate.c | 7 +++++--
|
||||
src/journal/journald-kmsg.c | 3 ++-
|
||||
src/journal/mmap-cache.c | 16 +++++++++++++++-
|
||||
4 files changed, 33 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd/src/journal/catalog.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/catalog.c
|
||||
+++ systemd-218/src/journal/catalog.c
|
||||
@@ -471,9 +471,19 @@ finish:
|
||||
--- systemd.orig/src/journal/catalog.c
|
||||
+++ systemd/src/journal/catalog.c
|
||||
@@ -470,6 +470,10 @@ finish:
|
||||
|
||||
static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) {
|
||||
const CatalogHeader *h;
|
||||
+ static const struct {
|
||||
+ const int index;
|
||||
+ int advise;
|
||||
+ } advises[] = {
|
||||
+ {0,MADV_WILLNEED},
|
||||
+ {1,MADV_SEQUENTIAL},
|
||||
+ {2,MADV_DONTDUMP},
|
||||
+ {3,MADV_DONTFORK}
|
||||
+ };
|
||||
+ static const unsigned int advice[] =
|
||||
+ {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
|
||||
+ unsigned int n;
|
||||
+ size_t psize;
|
||||
int fd;
|
||||
void *p;
|
||||
struct stat st;
|
||||
+ size_t psize;
|
||||
|
||||
assert(_fd);
|
||||
assert(_st);
|
||||
@@ -493,11 +503,17 @@ static int open_mmap(const char *databas
|
||||
@@ -492,12 +496,18 @@ static int open_mmap(const char *databas
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- p = mmap(NULL, PAGE_ALIGN(st.st_size), PROT_READ, MAP_SHARED, fd, 0);
|
||||
+ psize = PAGE_ALIGN(st.st_size);
|
||||
+ p = mmap(NULL, psize, PROT_READ, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, 0);
|
||||
+ p = mmap(NULL, psize, PROT_READ, MAP_SHARED | MAP_POPULATE |
|
||||
+ MAP_NONBLOCK, fd, 0);
|
||||
if (p == MAP_FAILED) {
|
||||
safe_close(fd);
|
||||
return -errno;
|
||||
}
|
||||
+ for (size_t n = 0; n < sizeof(advises) / sizeof(*advises); ++n) {
|
||||
+ int r = madvise(p, psize, advises[n].advise);
|
||||
+ if (r < 0)
|
||||
+ log_warning("Failed to give advice about use of memory: %m");
|
||||
+ }
|
||||
|
||||
+ for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n)
|
||||
+ if (madvise(p, psize, advice[n]) < 0)
|
||||
+ log_warning("Failed to give advice about use of memory: %m");
|
||||
+
|
||||
h = p;
|
||||
if (memcmp(h->signature, CATALOG_SIGNATURE, sizeof(h->signature)) != 0 ||
|
||||
Index: systemd-218/src/journal/journal-authenticate.c
|
||||
le64toh(h->header_size) < sizeof(CatalogHeader) ||
|
||||
Index: systemd/src/journal/journal-authenticate.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/journal-authenticate.c
|
||||
+++ systemd-218/src/journal/journal-authenticate.c
|
||||
@@ -355,7 +355,7 @@ int journal_file_fss_load(JournalFile *f
|
||||
--- systemd.orig/src/journal/journal-authenticate.c
|
||||
+++ systemd/src/journal/journal-authenticate.c
|
||||
@@ -355,7 +355,8 @@ int journal_file_fss_load(JournalFile *f
|
||||
goto finish;
|
||||
}
|
||||
|
||||
- m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED, fd, 0);
|
||||
+ m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ, MAP_SHARED|MAP_STACK, fd, 0);
|
||||
+ m = mmap(NULL, PAGE_ALIGN(sizeof(FSSHeader)), PROT_READ,
|
||||
+ MAP_SHARED | MAP_STACK, fd, 0);
|
||||
if (m == MAP_FAILED) {
|
||||
m = NULL;
|
||||
r = -errno;
|
||||
@@ -399,7 +399,7 @@ int journal_file_fss_load(JournalFile *f
|
||||
@@ -399,7 +400,9 @@ int journal_file_fss_load(JournalFile *f
|
||||
goto finish;
|
||||
}
|
||||
|
||||
- f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
+ f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0);
|
||||
+ f->fss_file = mmap(NULL, PAGE_ALIGN(f->fss_file_size),
|
||||
+ PROT_READ | PROT_WRITE, MAP_SHARED | MAP_STACK,
|
||||
+ fd, 0);
|
||||
if (f->fss_file == MAP_FAILED) {
|
||||
f->fss_file = NULL;
|
||||
r = -errno;
|
||||
Index: systemd-218/src/journal/journal-file.c
|
||||
Index: systemd/src/journal/journald-kmsg.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/journal-file.c
|
||||
+++ systemd-218/src/journal/journal-file.c
|
||||
@@ -2559,7 +2559,7 @@ int journal_file_open(
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED, f->fd, 0);
|
||||
+ f->header = mmap(NULL, PAGE_ALIGN(sizeof(Header)), prot_from_flags(flags), MAP_SHARED|MAP_STACK, f->fd, 0);
|
||||
if (f->header == MAP_FAILED) {
|
||||
f->header = NULL;
|
||||
r = -errno;
|
||||
Index: systemd-218/src/journal/journald-kmsg.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/journald-kmsg.c
|
||||
+++ systemd-218/src/journal/journald-kmsg.c
|
||||
@@ -455,7 +455,7 @@ int server_open_kernel_seqnum(Server *s)
|
||||
--- systemd.orig/src/journal/journald-kmsg.c
|
||||
+++ systemd/src/journal/journald-kmsg.c
|
||||
@@ -454,7 +454,8 @@ int server_open_kernel_seqnum(Server *s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
- p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
+ p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_STACK, fd, 0);
|
||||
+ p = mmap(NULL, sizeof(uint64_t), PROT_READ | PROT_WRITE,
|
||||
+ MAP_SHARED | MAP_STACK, fd, 0);
|
||||
if (p == MAP_FAILED) {
|
||||
log_error_errno(errno, "Failed to map sequential number file, ignoring: %m");
|
||||
return 0;
|
||||
Index: systemd-218/src/journal/mmap-cache.c
|
||||
Index: systemd/src/journal/mmap-cache.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/journal/mmap-cache.c
|
||||
+++ systemd-218/src/journal/mmap-cache.c
|
||||
@@ -446,6 +446,15 @@ static int add_mmap(
|
||||
void **ret,
|
||||
void **release_cookie) {
|
||||
--- systemd.orig/src/journal/mmap-cache.c
|
||||
+++ systemd/src/journal/mmap-cache.c
|
||||
@@ -467,11 +467,14 @@ static int add_mmap(
|
||||
struct stat *st,
|
||||
void **ret) {
|
||||
|
||||
+ static const struct {
|
||||
+ const int index;
|
||||
+ int vise;
|
||||
+ } ad[] = {
|
||||
+ {0, MADV_WILLNEED},
|
||||
+ {1, MADV_SEQUENTIAL},
|
||||
+ {2, MADV_DONTDUMP},
|
||||
+ {3, MADV_DONTFORK}
|
||||
+ };
|
||||
+ static const unsigned int advice[] =
|
||||
+ {MADV_WILLNEED, MADV_SEQUENTIAL, MADV_DONTDUMP, MADV_DONTFORK};
|
||||
uint64_t woffset, wsize;
|
||||
Context *c;
|
||||
FileDescriptor *f;
|
||||
@@ -488,7 +497,7 @@ static int add_mmap(
|
||||
Window *w;
|
||||
void *d;
|
||||
+ unsigned int n;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
@@ -510,7 +513,8 @@ static int add_mmap(
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
- d = mmap(NULL, wsize, prot, MAP_SHARED, fd, woffset);
|
||||
+ d = mmap(NULL, wsize, prot, MAP_SHARED|MAP_POPULATE|MAP_NONBLOCK, fd, woffset);
|
||||
+ d = mmap(NULL, wsize, prot, MAP_SHARED | MAP_POPULATE |
|
||||
+ MAP_NONBLOCK, fd, woffset);
|
||||
if (d != MAP_FAILED)
|
||||
break;
|
||||
if (errno != ENOMEM)
|
||||
@@ -501,6 +510,17 @@ static int add_mmap(
|
||||
@@ -523,6 +527,16 @@ static int add_mmap(
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
+ for (size_t n = 0; n < sizeof(ad) / sizeof(*ad); ++n) {
|
||||
+ if (ad[n].vise == MADV_DONTFORK) {
|
||||
+ for (n = 0; n < sizeof(advice) / sizeof(*advice); ++n) {
|
||||
+ if (advice[n] == MADV_DONTFORK) {
|
||||
+ int flags = fcntl(fd, F_GETFD);
|
||||
+ if (flags < 0 || !(flags & FD_CLOEXEC))
|
||||
+ continue;
|
||||
+ }
|
||||
+ r = madvise(d, wsize, ad[n].vise);
|
||||
+ if (r < 0)
|
||||
+ if (madvise(d, wsize, advice[n]) < 0)
|
||||
+ log_warning("Failed to give advice about use of memory: %m");
|
||||
+ }
|
||||
+
|
||||
|
@ -1,13 +1,18 @@
|
||||
From: werner@suse.de
|
||||
Date: Tue Jan 20 11:33:59 UTC 2015
|
||||
|
||||
---
|
||||
src/locale/kbd-model-map | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- src/locale/kbd-model-map
|
||||
+++ src/locale/kbd-model-map 2015-01-20 11:31:38.357518811 +0000
|
||||
@@ -63,3 +63,16 @@ by by,us pc105 - terminate:ctrl_alt_
|
||||
il il pc105 - terminate:ctrl_alt_bksp
|
||||
kazakh kz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
|
||||
Index: systemd/src/locale/kbd-model-map
|
||||
===================================================================
|
||||
--- systemd.orig/src/locale/kbd-model-map
|
||||
+++ systemd/src/locale/kbd-model-map
|
||||
@@ -66,3 +66,16 @@ lt.baltic lt pc105 - terminate:ctrl_a
|
||||
lt.l4 lt pc105 - terminate:ctrl_alt_bksp
|
||||
lt lt pc105 - terminate:ctrl_alt_bksp
|
||||
khmer kh,us pc105 - terminate:ctrl_alt_bksp
|
||||
+# Additional layouts offered by YaST
|
||||
+Pl02 pl pc105 - terminate:ctrl_alt_bksp
|
||||
+arabic ara,us pc105 - terminate:ctrl_alt_bksp,grp:shift_toggle
|
||||
|
@ -1,14 +1,13 @@
|
||||
---
|
||||
Makefile.am | 4 ++++
|
||||
Makefile.in | 2 +-
|
||||
configure.ac | 4 ----
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: systemd-218/Makefile.am
|
||||
Index: systemd/Makefile.am
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.am
|
||||
+++ systemd-218/Makefile.am
|
||||
@@ -4695,6 +4695,10 @@ systemd_cryptsetup_CFLAGS = \
|
||||
--- systemd.orig/Makefile.am
|
||||
+++ systemd/Makefile.am
|
||||
@@ -4789,6 +4789,10 @@ systemd_cryptsetup_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
$(LIBCRYPTSETUP_CFLAGS)
|
||||
|
||||
@ -19,23 +18,10 @@ Index: systemd-218/Makefile.am
|
||||
systemd_cryptsetup_LDADD = \
|
||||
libsystemd-label.la \
|
||||
libudev-internal.la \
|
||||
Index: systemd-218/Makefile.in
|
||||
Index: systemd/configure.ac
|
||||
===================================================================
|
||||
--- systemd-218.orig/Makefile.in
|
||||
+++ systemd-218/Makefile.in
|
||||
@@ -11109,7 +11109,7 @@ src/cryptsetup/systemd_cryptsetup-crypts
|
||||
|
||||
systemd-cryptsetup$(EXEEXT): $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_DEPENDENCIES) $(EXTRA_systemd_cryptsetup_DEPENDENCIES)
|
||||
@rm -f systemd-cryptsetup$(EXEEXT)
|
||||
- $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDADD) $(LIBS)
|
||||
+ $(AM_V_CCLD)$(systemd_cryptsetup_LINK) $(systemd_cryptsetup_OBJECTS) $(systemd_cryptsetup_LDFLAGS) $(systemd_cryptsetup_LDADD) $(LIBS)
|
||||
src/cryptsetup/cryptsetup-generator.$(OBJEXT): \
|
||||
src/cryptsetup/$(am__dirstamp) \
|
||||
src/cryptsetup/$(DEPDIR)/$(am__dirstamp)
|
||||
Index: systemd-218/configure.ac
|
||||
===================================================================
|
||||
--- systemd-218.orig/configure.ac
|
||||
+++ systemd-218/configure.ac
|
||||
--- systemd.orig/configure.ac
|
||||
+++ systemd/configure.ac
|
||||
@@ -206,10 +206,6 @@ AS_CASE([$CC], [*clang*],
|
||||
-Wno-gnu-variable-sized-type-not-at-end \
|
||||
])])
|
||||
|
@ -1,12 +1,12 @@
|
||||
---
|
||||
src/fstab-generator/fstab-generator.c | 46 +++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 45 insertions(+), 1 deletion(-)
|
||||
src/fstab-generator/fstab-generator.c | 45 +++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 44 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-218/src/fstab-generator/fstab-generator.c
|
||||
Index: systemd/src/fstab-generator/fstab-generator.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd-218/src/fstab-generator/fstab-generator.c
|
||||
@@ -47,6 +47,50 @@ static char *arg_usr_what = NULL;
|
||||
--- systemd.orig/src/fstab-generator/fstab-generator.c
|
||||
+++ systemd/src/fstab-generator/fstab-generator.c
|
||||
@@ -48,6 +48,49 @@ static char *arg_usr_what = NULL;
|
||||
static char *arg_usr_fstype = NULL;
|
||||
static char *arg_usr_options = NULL;
|
||||
|
||||
@ -53,11 +53,10 @@ Index: systemd-218/src/fstab-generator/fstab-generator.c
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static int mount_find_pri(struct mntent *me, int *ret) {
|
||||
char *end, *opt;
|
||||
unsigned long r;
|
||||
@@ -141,7 +185,7 @@ static int add_swap(
|
||||
static int add_swap(
|
||||
const char *what,
|
||||
struct mntent *me,
|
||||
@@ -118,7 +161,7 @@ static int add_swap(
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -4,23 +4,23 @@
|
||||
units/rescue.service.in | 3 ++-
|
||||
3 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: systemd-218/units/console-shell.service.m4.in
|
||||
Index: systemd/units/console-shell.service.m4.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/console-shell.service.m4.in
|
||||
+++ systemd-218/units/console-shell.service.m4.in
|
||||
--- systemd.orig/units/console-shell.service.m4.in
|
||||
+++ systemd/units/console-shell.service.m4.in
|
||||
@@ -17,6 +17,8 @@ Before=getty.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
WorkingDirectory=/root
|
||||
+ExecStartPre=-/usr/bin/plymouth quit
|
||||
+ExecStartPre=-/usr/bin/plymouth --wait
|
||||
ExecStart=-/usr/sbin/sulogin
|
||||
ExecStart=-@SULOGIN@
|
||||
ExecStopPost=-@SYSTEMCTL@ poweroff
|
||||
Type=idle
|
||||
Index: systemd-218/units/emergency.service.in
|
||||
Index: systemd/units/emergency.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/emergency.service.in
|
||||
+++ systemd-218/units/emergency.service.in
|
||||
--- systemd.orig/units/emergency.service.in
|
||||
+++ systemd/units/emergency.service.in
|
||||
@@ -17,7 +17,8 @@ Before=shutdown.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
@ -29,12 +29,12 @@ Index: systemd-218/units/emergency.service.in
|
||||
+ExecStartPre=-/usr/bin/plymouth quit
|
||||
+ExecStartPre=-/usr/bin/plymouth --wait
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
|
||||
ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
|
||||
Type=idle
|
||||
Index: systemd-218/units/rescue.service.in
|
||||
Index: systemd/units/rescue.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/rescue.service.in
|
||||
+++ systemd-218/units/rescue.service.in
|
||||
--- systemd.orig/units/rescue.service.in
|
||||
+++ systemd/units/rescue.service.in
|
||||
@@ -16,7 +16,8 @@ Before=shutdown.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
@ -43,5 +43,5 @@ Index: systemd-218/units/rescue.service.in
|
||||
+ExecStartPre=-/usr/bin/plymouth quit
|
||||
+ExecStartPre=-/usr/bin/plymouth --wait
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
|
||||
ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --fail --no-block default"
|
||||
Type=idle
|
||||
|
@ -6,11 +6,11 @@ This solves the bug bnc#868439
|
||||
man/systemctl.xml | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: systemd-218/man/systemctl.xml
|
||||
Index: systemd/man/systemctl.xml
|
||||
===================================================================
|
||||
--- systemd-218.orig/man/systemctl.xml
|
||||
+++ systemd-218/man/systemctl.xml
|
||||
@@ -446,7 +446,7 @@ along with systemd; If not, see <http://
|
||||
--- systemd.orig/man/systemctl.xml
|
||||
+++ systemd/man/systemctl.xml
|
||||
@@ -445,7 +445,7 @@ along with systemd; If not, see <http://
|
||||
<term><option>--force</option></term>
|
||||
|
||||
<listitem>
|
||||
@ -19,10 +19,10 @@ Index: systemd-218/man/systemctl.xml
|
||||
any existing conflicting symlinks.</para>
|
||||
|
||||
<para>When used with <command>halt</command>,
|
||||
@@ -1187,6 +1187,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
|
||||
<listitem>
|
||||
<para>Set the default target to boot into. Command links
|
||||
<filename>default.target</filename> to the given unit.</para>
|
||||
@@ -1215,6 +1215,8 @@ kobject-uevent 1 systemd-udevd-kernel.so
|
||||
<para>Return the default target to boot into. This returns
|
||||
the target unit name <filename>default.target</filename>
|
||||
is aliased (symlinked) to.</para>
|
||||
+ <para>If combined with <option>--force</option>, override
|
||||
+ an already existing symlink for the default target.</para>
|
||||
</listitem>
|
||||
|
3
systemd-218.g1050.tar.xz
Normal file
3
systemd-218.g1050.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b1bccbdd9b6832dafaed409ad0c8c076a7aaaf706615ecbb905d9def291b1cb0
|
||||
size 3358908
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1b0768b53b6c6d813a93a4b8fe1f80cf53561b09075010a97c7aa08eee3fd59b
|
||||
size 3782276
|
@ -1,29 +1,27 @@
|
||||
---
|
||||
man/tmpfiles.d.xml | 5 +++++
|
||||
src/tmpfiles/tmpfiles.c | 42 ++++++++++++++++++++++++++++++++++++++----
|
||||
2 files changed, 43 insertions(+), 4 deletions(-)
|
||||
man/tmpfiles.d.xml | 3 +++
|
||||
src/tmpfiles/tmpfiles.c | 48 ++++++++++++++++++++++++++++++++++++++++--------
|
||||
2 files changed, 43 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: systemd-218/man/tmpfiles.d.xml
|
||||
Index: systemd/man/tmpfiles.d.xml
|
||||
===================================================================
|
||||
--- systemd-218.orig/man/tmpfiles.d.xml
|
||||
+++ systemd-218/man/tmpfiles.d.xml
|
||||
@@ -545,6 +545,11 @@ r! /tmp/.X[0-9]*-lock</programlisting>
|
||||
and <varname>w</varname> may be used to
|
||||
specify a short string that is written to the
|
||||
file, suffixed by a newline. For
|
||||
+ <varname>x</varname>, <varname>X</varname>,
|
||||
+ a comma separated list of usernames. If given,
|
||||
+ only paths belonging to these users will be
|
||||
+ excluded during directory cleanup.
|
||||
+ Ignored for all other lines. For
|
||||
<varname>C</varname>, specifies the source file
|
||||
or directory. For <varname>t</varname> determines
|
||||
extended attributes to be set. Ignored for all other lines.</para>
|
||||
Index: systemd-218/src/tmpfiles/tmpfiles.c
|
||||
--- systemd.orig/man/tmpfiles.d.xml
|
||||
+++ systemd/man/tmpfiles.d.xml
|
||||
@@ -489,6 +489,9 @@
|
||||
<varname>f</varname>, <varname>F</varname>, and
|
||||
<varname>w</varname> may be used to specify a short string that
|
||||
is written to the file, suffixed by a newline. For
|
||||
+ <varname>x</varname>, <varname>X</varname>, a comma separated list of
|
||||
+ usernames. If given, only paths belonging to these users will be excluded
|
||||
+ during directory cleanup. Ignored for all other lines. For
|
||||
<varname>C</varname>, specifies the source file or
|
||||
directory. For <varname>t</varname> determines extended
|
||||
attributes to be set. For <varname>a</varname> determines
|
||||
Index: systemd/src/tmpfiles/tmpfiles.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/tmpfiles/tmpfiles.c
|
||||
+++ systemd-218/src/tmpfiles/tmpfiles.c
|
||||
@@ -278,6 +278,7 @@ static int dir_cleanup(
|
||||
--- systemd.orig/src/tmpfiles/tmpfiles.c
|
||||
+++ systemd/src/tmpfiles/tmpfiles.c
|
||||
@@ -345,6 +345,7 @@ static int dir_cleanup(
|
||||
struct timespec times[2];
|
||||
bool deleted = false;
|
||||
int r = 0;
|
||||
@ -31,52 +29,57 @@ Index: systemd-218/src/tmpfiles/tmpfiles.c
|
||||
|
||||
while ((dent = readdir(d))) {
|
||||
struct stat s;
|
||||
@@ -322,11 +323,44 @@ static int dir_cleanup(
|
||||
@@ -395,14 +396,45 @@ static int dir_cleanup(
|
||||
}
|
||||
|
||||
/* Is there an item configured for this path? */
|
||||
- if (hashmap_get(items, sub_path))
|
||||
- if (hashmap_get(items, sub_path)) {
|
||||
- log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (find_glob(globs, sub_path)) {
|
||||
- log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
|
||||
- continue;
|
||||
+ bool found_glob = false;
|
||||
+ found = hashmap_get(items, sub_path);
|
||||
|
||||
- if (find_glob(globs, sub_path))
|
||||
- continue;
|
||||
+ if (!found)
|
||||
+ found = find_glob(globs, sub_path);
|
||||
+
|
||||
+ if (found) {
|
||||
+ /* evaluate username arguments in ignore statements */
|
||||
+ if (found->type == IGNORE_PATH || found->type == IGNORE_DIRECTORY_PATH) {
|
||||
+ if (!found->argument) {
|
||||
+ continue;
|
||||
+ } else {
|
||||
+ struct passwd *pw;
|
||||
+ char *userfound = NULL, *args = strdup(found->argument);
|
||||
+ bool match = false;
|
||||
+ uid_t uid = -1;
|
||||
+
|
||||
+ while ((userfound = strsep(&args, ","))) {
|
||||
+ pw = getpwnam(userfound);
|
||||
+
|
||||
+ if (!pw)
|
||||
+ log_error("Unknown user '%s' in ignore statement.", userfound);
|
||||
+ else {
|
||||
+ uid = pw->pw_uid;
|
||||
+ if (s.st_uid == uid) {
|
||||
+ match = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (match) {
|
||||
+ found = NULL;
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (!found) {
|
||||
+ found_glob = true;
|
||||
+ found = find_glob(globs, sub_path);
|
||||
+ }
|
||||
+ if (found) {
|
||||
+ struct passwd *pw;
|
||||
+ char *userfound = NULL, *args;
|
||||
+ bool match = false;
|
||||
+ uid_t uid = -1;
|
||||
+
|
||||
+ /* evaluate username arguments in ignore statements */
|
||||
+ if ((found->type != IGNORE_PATH && found->type != IGNORE_DIRECTORY_PATH) ||
|
||||
+ !found->argument) {
|
||||
+ if (found_glob)
|
||||
+ log_debug("Ignoring \"%s\": a separate glob exists.", sub_path);
|
||||
+ else
|
||||
+ log_debug("Ignoring \"%s\": a separate entry exists.", sub_path);
|
||||
+ continue;
|
||||
+ }
|
||||
+ args = strdup(found->argument);
|
||||
+ assert_se(args != NULL);
|
||||
+ while ((userfound = strsep(&args, ",")) != NULL) {
|
||||
+ pw = getpwnam(userfound);
|
||||
+ if (pw == NULL) {
|
||||
+ log_error("Unknown user '%s' in ignore statement.", userfound);
|
||||
+ continue;
|
||||
+ }
|
||||
+ uid = pw->pw_uid;
|
||||
+ if (s.st_uid == uid) {
|
||||
+ match = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (match) {
|
||||
+ found = NULL;
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (S_ISDIR(s.st_mode)) {
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
src/shared/def.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c
|
||||
Index: systemd/src/libsystemd/sd-bus/sd-bus.c
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/libsystemd/sd-bus/sd-bus.c
|
||||
+++ systemd-218/src/libsystemd/sd-bus/sd-bus.c
|
||||
@@ -791,8 +791,8 @@ static int parse_container_unix_address(
|
||||
machine = NULL;
|
||||
--- systemd.orig/src/libsystemd/sd-bus/sd-bus.c
|
||||
+++ systemd/src/libsystemd/sd-bus/sd-bus.c
|
||||
@@ -809,8 +809,8 @@ static int parse_container_unix_address(
|
||||
b->nspid = 0;
|
||||
|
||||
b->sockaddr.un.sun_family = AF_UNIX;
|
||||
- strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path));
|
||||
@ -18,10 +18,10 @@ Index: systemd-218/src/libsystemd/sd-bus/sd-bus.c
|
||||
|
||||
return 0;
|
||||
}
|
||||
Index: systemd-218/src/shared/def.h
|
||||
Index: systemd/src/shared/def.h
|
||||
===================================================================
|
||||
--- systemd-218.orig/src/shared/def.h
|
||||
+++ systemd-218/src/shared/def.h
|
||||
--- systemd.orig/src/shared/def.h
|
||||
+++ systemd/src/shared/def.h
|
||||
@@ -61,7 +61,7 @@
|
||||
"/usr/lib/kbd/keymaps/\0"
|
||||
#endif
|
||||
|
@ -1,3 +1,13 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
|
||||
|
||||
- Update to systemd v218-1050-g38ab096
|
||||
- Remove patches
|
||||
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
|
||||
- Reinstate and improve (remove huge indents from)
|
||||
tty-ask-password-agent-on-console.patch,
|
||||
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
|
||||
|
||||
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
|
||||
N=no longer applies to source nor is it deemed needed;
|
||||
K=killed: no longer applicable and too complex to resolve:
|
||||
----
|
||||
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
|
||||
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
|
||||
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
|
||||
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
|
||||
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package systemd-mini
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -44,7 +44,7 @@
|
||||
|
||||
Name: systemd-mini
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 218
|
||||
Version: 218.g1050
|
||||
Release: 0
|
||||
Summary: A System and Session Manager
|
||||
License: LGPL-2.1+
|
||||
@ -55,14 +55,18 @@ Provides: %{real} = %{version}-%{release}
|
||||
|
||||
BuildRequires: acl
|
||||
BuildRequires: audit-devel
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gperf
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: intltool
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: libcap-devel
|
||||
BuildRequires: libkmod-devel
|
||||
BuildRequires: libsepol-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: config(suse-module-tools)
|
||||
%if 0%{?suse_version} > 1310
|
||||
@ -139,7 +143,10 @@ Conflicts: filesystem < 11.5
|
||||
Conflicts: mkinitrd < 2.7.0
|
||||
Obsoletes: systemd-analyze < 201
|
||||
Provides: systemd-analyze = %{version}
|
||||
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
|
||||
|
||||
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
|
||||
#Snapshot: v218-1050-g38ab096
|
||||
Source0: systemd-%{version}.tar.xz
|
||||
%if ! 0%{?bootstrap}
|
||||
Source1: systemd-rpmlintrc
|
||||
%else
|
||||
@ -196,8 +203,6 @@ Patch24: handle-etc-HOSTNAME.patch
|
||||
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
|
||||
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
|
||||
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
||||
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
||||
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
||||
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
||||
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
||||
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
||||
@ -252,6 +257,7 @@ Patch338: vhangup-on-all-consoles.patch
|
||||
Patch345: shut-up-rpmlint-on-var-log-journal.patch
|
||||
# PATCH-FIX-SUSE
|
||||
Patch352: set-and-use-default-logconsole.patch
|
||||
Patch362: tty-ask-password-agent-on-console.patch
|
||||
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
|
||||
Patch366: tomcat6-var-lock-subsys-legacy.patch
|
||||
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
|
||||
@ -260,7 +266,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
|
||||
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
|
||||
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
|
||||
Patch430: 0001-bnc888612-logind-polkit-acpi.patch
|
||||
# PATCH-FIX-SUSE added at 2014/10/24
|
||||
Patch475: journald-advice-about-use-of-memory.patch
|
||||
# PATCH-FIX-SUSE added at 2014/11/05
|
||||
Patch490: watch_resolv.conf_for_become_changed.patch
|
||||
@ -569,7 +574,7 @@ Requires(postun): systemd
|
||||
systemd-journal-gatewayd serves journal events over the network using HTTP.
|
||||
|
||||
%prep
|
||||
%setup -q -n systemd-%{version}
|
||||
%setup -q -n systemd
|
||||
echo "Checking whether upstream rpm macros changed..."
|
||||
diff -au "%{S:10}" src/core/macros.systemd.in
|
||||
|
||||
@ -599,7 +604,6 @@ cp %{SOURCE7} m4/
|
||||
%patch40 -p1
|
||||
%patch41 -p1
|
||||
%patch42 -p1
|
||||
%patch46 -p1
|
||||
%patch84 -p1
|
||||
%patch86 -p1
|
||||
%patch90 -p1
|
||||
@ -627,17 +631,18 @@ cp %{SOURCE7} m4/
|
||||
%patch338 -p1
|
||||
%patch345 -p1
|
||||
%patch352 -p1
|
||||
%patch362 -p1
|
||||
%patch366 -p1
|
||||
%patch368 -p1
|
||||
%patch386 -p1
|
||||
%patch430 -p1
|
||||
%patch475 -p1
|
||||
%ifarch %arm
|
||||
%patch38 -p1
|
||||
%endif
|
||||
%patch475 -p1
|
||||
%patch490 -p1
|
||||
%patch520 -p1
|
||||
%patch521 -p0
|
||||
%patch521 -p1
|
||||
|
||||
# udev patches
|
||||
%patch1001 -p1
|
||||
@ -744,7 +749,7 @@ cflags ()
|
||||
esac
|
||||
set +o noclobber
|
||||
}
|
||||
autoreconf -fiv
|
||||
./autogen.sh
|
||||
# prevent pre-generated and distributed files from re-building
|
||||
find . -name "*.[1-8]" -exec touch '{}' '+';
|
||||
export V=e
|
||||
@ -810,19 +815,9 @@ make %{?_smp_mflags} update-man-list man
|
||||
%endif
|
||||
|
||||
%install
|
||||
# Use refreshed manual pages
|
||||
for man in man/*.[0-9]
|
||||
do
|
||||
section=${man##*.}
|
||||
test -d man/man${section} || continue
|
||||
new=man/man${section}/${man##*/}
|
||||
if test -s $new -a $new -nt $man
|
||||
then
|
||||
cp -p $new $man
|
||||
else
|
||||
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
|
||||
fi
|
||||
done
|
||||
%if !0%{?bootstrap}
|
||||
cp man/man[0-9]/*.[0-9] man/
|
||||
%endif
|
||||
make install DESTDIR="%buildroot"
|
||||
|
||||
# move to %{_lib}
|
||||
@ -963,15 +958,6 @@ EOF
|
||||
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
|
||||
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%if %{without python}
|
||||
for man in systemd.directives.7 systemd.index.7
|
||||
do
|
||||
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
|
||||
done
|
||||
%endif
|
||||
%endif
|
||||
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
|
||||
|
||||
@ -1295,6 +1281,7 @@ exit 0
|
||||
%{_bindir}/systemd-path
|
||||
%{_bindir}/systemd-sysusers
|
||||
%{_bindir}/systemd-notify
|
||||
%{_bindir}/systemd-hwdb
|
||||
%{_bindir}/systemd-run
|
||||
%{_bindir}/systemd-journalctl
|
||||
%{_bindir}/journalctl
|
||||
@ -1388,7 +1375,6 @@ exit 0
|
||||
%{_prefix}/lib/sysusers.d/
|
||||
/%{_lib}/security/pam_systemd.so
|
||||
%config /etc/pam.d/systemd-user
|
||||
%_libdir/libnss_resolve.so.2
|
||||
|
||||
%dir %{_libexecdir}/modules-load.d
|
||||
%dir %{_sysconfdir}/modules-load.d
|
||||
@ -1419,7 +1405,6 @@ exit 0
|
||||
%if !0%{?bootstrap}
|
||||
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
|
||||
%endif
|
||||
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
|
||||
@ -1428,7 +1413,7 @@ exit 0
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.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.timedate1.conf
|
||||
@ -1447,7 +1432,7 @@ exit 0
|
||||
|
||||
%{_datadir}/factory/
|
||||
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
|
||||
@ -1456,6 +1441,7 @@ exit 0
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
|
||||
%dir %{_datadir}/polkit-1
|
||||
%dir %{_datadir}/polkit-1/actions
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
|
||||
@ -1505,9 +1491,6 @@ exit 0
|
||||
%{_datadir}/zsh/site-functions/*
|
||||
%ghost %{_localstatedir}/lib/systemd/backlight
|
||||
%ghost %{_localstatedir}/lib/systemd/random-seed
|
||||
%if 0%{?suse_version} > 1310
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%endif
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%files bash-completion -f files.completion
|
||||
@ -1531,9 +1514,7 @@ exit 0
|
||||
%{_includedir}/systemd/sd-journal.h
|
||||
%{_includedir}/systemd/sd-messages.h
|
||||
%{_includedir}/systemd/_sd-common.h
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%endif
|
||||
%{_libdir}/pkgconfig/systemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-login.pc
|
||||
|
@ -5,20 +5,22 @@ Subject: systemd tmp safe defaults
|
||||
Fix regression in the default for tmp auto-deletion (FATE#314974).
|
||||
SUSE policy is to not clean /tmp by default.
|
||||
---
|
||||
tmpfiles.d/tmp.conf | 5 +++--
|
||||
tmpfiles.d/tmp.conf | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- systemd-206.orig/tmpfiles.d/tmp.conf
|
||||
+++ systemd-206/tmpfiles.d/tmp.conf
|
||||
Index: systemd/tmpfiles.d/tmp.conf
|
||||
===================================================================
|
||||
--- systemd.orig/tmpfiles.d/tmp.conf
|
||||
+++ systemd/tmpfiles.d/tmp.conf
|
||||
@@ -8,8 +8,9 @@
|
||||
# See tmpfiles.d(5) for details
|
||||
|
||||
# Clear tmp directories separately, to make them easier to override
|
||||
-d /tmp 1777 root root 10d
|
||||
-d /var/tmp 1777 root root 30d
|
||||
-v /tmp 1777 root root 10d
|
||||
-v /var/tmp 1777 root root 30d
|
||||
+# SUSE policy: we don't clean those directories
|
||||
+d /tmp 1777 root root -
|
||||
+d /var/tmp 1777 root root -
|
||||
+v /tmp 1777 root root -
|
||||
+v /var/tmp 1777 root root -
|
||||
|
||||
# Exclude namespace mountpoints created with PrivateTmp=yes
|
||||
x /tmp/systemd-private-%b-*
|
||||
|
@ -1,3 +1,13 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 16 10:18:18 UTC 2015 - jengelh@inai.de
|
||||
|
||||
- Update to systemd v218-1050-g38ab096
|
||||
- Remove patches
|
||||
use-usr-sbin-sulogin-for-emergency-service.patch (upstream fixed it)
|
||||
- Reinstate and improve (remove huge indents from)
|
||||
tty-ask-password-agent-on-console.patch,
|
||||
0014-journald-with-journaling-FS.patch, rootsymlink_generator.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 16 09:42:48 UTC 2015 - meissner@suse.com
|
||||
|
||||
@ -27,8 +37,6 @@ Fri Jan 9 18:48:28 UTC 2015 - jengelh@inai.de
|
||||
N=no longer applies to source nor is it deemed needed;
|
||||
K=killed: no longer applicable and too complex to resolve:
|
||||
----
|
||||
G 0002-rfkill-rework-how-we-generate-file-names-from-rfkill.patch
|
||||
G avoid-assertion-if-invalid-address-familily-is-passed-to-g.patch
|
||||
K service-flags-sysv-service-with-detected-pid-as-RemainAfte.patch
|
||||
K remain_after_exit-initscript-heuristic-and-add-new-LSB-hea.patch
|
||||
K handle-SYSTEMCTL_OPTIONS-environment-variable.patch
|
||||
|
67
systemd.spec
67
systemd.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package systemd
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -42,7 +42,7 @@
|
||||
|
||||
Name: systemd
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 218
|
||||
Version: 218.g1050
|
||||
Release: 0
|
||||
Summary: A System and Session Manager
|
||||
License: LGPL-2.1+
|
||||
@ -50,14 +50,18 @@ Group: System/Base
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: acl
|
||||
BuildRequires: audit-devel
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gperf
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: intltool
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: libcap-devel
|
||||
BuildRequires: libkmod-devel
|
||||
BuildRequires: libsepol-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: libtool
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: config(suse-module-tools)
|
||||
%if 0%{?suse_version} > 1310
|
||||
@ -134,7 +138,10 @@ Conflicts: filesystem < 11.5
|
||||
Conflicts: mkinitrd < 2.7.0
|
||||
Obsoletes: systemd-analyze < 201
|
||||
Provides: systemd-analyze = %{version}
|
||||
Source0: http://www.freedesktop.org/software/systemd/systemd-%{version}.tar.xz
|
||||
|
||||
#Git-Clone: git://anongit.freedesktop.org/systemd/systemd
|
||||
#Snapshot: v218-1050-g38ab096
|
||||
Source0: systemd-%{version}.tar.xz
|
||||
%if ! 0%{?bootstrap}
|
||||
Source1: systemd-rpmlintrc
|
||||
%else
|
||||
@ -191,8 +198,6 @@ Patch24: handle-etc-HOSTNAME.patch
|
||||
Patch25: Forward-suspend-hibernate-calls-to-pm-utils.patch
|
||||
# PATCH-FIX-UPSTREAM rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch rjschwei@suse.com -- add lid switch of ARM based Chromebook as a power switch to logind
|
||||
Patch38: rules-add-lid-switch-of-ARM-based-Chromebook-as-a-power-sw.patch
|
||||
# PATCH-FIX-OPENSUSE use-usr-sbin-sulogin-for-emergency-service.patch arvidjaar@gmail.com -- fix path to sulogin
|
||||
Patch46: use-usr-sbin-sulogin-for-emergency-service.patch
|
||||
# PATCH-FIX-OPENSUSE make-emergency.service-conflict-with-syslog.socket.patch (bnc#852232)
|
||||
Patch84: make-emergency.service-conflict-with-syslog.socket.patch
|
||||
# PATCH-FIX-SUSE 0001-add-hdflush-for-reboot-or-hddown-for-poweroff.patch
|
||||
@ -247,6 +252,7 @@ Patch338: vhangup-on-all-consoles.patch
|
||||
Patch345: shut-up-rpmlint-on-var-log-journal.patch
|
||||
# PATCH-FIX-SUSE
|
||||
Patch352: set-and-use-default-logconsole.patch
|
||||
Patch362: tty-ask-password-agent-on-console.patch
|
||||
# PATCH-FIX-SUSE Provide the /var/lock/subsys at start (bnc#889357)
|
||||
Patch366: tomcat6-var-lock-subsys-legacy.patch
|
||||
# PATCH-FIX-SUSE Remove error messages for tab completion for systemctl isolate (bnc#892162)
|
||||
@ -255,7 +261,6 @@ Patch368: 0001-let-systemctl-completion-ignore-at-names.patch
|
||||
Patch386: use-rndaddentropy-ioctl-to-load-random-seed.patch
|
||||
# PATCH-FIX-SUSE AUDIT-0: Power button press at gdm login should not prompt for credentials (bnc#888612)
|
||||
Patch430: 0001-bnc888612-logind-polkit-acpi.patch
|
||||
# PATCH-FIX-SUSE added at 2014/10/24
|
||||
Patch475: journald-advice-about-use-of-memory.patch
|
||||
# PATCH-FIX-SUSE added at 2014/11/05
|
||||
Patch490: watch_resolv.conf_for_become_changed.patch
|
||||
@ -564,7 +569,7 @@ Requires(postun): systemd
|
||||
systemd-journal-gatewayd serves journal events over the network using HTTP.
|
||||
|
||||
%prep
|
||||
%setup -q -n systemd-%{version}
|
||||
%setup -q -n systemd
|
||||
echo "Checking whether upstream rpm macros changed..."
|
||||
diff -au "%{S:10}" src/core/macros.systemd.in
|
||||
|
||||
@ -594,7 +599,6 @@ cp %{SOURCE7} m4/
|
||||
%patch40 -p1
|
||||
%patch41 -p1
|
||||
%patch42 -p1
|
||||
%patch46 -p1
|
||||
%patch84 -p1
|
||||
%patch86 -p1
|
||||
%patch90 -p1
|
||||
@ -622,17 +626,18 @@ cp %{SOURCE7} m4/
|
||||
%patch338 -p1
|
||||
%patch345 -p1
|
||||
%patch352 -p1
|
||||
%patch362 -p1
|
||||
%patch366 -p1
|
||||
%patch368 -p1
|
||||
%patch386 -p1
|
||||
%patch430 -p1
|
||||
%patch475 -p1
|
||||
%ifarch %arm
|
||||
%patch38 -p1
|
||||
%endif
|
||||
%patch475 -p1
|
||||
%patch490 -p1
|
||||
%patch520 -p1
|
||||
%patch521 -p0
|
||||
%patch521 -p1
|
||||
|
||||
# udev patches
|
||||
%patch1001 -p1
|
||||
@ -739,7 +744,7 @@ cflags ()
|
||||
esac
|
||||
set +o noclobber
|
||||
}
|
||||
autoreconf -fiv
|
||||
./autogen.sh
|
||||
# prevent pre-generated and distributed files from re-building
|
||||
find . -name "*.[1-8]" -exec touch '{}' '+';
|
||||
export V=e
|
||||
@ -805,19 +810,9 @@ make %{?_smp_mflags} update-man-list man
|
||||
%endif
|
||||
|
||||
%install
|
||||
# Use refreshed manual pages
|
||||
for man in man/*.[0-9]
|
||||
do
|
||||
section=${man##*.}
|
||||
test -d man/man${section} || continue
|
||||
new=man/man${section}/${man##*/}
|
||||
if test -s $new -a $new -nt $man
|
||||
then
|
||||
cp -p $new $man
|
||||
else
|
||||
sed -ri 's@"(systemd) 209"@"\1 %{version}"@' $man
|
||||
fi
|
||||
done
|
||||
%if !0%{?bootstrap}
|
||||
cp man/man[0-9]/*.[0-9] man/
|
||||
%endif
|
||||
make install DESTDIR="%buildroot"
|
||||
|
||||
# move to %{_lib}
|
||||
@ -958,15 +953,6 @@ EOF
|
||||
install -m 644 %{S:11} %{buildroot}/%{_prefix}/lib/systemd/system/
|
||||
ln -s ../after-local.service %{buildroot}/%{_prefix}/lib/systemd/system/multi-user.target.wants/
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%if %{without python}
|
||||
for man in systemd.directives.7 systemd.index.7
|
||||
do
|
||||
install -m 0644 man/$man %{buildroot}%{_mandir}/man7/
|
||||
done
|
||||
%endif
|
||||
%endif
|
||||
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/random-seed
|
||||
|
||||
@ -1290,6 +1276,7 @@ exit 0
|
||||
%{_bindir}/systemd-path
|
||||
%{_bindir}/systemd-sysusers
|
||||
%{_bindir}/systemd-notify
|
||||
%{_bindir}/systemd-hwdb
|
||||
%{_bindir}/systemd-run
|
||||
%{_bindir}/systemd-journalctl
|
||||
%{_bindir}/journalctl
|
||||
@ -1383,7 +1370,6 @@ exit 0
|
||||
%{_prefix}/lib/sysusers.d/
|
||||
/%{_lib}/security/pam_systemd.so
|
||||
%config /etc/pam.d/systemd-user
|
||||
%_libdir/libnss_resolve.so.2
|
||||
|
||||
%dir %{_libexecdir}/modules-load.d
|
||||
%dir %{_sysconfdir}/modules-load.d
|
||||
@ -1414,7 +1400,6 @@ exit 0
|
||||
%if !0%{?bootstrap}
|
||||
%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
|
||||
%endif
|
||||
%config(noreplace) %{_sysconfdir}/systemd/resolved.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/timesyncd.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/system.conf
|
||||
%config(noreplace) %{_sysconfdir}/systemd/logind.conf
|
||||
@ -1423,7 +1408,7 @@ exit 0
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.locale1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf
|
||||
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.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.timedate1.conf
|
||||
@ -1442,7 +1427,7 @@ exit 0
|
||||
|
||||
%{_datadir}/factory/
|
||||
%{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.login1.service
|
||||
@ -1451,6 +1436,7 @@ exit 0
|
||||
%{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
|
||||
%dir %{_datadir}/polkit-1
|
||||
%dir %{_datadir}/polkit-1/actions
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
|
||||
%{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
|
||||
@ -1500,9 +1486,6 @@ exit 0
|
||||
%{_datadir}/zsh/site-functions/*
|
||||
%ghost %{_localstatedir}/lib/systemd/backlight
|
||||
%ghost %{_localstatedir}/lib/systemd/random-seed
|
||||
%if 0%{?suse_version} > 1310
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%endif
|
||||
|
||||
%if ! 0%{?bootstrap}
|
||||
%files bash-completion -f files.completion
|
||||
@ -1526,9 +1509,7 @@ exit 0
|
||||
%{_includedir}/systemd/sd-journal.h
|
||||
%{_includedir}/systemd/sd-messages.h
|
||||
%{_includedir}/systemd/_sd-common.h
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%{_datadir}/pkgconfig/systemd.pc
|
||||
%endif
|
||||
%{_libdir}/pkgconfig/systemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-daemon.pc
|
||||
%{_libdir}/pkgconfig/libsystemd-login.pc
|
||||
|
239
tty-ask-password-agent-on-console.patch
Normal file
239
tty-ask-password-agent-on-console.patch
Normal file
@ -0,0 +1,239 @@
|
||||
---
|
||||
src/tty-ask-password-agent/tty-ask-password-agent.c | 171 +++++++++++++++++++-
|
||||
1 file changed, 166 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
===================================================================
|
||||
--- systemd.orig/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
+++ systemd/src/tty-ask-password-agent/tty-ask-password-agent.c
|
||||
@@ -31,6 +31,10 @@
|
||||
#include <getopt.h>
|
||||
#include <sys/signalfd.h>
|
||||
#include <fcntl.h>
|
||||
+#include <sys/prctl.h>
|
||||
+#include <signal.h>
|
||||
+#include <sys/wait.h>
|
||||
+#include <sys/mman.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "mkdir.h"
|
||||
@@ -42,6 +46,9 @@
|
||||
#include "strv.h"
|
||||
#include "build.h"
|
||||
#include "def.h"
|
||||
+#include "fileio.h"
|
||||
+#include "macro.h"
|
||||
+#include "list.h"
|
||||
|
||||
static enum {
|
||||
ACTION_LIST,
|
||||
@@ -50,6 +57,22 @@ static enum {
|
||||
ACTION_WALL
|
||||
} arg_action = ACTION_QUERY;
|
||||
|
||||
+struct console {
|
||||
+ LIST_FIELDS(struct console, handle);
|
||||
+ const char *tty;
|
||||
+ pid_t pid;
|
||||
+ int id;
|
||||
+ char dev[];
|
||||
+};
|
||||
+
|
||||
+static volatile unsigned long *usemask;
|
||||
+static volatile sig_atomic_t sigchild;
|
||||
+static void chld_handler(int sig)
|
||||
+{
|
||||
+ (void)sig;
|
||||
+ ++sigchild;
|
||||
+}
|
||||
+
|
||||
static bool arg_plymouth = false;
|
||||
static bool arg_console = false;
|
||||
|
||||
@@ -208,6 +231,58 @@ static int ask_password_plymouth(
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static const char *current_dev = "/dev/console";
|
||||
+static LIST_HEAD(struct console, consoles);
|
||||
+static int collect_consoles(void) {
|
||||
+ _cleanup_free_ char *active = NULL;
|
||||
+ const char *word, *state;
|
||||
+ struct console *con;
|
||||
+ size_t len;
|
||||
+ int ret, id = 0;
|
||||
+
|
||||
+ ret = read_one_line_file("/sys/class/tty/console/active", &active);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ FOREACH_WORD(word, len, active, state) {
|
||||
+ _cleanup_free_ char *tty = NULL;
|
||||
+
|
||||
+ if (strneq(word, "tty0", len) &&
|
||||
+ read_one_line_file("/sys/class/tty/tty0/active", &tty) >= 0) {
|
||||
+ word = tty;
|
||||
+ len = strlen(tty);
|
||||
+ }
|
||||
+ con = malloc0(sizeof(*con) + strlen("/dev/") + len + 1);
|
||||
+ if (con == NULL) {
|
||||
+ log_oom();
|
||||
+ continue;
|
||||
+ }
|
||||
+ sprintf(con->dev, "/dev/%.*s", (int)len, word);
|
||||
+ con->tty = con->dev;
|
||||
+ con->id = id++;
|
||||
+ LIST_PREPEND(handle, consoles, con);
|
||||
+ }
|
||||
+ if (consoles == NULL) {
|
||||
+ con = malloc0(sizeof(*con));
|
||||
+ if (con == NULL) {
|
||||
+ log_oom();
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+ con->tty = current_dev;
|
||||
+ con->id = id++;
|
||||
+ LIST_PREPEND(handle, consoles, con);
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void free_consoles(void) {
|
||||
+ struct console *c;
|
||||
+ LIST_FOREACH(handle, c, consoles) {
|
||||
+ LIST_REMOVE(handle, consoles, c);
|
||||
+ free(c);
|
||||
+ }
|
||||
+ LIST_HEAD_INIT(consoles);
|
||||
+}
|
||||
+
|
||||
static int parse_password(const char *filename, char **wall) {
|
||||
_cleanup_free_ char *socket_name = NULL, *message = NULL, *packet = NULL;
|
||||
uint64_t not_after = 0;
|
||||
@@ -308,7 +383,7 @@ static int parse_password(const char *fi
|
||||
_cleanup_free_ char *password = NULL;
|
||||
|
||||
if (arg_console) {
|
||||
- tty_fd = acquire_terminal("/dev/console", false, false, false, USEC_INFINITY);
|
||||
+ tty_fd = acquire_terminal(current_dev, false, false, false, USEC_INFINITY);
|
||||
if (tty_fd < 0)
|
||||
return tty_fd;
|
||||
}
|
||||
@@ -612,9 +687,85 @@ static int parse_argv(int argc, char *ar
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static int zzz(void)
|
||||
+{
|
||||
+ struct console *con;
|
||||
+ struct sigaction sig = {
|
||||
+ .sa_handler = chld_handler,
|
||||
+ .sa_flags = SA_NOCLDSTOP | SA_RESTART,
|
||||
+ };
|
||||
+ struct sigaction oldsig;
|
||||
+ sigset_t set, oldset;
|
||||
+ int status = 0, ret;
|
||||
+ pid_t job;
|
||||
+
|
||||
+ collect_consoles();
|
||||
+ if (!consoles->handle_next) {
|
||||
+ consoles->pid = 0;
|
||||
+ con = consoles;
|
||||
+ goto nofork;
|
||||
+ }
|
||||
+
|
||||
+ assert_se(sigemptyset(&set) == 0);
|
||||
+ assert_se(sigaddset(&set, SIGHUP) == 0);
|
||||
+ assert_se(sigaddset(&set, SIGCHLD) == 0);
|
||||
+ assert_se(sigemptyset(&sig.sa_mask) == 0);
|
||||
+ assert_se(sigprocmask(SIG_UNBLOCK, &set, &oldset) == 0);
|
||||
+ assert_se(sigaction(SIGCHLD, &sig, &oldsig) == 0);
|
||||
+ sig.sa_handler = SIG_DFL;
|
||||
+ assert_se(sigaction(SIGHUP, &sig, NULL) == 0);
|
||||
+
|
||||
+ LIST_FOREACH(handle, con, consoles) {
|
||||
+ switch ((con->pid = fork())) {
|
||||
+ case 0:
|
||||
+ if (prctl(PR_SET_PDEATHSIG, SIGHUP) < 0)
|
||||
+ _exit(EXIT_FAILURE);
|
||||
+ zero(sig);
|
||||
+ assert_se(sigprocmask(SIG_UNBLOCK, &oldset, NULL) == 0);
|
||||
+ assert_se(sigaction(SIGCHLD, &oldsig, NULL) == 0);
|
||||
+ nofork:
|
||||
+ setsid();
|
||||
+ release_terminal();
|
||||
+ *usemask |= 1 << con->id;
|
||||
+ current_dev = con->tty;
|
||||
+ return con->id; /* child */
|
||||
+ case -1:
|
||||
+ log_error("Failed to query password: %s", strerror(errno));
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = 0;
|
||||
+ while ((job = wait(&status)) != 0) {
|
||||
+ if (job < 0) {
|
||||
+ if (errno != EINTR)
|
||||
+ break;
|
||||
+ continue;
|
||||
+ }
|
||||
+ LIST_FOREACH(handle, con, consoles) {
|
||||
+ if (con->pid == job || kill(con->pid, 0) < 0) {
|
||||
+ *usemask &= ~(1 << con->id);
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (*usemask & (1 << con->id))
|
||||
+ continue;
|
||||
+ kill(con->pid, SIGHUP);
|
||||
+ usleep(50000);
|
||||
+ kill(con->pid, SIGKILL);
|
||||
+ }
|
||||
+ if (WIFEXITED(status) && ret == 0)
|
||||
+ ret = WEXITSTATUS(status);
|
||||
+ }
|
||||
+ free_consoles();
|
||||
+ exit(ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS); /* parent */
|
||||
+}
|
||||
+
|
||||
int main(int argc, char *argv[]) {
|
||||
- int r;
|
||||
+ int r, id = 0;
|
||||
|
||||
+ LIST_HEAD_INIT(consoles);
|
||||
log_set_target(LOG_TARGET_AUTO);
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
@@ -625,11 +776,19 @@ int main(int argc, char *argv[]) {
|
||||
if (r <= 0)
|
||||
goto finish;
|
||||
|
||||
+ usemask = mmap(NULL, sizeof(*usemask), PROT_READ | PROT_WRITE,
|
||||
+ MAP_ANONYMOUS | MAP_SHARED, -1, 0);
|
||||
+ assert_se(usemask != NULL);
|
||||
+
|
||||
if (arg_console) {
|
||||
- setsid();
|
||||
- release_terminal();
|
||||
+ if (!arg_plymouth && arg_action != ACTION_WALL &&
|
||||
+ arg_action != ACTION_LIST) {
|
||||
+ id = zzz();
|
||||
+ } else {
|
||||
+ setsid();
|
||||
+ release_terminal();
|
||||
+ }
|
||||
}
|
||||
-
|
||||
if (IN_SET(arg_action, ACTION_WATCH, ACTION_WALL))
|
||||
r = watch_passwords();
|
||||
else
|
||||
@@ -638,6 +797,8 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
log_error_errno(r, "Error: %m");
|
||||
|
||||
+ free_consoles();
|
||||
+ *usemask &= ~(1 << id);
|
||||
finish:
|
||||
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
From: Andrey Borzenkov <arvidjaar@gmail.com>
|
||||
Subject: use /usr/sbin/sulogin in emergency service
|
||||
|
||||
In current Factory sulogin is in /usr/sbin which makes it impossible
|
||||
to enter emergency service.
|
||||
---
|
||||
units/console-shell.service.m4.in | 2 +-
|
||||
units/emergency.service.in | 2 +-
|
||||
units/rescue.service.in | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: systemd-218/units/console-shell.service.m4.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/console-shell.service.m4.in
|
||||
+++ systemd-218/units/console-shell.service.m4.in
|
||||
@@ -17,7 +17,7 @@ Before=getty.target
|
||||
[Service]
|
||||
Environment=HOME=/root
|
||||
WorkingDirectory=/root
|
||||
-ExecStart=-/sbin/sulogin
|
||||
+ExecStart=-/usr/sbin/sulogin
|
||||
ExecStopPost=-@SYSTEMCTL@ poweroff
|
||||
Type=idle
|
||||
StandardInput=tty-force
|
||||
Index: systemd-218/units/emergency.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/emergency.service.in
|
||||
+++ systemd-218/units/emergency.service.in
|
||||
@@ -18,7 +18,7 @@ Environment=HOME=/root
|
||||
WorkingDirectory=/root
|
||||
ExecStartPre=-/bin/plymouth quit
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
|
||||
-ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
Type=idle
|
||||
StandardInput=tty-force
|
||||
StandardOutput=inherit
|
||||
Index: systemd-218/units/rescue.service.in
|
||||
===================================================================
|
||||
--- systemd-218.orig/units/rescue.service.in
|
||||
+++ systemd-218/units/rescue.service.in
|
||||
@@ -18,7 +18,7 @@ Environment=HOME=/root
|
||||
WorkingDirectory=/root
|
||||
ExecStartPre=-/bin/plymouth quit
|
||||
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
|
||||
-ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
+ExecStart=-/bin/sh -c "/usr/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
|
||||
Type=idle
|
||||
StandardInput=tty-force
|
||||
StandardOutput=inherit
|
Loading…
Reference in New Issue
Block a user