]> xenbits.xensource.com Git - xenclient/build.git/commitdiff
[host installer] preserve the install/upgrade log
authorChristopher Clark <christopher.clark@citrix.com>
Sat, 5 Sep 2009 01:42:28 +0000 (18:42 -0700)
committerChristopher Clark <christopher.clark@citrix.com>
Sat, 5 Sep 2009 01:42:28 +0000 (18:42 -0700)
target/generic/target_xenclient_installer_skeleton/install/stages/Find-existing-install
target/generic/target_xenclient_installer_skeleton/install/stages/Preserve-install-data
target/generic/target_xenclient_installer_skeleton/install/stages/functions

index 6ef62fda0fc2dfe8311f930e69c442ac9a5c0d2d..0c14e28564d4682b73076d0837cd25b9949750eb 100755 (executable)
@@ -9,6 +9,7 @@
 # mode: fresh | reinstall | upgrade | downgrade
 
 unset MODE
+rm -f "${INSTALL_MODE_CONF}"
 
 detect_prior_installation()
 {
@@ -21,10 +22,12 @@ if answerfile_specifies "mode" ; then
     case "${MODE}" in
 
     fresh)
+        echo "INSTALL_MODE='${MODE}'">"${INSTALL_MODE_CONF}"
         exit ${Install}
         ;;
 
     reinstall|upgrade|downgrade)
+        echo "INSTALL_MODE='${MODE}'">"${INSTALL_MODE_CONF}"
         exit ${Upgrade}
         ;;
     *)
@@ -43,10 +46,17 @@ else
         dialog --yes-label Upgrade --no-label Install --yesno "An existing installation has been detected.\n\nPlease choose whether to perform an upgrade\nor to erase and perform a fresh installation." 8 50
 
         OPT=$?
-        [ ${OPT} != 0 ]   || exit ${Upgrade}
-        [ ${OPT} != 1 ]   || exit ${Install}
+        if [ ${OPT} = 0 ] ; then
+            echo "INSTALL_MODE='upgrade'">"${INSTALL_MODE_CONF}"
+            exit ${Upgrade}
+        fi
+        if [ ${OPT} = 1 ] ; then
+            echo "INSTALL_MODE='fresh'">"${INSTALL_MODE_CONF}"
+            exit ${Install}
+        fi
         [ ${OPT} != 255 ] || exit ${Previous}
         exit ${Abort}
     fi
+    echo "INSTALL_MODE='fresh'">"${INSTALL_MODE_CONF}"
     exit ${Install}
 fi
index c71f770a3d3077541bd7c25932235b3cc3c0ecd6..52378a3de9df910f9db921c2427ddc450be02396 100755 (executable)
@@ -2,19 +2,51 @@
 
 . ${SCRIPT_DIR}/functions
 
+. "${INSTALL_MODE_CONF}"
+# ^^^ defines INSTALL_MODE
+
 MOUNT_DIR=$(mktemp -d)
 
 mount /dev/xenclient/config "${MOUNT_DIR}" || exit ${Abort}
 
-mkdir -p "$(dirname ${MOUNT_DIR}/${PRESERVED_INSTALL_DATA})" || exit ${Abort}
-rm -rf "${MOUNT_DIR}/${PRESERVED_INSTALL_DATA}" >/dev/null 2>/dev/null
-[ ! -e "${MOUNT_DIR}/${PRESERVED_INSTALL_DATA}" ] || exit ${Abort}
+unwind_abort()
+{
+    umount "${MOUNT_DIR}"
+    sync
+    rmdir "${MOUNT_DIR}"
+    exit ${Abort}
+}
+
+# The install and upgrade cases preserve data to different locations:
+case "${INSTALL_MODE}" in
+    fresh)
+        DATA_DIR="${MOUNT_DIR}/${PRESERVED_INSTALL_DATA}"
+         LOG_DIR="${MOUNT_DIR}/${PRESERVED_INSTALL_LOG_DIR}"
+    ;;
+    reinstall|upgrade|downgrade)
+        DATA_DIR="${MOUNT_DIR}/${PRESERVED_UPGRADE_DATA}"
+         LOG_DIR="${MOUNT_DIR}/${PRESERVED_UPGRADE_LOG_DIR}"
+    ;;
+    *)
+        echo "Unknown install type: aborting.">&2
+        unwind_abort
+    ;;
+esac
+
+for PLACE in "${DATA_DIR}" "${LOG_DIR}" ; do
+    mkdir -p "$(dirname ${PLACE)" || unwind_abort
+    rm -rf "${PLACE}" >/dev/null 2>/dev/null
+    [ ! -e "${PLACE}" ] || unwind_abort
+done
 
 # Write the success indicator here, so that it persists on the target
 # filesystem.
 echo "INSTALL='Success'" >"${INSTALL_STATUS_CONF}"
 
-cp -a "${INSTALL_DATA}" "${MOUNT_DIR}/${PRESERVED_INSTALL_DATA}" || exit ${Abort}
+cp -a "${INSTALL_DATA}" "${DATA_DIR}/" || unwind_abort
+
+# Preserve the installation/upgrade log:
+cp -a "${INSTALLER_LOG}" "${LOG_DIR}/" || unwind_abort
 
 umount "${MOUNT_DIR}"
 sync
index cf3bf220e26aa8b272d892b4795a892d7e093b8d..f5b01d22a4b75d74f59e3a82e9b4632950681024 100644 (file)
@@ -2,8 +2,6 @@
 
 # Directory to write configuration data in the installer environment:
 INSTALL_DATA="/install/data"
-# Directory to archive install data to in the target system filesystem:
-PRESERVED_INSTALL_DATA="/install/data"
 
 #-----------------------------------------------------------
 # Define the set of config files written by the install sequence.
@@ -22,15 +20,26 @@ BACKEND_CONF="${INSTALL_DATA}/backend.conf"
 INSTALL_STATUS_CONF="${INSTALL_DATA}/install-status.conf"
 OPTICAL_CONF="${INSTALL_DATA}/optical.conf"
 NETWORK_REPO_CONF="${INSTALL_DATA}/network-repo.conf"
+INSTALL_MODE_CONF="${INSTALL_DATA}/install-mode.conf"
 
 ALL_CONFIGS="${FULL_ANSWERFILE} ${ANSWERFILE} ${AUTOMATED_CONF} ${DISK_CONF}"
 ALL_CONFIGS="${ALL_CONFIGS} ${HOST_CAPABILITY_CONF} ${NETWORK_NIC_CONF}"
 ALL_CONFIGS="${ALL_CONFIGS} ${PASSWORD_CONF} ${LICENSE_KEY_CONF} ${BACKEND_CONF}"
 ALL_CONFIGS="${ALL_CONFIGS} ${INSTALL_STATUS_CONF} ${OPTICAL_CONF} ${NETWORK_REPO_CONF}"
+ALL_CONFIGS="${ALL_CONFIGS} ${INSTALL_MODE_CONF}"
 
 #-----------------------------------------------------------
 # Filesystem paths
 
+# Directory to archive install data to in the target system filesystem:
+PRESERVED_INSTALL_DATA="/install/data"
+PRESERVED_UPGRADE_DATA="/install/upgrade/data"
+# Log file
+INSTALLER_LOG="/var/log/installer"
+# Directory to archive install log to in the target system filesystem:
+PRESERVED_INSTALL_LOG_DIR="/install/log"
+PRESERVED_UPGRADE_LOG_DIR="/install/upgrade/log"
+
 LICENSE_FILE="/install/license"
 
 DEFAULT_OPTICAL_DEVICE="sr0"