package/skeleton-init-openrc: add support for starting sysv scripts
authorMichał Łyszczek <michal.lyszczek@bofc.pl>
Sun, 4 Aug 2019 12:14:15 +0000 (14:14 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Mon, 23 Sep 2019 20:29:28 +0000 (22:29 +0200)
Add an OpenRC service that starts and stops sysv-init scripts. We order
that script 'after local' so that it is started after all other native
openrc services.

Signed-off-by: Michał Łyszczek <michal.lyszczek@bofc.pl>
[yann.morin.1998@free.fr:
  - don't propagate the micro optimisation for running .sh scripts
  - use spaces, not TABs
  - stop services in reverse order
  - reword commit log
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
docs/manual/adding-packages-generic.txt
package/openrc/sysv-rcs [new file with mode: 0755]
package/pkg-generic.mk
package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs [new symlink]

index 5ac07a81b473502a74a83d904dba6c265577fd05..b402767b05b8893819d900f0f73ce869d3cc980b 100644 (file)
@@ -542,7 +542,10 @@ different steps of the build process.
   sysvinit, etc.), openrc or for the systemd units. These commands
   will be run only when the relevant init system is installed (i.e.
   if systemd is selected as the init system in the configuration,
-  only +LIBFOO_INSTALL_INIT_SYSTEMD+ will be run).
+  only +LIBFOO_INSTALL_INIT_SYSTEMD+ will be run). The only exception
+  is when openrc is chosen as init system and +LIBFOO_INSTALL_INIT_OPENRC+
+  has not been set, in such situation +LIBFOO_INSTALL_INIT_SYSV+ will
+  be called, since openrc supports sysv init scripts.
 
 * +LIBFOO_HELP_CMDS+ lists the actions to print the package help, which
   is included to the main +make help+ output. These commands can print
diff --git a/package/openrc/sysv-rcs b/package/openrc/sysv-rcs
new file mode 100755 (executable)
index 0000000..606a73d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/sbin/openrc-run
+
+description="start or stop sysv rc[S,K] scripts"
+
+depend() {
+    after local
+}
+
+start() {
+    einfo "Starting sysv rc scripts"
+    for i in /etc/init.d/S??*; do
+        # Ignore dangling symlinks (if any).
+        [ -e "$i" ] || continue
+        $i start
+    done
+}
+
+stop() {
+    einfo "Stopping sysv rc scripts"
+    for i in $(ls -r /etc/init.d/S??*); do
+        # Ignore dangling symlinks (if any).
+        [ -e "$i" ] || continue
+        $i stop
+    done
+}
index 9620dec52497e0fd730d41080f9ed600fa3653bd..1f24b52a6918cbffb664588ca18e541372ae2636 100644 (file)
@@ -338,7 +338,8 @@ $(BUILD_DIR)/%/.stamp_target_installed:
        $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\
                $($(PKG)_INSTALL_INIT_SYSV))
        $(if $(BR2_INIT_OPENRC), \
-               $($(PKG)_INSTALL_INIT_OPENRC))
+               $(or $($(PKG)_INSTALL_INIT_OPENRC), \
+                       $($(PKG)_INSTALL_INIT_SYSV)))
        $(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
        $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \
                $(RM) -f $(addprefix $(TARGET_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ; \
diff --git a/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs b/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs
new file mode 120000 (symlink)
index 0000000..ef5e008
--- /dev/null
@@ -0,0 +1 @@
+/etc/init.d/sysv-rcs
\ No newline at end of file