[Buildroot] [PATCH 13/13] package/skeleton-init-openrc: add support for starting sysv scripts
Michał Łyszczek
michal.lyszczek at bofc.pl
Wed May 8 22:09:37 UTC 2019
* package/skeleton-init-openrc/skeleton/etc/init.d/sysv-rcs
This openrc script implements rcS and rcK equivalent which will
start or stop any script from /etc/init.d/S??*
* package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs
symlink to /etc/init.d/sysv-rcs to start service at startup
* package/pkg-generic.mk
When openrc is enabled, evaluate $(PKG)_INSTALL_INIT_OPENRC, but
if install steps for openrc are not avilable, then evaluate
$(PKG)_INSTALL_INIT_SYSV))
Signed-off-by: Michał Łyszczek <michal.lyszczek at bofc.pl>
---
package/pkg-generic.mk | 4 +-
.../skeleton/etc/init.d/sysv-rcs | 53 +++++++++++++++++++
.../skeleton/etc/runlevels/default/sysv-rcs | 1 +
3 files changed, 57 insertions(+), 1 deletion(-)
create mode 100755 package/skeleton-init-openrc/skeleton/etc/init.d/sysv-rcs
create mode 120000 package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 6d63c46a5b..dc335973c7 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -338,7 +338,9 @@ $(BUILD_DIR)/%/.stamp_target_installed:
$(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\
$($(PKG)_INSTALL_INIT_SYSV))
$(if $(BR2_INIT_OPENRC), \
- $($(PKG)_INSTALL_INIT_OPENRC))
+ $(if $($(PKG)_INSTALL_INIT_OPENRC), \
+ $($(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/init.d/sysv-rcs b/package/skeleton-init-openrc/skeleton/etc/init.d/sysv-rcs
new file mode 100755
index 0000000000..9cbfe354d1
--- /dev/null
+++ b/package/skeleton-init-openrc/skeleton/etc/init.d/sysv-rcs
@@ -0,0 +1,53 @@
+#!/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).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set start
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i start
+ ;;
+ esac
+ done
+}
+
+stop() {
+ einfo "Stopping sysv rc scripts"
+ for i in /etc/init.d/S??* ; do
+ # Ignore dangling symlinks (if any).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set stop
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i stop
+ ;;
+ esac
+ done
+}
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
index 0000000000..ef5e00823c
--- /dev/null
+++ b/package/skeleton-init-openrc/skeleton/etc/runlevels/default/sysv-rcs
@@ -0,0 +1 @@
+/etc/init.d/sysv-rcs
\ No newline at end of file
--
2.18.1
More information about the buildroot
mailing list