Option for using systemd-nspawn instead of chroot for hooks.

Installation of flatpaks doesn't work with normal chroots.
This patch enables support for using systemd-nspawn in hooks.

Gbp-Dch: Short
Closes: #965953
This commit is contained in:
Thore Sommer 2020-10-12 18:26:16 +00:00 committed by Luca Boccassi
parent 59380dddf0
commit 7b19209aae
2 changed files with 22 additions and 3 deletions

1
debian/control vendored
View File

@ -27,6 +27,7 @@ Recommends:
live-boot-doc,
live-config-doc,
live-manual-html | live-manual,
systemd-container,
wget,
xz-utils,
Suggests:

View File

@ -72,12 +72,20 @@ rmdir chroot/root/lb_chroot_hooks
rmdir --ignore-fail-on-non-empty chroot/root
## Processing local hooks
if ls config/hooks/normal/*.chroot config/hooks/live/*.chroot > /dev/null 2>&1
if ls config/hooks/normal/*.chroot > /dev/null 2>&1 && (
ls config/hooks/live/*.chroot > /dev/null 2>&1 ||
ls config/hooks/live/*.container > /dev/null 2>&1 )
then
# If a systemd-nspawn hook exists check if package is installed
if ls config/hooks/live/*.container > /dev/null 2>&1
then
Check_package host /usr/bin/systemd-nspawn systemd-container
fi
# Restoring cache
Restore_package_cache chroot
for HOOK in config/hooks/normal/*.chroot config/hooks/live/*.chroot
for HOOK in config/hooks/normal/*.chroot config/hooks/live/*.chroot config/hooks/live/*.container
do
if [ ! -e "${HOOK}" ]
then
@ -94,7 +102,17 @@ then
fi
# Executing hook
Chroot chroot "/root/$(basename ${HOOK})" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
Echo_message "Executing hook ${HOOK}..."
case "${HOOK}" in
*.container)
umount chroot/proc
systemd-nspawn --capability=all -D chroot "/root/$(basename ${HOOK})" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
mount proc-live -t proc chroot/proc
;;
*)
Chroot chroot "/root/$(basename ${HOOK})" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
;;
esac
# Removing hook
rm -f chroot/root/"$(basename ${HOOK})"