]> err.no Git - systemd/commitdiff
Add Mageia support
authorDexter Morgan <dmorgan@mageia.org>
Fri, 28 Oct 2011 17:16:33 +0000 (19:16 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 2 Nov 2011 01:16:39 +0000 (02:16 +0100)
This patch adds support for the Mageia Linux distribution:
 http://www.mageia.org/

Mageia is a fork of Mandriva although some divergence has already occured
and thus inclusion of these changes upstream allow us to (hopefully)
migrate more rapidly to the new standard approaches systemd offers.
Indeed, we already use the preferred mechanism of OS identification via
the /etc/os-release file rather than a distro specific variation.

This patch mostly mirrors the patch added previously for Mandriva
support. In addition to those original authors, this patch was mostly
written by Dexter Morgan with help from Colin Guthrie and Eugeni Dodonov.

14 files changed:
Makefile.am
configure.ac
src/fsck.c
src/hostname-setup.c
src/locale-setup.c
src/quotacheck.c
src/service.c
src/systemctl.c
src/vconsole-setup.c
units/console-shell.service.m4
units/getty@.service.m4
units/mageia/prefdm.service [new file with mode: 0644]
units/rescue.service.m4
units/serial-getty@.service.m4

index dabe32ac46f063605a206e73e0d0b5f99d48fa4f..f701a45c87ed1f98bb7fd8d50dad016047bddc87 100644 (file)
@@ -119,6 +119,13 @@ AM_CPPFLAGS += \
        -DKBD_LOADKEYS=\"/bin/loadkeys\" \
        -DKBD_SETFONT=\"/bin/setfont\" \
        -DDEFAULT_FONT=\"latarcyrheb-sun16\"
+else
+if TARGET_MAGEIA
+AM_CPPFLAGS += \
+       -DKBD_LOADKEYS=\"/bin/loadkeys\" \
+       -DKBD_SETFONT=\"/bin/setfont\" \
+       -DDEFAULT_FONT=\"LatArCyrHeb-16\"
+endif
 endif
 endif
 endif
@@ -542,6 +549,13 @@ dist_systemunit_DATA += \
        units/suse/halt-local.service
 endif
 
+if TARGET_MAGEIA
+dist_systemunit_DATA += \
+       units/mageia/prefdm.service \
+       units/fedora/rc-local.service \
+       units/fedora/halt-local.service
+endif
+
 if HAVE_PLYMOUTH
 dist_systemunit_DATA += \
        units/plymouth-start.service \
@@ -1999,6 +2013,23 @@ if TARGET_SUSE
                $(LN_S) $(systemunitdir)/halt-local.service halt-local.service )
 endif
 
+if TARGET_MAGEIA
+       $(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 && \
+               $(LN_S) prefdm.service dm.service )
+       ( cd $(DESTDIR)$(systemunitdir)/graphical.target.wants && \
+               rm -f display-manager.service && \
+               $(LN_S) $(systemunitdir)/display-manager.service display-manager.service )
+endif
+
 if HAVE_SYSV_COMPAT
        ( cd $(DESTDIR)$(systemunitdir)/local-fs.target.wants && \
                rm -f var-lock.mount && \
index 0ec6f69bc8cc233e91a11d5033940ed29b812e25..0bc98603d32fb2545998d91a33afa9d191750dea 100644 (file)
@@ -371,6 +371,7 @@ if test "z$with_distro" = "z"; then
                 test -f "/etc/mandriva-release" && with_distro="mandriva"
                 test -f "/etc/meego-release" && with_distro="meego"
                 test -f "/etc/angstrom-version" && with_distro="angstrom"
+                test -f "/etc/mageia-release" && with_distro="mageia"
                 if test "x`lsb_release -is 2>/dev/null`" = "xUbuntu"; then
                         with_distro="ubuntu"
                 fi
@@ -458,6 +459,12 @@ case $with_distro in
                 AC_DEFINE(TARGET_ANGSTROM, [], [Target is Ångström])
                 M4_DEFINES=-DTARGET_ANGSTROM=1
                 ;;
+        mageia)
+                SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+                AC_DEFINE(TARGET_MAGEIA, [], [Target is Mageia])
+                M4_DISTRO_FLAG=-DTARGET_MAGEIA=1
+                have_plymouth=yes
+                ;;
         other)
                 ;;
         *)
