[Pkg-libvirt-commits] [libguestfs] 20/116: customize: firstboot: make sure to run Linux scripts only once

Hilko Bengen bengen at moszumanska.debian.org
Wed Nov 26 22:04:52 UTC 2014


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to annotated tag debian/1%1.29.10-1
in repository libguestfs.

commit f8ed15462fbb03c5b19972361f2a2e6fed4c5f02
Author: Pino Toscano <ptoscano at redhat.com>
Date:   Mon Nov 3 21:15:59 2014 +0100

    customize: firstboot: make sure to run Linux scripts only once
    
    If a script does not finish, hangs, etc, it would be executed again at
    the next boot, since the injected firstboot.sh helper removes it only
    after it finished.
    
    Before executing a script, move it to another internal subdirectory
    (scripts-done) and execute it from there, so it is not run again by
    firstboot.sh.  The downside is that now scripts are executed only once
    at all, so if a script fails it will not be attempted at the next boot.
    
    Also, remove all the files found in scripts-done, as they have been run
    (or at least attempted) in a previous boot.
    
    This fixes RHBZ#1159651.
---
 customize/firstboot.ml | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/customize/firstboot.ml b/customize/firstboot.ml
index 67b9479..89821f3 100644
--- a/customize/firstboot.ml
+++ b/customize/firstboot.ml
@@ -47,6 +47,7 @@ module Linux = struct
 ### END INIT INFO
 
 d=%s/scripts
+d_done=%s/scripts-done
 logfile=~root/virt-sysprep-firstboot.log
 
 echo \"$0\" \"$@\" 2>&1 | tee $logfile
@@ -54,16 +55,20 @@ echo \"Scripts dir: $d\" 2>&1 | tee $logfile
 
 if test \"$1\" = \"start\"
 then
+  mkdir -p $d_done
   for f in $d/* ; do
     if test -x \"$f\"
     then
+      # move the script to the 'scripts-done' directory, so it is not
+      # executed again at the next boot
+      mv $f $d_done
       echo '=== Running' $f '===' 2>&1 | tee $logfile
-      $f 2>&1 | tee $logfile
-      rm -f $f
+      $d_done/$(basename $f) 2>&1 | tee $logfile
     fi
   done
+  rm -f $d_done/*
 fi
-" firstboot_dir
+" firstboot_dir firstboot_dir
 
   let firstboot_service = sprintf "\
 [Unit]

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git



More information about the Pkg-libvirt-commits mailing list