diff --git a/debian/changelog b/debian/changelog index 11ccd6ed..c1bb82f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +livecd-rootfs (2.441.4) UNRELEASED; urgency=medium + + * Resurrect Balint's fix from + lp:~rbalint/livecd-rootfs/livecd-rootfs-autopkgtest-fix to wrap kpartx + and trap spurious errors, since the problem is still being seen + intermittently on i386 despite us calling sync before kpartx. (LP: #1684090) + * Mark autopkgtests isolation-machine since debootstrap won't work in a + container. + + -- Steve Langasek Fri, 28 Apr 2017 17:41:05 -0700 + livecd-rootfs (2.441.3) zesty; urgency=medium * live-build/ubuntu-cpc/hooks/999-extras.binary: Exit on first failure. diff --git a/debian/tests/control b/debian/tests/control index a37a5d79..b40640f9 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -1,3 +1,3 @@ Tests: default-bootstraps Depends: @, lsb-release -Restrictions: needs-root +Restrictions: needs-root isolation-machine diff --git a/live-build/functions b/live-build/functions index 5abdeea1..c72c59a2 100644 --- a/live-build/functions +++ b/live-build/functions @@ -11,9 +11,22 @@ backing_img= apt-get -qqy install dosfstools gdisk clean_loops() { + local kpartx_ret + local kpartx_stdout if [ -n "${backing_img}" ]; then - kpartx -v -d "${backing_img}" + # sync before removing loop to avoid "Device or resource busy" errors + sync + kpartx_ret="" + kpartx_stdout=$(kpartx -v -d "${backing_img}") || kpartx_ret=$? + echo "$kpartx_stdout" + if [ -n "$kpartx_ret" ]; then + if echo "$kpartx_stdout" | grep -q "loop deleted: "; then + echo "Suppressing kpartx returning error (#860894)" + else + exit $kpartx_ret + fi + fi unset backing_img fi