diff options
Diffstat (limited to 'lib/Iurt')
-rw-r--r-- | lib/Iurt/Chroot.pm | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/lib/Iurt/Chroot.pm b/lib/Iurt/Chroot.pm index 5553439..329c02f 100644 --- a/lib/Iurt/Chroot.pm +++ b/lib/Iurt/Chroot.pm @@ -429,12 +429,6 @@ sub create_chroot { if (!-f $chroot_tar) { plog("rebuild chroot tarball"); $rebuild = 1; - if (!build_chroot($run, $config, $tmp_chroot, $chroot_tar, $opt)) { - plog('NOTIFY', "creating chroot failed."); - $clean->(); - sudo($run, $config, '--rm', '-r', $chroot, $chroot_tar); - return; - } } else { link $chroot_tar, $tmp_tar or die "FATAL: could not initialize chroot ($!)\n"; @@ -451,14 +445,7 @@ sub create_chroot { if (@removed_pkgs) { plog('DEBUG', "changed packages: @removed_pkgs"); plog('NOTIFY', "Rebuilding chroot tarball"); - $rebuild = 1; - sudo($run, $config, '--rm', '-r', $tmp_chroot); - if (!build_chroot($run, $config, $tmp_chroot, $chroot_tar, $opt)) { - plog('NOTIFY', "creating chroot failed."); - $clean->(); - return; - } } else { plog('NOTIFY', "chroot tarball is already up-to-date"); link $tmp_tar, $chroot_tar; @@ -466,15 +453,19 @@ sub create_chroot { } else { plog('DEBUG', "can't open $tmp_chroot/var/log/qa"); plog('ERR', "can't check chroot, recreating"); - - if (!build_chroot($run, $config, $tmp_chroot, $chroot_tar, $opt)) { - plog('NOTIFY', "creating chroot failed."); - $clean->(); - return; - } + $rebuild = 1; } } + if ($rebuild) { + if (!build_chroot($run, $config, $tmp_chroot, $chroot_tar, $opt)) { + plog('NOTIFY', "creating chroot failed."); + $clean->(); + sudo($run, $config, '--rm', '-r', $chroot, $chroot_tar); + return; + } + } + if (!-d $chroot || $rebuild) { plog('DEBUG', "recreate chroot $chroot"); plog('NOTIFY', "recreate chroot"); |