From 4652f64a4d52f9f8227c3d338b4bbef32b41f62b Mon Sep 17 00:00:00 2001 From: James Nylen Date: Wed, 24 Oct 2012 15:16:23 +0000 Subject: [PATCH] Further improve progress messages --- rpi-update | 101 +++++++++++++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 46 deletions(-) diff --git a/rpi-update b/rpi-update index 30e9482..f7aa752 100755 --- a/rpi-update +++ b/rpi-update @@ -10,7 +10,7 @@ UPDATE_URI="https://github.com/Hexxeh/rpi-update/raw/master/rpi-update" if [[ ${BOOT_PATH:-"unset"} == "unset" && ${ROOT_PATH:-"unset"} != "unset" ]] || [[ ${BOOT_PATH:-"unset"} != "unset" && ${ROOT_PATH:-"unset"} == "unset" ]]; then - echo "You need to specify both ROOT_PATH and BOOT_PATH, or neither" + echo " *** You need to specify both ROOT_PATH and BOOT_PATH, or neither" exit 1 fi @@ -25,18 +25,18 @@ FW_REV=${1:-""} GITCMD="git --git-dir=\"${FW_REPOLOCAL}/.git\" --work-tree=\"${FW_REPOLOCAL}\"" function update_self() { - echo "Performing self-update" + echo " *** Performing self-update" _tempFileName="$0.tmp" if ! wget --output-document="${_tempFileName}" "${UPDATE_URI}"; then - echo "Failed to download update for rpi-update!" - echo "Make sure you have ca-certificates installed and that the time is set correctly" + echo " !!! Failed to download update for rpi-update!" + echo " !!! Make sure you have ca-certificates installed and that the time is set correctly" exit 1 fi OCTAL_MODE=$(stat -c '%a' "$0") if ! chmod ${OCTAL_MODE} "${_tempFileName}" ; then - echo "Failed: Error while trying to set mode on ${_tempFileName}" + echo " !!! Failed: Error while trying to set mode on ${_tempFileName}" exit 1 fi @@ -46,36 +46,43 @@ function update_self() { rm -- "\$0" exec env UPDATE_SELF=0 /bin/bash "$0" "${FW_REV}" else - echo "Failed!" + echo " !!! Failed!" fi EOF + echo " *** Relaunching after update" exec /bin/bash /tmp/updateScript.sh } function update_modules { if [[ ${SKIP_KERNEL} -eq 0 ]]; then - cp -R "${FW_REPOLOCAL}/modules/"* "${FW_MODPATH}/" + echo " *** Updating modules" + cp -vR "${FW_REPOLOCAL}/modules/"* "${FW_MODPATH}/" find "${FW_REPOLOCAL}/modules" -mindepth 1 -maxdepth 1 -type d | while read DIR; do + echo " *** depmod $(basename "${DIR}")" depmod -b "${ROOT_PATH}" -a $(basename "${DIR}") done + else + echo " *** As requested, not updating modules" fi } function update_sdk { + echo " *** Updating SDK" + if [[ -f /etc/init.d/vcfiled ]]; then /etc/init.d/vcfiled stop fi ELFOUTPUT=$(readelf -a "${ROOT_PATH}/bin/bash") if [ "${ELFOUTPUT}" != "${ELFOUTPUT/VFP_args/}" ]; then - echo "Using HardFP libraries" - cp -R "${FW_REPOLOCAL}/vc/hardfp/"* "${ROOT_PATH}/" + echo " *** Using HardFP libraries" + cp -vR "${FW_REPOLOCAL}/vc/hardfp/"* "${ROOT_PATH}/" else - echo "Using SoftFP libraries" - cp -R "${FW_REPOLOCAL}/vc/softfp/"* "${ROOT_PATH}/" + echo " *** Using SoftFP libraries" + cp -vR "${FW_REPOLOCAL}/vc/softfp/"* "${ROOT_PATH}/" fi - cp -R "${FW_REPOLOCAL}/vc/sdk/"* "${ROOT_PATH}/" + cp -vR "${FW_REPOLOCAL}/vc/sdk/"* "${ROOT_PATH}/" if [[ -f /etc/init.d/vcfiled ]]; then /etc/init.d/vcfiled start @@ -83,44 +90,49 @@ function update_sdk { } function update_firmware { + echo " *** Updating firmware" rm -rf ${FW_PATH}/*.elf rm -rf ${FW_PATH}/*.bin - cp ${FW_REPOLOCAL}/*.elf "${FW_PATH}/" - cp ${FW_REPOLOCAL}/*.bin "${FW_PATH}/" - cp ${FW_REPOLOCAL}/*.dat "${FW_PATH}/" + cp -v ${FW_REPOLOCAL}/*.elf "${FW_PATH}/" + cp -v ${FW_REPOLOCAL}/*.bin "${FW_PATH}/" + cp -v ${FW_REPOLOCAL}/*.dat "${FW_PATH}/" if [[ ${SKIP_KERNEL} -eq 0 ]]; then - cp "${FW_REPOLOCAL}/"*.img "${FW_PATH}/" + cp -v "${FW_REPOLOCAL}/"*.img "${FW_PATH}/" else - echo "Skipping kernel/modules updated as requested" + echo " *** As requested, not updating kernel" fi } function finalise { if [[ -f "${FW_PATH}/arm192_start.elf" ]]; then - cp "${FW_PATH}/arm192_start.elf" "${FW_PATH}/start.elf" + echo " *** Setting 192M ARM split" + cp -v "${FW_PATH}/arm192_start.elf" "${FW_PATH}/start.elf" fi + echo " *** Running ldconfig" ldconfig -r "${ROOT_PATH}" + echo " *** Storing current firmware revision" eval ${GITCMD} rev-parse master > "${FW_PATH}/.firmware_revision" + echo " *** Syncing changes to disk" sync } function download_repo { - echo "Setting up firmware (this will take a few minutes)" + echo " *** Setting up firmware (this may take a few minutes)" mkdir -p "${FW_REPOLOCAL}" git clone "${FW_REPO}" "${FW_REPOLOCAL}" --depth=1 RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then - echo "Failed to download new firmware files" + echo " !!! Failed to download new firmware files" exit 1 fi } function update_repo { - echo "Updating firmware (this will take a few minutes)" + echo " *** Updating firmware (this may take a few minutes)" eval ${GITCMD} fetch RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then - echo "Failed to download updated firmware files" + echo " !!! Failed to download updated firmware files" exit 1 fi eval ${GITCMD} reset --hard @@ -128,33 +140,30 @@ function update_repo { eval ${GITCMD} merge origin/master -m "automerge" RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then - echo "Failed to download updated firmware files" + echo " !!! Failed to download updated firmware files" exit 1 fi } function do_backup { - cp -a "${FW_PATH}" "${FW_PATH}.bak" - cp -a "${FW_MODPATH}" "${FW_MODPATH}.bak" + echo " *** Backing up files" + cp -va "${FW_PATH}" "${FW_PATH}.bak" + cp -va "${FW_MODPATH}" "${FW_MODPATH}.bak" } function do_update { - echo "Updating firmware" update_firmware - echo "Updating modules" update_modules - echo "Updating SDK" update_sdk - echo "Almost done, final tweaks" finalise - echo "If no errors appeared, your firmware was successfully $1" + echo " *** If no errors appeared, your firmware was successfully $1" if [[ "${ROOT_PATH}" == "/" ]]; then - echo "A reboot is needed to activate the new firmware" + echo " *** A reboot is needed to activate the new firmware" fi } function download_rev { - echo "Downloading specific firmware revision (this will take a few minutes)" + echo " *** Downloading specific firmware revision (this will take a few minutes)" mkdir -p "${FW_REPOLOCAL}" wget "${REPO_URI}/tarball/${FW_REV}" -O "${FW_REPOLOCAL}/${FW_REV}.tar.gz" tar xzf "${FW_REPOLOCAL}/${FW_REV}.tar.gz" -C "${FW_REPOLOCAL}" --strip-components=1 @@ -162,57 +171,57 @@ function download_rev { } if [[ ${EUID} -ne 0 ]]; then - echo "This tool must be run as root" + echo " !!! This tool must be run as root" exit 1 fi -echo "Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS" +echo " *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS" if [[ ${UPDATE_SELF} -ne 0 ]]; then update_self fi if [[ ! -d "${FW_PATH}" ]]; then - echo "${FW_PATH} doesn't exist" + echo " !!! ${FW_PATH} doesn't exist" exit 1 fi if [[ ! -f "${FW_PATH}/start.elf" ]]; then - echo "${FW_PATH}/start.elf doesn't exist." + echo " !!! ${FW_PATH}/start.elf doesn't exist." exit 1 fi if [[ ! -d "${FW_MODPATH}" ]]; then - echo "${FW_MODPATH} doesn't exist" + echo " !!! ${FW_MODPATH} doesn't exist" exit 1 fi command -v git >/dev/null 2>&1 || { - echo "This tool requires you have Git installed, please install it first" - echo "In Debian, try: sudo apt-get install git-core" - echo "In Arch, try: pacman -S git" + echo " !!! This tool requires you have Git installed, please install it first" + echo " In Debian, try: sudo apt-get install git-core" + echo " In Arch, try: pacman -S git" exit 1 } command -v readelf >/dev/null 2>&1 || { - echo "This tool requires you have readelf installed, please install it first" - echo "In Debian, try: sudo apt-get install binutils" - echo "In Arch, try: pacman -S binutils" + echo " !!! This tool requires you have readelf installed, please install it first" + echo " In Debian, try: sudo apt-get install binutils" + echo " In Arch, try: pacman -S binutils" exit 1 } -echo "ARM/GPU split is now defined in /boot/config.txt using the gpu_mem option!" +echo " *** ARM/GPU split is now defined in /boot/config.txt using the gpu_mem option!" if [[ ${FW_REV} != "" ]]; then download_rev do_update "updated to revision ${FW_REV}" elif [[ -f "${FW_REPOLOCAL}/.git/config" ]]; then update_repo if [[ -f "${FW_PATH}/.firmware_revision" ]] && [[ $(cat "${FW_PATH}/.firmware_revision") == $(eval ${GITCMD} rev-parse master) ]]; then - echo "Your firmware is already up to date" + echo " *** Your firmware is already up to date" finalise else do_update "updated" fi else - echo "We're running for the first time" + echo " *** We're running for the first time" download_repo do_backup do_update "setup"