[backfire] base-files: backport r29587
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 20 Dec 2011 17:28:31 +0000 (17:28 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 20 Dec 2011 17:28:31 +0000 (17:28 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@29588 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/base-files/Makefile
package/base-files/files/sbin/sysupgrade

index b3d6605ff122c4d4871e67db3d0bdd68b33392be..60ca5a20ba59fad635361f3a4518d1bf2c49371a 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=43.31
+PKG_RELEASE:=43.32
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
index 0597752bd3583af1d24f4c9efc3239b76d08c3d5..528555c10f96549ce9536429c0df4dbbaeb36b50 100755 (executable)
@@ -9,6 +9,7 @@ export VERBOSE=1
 export SAVE_CONFIG=1
 export DELAY=
 export CONF_IMAGE=
+export CONF_BACKUP=
 export HELP=0
 
 # parse options
@@ -19,6 +20,7 @@ while [ -n "$1" ]; do
                -v) export VERBOSE="$(($VERBOSE + 1))";;
                -q) export VERBOSE="$(($VERBOSE - 1))";;
                -n) export SAVE_CONFIG=0;;
+               -b|--create-backup) export CONF_BACKUP="$2"; shift;;
                -f) export CONF_IMAGE="$2"; shift;;
                -h|--help) export HELP=1; break;;
                -*)
@@ -36,7 +38,7 @@ export CONF_TAR=/tmp/sysupgrade.tgz
 export ARGV="$*"
 export ARGC="$#"
 
-[ -z "$ARGV" -o $HELP -gt 0 ] && {
+[ -z "$ARGV" -a -z "$CONF_BACKUP" -o $HELP -gt 0 ] && {
        cat <<EOF
 Usage: $0 [options] <image file or URL>
 
@@ -44,7 +46,11 @@ Options:
        -d <delay>   add a delay before rebooting
        -f <config>  restore configuration from .tar.gz (file or url)
        -i           interactive mode
-       -n           do not save configuration over reflash
+       -b / --create-backup <file>
+                    create .tar.gz of files specified in sysupgrade.conf
+                    then exit. Does not flash an image. If file is '-',
+                    i.e. stdout, verbosity is set to 0 (i.e. quiet).
+       -n           do not save configuration over reflash
        -q           less verbose
        -v           more verbose
        -h / --help  display this help
@@ -53,6 +59,17 @@ EOF
        exit 1
 }
 
+[ -n "$ARGV" -a -n "$CONF_BACKUP" ] && {
+       cat <<-EOF
+               -b/--create-backup does not perform a firmware upgrade. Do not
+               specify both -b and a firmware image.
+       EOF
+       exit 1
+}
+
+# prevent messages from clobbering the tarball when using stdout
+[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0
+
 add_uci_conffiles() {
        local file="$1"
        ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
@@ -69,6 +86,8 @@ sysupgrade_init_conffiles="add_uci_conffiles"
 include /lib/upgrade
 
 do_save_conffiles() {
+       local conf_tar="${1:-$CONF_TAR}"
+
        [ -z "$(rootfs_type)" ] && {
                echo "Cannot save config while running from ramdisk."
                ask_bool 0 "Abort" && exit
@@ -79,9 +98,14 @@ do_save_conffiles() {
 
        v "Saving config files..."
        [ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
-       tar c${TAR_V}zf "$CONF_TAR" -T "$CONFFILES" 2>/dev/null
+       tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
 }
 
+if [ -n "$CONF_BACKUP" ]; then
+       do_save_conffiles "$CONF_BACKUP"
+       exit $?
+fi
+
 type platform_check_image >/dev/null 2>/dev/null || {
        echo "Firmware upgrade is not implemented for this platform."
        exit 1