@@ -515,6 +522,7 @@ AM_CONDITIONAL(TARGET_ALTLINUX, test x"$with_distro" = xaltlinux)
 AM_CONDITIONAL(TARGET_MANDRIVA, test x"$with_distro" = xmandriva)
 AM_CONDITIONAL(TARGET_MEEGO, test x"$with_distro" = xmeego)
 AM_CONDITIONAL(TARGET_ANGSTROM, test x"$with_distro" = xangstrom)
+AM_CONDITIONAL(TARGET_MAGEIA, test x"$with_distro" = xmageia)
 
 AM_CONDITIONAL(HAVE_PLYMOUTH, test "$have_plymouth" = "yes")
 AM_CONDITIONAL(HAVE_SYSV_COMPAT, test "$SYSTEM_SYSV_COMPAT" = "yes")
index c5088ad71c9fddf84658e58e10032b03e2b64e94..3477ba16adf0eb5ae01daf3a28a6cfb9f3581580 100644 (file)
@@ -127,7 +127,7 @@ static int parse_proc_cmdline(void) {
                         arg_skip = true;
                 else if (startswith(w, "fsck.mode"))
                         log_warning("Invalid fsck.mode= parameter. Ignoring.");
-#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
                 else if (strneq(w, "fastboot", l))
                         arg_skip = true;
                 else if (strneq(w, "forcefsck", l))
index 7216b75c8aa1e1e941c50dd6599a7042fce11d4e..2c2f10cfd15486b872cbea6185becbbcb0496b4a 100644 (file)
@@ -30,7 +30,7 @@
 #include "util.h"
 #include "log.h"
 
-#if defined(TARGET_FEDORA) || defined(TARGET_ALTLINUX) || defined(TARGET_MANDRIVA) || defined(TARGET_MEEGO)
+#if defined(TARGET_FEDORA) || defined(TARGET_ALTLINUX) || defined(TARGET_MANDRIVA) || defined(TARGET_MEEGO) || defined(TARGET_MAGEIA)
 #define FILENAME "/etc/sysconfig/network"
 #elif defined(TARGET_SUSE) || defined(TARGET_SLACKWARE)
 #define FILENAME "/etc/HOSTNAME"
@@ -64,7 +64,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) || defined(TARGET_MANDRIVA) || defined(TARGET_MEEGO)
+#if defined(TARGET_FEDORA) || defined(TARGET_ARCH) || defined(TARGET_GENTOO) || defined(TARGET_ALTLINUX) || defined(TARGET_MANDRIVA) || defined(TARGET_MEEGO) || defined(TARGET_MAGEIA)
         int r;
         FILE *f;
 
index 340293619f213e214a8ee44b488e17a1da00bfb0..7f692e9c5ddd2bb78b4ca4b760f90945e8312e00 100644 (file)
@@ -199,7 +199,7 @@ int locale_setup(void) {
                 if (r != -ENOENT)
                         log_warning("Failed to read /etc/profile.env: %s", strerror(-r));
         }
