On Mon, Mar 7, 2011 at 3:33 AM, Lennart Poettering
<[email protected]> wrote:
> On Fri, 04.03.11 19:52, Andrey Borzenkov ([email protected]) wrote:
>
>> This merges several separate patches that I carry as part of
>> Mandriva systemd RPM. They touch those parts that are very
>> unlikely to be changed in near future and do not impose any
>> functionality change for systemd core. I also think it is
>> useful for troubleshooting to have real distribution name in
>> system logs, espicially when someone reports problem upstream.
>>
>> The patch looks bigger than sum of replaced patches because
>>
>> - previous patches were applied on top of distro=fedora, now
>> I need to add all those bits for distro=mandriva as well
>>
>> - part of patch was done as spec file magic, but it seems more
>> logical to ship all these bits together
>>
>> Signed-off-by: Andrey Borzenkov <[email protected]>
>> Acked-By: Eugeni Dodonov <[email protected]>
>
> (We don't really do S-o-b nor A-B, please leave this out of patchs,
> since we don't want to create the impression the data was valid.
>

removed

>> +#ifdef TARGET_MANDRIVA
>> +                "exim",                 SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
>> +                "masqmail",             SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
>> +                "postfix",              SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
>> +                "sendmail",             SPECIAL_MAIL_TRANSFER_AGENT_TARGET,
>> +#endif
>>          };
>
> Grr, I am not sure I like this much. This hardcodes the names of
> specific implementations in systemd, and I am really not sure I want to
> start with doing this. Can we find another solution?
>

I removed it for now. It does not look like
SPECIAL_MAIL_TRANSFER_AGENT_TARGET is actually used anywhere inside
systemd itself; and we better wait for real demand to emerge.

