sys: make debconf-get-selections detection on VServers really more robust
authorintrigeri <intrigeri@boum.org>
Wed, 25 Jun 2008 09:21:11 +0000 (09:21 +0000)
committerintrigeri <intrigeri@boum.org>
Wed, 25 Jun 2008 09:21:11 +0000 (09:21 +0000)
handlers/sys.in

index 24ebbe11512a72041d30a94844d4b89b9c1db62b..83ed7b571e0dd7409d1bcf9f4bdc7181683157e9 100755 (executable)
@@ -116,7 +116,7 @@ if [ "$packages" == "yes" ]; then
             continue
          fi
          # is $packagemgr available inside $vserver ?
-         if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $packagemgr`" ]; then
+         if [ ! -x "${VROOTDIR}/${vserver}${packagemgr}" ]; then
             warning "can't find $packagemgr in vserver $vserver, skipping installed packages report."
          else
             # don't expand * since it can be used in $packagemgroptions
@@ -126,12 +126,21 @@ if [ "$packages" == "yes" ]; then
             set +o noglob
          fi
          # is $debconfgetselections available inside $vserver ?
-         if [ -z "`$VSERVER $vserver exec which debconf-get-selections`" ]; then
+         found=no
+         # case #1: it is available on the host, is it available inside $vserver ?
+         if [ -n "$debconfgetselections" ]; then
+            [ -x "${VROOTDIR}/${vserver}${debconfgetselections}" ] && found=yes
+         # case #2: it is not available on the host, is it available inside $vserver ?
+         else
+            [ -n "`$VSERVER $vserver exec which debconf-get-selections`" ] && found=yes
+         fi
+         if [ "$found" != yes ]; then
             warning "can't find debconf-get-selections in vserver $vserver, skipping package selection states."
          else
             debug "$VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile"
             $VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile || fatal "can not save debconf-get-selections info to $selectionsfile"
          fi
+         unset found
       done
    fi