X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=target-pld.patch;h=d237b3ab41409f17d3e564d26fa6ebe04d6cc764;hb=dc5fbf40660948ed76dfcbfa191aeec1c7f3a5e9;hp=b766050ef0066288ba18ba945a7e44f3edee907b;hpb=d31498aabb04a8122e767ad2c00024c1ff82f643;p=packages%2Fsystemd.git diff --git a/target-pld.patch b/target-pld.patch index b766050..d237b3a 100644 --- a/target-pld.patch +++ b/target-pld.patch @@ -1,161 +1,67 @@ -diff --git a/Makefile.am b/Makefile.am -index 170465a..bce467d 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -196,6 +196,8 @@ - SYSINIT_TARGET_WANTS = - BASIC_TARGET_WANTS = - SOCKETS_TARGET_WANTS = -+FINAL_TARGET_WANTS = -+GRAPHICAL_TARGET_WANTS = +; rest of target-pld.patch logic in systemd.spec +--- a/src/basic/hostname-util.h~ 2018-03-05 23:16:37.000000000 +0100 ++++ b/src/basic/hostname-util.h 2018-05-15 13:46:17.924678801 +0200 +@@ -42,5 +42,6 @@ int sethostname_idempotent(const char *s - SYSTEM_UNIT_ALIASES = - USER_UNIT_ALIASES = -@@ -214,6 +216,8 @@ - what="$(SYSINIT_TARGET_WANTS)" && wants=sysinit.target && $(add-wants) - what="$(BASIC_TARGET_WANTS)" && wants=basic.target && $(add-wants) - what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants) -+ what="$(FINAL_TARGET_WANTS)" && wants=final.target && $(add-wants) -+ what="$(GRAPHICAL_TARGET_WANTS)" && wants=graphical.target && $(add-wants) + int shorten_overlong(const char *s, char **ret); - define add-wants - [ -z "$$what" ] || ( \ -@@ -3388,9 +3392,16 @@ - $(systemdstatedir) - - MULTI_USER_TARGET_WANTS += \ -+ rc-local.service \ - systemd-logind.service \ - systemd-user-sessions.service - -+FINAL_TARGET_WANTS += \ -+ halt-local.service -+ -+GRAPHICAL_TARGET_WANTS += \ -+ display-manager.service -+ - SYSTEM_UNIT_ALIASES += \ - systemd-logind.service dbus-org.freedesktop.login1.service - -@@ -3790,6 +3801,10 @@ - uninstall-hook: $(UNINSTALL_DATA_HOOKS) $(UNINSTALL_EXEC_HOOKS) - - install-data-hook: $(INSTALL_DATA_HOOKS) -+ ( cd $(DESTDIR)$(systemunitdir) && \ -+ rm -f display-manager.service single.service && \ -+ $(LN_S) prefdm.service display-manager.service && \ -+ $(LN_S) rescue.service single.service ) - - distclean-local: $(DISTCLEAN_LOCAL_HOOKS) - -diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c -index 2c2f10c..754f0c7 100644 ---- a/src/core/hostname-setup.c -+++ b/src/core/hostname-setup.c -@@ -64,13 +64,84 @@ static int read_and_strip_hostname(const char *path, char **hn) { - return 0; ++int read_etc_hostname_distro(const char *path, char **ret); + int read_etc_hostname_stream(FILE *f, char **ret); + int read_etc_hostname(const char *path, char **ret); +--- systemd-238/src/basic/hostname-util.c~ 2018-03-05 23:16:37.000000000 +0100 ++++ systemd-238/src/basic/hostname-util.c 2018-05-15 13:21:08.392017315 +0200 +@@ -290,13 +290,33 @@ int read_etc_hostname_stream(FILE *f, ch + } } -+static int read_distro_hostname(char **hn) { -+ int r; -+ _cleanup_fclose_ FILE *f = NULL; -+ -+ assert(hn); -+ -+ f = fopen("/etc/sysconfig/network", "re"); -+ if (!f) -+ return -errno; -+ -+ for (;;) { -+ char line[LINE_MAX]; -+ char *s, *k; -+ -+ if (!fgets(line, sizeof(line), f)) { -+ if (feof(f)) -+ break; -+ -+ r = -errno; -+ goto finish; -+ } -+ -+ s = strstrip(line); -+ -+ if (!startswith_no_case(s, "HOSTNAME=")) -+ continue; -+ -+ k = strdup(s+9); -+ if (!k) { -+ r = -ENOMEM; -+ goto finish; -+ } -+ -+ hostname_cleanup(k); -+ -+ if (isempty(k)) { -+ free(k); -+ r = -ENOENT; -+ goto finish; -+ } -+ -+ *hn = k; -+ r = 0; -+ goto finish; -+ } -+ -+ r = -ENOENT; -+ -+finish: -+ return r; -+} -+ -+static int read_hostname(char **hn) { ++int read_etc_hostname_distro(const char *path, char **ret) { + int r; -+ -+ assert(hn); -+ -+ /* First, try to load the generic hostname configuration file, -+ * that we support on all distributions */ -+ -+ r = read_and_strip_hostname("/etc/hostname", hn); -+ if (r < 0) { -+ if (r == -ENOENT) -+ return read_distro_hostname(hn); -+ ++ char *p = NULL; ++ r = parse_env_file(NULL, "/etc/sysconfig/network", NEWLINE, "HOSTNAME", &p, NULL); ++ if (r < 0) + return r; -+ } -+ -+ return 0; ++ if (r == 0) /* EOF without any hostname? the file is empty, let's treat that exactly like no file at all: ENOENT */ ++ return -ENOENT; ++ hostname_cleanup(p); ++ if (!hostname_is_valid(p, true)) ++ return -EBADMSG; ++ *ret = p; ++ return 0; +} + - int hostname_setup(void) { - int r; - _cleanup_free_ char *b = NULL; - const char *hn; - bool enoent = false; + int read_etc_hostname(const char *path, char **ret) { + _cleanup_fclose_ FILE *f = NULL; -- r = read_and_strip_hostname("/etc/hostname", &b); -+ r = read_hostname(&b); - if (r < 0) { - if (r == -ENOENT) - enoent = true; -diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c -index 7f692e9..0a45854 100644 ---- a/src/core/locale-setup.c -+++ b/src/core/locale-setup.c -@@ -74,6 +74,7 @@ int locale_setup(void) { + assert(ret); - if (detect_container(NULL) <= 0) { - r = parse_env_file("/proc/cmdline", WHITESPACE, +- if (!path) ++ if (!path) { ++ int r; + path = "/etc/hostname"; ++ r = read_etc_hostname_distro(path, ret); ++ if (r > 0) ++ return r; ++ } + + f = fopen(path, "re"); + if (!f) +diff -dur -x '*~' -x '*.orig' systemd-208.orig/src/core/locale-setup.c systemd-208/src/core/locale-setup.c +--- systemd-208.orig/src/core/locale-setup.c 2013-10-01 00:17:21.000000000 +0200 ++++ systemd-208/src/core/locale-setup.c 2014-01-09 15:15:41.000000000 +0100 +@@ -76,6 +76,7 @@ + + if (detect_container() <= 0) { + r = parse_env_file(NULL, "/proc/cmdline", WHITESPACE, + "LANG", &variables[VARIABLE_LANG], "locale.LANG", &variables[VARIABLE_LANG], "locale.LANGUAGE", &variables[VARIABLE_LANGUAGE], "locale.LC_CTYPE", &variables[VARIABLE_LC_CTYPE], -@@ -121,6 +121,15 @@ int locale_setup(void) { +@@ -120,6 +121,15 @@ log_warning("Failed to read /etc/locale.conf: %s", strerror(-r)); } + if (r <= 0 && -+ (r = parse_env_file("/etc/sysconfig/i18n", NEWLINE, ++ (r = parse_env_file(NULL, "/etc/sysconfig/i18n", NEWLINE, + "LANG", &variables[VARIABLE_LANG], + NULL)) < 0) { + @@ -163,44 +69,48 @@ index 7f692e9..0a45854 100644 + log_warning("Failed to read /etc/sysconfig/i18n: %s", strerror(-r)); + } + - if (!variables[VARIABLE_LANG]) { - variables[VARIABLE_LANG] = strdup("C"); - if (!variables[VARIABLE_LANG]) { ---- systemd-196/src/timedate/timedated.c~ 2012-10-16 23:35:40.589269718 +0200 -+++ systemd-196/src/timedate/timedated.c 2012-12-21 11:46:13.545086335 +0100 -@@ -175,6 +175,13 @@ - } - } - -+ r = parse_env_file("/etc/sysconfig/timezone", NEWLINE, -+ "TIMEZONE", &tz.zone, -+ NULL); -+ if (r < 0) { -+ if (r != -ENOENT) -+ log_warning("Failed to read /etc/sysconfig/timezone: %s", strerror(-r)); -+ } - have_timezone: - if (isempty(tz.zone)) { - free(tz.zone); -diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c -index 9196789..1d1a916 100644 ---- a/src/vconsole/vconsole-setup.c -+++ b/src/vconsole/vconsole-setup.c -@@ -358,6 +358,17 @@ - if (r < 0 && r != -ENOENT) - log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r)); - } -+ -+ if (r <= 0) { -+ r = parse_env_file("/etc/sysconfig/console", NEWLINE, -+ "CONSOLEFONT", &vc_font, -+ "CONSOLEMAP", &vc_font_map, -+ "CONSOLESCREENFONTMAP", &vc_font_unimap, -+ "KEYTABLE", &vc_keymap, -+ NULL); -+ if (r < 0 && r != -ENOENT) -+ log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r)); + add = NULL; + for (i = 0; i < _VARIABLE_MAX; i++) { + char *s; +--- a/src/basic/time-util.c~ 2016-11-03 18:16:42.000000000 +0100 ++++ b/src/basic/time-util.c 2016-11-12 19:54:28.457197174 +0100 +@@ -1290,8 +1290,16 @@ int get_timezone(char **tz) { + e = path_startswith(t, "/usr/share/zoneinfo/"); + if (!e) + e = path_startswith(t, "../usr/share/zoneinfo/"); +- if (!e) +- return -EINVAL; ++ if (!e) { ++ r = parse_env_file(NULL, "/etc/sysconfig/timezone", NEWLINE, ++ "TIMEZONE", &e, ++ NULL); ++ if (r < 0) { ++ if (r != -ENOENT) ++ log_warning("Failed to read /etc/sysconfig/timezone: %s", strerror(-r)); ++ return -EINVAL; ++ } + } - if (utf8) - enable_utf8(fd); + if (!timezone_is_valid(e)) + return -EINVAL; +diff -dur -x '*~' -x '*.orig' systemd-208.orig/src/vconsole/vconsole-setup.c systemd-208/src/vconsole/vconsole-setup.c +--- systemd-208.orig/src/vconsole/vconsole-setup.c 2013-08-13 22:02:47.000000000 +0200 ++++ systemd-208/src/vconsole/vconsole-setup.c 2014-01-09 15:17:49.000000000 +0100 +@@ -284,6 +284,17 @@ int main(int argc, char **argv) { + if (r < 0 && r != -ENOENT) + log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r)); + ++ if (r <= 0) { ++ int r1 = parse_env_file(NULL, "/etc/sysconfig/console", NEWLINE, ++ "CONSOLEFONT", &vc_font, ++ "CONSOLEMAP", &vc_font_map, ++ "CONSOLESCREENFONTMAP", &vc_font_unimap, ++ "KEYTABLE", &vc_keymap, ++ NULL); ++ if (r1 < 0 && r1 != -ENOENT) ++ log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r1)); ++ } ++ + /* Let the kernel command line override /etc/vconsole.conf */ + if (detect_container(NULL) <= 0) { + r = parse_env_file(NULL, "/proc/cmdline", WHITESPACE,