>>
>> +#elif defined(TARGET_MANDRIVA)
>> +
>> +     if (!pretty_name) {
>> +             char *s, *v = NULL, *p;
>> +
>> +             if ((r = read_one_line_file("/etc/mandriva-release", &s) < 0))
>> +                     log_warning("Failed to read
>> /etc/mandriva-release: %s", strerror(-r));
>
> Hmm, I want to have an easy upgrade path for everybody to drom those
> /etc/*-release files, so please explicitly ignore ENOENT here, like the
> others do that as well.
>

Done

>> +             else {
>> +                     p = strstr(s, " release ");
>> +                     if (p) {
>> +                             *p = '\0';
>> +                             v = p += 9;
>> +                             while (*p && *p != ' ')
>> +                             p++;
>
> Please fix indenting of p++;
>

Done

>> +                             *p = '\0';
>
> I'd just shorten the last three lines to:
>
>    p[strcspn(p, WHITESPACE)] = 0
>

Done

> Please do not use tabs, btw.
>

Done

>> +
>> +                             /* This corresponds to standard rc.sysinit */
>> +                             asprintf(&pretty_name,
>> +                                     "\x1B[1;36m%s\x1B[0;39m %s", s,
>> v);
>
> Needs OOM checking.
>

Done

>> +                             /* and fake it so colour is right */
>> +                             const_color = "0";
>
> Hmm, please set "1:36" here and drop it from the pretty name, so that new
> need no "fakes" and the variable name actually explains what is in it.
>

OK, makes sense.

>> +             if (vc_keytable) {
>> +                     if (vc_keymap)
>> +                             free(vc_keymap);
>> +                     if (utf8) {
>> +                             if (endswith(vc_keytable, ".uni") || 
>> strstr(vc_keytable, ".uni."))
>> +                                     vc_keymap = strdup(vc_keytable);
>> +                             else {
>> +                                     char *s;
>> +                                     if ((s = strstr(vc_keytable, ".map")))
>> +                                             vc_keytable[s-vc_keytable+1] = 
>> '\0';
>> +                                     vc_keymap = strappend(vc_keytable, 
>> ".uni");
>> +                             }
>> +                     } else
>> +                             vc_keymap = strdup(vc_keytable);
>
> OOM checking all over the place please!
>

Actually it became just one place, consolidated. Done.

>> +m4_ifdef(`TARGET_MANDRIVA',
>> +`# These dependencies are in original SysV script that starts display 
>> manager
>> +After=network.target acpid.service lircmd.service fs.service 
>> haldaemon.service
>> +# Hide SysV script
>> +Names=dm.service')
>
> Do we really need those? I fail to see why acpid or lircmd or any of those
> really should be ordered before X. Can't we just drop them?
>

Digging in SVN, lircmd seems to be some typo when SVN was resurrected
after crash. At least it appears from nowhere without a single
comment.

X still tries to contact acpid; funnily enough it fails though, do not know why:

[   116.539] (WW) Open ACPI failed (/var/run/acpid.socket) (Connection refused)

may be race condition (acpid is still not actually started at this point?).

hald can likely be dropped.

we still ship X font server, so if user happens to have it enabled, it
is expected to still work.

Regarding network - this is done due to possible network
authentication as well as complaints that KDM (or was it GDM, do not
remember) does not show correct host name. This is the best
approximation I can get today; I have to think about it.

> If not, then I'd prefer to simple use two seperate prefdm files in
> fedora/prefdm.service and mandriva/prefdm.service.
>

OK, so let's do it separate unit (and Makefile section) so we have
flexibility. I dropped lircmd which seems bogus but left others for
now.

Version with your comments applied attached.

Thank you!
From: Andrey Borzenkov <[email protected]>
Subject: [PATCH] add Mandriva distribution support
Cc: [email protected]

This merges several separate patches that I carry as part of
Mandriva systemd RPM. They touch those parts that are very
unlikely to be changed in near future and do not impose any
functionality change for systemd core. I also think it is
useful for troubleshooting to have real distribution name in
system logs, espicially when someone reports problem upstream.

The patch looks bigger than sum of replaced patches because

- previous patches were applied on top of distro=fedora, now
I need to add all those bits for distro=mandriva as well

- part of patch was done as spec file magic, but it seems more
logical to ship all these bits together

---
 Makefile.am                    |   31 ++++++++++++++++++++
 configure.ac                   |   10 ++++++
 src/fsck.c                     |    2 +-
 src/hostname-setup.c           |    4 +-
 src/locale-setup.c             |   22 ++++++++++++++
 src/quotacheck.c               |    6 ++--
 src/service.c                  |    6 ++++
 src/systemctl.c                |    2 +-
 src/util.c                     |   26 +++++++++++++++++
 src/vconsole-setup.c           |   61 ++++++++++++++++++++++++++++++++++++++++
 units/[email protected]        |    3 ++
 units/graphical.target.m4      |    3 ++
 units/mandriva/prefdm.service  |   24 +++++++++++++++
 units/multi-user.target.m4     |    3 ++
 units/rescue.service.m4        |    8 ++++-
 units/[email protected] |    3 ++
 16 files changed, 206 insertions(+), 8 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 8d34dab..4caa243 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -84,6 +84,12 @@ AM_CPPFLAGS += \
 	-DKBD_SETFONT=\"/usr/bin/setfont\" \
 	-DDEFAULT_FONT=\"LatArCyrHeb-16\"
 else
+if TARGET_MANDRIVA
+AM_CPPFLAGS += \
+	-DKBD_LOADKEYS=\"/bin/loadkeys\" \
+	-DKBD_SETFONT=\"/bin/setfont\" \
+	-DDEFAULT_FONT=\"LatArCyrHeb-16\"
+else
 AM_CPPFLAGS += \
 	-DKBD_LOADKEYS=\"/bin/loadkeys\" \
 	-DKBD_SETFONT=\"/bin/setfont\" \
@@ -91,6 +97,7 @@ AM_CPPFLAGS += \
 endif
 endif
 endif
+endif
 
 rootbin_PROGRAMS = \
 	systemd \
@@ -337,6 +344,13 @@ dist_systemunit_DATA += \
 	units/fedora/halt-local.service
 endif
 
+if TARGET_MANDRIVA
+dist_systemunit_DATA += \
+	units/mandriva/prefdm.service \
+	units/fedora/rc-local.service \
+	units/fedora/halt-local.service
+endif
+
 if HAVE_PLYMOUTH
 dist_systemunit_DATA += \
 	units/plymouth-start.service \
@@ -1357,6 +1371,23 @@ if TARGET_FEDORA
 		rm -f display-manager.service && \
 		$(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
 endif
+
+if TARGET_MANDRIVA
+	$(MKDIR_P) -m 0755 $(DESTDIR)$(systemunitdir)/final.target.wants
+	( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \
+		rm -f rc-local.service && \
+		$(LN_S) $(systemunitdir)/rc-local.service rc-local.service )
+	( cd $(DESTDIR)$(systemunitdir)/final.target.wants && \
+		rm -f halt-local.service && \
+		$(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
+	( cd $(DESTDIR)$(systemunitdir) && \
+		rm -f display-manager.service && \
+		$(LN_S) prefdm.service display-manager.service )
+	( cd $(DESTDIR)$(systemunitdir)/graphical.target.wants && \
+		rm -f display-manager.service && \
+		$(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
+endif
+
 if TARGET_DEBIAN_OR_UBUNTU
 	( cd $(DESTDIR)$(systemunitdir) && \
 		rm -f runlevel5.target && \
diff --git a/configure.ac b/configure.ac
index 2cf31e4..c16b159 100644
--- a/configure.ac
+++ b/configure.ac
@@ -282,6 +282,7 @@ if test "z$with_distro" = "z"; then
                 test -f "/etc/slackware-version" && with_distro="slackware"
                 test -f "/etc/frugalware-release" && with_distro="frugalware"
                 test -f "/etc/altlinux-release" && with_distro="altlinux"
+                test -f "/etc/mandriva-release" && with_distro="mandriva"
                 if test "x`lsb_release -is 2>/dev/null`" = "xUbuntu"; then
                         with_distro="ubuntu"
                 fi
@@ -373,6 +374,14 @@ case $with_distro in
                 M4_DISTRO_FLAG=-DTARGET_ALTLINUX=1
 		have_plymouth=true
                 ;;
+        mandriva)
+                SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+                SYSTEM_SYSVRCND_PATH=/etc/rc.d
+                SPECIAL_SYSLOG_SERVICE=rsyslog.service
+                AC_DEFINE(TARGET_MANDRIVA, [], [Target is Mandriva])
+                M4_DISTRO_FLAG=-DTARGET_MANDRIVA=1
+		have_plymouth=true
+                ;;
         other)
                 AS_IF([test "x$with_syslog_service" = "x"],
                         [AC_MSG_ERROR([With --distro=other, you must pass --with-syslog-service= to configure])])
@@ -430,6 +439,7 @@ AM_CONDITIONAL(TARGET_GENTOO, test x"$with_distro" = xgentoo)
 AM_CONDITIONAL(TARGET_SLACKWARE, test x"$with_distro" = xslackware)
 AM_CONDITIONAL(TARGET_FRUGALWARE, test x"$with_distro" = xfrugalware)
 AM_CONDITIONAL(TARGET_ALTLINUX, test x"$with_distro" = xaltlinux)
+AM_CONDITIONAL(TARGET_MANDRIVA, test x"$with_distro" = xmandriva)
 
 AM_CONDITIONAL(HAVE_PLYMOUTH, test -n "$have_plymouth")
 
diff --git a/src/fsck.c b/src/fsck.c
index 7855f3a..dbfb475 100644
--- a/src/fsck.c
+++ b/src/fsck.c
@@ -121,7 +121,7 @@ static int parse_proc_cmdline(void) {
                         arg_skip = true;
                 else if (startswith(w, "fsck.mode"))
                         log_warning("Invalid fsck.mode= parameter. Ignoring.");
-#ifdef TARGET_FEDORA
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
                 else if (strneq(w, "fastboot", l))
                         arg_skip = true;
                 else if (strneq(w, "forcefsck", l))
diff --git a/src/hostname-setup.c b/src/hostname-setup.c
index 8b0ff79..ef68d78 100644
--- a/src/hostname-setup.c
+++ b/src/hostname-setup.c
@@ -30,7 +30,7 @@
 #include "util.h"
 #include "log.h"
 
-#if defined(TARGET_FEDORA) || defined(TARGET_ALTLINUX)
+#if defined(TARGET_FEDORA) || defined(TARGET_ALTLINUX) || defined(TARGET_MANDRIVA)
 #define FILENAME "/etc/sysconfig/network"
 #elif defined(TARGET_SUSE) || defined(TARGET_SLACKWARE) || defined(TARGET_FRUGALWARE)
 #define FILENAME "/etc/HOSTNAME"
@@ -87,7 +87,7 @@ static int read_and_strip_hostname(const char *path, char **hn) {
 
 static int read_distro_hostname(char **hn) {
 
-#if defined(TARGET_FEDORA) || defined(TARGET_ARCH) || defined(TARGET_GENTOO) || defined(TARGET_ALTLINUX)
+#if defined(TARGET_FEDORA) || defined(TARGET_ARCH) || defined(TARGET_GENTOO) || defined(TARGET_ALTLINUX) || defined(TARGET_MANDRIVA)
         int r;
         FILE *f;
 
diff --git a/src/locale-setup.c b/src/locale-setup.c
index 2360cea..7684681 100644
--- a/src/locale-setup.c
+++ b/src/locale-setup.c
@@ -181,6 +181,28 @@ int locale_setup(void) {
                 if (r != -ENOENT)
                         log_warning("Failed to read /etc/profile.env: %s", strerror(-r));
         }
+#elif defined(TARGET_MANDRIVA)
+        if (r <= 0 &&
+            (r = parse_env_file("/etc/sysconfig/i18n", NEWLINE,
+                                "LANG",              &variables[VARIABLE_LANG],
+                                "LC_CTYPE",          &variables[VARIABLE_LC_CTYPE],
+                                "LC_NUMERIC",        &variables[VARIABLE_LC_NUMERIC],
+                                "LC_TIME",           &variables[VARIABLE_LC_TIME],
+                                "LC_COLLATE",        &variables[VARIABLE_LC_COLLATE],
+                                "LC_MONETARY",       &variables[VARIABLE_LC_MONETARY],
+                                "LC_MESSAGES",       &variables[VARIABLE_LC_MESSAGES],
+                                "LC_PAPER",          &variables[VARIABLE_LC_PAPER],
+                                "LC_NAME",           &variables[VARIABLE_LC_NAME],
+                                "LC_ADDRESS",        &variables[VARIABLE_LC_ADDRESS],
+                                "LC_TELEPHONE",      &variables[VARIABLE_LC_TELEPHONE],
+                                "LC_MEASUREMENT",    &variables[VARIABLE_LC_MEASUREMENT],
+                                "LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION],
+                                NULL)) < 0) {
+
+		if (r != -ENOENT)
+			log_warning("Failed to read /etc/sysconfig/i18n: %s", strerror(-r));
+        }
+
 #endif
 
         if (!variables[VARIABLE_LANG]) {
diff --git a/src/quotacheck.c b/src/quotacheck.c
index 5d61146..5ced933 100644
--- a/src/quotacheck.c
+++ b/src/quotacheck.c
@@ -50,7 +50,7 @@ static int parse_proc_cmdline(void) {
                         arg_skip = true;
                 else if (startswith(w, "quotacheck.mode"))
                         log_warning("Invalid quotacheck.mode= parameter. Ignoring.");
-#ifdef TARGET_FEDORA
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
                 else if (strneq(w, "forcequotacheck", l))
                         arg_force = true;
 #endif
@@ -61,8 +61,8 @@ static int parse_proc_cmdline(void) {
 }
 
 static void test_files(void) {
-#ifdef TARGET_FEDORA
-        /* This exists only on Fedora */
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
+        /* This exists only on Fedora or Mandriva */
         if (access("/forcequotacheck", F_OK) >= 0)
                 arg_force = true;
 #endif
diff --git a/src/service.c b/src/service.c
index 465e1a7..0461012 100644
--- a/src/service.c
+++ b/src/service.c
@@ -275,7 +275,13 @@ static int sysv_translate_facility(const char *name, const char *filename, char
         static const char * const table[] = {
                 /* LSB defined facilities */
                 "local_fs",             SPECIAL_LOCAL_FS_TARGET,
+#ifndef TARGET_MANDRIVA
+		/* Due to unfortunate name selection in Mandriva,
+		 * $network is provided by network-up which is ordered
+		 * after network which actually starts interfaces.
+		 * To break the loop, just ignore it */
                 "network",              SPECIAL_NETWORK_TARGET,
+#endif
                 "named",                SPECIAL_NSS_LOOKUP_TARGET,
                 "portmap",              SPECIAL_RPCBIND_TARGET,
                 "remote_fs",            SPECIAL_REMOTE_FS_TARGET,
diff --git a/src/systemctl.c b/src/systemctl.c
index 23e6597..63e74d9 100644
--- a/src/systemctl.c
+++ b/src/systemctl.c
@@ -4042,7 +4042,7 @@ static int install_info_apply(const char *verb, LookupPaths *paths, InstallInfo
         }
 
         if (!f) {
-#if defined(TARGET_FEDORA) && defined (HAVE_SYSV_COMPAT)
+#if (defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)) && defined (HAVE_SYSV_COMPAT)
 
                 if (endswith(i->name, ".service")) {
                         char *sysv;
diff --git a/src/util.c b/src/util.c
index b02a77e..96cf660 100644
--- a/src/util.c
+++ b/src/util.c
@@ -3252,6 +3252,32 @@ void status_welcome(void) {
         if (!ansi_color)
                 const_color = "0;33"; /* Orange/Brown for Ubuntu */
 
+#elif defined(TARGET_MANDRIVA)
+
+        if (!pretty_name) {
+                char *s, *p;
+
+                if ((r = read_one_line_file("/etc/mandriva-release", &s) < 0)) {
+                        if (r != -ENOENT)
+                                log_warning("Failed to read /etc/mandriva-release: %s", strerror(-r));
+                } else {
+                        p = strstr(s, " release ");
+                        if (p) {
+                                *p = '\0';
+                                p += 9;
+                                p[strcspn(p, " ")] = '\0';
+
+                                /* This corresponds to standard rc.sysinit */
+                                if (asprintf(&pretty_name, "%s\x1B[0;39m %s", s, p) > 0)
+                                        const_color = "1;36";
+                                else
+                                        log_warning("Failed to allocate Mandriva version string.");
+                        } else
+                                log_warning("Failed to parse /etc/mandriva-release");
+                        free(s);
+                }
+        }
+
 #endif
 
         if (!pretty_name && !const_pretty)
diff --git a/src/vconsole-setup.c b/src/vconsole-setup.c
index 1952dfb..5b97712 100644
--- a/src/vconsole-setup.c
+++ b/src/vconsole-setup.c
@@ -147,6 +147,9 @@ int main(int argc, char **argv) {
 #ifdef TARGET_GENTOO
         char *vc_unicode = NULL;
 #endif
+#ifdef TARGET_MANDRIVA
+        char *vc_keytable = NULL;
+#endif
         int fd = -1;
         bool utf8;
         int r = EXIT_FAILURE;
@@ -345,6 +348,64 @@ int main(int argc, char **argv) {
                         if (r != -ENOENT)
                                 log_warning("Failed to read /etc/conf.d/keymaps: %s", strerror(-r));
                 }
+
+#elif defined(TARGET_MANDRIVA)
+
+                if ((r = parse_env_file("/etc/sysconfig/i18n", NEWLINE,
+                                        "SYSFONT", &vc_font,
+                                        "SYSFONTACM", &vc_font_map,
+                                        "UNIMAP", &vc_font_unimap,
+                                        NULL)) < 0) {
+
+                        if (r != -ENOENT)
+                                log_warning("Failed to read /etc/sysconfig/i18n: %s", strerror(-r));
+                }
+
+                if ((r = parse_env_file("/etc/sysconfig/keyboard", NEWLINE,
+                                        "KEYTABLE", &vc_keytable,
+                                        "KEYMAP", &vc_keymap,
+                                        "UNIKEYTABLE", &vc_keymap,
+                                        "GRP_TOGGLE", &vc_keymap_toggle,
+                                        NULL)) < 0) {
+
+                        if (r != -ENOENT)
+                                log_warning("Failed to read /etc/sysconfig/i18n: %s", strerror(-r));
+                }
+
+                if (vc_keytable) {
+                        if (vc_keymap)
+                                free(vc_keymap);
+                        if (utf8) {
+                                if (endswith(vc_keytable, ".uni") || strstr(vc_keytable, ".uni."))
+                                        vc_keymap = strdup(vc_keytable);
+                                else {
+                                        char *s;
+                                        if ((s = strstr(vc_keytable, ".map")))
+                                                vc_keytable[s-vc_keytable+1] = '\0';
+                                        vc_keymap = strappend(vc_keytable, ".uni");
+                                }
+                        } else
+                                vc_keymap = strdup(vc_keytable);
+
+                        free(vc_keytable);
+
+                        if (!vc_keymap) {
+                                log_error("Out of memory.");
+                                goto finish;
+                        }
+                }
+
+                if (access("/etc/sysconfig/console/default.kmap", F_OK) >= 0) {
+                        char *t;
+
+                        if (!(t = strdup("/etc/sysconfig/console/default.kmap"))) {
+                                log_error("Out of memory.");
+                                goto finish;
+                        }
+
+                        free(vc_keymap);
+                        vc_keymap = t;
+                }
 #endif
         }
 
diff --git a/units/[email protected] b/units/[email protected]
index d282912..8e1f250 100644
--- a/units/[email protected]
+++ b/units/[email protected]
@@ -21,6 +21,9 @@ After=local.service
 m4_ifdef(`TARGET_ALTLINUX',
 After=rc-local.service
 )m4_dnl
+m4_ifdef(`TARGET_MANDRIVA',
+After=rc-local.service
+)m4_dnl
 
 # If additional gettys are spawned during boot then we should make
 # sure that this is synchronized before getty.target, even though
diff --git a/units/graphical.target.m4 b/units/graphical.target.m4
index e2750c8..1931d7f 100644
--- a/units/graphical.target.m4
+++ b/units/graphical.target.m4
@@ -23,6 +23,9 @@ Names=runlevel5.target
 m4_ifdef(`TARGET_ALTLINUX',
 Names=runlevel5.target
 )m4_dnl
+m4_ifdef(`TARGET_MANDRIVA',
+Names=runlevel5.target
+)m4_dnl
 AllowIsolate=yes
 
 [Install]
diff --git a/units/mandriva/prefdm.service b/units/mandriva/prefdm.service
new file mode 100644
index 0000000..43b505d
--- /dev/null
+++ b/units/mandriva/prefdm.service
@@ -0,0 +1,24 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Display Manager
+After=syslog.target livesys-late.service rc-local.service systemd-user-sessions.service
+After=network.target acpid.service fs.service haldaemon.service
+
+# Do not stop plymouth, it is done in prefdm if required
+Conflicts=plymouth-quit.service
+After=plymouth-quit.service
+
+# Hide SysV script
+Names=dm.service
+
+[Service]
+ExecStart=/etc/X11/prefdm
+Type=forking
+Restart=always
+RestartSec=0
diff --git a/units/multi-user.target.m4 b/units/multi-user.target.m4
index 9df0142..51e7b66 100644
--- a/units/multi-user.target.m4
+++ b/units/multi-user.target.m4
@@ -29,6 +29,9 @@ m4_dnl On Debian/Ubuntu Runlevel 2, 3, 4 and 5 are multi-user
 Names=runlevel2.target runlevel3.target runlevel4.target runlevel5.target
 )m4_dnl
 )m4_dnl
+m4_ifdef(`TARGET_MANDRIVA',
+Names=runlevel3.target
+)m4_dnl
 AllowIsolate=yes
 
 [Install]
diff --git a/units/rescue.service.m4 b/units/rescue.service.m4
index 2a0d328..8b42e9f 100644
--- a/units/rescue.service.m4
+++ b/units/rescue.service.m4
@@ -13,6 +13,9 @@ DefaultDependencies=no
 Conflicts=shutdown.target
 After=basic.target
 Before=shutdown.target
+m4_ifdef(`TARGET_MANDRIVA',
+`# Hide SysV script
+Names=single.service')
 
 [Service]
 Environment=HOME=/root
@@ -22,7 +25,10 @@ ExecStartPre=-/bin/echo 'Welcome to rescue mode. Use "systemctl default" or ^D t
 m4_ifdef(`TARGET_FEDORA',
 `EnvironmentFile=/etc/sysconfig/init
 ExecStart=-/bin/bash -c "exec ${SINGLE}"',
-`ExecStart=-/sbin/sulogin')
+m4_ifdef(`TARGET_MANDRIVA',
+`EnvironmentFile=/etc/sysconfig/init
+ExecStart=-/bin/bash -c "exec ${SINGLE}"',
+`ExecStart=-/sbin/sulogin'))
 ExecStopPost=-/bin/systemctl --fail default
 StandardInput=tty-force
 KillMode=process-group
diff --git a/units/[email protected] b/units/[email protected]
index 2b3c8ed..d42330a 100644
--- a/units/[email protected]
+++ b/units/[email protected]
@@ -21,6 +21,9 @@ After=local.service
 m4_ifdef(`TARGET_ALTLINUX',
 After=rc-local.service
 )m4_dnl
+m4_ifdef(`TARGET_MANDRIVA',
+After=rc-local.service
+)m4_dnl
 
 # If additional gettys are spawned during boot then we should make
 # sure that this is synchronized before getty.target, even though
-- 
tg: (8521130..) upstream/mandriva (depends on: origin/master)
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to