Skip to content

Commit

Permalink
don't make sysv init scripts dependant on distribution specifics
Browse files Browse the repository at this point in the history
- /etc(/rc.d)?/init.d/functions does not exist on all distributions
- LSB does not define a message function without an explicit status
- Debian-derived systems add a log_daemon_msg for that

lets define an own log_daemon_msg as echo and try to load LSB init
functions afterwards, which might overload it with a nicer version

that way the init scripts should work on any system, without hard
dependencies on neither LSB nor /etc/init.d/functions

Closes #309 #310 #311

Signed-off-by: Evgeni Golov <evgeni@debian.org>
  • Loading branch information
evgeni committed Apr 15, 2016
1 parent 8514523 commit 3083782
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 32 deletions.
28 changes: 12 additions & 16 deletions config/init/sysvinit/lxc-containers.in
Expand Up @@ -17,30 +17,26 @@
# Description: Bring up/down LXC autostart containers
### END INIT INFO

sysconfdir="@SYSCONFDIR@"

# Source function library.
test ! -r "$sysconfdir"/rc.d/init.d/functions ||
. "$sysconfdir"/rc.d/init.d/functions
# To be replaced by LSB functions, if they can be found
# Defined here for distributions that don't have log_daemon_msg
log_daemon_msg () {
echo $@
}

# provide action() fallback
if ! type action >/dev/null 2>&1; then
# Real basic fallback for sysvinit "action" verbage.
action() {
echo -n "$1 "
shift
"$@" && echo "OK" || echo "Failed"
}
fi
# Try to source LSB init functions to define LSB log_* functions.
test ! -r /lib/lsb/init-functions ||
. /lib/lsb/init-functions

start() {
# Setup host /dev for autodev containers.
@LIBEXECDIR@/lxc/lxc-devsetup
action $"Starting LXC autoboot containers: " @LIBEXECDIR@/lxc/lxc-containers start
log_daemon_msg "Starting LXC autoboot containers: "
@LIBEXECDIR@/lxc/lxc-containers start
}

stop() {
action $"Stopping LXC containers: " @LIBEXECDIR@/lxc/lxc-containers stop
log_daemon_msg "Stopping LXC containers: "
@LIBEXECDIR@/lxc/lxc-containers stop
}

# See how we were called.
Expand Down
28 changes: 12 additions & 16 deletions config/init/sysvinit/lxc-net.in
Expand Up @@ -17,28 +17,24 @@
# Description: Bring up/down LXC Network Bridge
### END INIT INFO

sysconfdir="@SYSCONFDIR@"

# Source function library.
test ! -r "$sysconfdir"/rc.d/init.d/functions ||
. "$sysconfdir"/rc.d/init.d/functions
# To be replaced by LSB functions, if they can be found
# Defined here for distributions that don't have log_daemon_msg
log_daemon_msg () {
echo $@
}

# provide action() fallback
if ! type action >/dev/null 2>&1; then
# Real basic fallback for sysvinit "action" verbage.
action() {
echo -n "$1 "
shift
"$@" && echo "OK" || echo "Failed"
}
fi
# Try to source LSB init functions to define LSB log_* functions.
test ! -r /lib/lsb/init-functions ||
. /lib/lsb/init-functions

start() {
action $"Starting LXC network bridge: " @LIBEXECDIR@/lxc/lxc-net start
log_daemon_msg "Starting LXC network bridge: "
@LIBEXECDIR@/lxc/lxc-net start
}

stop() {
action $"Stopping LXC network bridge: " @LIBEXECDIR@/lxc/lxc-net stop
log_daemon_msg "Stopping LXC network bridge: "
@LIBEXECDIR@/lxc/lxc-net stop
}

# See how we were called.
Expand Down

0 comments on commit 3083782

Please sign in to comment.