diff options
Diffstat (limited to 'community/efs-utils/efs-utils_openrc.patch')
-rw-r--r-- | community/efs-utils/efs-utils_openrc.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/community/efs-utils/efs-utils_openrc.patch b/community/efs-utils/efs-utils_openrc.patch new file mode 100644 index 00000000000..7dd135e4c6a --- /dev/null +++ b/community/efs-utils/efs-utils_openrc.patch @@ -0,0 +1,41 @@ +diff --git a/src/mount_efs/__init__.py b/src/mount_efs/__init__.py +index c6a8850..a85a7bf 100755 +--- a/src/mount_efs/__init__.py ++++ b/src/mount_efs/__init__.py +@@ -1294,6 +1294,11 @@ def get_init_system(comm_file="/proc/1/comm"): + init_system = f.read().strip() + except IOError: + logging.warning("Unable to read %s", comm_file) ++ ++ # OpenRC init system manages services a little differently ++ if init_system == "init" and os.path.isfile("/sbin/openrc"): ++ init_system = "openrc-init" ++ logging.debug("Detected OpenRC init system") + else: + init_system = "launchd" + +@@ -1353,6 +1358,24 @@ def start_watchdog(init_system): + elif "start" in str(status): + logging.debug("%s is already running", WATCHDOG_SERVICE) + ++ elif init_system == "openrc-init": ++ proc = subprocess.Popen( ++ ["/sbin/service", WATCHDOG_SERVICE, "status"], ++ stdout=subprocess.PIPE, ++ stderr=subprocess.PIPE, ++ close_fds=True, ++ ) ++ status, _ = proc.communicate() ++ if "stopped" in str(status): ++ subprocess.Popen( ++ ["/sbin/service", WATCHDOG_SERVICE, "start"], ++ stdout=subprocess.DEVNULL, ++ stderr=subprocess.DEVNULL, ++ close_fds=True, ++ ) ++ elif "started" in str(status): ++ logging.debug("%s is already running", WATCHDOG_SERVICE) ++ + elif init_system == "systemd": + rc = subprocess.call( + ["systemctl", "is-active", "--quiet", WATCHDOG_SERVICE], close_fds=True |