From 2cec23b1864be8c3b410f0adab937d0ef2fb7ad3 Mon Sep 17 00:00:00 2001 From: Christopher Clark Date: Fri, 4 Sep 2009 18:42:28 -0700 Subject: [PATCH] [host installer] preserve the install/upgrade log --- .../install/stages/Find-existing-install | 14 ++++++- .../install/stages/Preserve-install-data | 40 +++++++++++++++++-- .../install/stages/functions | 13 +++++- 3 files changed, 59 insertions(+), 8 deletions(-) diff --git a/target/generic/target_xenclient_installer_skeleton/install/stages/Find-existing-install b/target/generic/target_xenclient_installer_skeleton/install/stages/Find-existing-install index 6ef62fd..0c14e28 100755 --- a/target/generic/target_xenclient_installer_skeleton/install/stages/Find-existing-install +++ b/target/generic/target_xenclient_installer_skeleton/install/stages/Find-existing-install @@ -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 diff --git a/target/generic/target_xenclient_installer_skeleton/install/stages/Preserve-install-data b/target/generic/target_xenclient_installer_skeleton/install/stages/Preserve-install-data index c71f770..52378a3 100755 --- a/target/generic/target_xenclient_installer_skeleton/install/stages/Preserve-install-data +++ b/target/generic/target_xenclient_installer_skeleton/install/stages/Preserve-install-data @@ -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 diff --git a/target/generic/target_xenclient_installer_skeleton/install/stages/functions b/target/generic/target_xenclient_installer_skeleton/install/stages/functions index cf3bf22..f5b01d2 100644 --- a/target/generic/target_xenclient_installer_skeleton/install/stages/functions +++ b/target/generic/target_xenclient_installer_skeleton/install/stages/functions @@ -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" -- 2.39.5