-#elif defined(TARGET_MANDRIVA)
+#elif defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA )
         if (r <= 0 &&
             (r = parse_env_file("/etc/sysconfig/i18n", NEWLINE,
                                 "LANG",              &variables[VARIABLE_LANG],
index 98b59a090a99ef33079d27884821171c106cb954..60033a8eb256275c2df03b51b1cf4a5ad31cfde5 100644 (file)
@@ -54,7 +54,7 @@ static int parse_proc_cmdline(void) {
                         arg_skip = true;
                 else if (startswith(w, "quotacheck.mode"))
                         log_warning("Invalid quotacheck.mode= parameter. Ignoring.");
-#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
                 else if (strneq(w, "forcequotacheck", l))
                         arg_force = true;
 #endif
@@ -65,8 +65,8 @@ static int parse_proc_cmdline(void) {
 }
 
 static void test_files(void) {
-#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA)
-        /* This exists only on Fedora or Mandriva */
+#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
+        /* This exists only on Fedora, Mandriva or Mageia */
         if (access("/forcequotacheck", F_OK) >= 0)
                 arg_force = true;
 #endif
index 61843906594465f4f10c7456ff99d09590be12e0..eb475d9cc938dbb305f008340e5ef5432928fc82 100644 (file)
@@ -277,7 +277,8 @@ 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
+#if defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
+#else
                 /* Due to unfortunate name selection in Mandriva,
                  * $network is provided by network-up which is ordered
                  * after network which actually starts interfaces.
index b0baf8dc5f1349ff37d49eccb9dfe6b123660b03..175159d68fb42fc87380d72263d198bc9f3eadeb 100644 (file)
@@ -3462,7 +3462,7 @@ finish:
 static int enable_sysv_units(char **args) {
         int r = 0;
 
-#if defined (HAVE_SYSV_COMPAT) && (defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_SUSE) || defined(TARGET_MEEGO) || defined(TARGET_ALTLINUX))
+#if defined (HAVE_SYSV_COMPAT) && (defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_SUSE) || defined(TARGET_MEEGO) || defined(TARGET_ALTLINUX) || defined(TARGET_MAGEIA))
         const char *verb = args[0];
         unsigned f = 1, t = 1;
         LookupPaths paths;
index c5f3628c9ba887712a0d084bf21ce888db4e7ca6..91967891f15115909fe9a1d34395b4e9506d8a23 100644 (file)
@@ -160,7 +160,7 @@ int main(int argc, char **argv) {
 #ifdef TARGET_GENTOO
         char *vc_unicode = NULL;
 #endif
-#ifdef TARGET_MANDRIVA
+#if defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA)
         char *vc_keytable = NULL;
 #endif
         int fd = -1;
@@ -371,7 +371,7 @@ int main(int argc, char **argv) {
                                 log_warning("Failed to read /etc/conf.d/keymaps: %s", strerror(-r));
                 }
 
-#elif defined(TARGET_MANDRIVA)
+#elif defined(TARGET_MANDRIVA) || defined (TARGET_MAGEIA)
 
                 if ((r = parse_env_file("/etc/sysconfig/i18n", NEWLINE,
                                         "SYSFONT", &vc_font,
index a4a9108b325099b90e66d92e05a7a81f353599f4..02adc8403bce675aec336ec6a981c533f7bdb3d8 100644 (file)
@@ -23,6 +23,9 @@ After=rc-local.service
 m4_ifdef(`TARGET_MANDRIVA',
 After=rc-local.service
 )m4_dnl
+m4_ifdef(`TARGET_MAGEIA',
+After=rc-local.service
+)m4_dnl
 Before=getty.target
 
 [Service]
index 14d8187269a80233630a6d31ef75d5720c2a177f..d2a145dacd433664885a6a4c210e0fa3d60b814e 100644 (file)
@@ -24,6 +24,9 @@ After=rc-local.service
 m4_ifdef(`TARGET_MANDRIVA',
 After=rc-local.service
 )m4_dnl
+m4_ifdef(`TARGET_MAGEIA',
+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/mageia/prefdm.service b/units/mageia/prefdm.service
new file mode 100644 (file)
index 0000000..4a896bf
--- /dev/null
@@ -0,0 +1,21 @@
+#  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=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
+
+[Service]
+ExecStart=/etc/X11/prefdm
+Type=forking
+Restart=always
+RestartSec=0
index 19b30d89f95f8714bfe7ea94d1fa9bab70b70f6a..7dd8a220b878088aef562066c897f680f9629a2f 100644 (file)
@@ -25,10 +25,13 @@ ExecStart=-/bin/bash -c "exec ${SINGLE}"',
 m4_ifdef(`TARGET_MANDRIVA',
 `EnvironmentFile=/etc/sysconfig/init
 ExecStart=-/bin/bash -c "exec ${SINGLE}"',
+m4_ifdef(`TARGET_MAGEIA',
+`EnvironmentFile=/etc/sysconfig/init
+ExecStart=-/bin/bash -c "exec ${SINGLE}"',
 m4_ifdef(`TARGET_MEEGO',
 `EnvironmentFile=/etc/sysconfig/init
 ExecStart=-/bin/bash -c "exec ${SINGLE}"',
-`ExecStart=-/sbin/sulogin')))
+`ExecStart=-/sbin/sulogin'))))
 ExecStopPost=-/bin/systemctl --fail --no-block default
 StandardInput=tty-force
 StandardOutput=inherit
index 082290cb8b185a8d8dc02ef4d3dc521743e0f4bb..e5f0ca6c6c0370a4b1a4e7203533e71d118495eb 100644 (file)
@@ -24,6 +24,9 @@ After=rc-local.service
 m4_ifdef(`TARGET_MANDRIVA',
 After=rc-local.service
 )m4_dnl
+m4_ifdef(`TARGET_MAGEIA',
+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