Updated sysd2v script in contrib directory to version 0.3,

to match latest upstream.
This commit is contained in:
Jesse Smith 2019-11-27 13:26:38 -04:00
parent 3accc5e30c
commit e48bfdc5dc

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
# sysd2v v0.2 -- systemd unit to sysvinit script converter # sysd2v v0.3 -- systemd unit to sysvinit script converter
# Copyright (C) 2019 Trek http://www.trek.eu.org/devel/sysd2v # Copyright (C) 2019 Trek http://www.trek.eu.org/devel/sysd2v
# distributed under the terms of the GNU General Public License 3 # distributed under the terms of the GNU General Public License 3
@ -57,8 +57,7 @@ read_unit()
tr '[:upper:]' '[:lower:]' tr '[:upper:]' '[:lower:]'
) )
eval ini_$var=\$val eval ini_$var=\$val
# FIXME: only to debug [ -n "$debug" ] && echo "ini_$var=$val" >&2
echo "ini_$var=$val" >&2
done done
done done
@ -95,7 +94,7 @@ get_provides ()
# read systemd units list and write LSB facilities to stdout # read systemd units list and write LSB facilities to stdout
# usage: get_depends dependencies [ignores] # usage: get_depends dependencies [ignores]
# dependencies list of required units # dependencies list of required units
# ignores units to ignore # ignores facilities to ignore
get_depends () get_depends ()
{ {
lst= lst=
@ -159,7 +158,40 @@ write_env ()
done done
IFS=$oldifs IFS=$oldifs
[ -n "$env" ] && echo }
# write an environment variable containing paths
# usage: write_path name prefix list
# name name of the environment variable
# prefix path prefix to append directories
# list paths separated by spaces or newlines
write_path ()
{
lst=
for dir in $3
do
lst=${lst:+$lst:}$2/$dir
done
[ -z "$3" ] || printf '%s=%s\n' $1 $lst
}
# write a list of directories to be created
# usage: write_install prefix list [user [group [mode]]]
# prefix path prefix to append directories
# list paths separated by spaces or newlines
# user user ownership
# group group ownership
# mode permission mode
write_install ()
{
for dir in $2
do
printf ' install -d %s%s/%s || return 2\n' \
"${3:+-o $3 }${4:+-g $4 }${5:+-m $5 }" "$1" "$dir"
done
} }
@ -287,7 +319,7 @@ write_init ()
start_args="$start_args --background" start_args="$start_args --background"
[ -z "$pidfile" -a "$ini_service_killmode" != none ] && [ -z "$pidfile" -a "$ini_service_killmode" != none ] &&
start_args="$start_args --make-pidfile" && start_args="$start_args --make-pidfile" &&
pidfile="/run/$name-sysd2v.pid" pidfile="/var/run/$name-sysd2v.pid"
fi fi
if [ "$service_type" = notify ] if [ "$service_type" = notify ]
@ -313,6 +345,15 @@ write_init ()
limitnofile=$ini_service_limitnofile limitnofile=$ini_service_limitnofile
[ "$limitnofile" = infinity ] && limitnofile=unlimited [ "$limitnofile" = infinity ] && limitnofile=unlimited
need_install=$ini_service_runtimedirectory
need_install=$need_install$ini_service_statedirectory
need_install=$need_install$ini_service_cachedirectory
need_install=$need_install$ini_service_logsdirectory
need_install=$need_install$ini_service_configurationdirectory
need_do_start=$ini_service_execstartpre$ini_service_execstartpost
need_do_start=$need_do_start$need_install
execstop=$ini_service_execstop execstop=$ini_service_execstop
if [ "$service_type" != oneshot ] if [ "$service_type" != oneshot ]
@ -332,8 +373,7 @@ write_init ()
fi fi
# TODO: test if already running before start (pretest="+do_status_cmd") # TODO: test if already running before start (pretest="+do_status_cmd")
[ -n "$ini_service_execstartpre$ini_service_execstartpost" -o \ [ -n "$need_do_start" -o -z "$errcheck" ] &&
-z "$errcheck" ] &&
execstart="-+do_start_cmd$errcheck" execstart="-+do_start_cmd$errcheck"
errcheck=' || return $?' errcheck=' || return $?'
@ -353,6 +393,7 @@ write_init ()
runstart=$run runstart=$run
fi fi
need_do_start=$need_do_start$execstart
start_args=${start_args# } start_args=${start_args# }
stop_args=${stop_args# } stop_args=${stop_args# }
@ -377,7 +418,7 @@ write_init ()
cat <<EOF cat <<EOF
#!/bin/sh #!/bin/sh
# Generated by sysd2v v0.2 -- http://www.trek.eu.org/devel/sysd2v # Generated by sysd2v v0.3 -- http://www.trek.eu.org/devel/sysd2v
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing. # kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "\$INIT_D_SCRIPT_SOURCED" ] ; then if [ true != "\$INIT_D_SCRIPT_SOURCED" ] ; then
set "\$0" "\$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script set "\$0" "\$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
@ -396,7 +437,19 @@ ${default_stop:+# X-Stop-After: $start_before
### END INIT INFO ### END INIT INFO
EOF EOF
write_env "$ini_service_environmentfile" if [ -n "$ini_service_environment$ini_service_environmentfile$need_install" ]
then
echo set -a
write_path RUNTIME_DIRECTORY /run "$ini_service_runtimedirectory"
write_path STATE_DIRECTORY /var/lib "$ini_service_statedirectory"
write_path CACHE_DIRECTORY /var/cache "$ini_service_cachedirectory"
write_path LOGS_DIRECTORY /var/log "$ini_service_logsdirectory"
write_path CONFIGURATION_DIRECTORY /etc \
"$ini_service_configurationdirectory"
printf '%s' "${ini_service_environment:+$ini_service_environment$nl}"
write_env "$ini_service_environmentfile"
printf 'set +a\n\n'
fi
cat <<EOF cat <<EOF
${name:+DESC=\"$name\" ${name:+DESC=\"$name\"
@ -410,9 +463,23 @@ ${daemon_args:+DAEMON_ARGS=\"$daemon_args\"
} }
EOF EOF
if [ -n "$ini_service_execstartpre$execstart$ini_service_execstartpost" ] if [ -n "$need_do_start" ]
then then
{ {
write_install /run "$ini_service_runtimedirectory" \
"$ini_service_user" "$ini_service_group" \
"$ini_service_runtimedirectorymode"
write_install /var/lib "$ini_service_statedirectory" \
"$ini_service_user" "$ini_service_group" \
"$ini_service_statedirectorymode"
write_install /var/cache "$ini_service_cachedirectory" \
"$ini_service_user" "$ini_service_group" \
"$ini_service_cachedirectorymode"
write_install /var/log "$ini_service_logsdirectory" \
"$ini_service_user" "$ini_service_group" \
"$ini_service_logsdirectorymode"
write_install /etc "$ini_service_configurationdirectory" '' '' \
"$ini_service_configurationdirectorymode"
write_commands "$chdir" write_commands "$chdir"
write_commands "$ini_service_execstartpre" "$run" "$runpriv" write_commands "$ini_service_execstartpre" "$run" "$runpriv"
write_commands "$execstart" "$runstart" "$runprivstart" write_commands "$execstart" "$runstart" "$runprivstart"
@ -462,12 +529,14 @@ EOF
# parse command line # parse command line
while getopts i:n: opt while getopts di:n: opt
do do
case $opt in case $opt in
d) debug=1;;
i) instance=$OPTARG;; i) instance=$OPTARG;;
n) name=$OPTARG;; n) name=$OPTARG;;
?) printf "Usage: %s [-i instance] [-n servicename] [filename]\n" "$0" ?) printf "Usage: %s [-d] [-i instance] [-n servicename] [filename]\n" \
"$0"
exit 2;; exit 2;;
esac esac
done done