kernel-install: allow plugins to terminate the procedure (#4174)

Replaces #4103.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-09-24 09:03:54 -04:00 committed by GitHub
parent 2541b135bf
commit eb93312810
2 changed files with 16 additions and 3 deletions

View File

@ -72,9 +72,12 @@
in <filename>/usr/lib/kernel/install.d/</filename>. This can be used to override a system-supplied
executables with a local file if needed; a symbolic link in <filename>/etc/kernel/install.d/</filename>
with the same name as an executable in <filename>/usr/lib/kernel/install.d/</filename>,
pointing to /dev/null, disables the executable entirely. Executables must have the
pointing to <filename>/dev/null</filename>, disables the executable entirely. Executables must have the
extension <literal>.install</literal>; other extensions are ignored.</para>
<para>An executable should return <constant>0</constant> on success. It may also
return <constant>77</constant> to cause the whole operation to terminate
(executables later in lexical order will be skipped).</para>
</refsect1>
<refsect1>

View File

@ -19,6 +19,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.
SKIP_REMAINING=77
usage()
{
echo "Usage:"
@ -123,7 +125,11 @@ case $COMMAND in
for f in "${PLUGINS[@]}"; do
if [[ -x $f ]]; then
"$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" "$KERNEL_IMAGE"
((ret+=$?))
x=$?
if [[ $x == $SKIP_REMAINING ]]; then
return 0
fi
((ret+=$x))
fi
done
;;
@ -132,7 +138,11 @@ case $COMMAND in
for f in "${PLUGINS[@]}"; do
if [[ -x $f ]]; then
"$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS"
((ret+=$?))
x=$?
if [[ $x == $SKIP_REMAINING ]]; then
return 0
fi
((ret+=$x))
fi
done