blob: 0ab27f646d675d16737960abb1b726146b720247 [file] [log] [blame]
# QA checks for OpenRC init.d files.
openrc_check() {
# Sanity check syntax errors in init.d scripts
local d i
for d in /etc/conf.d /etc/init.d ; do
[[ -d ${ED}/${d} ]] || continue
for i in "${ED}"/${d}/* ; do
[[ -L ${i} ]] && continue
# if empty conf.d/init.d dir exists (baselayout), then i will be "/etc/conf.d/*" and not exist
[[ ! -e ${i} ]] && continue
if [[ ${d} == /etc/init.d && ${i} != *.sh ]] ; then
# skip non-shell-script for bug #451386
[[ $(head -n1 "${i}") =~ ^#!.*[[:space:]/](openrc-run|runscript|sh)$ ]] || continue
if [[ $(head -n1 "${i}") == '#!/sbin/runscript' ]] ; then
eqawarn "QA Notice: #!/sbin/runscript is deprecated, use #!/sbin/openrc-run instead:"
while read -r ;
do eqawarn " ${REPLY}"
done <<< "${i//${ED}}"
fi
fi
bash -n "${i}" || die "The init.d file has syntax errors: ${i}"
done
done
local checkbashisms=$(type -P checkbashisms)
if [[ -n ${checkbashisms} ]] ; then
for d in /etc/init.d ; do
[[ -d ${ED}${d} ]] || continue
for i in "${ED}${d}"/* ; do
[[ -e ${i} ]] || continue
[[ -L ${i} ]] && continue
f=$("${checkbashisms}" -n -f "${i}" 2>&1)
[[ $? != 0 && -n ${f} ]] || continue
eqawarn "QA Notice: shell script appears to use non-POSIX feature(s):"
while read -r ;
do eqawarn " ${REPLY}"
done <<< "${f//${ED}}"
done
done
fi
}
openrc_check
: # guarantee successful exit
# vim:ft=sh