auto import from //depot/cupcake/@132589
This commit is contained in:
parent
15bb56d89a
commit
d4ae69739e
2 changed files with 343 additions and 0 deletions
118
tools/ota/add-data-wipe
Executable file
118
tools/ota/add-data-wipe
Executable file
|
@ -0,0 +1,118 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2007 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
PROGNAME=`basename $0`
|
||||
|
||||
function cleantmp
|
||||
{
|
||||
if [ ! -z "$TMPDIR" ]
|
||||
then
|
||||
rm -rf "$TMPDIR"
|
||||
TMPDIR=
|
||||
fi
|
||||
}
|
||||
|
||||
function println
|
||||
{
|
||||
if [ $# -gt 0 ]
|
||||
then
|
||||
echo "$PROGNAME: $@"
|
||||
fi
|
||||
}
|
||||
|
||||
function fail
|
||||
{
|
||||
println "$@"
|
||||
cleantmp
|
||||
exit 1
|
||||
}
|
||||
|
||||
function usage
|
||||
{
|
||||
println "$@"
|
||||
echo "Usage: $PROGNAME <input file> <output file>"
|
||||
fail
|
||||
}
|
||||
|
||||
OTATOOL=`which otatool`
|
||||
if [ -z "$OTATOOL" ]
|
||||
then
|
||||
OTATOOL="`dirname $0`/otatool"
|
||||
if [ ! -x "$OTATOOL" ]
|
||||
then
|
||||
fail "Can't find otatool"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ $# -ne 2 ]
|
||||
then
|
||||
usage
|
||||
fi
|
||||
|
||||
INFILE="$1"
|
||||
OUTFILE="$2"
|
||||
|
||||
if [ ! -f "$INFILE" ]
|
||||
then
|
||||
fail "$INFILE doesn't exist or isn't a file"
|
||||
fi
|
||||
|
||||
if [ -z "$OUTFILE" ]
|
||||
then
|
||||
usage "Output file not specified"
|
||||
fi
|
||||
|
||||
if [ -d "$OUTFILE" ]
|
||||
then
|
||||
usage "Output file may not be a directory"
|
||||
fi
|
||||
|
||||
if [ "$INFILE" -ef "$OUTFILE" ]
|
||||
then
|
||||
fail "Refusing to use the input file as the output file"
|
||||
fi
|
||||
|
||||
TMPDIR=`mktemp -d "/tmp/$PROGNAME.XXXXXX"`
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
TMPDIR=
|
||||
fail "Can't create temporary directory"
|
||||
fi
|
||||
|
||||
ORIGSCRIPT="$TMPDIR/orig"
|
||||
NEWSCRIPT="$TMPDIR/new"
|
||||
|
||||
"$OTATOOL" --dump-script "$INFILE" |
|
||||
awk '
|
||||
{ print }
|
||||
/^format SYSTEM:$/ {
|
||||
print "delete_recursive DATA:"
|
||||
}
|
||||
' > "$NEWSCRIPT"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
fail "Couldn't modify script"
|
||||
fi
|
||||
|
||||
"$OTATOOL" --replace-script "$NEWSCRIPT" -o "$OUTFILE" "$INFILE"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
fail "Couldn't replace script"
|
||||
fi
|
||||
|
||||
cleantmp
|
225
tools/ota/otatool
Executable file
225
tools/ota/otatool
Executable file
|
@ -0,0 +1,225 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (C) 2007 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
PROGNAME=`basename "$0"`
|
||||
|
||||
INSTALL_SCRIPT_NAME=META-INF/com/android/update-script
|
||||
|
||||
function cleantmp
|
||||
{
|
||||
if [ ! -z "$TMPDIR" ]
|
||||
then
|
||||
rm -rf "$TMPDIR"
|
||||
TMPDIR=
|
||||
fi
|
||||
}
|
||||
|
||||
function println
|
||||
{
|
||||
if [ $# -gt 0 ]
|
||||
then
|
||||
echo "$PROGNAME: $@"
|
||||
fi
|
||||
}
|
||||
|
||||
function fail
|
||||
{
|
||||
println "$@"
|
||||
cleantmp
|
||||
exit 1
|
||||
}
|
||||
|
||||
function usage
|
||||
{
|
||||
println "$@"
|
||||
echo "Usage: $PROGNAME <command> [command-options] <ota-file>"
|
||||
echo " Where <command> is one of:"
|
||||
echo " --dump"
|
||||
echo " Dump a description of the ota file"
|
||||
echo " --dump-script"
|
||||
echo " Dumps the install script to standard out"
|
||||
echo " --append-script <file> -o|--output <outfile>"
|
||||
echo " Append the contents of <file> to the install script"
|
||||
echo " --replace-script <file> -o|--output <outfile>"
|
||||
echo " Replace the install script with the contents of <file>"
|
||||
fail
|
||||
}
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
usage
|
||||
fi
|
||||
CMD="$1"
|
||||
shift
|
||||
if [ "$CMD" = --dump ]
|
||||
then
|
||||
CMD_DUMP=1
|
||||
UNPACK_FILE=1
|
||||
elif [ "$CMD" = --dump-script ]
|
||||
then
|
||||
CMD_DUMP_SCRIPT=1
|
||||
elif [ "$CMD" = --append-script ]
|
||||
then
|
||||
CMD_APPEND_SCRIPT=1
|
||||
SCRIPT_FILE=$1
|
||||
shift
|
||||
NEEDS_SCRIPT_FILE=1
|
||||
NEEDS_OUTPUT=1
|
||||
elif [ "$CMD" = --replace-script ]
|
||||
then
|
||||
CMD_REPLACE_SCRIPT=1
|
||||
SCRIPT_FILE=$1
|
||||
shift
|
||||
NEEDS_SCRIPT_FILE=1
|
||||
NEEDS_OUTPUT=1
|
||||
else
|
||||
usage "Unknown command $CMD"
|
||||
fi
|
||||
|
||||
if [ ! -z "$NEED_SCRIPT_FILE" ]
|
||||
then
|
||||
if [ -z "$SCRIPT_FILE" -o ! -f "$SCRIPT_FILE" ]
|
||||
then
|
||||
usage "$CMD requires a valid script file"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z "$NEEDS_OUTPUT" ]
|
||||
then
|
||||
if [ "x$1" != "x-o" -a "x$1" != "x--output" ]
|
||||
then
|
||||
usage "$CMD requires \"-o <file>\" or \"--output <file>\""
|
||||
fi
|
||||
shift
|
||||
|
||||
OUTFILE="$1"
|
||||
shift
|
||||
if [ -z "$OUTFILE" ]
|
||||
then
|
||||
usage "$CMD requires \"-o <file>\" or \"--output <file>\""
|
||||
fi
|
||||
if [ -d "$OUTFILE" ]
|
||||
then
|
||||
fail "Output file \"$OUTFILE\" is a directory"
|
||||
fi
|
||||
fi
|
||||
|
||||
FILE="$1"
|
||||
if [ ! -f "$FILE" ]
|
||||
then
|
||||
fail "$FILE doesn't exist or isn't a file"
|
||||
fi
|
||||
if [ ! -z "$OUTFILE" -a "$FILE" -ef "$OUTFILE" ]
|
||||
then
|
||||
fail "Refusing to use the input file as the output file"
|
||||
fi
|
||||
|
||||
if [ $CMD_DUMP_SCRIPT ]
|
||||
then
|
||||
unzip -p "$FILE" "$INSTALL_SCRIPT_NAME"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create a temporary directory for scratch files.
|
||||
#
|
||||
TMPDIR=`mktemp -d /tmp/$PROGNAME.XXXXXX`
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
TMPDIR=
|
||||
fail "Can't create temporary directory"
|
||||
fi
|
||||
|
||||
|
||||
if [ $UNPACK_FILE ]
|
||||
then
|
||||
ROOTDIR="$TMPDIR/root"
|
||||
mkdir -p "$ROOTDIR"
|
||||
|
||||
println "Unpacking `basename $FILE`..."
|
||||
|
||||
unzip -q -d "$ROOTDIR" "$FILE"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
fail "Couldn't unpack $FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ $CMD_DUMP ]
|
||||
then
|
||||
function dumpfile
|
||||
{
|
||||
echo "BEGIN `basename $1`"
|
||||
cat "$1" | sed -e 's/^/ /'
|
||||
echo "END `basename $1`"
|
||||
}
|
||||
|
||||
echo Contents of root:
|
||||
ls -1 "$ROOTDIR" | sed -e 's/^/ /'
|
||||
echo
|
||||
echo Contents of META-INF:
|
||||
(cd "$ROOTDIR" && find META-INF -type f) | sed -e 's/^/ /'
|
||||
|
||||
echo
|
||||
dumpfile "$ROOTDIR/META-INF/MANIFEST.MF"
|
||||
echo
|
||||
dumpfile "$ROOTDIR/$INSTALL_SCRIPT_NAME"
|
||||
echo
|
||||
dumpfile "$ROOTDIR/android-product.txt"
|
||||
echo
|
||||
dumpfile "$ROOTDIR/system/build.prop"
|
||||
fi
|
||||
|
||||
if [ $CMD_APPEND_SCRIPT ]
|
||||
then
|
||||
TMPSCRIPT="$TMPDIR/script"
|
||||
NEWSCRIPT="$TMPDIR/$INSTALL_SCRIPT_NAME"
|
||||
unzip -p "$FILE" "$INSTALL_SCRIPT_NAME" > "$TMPSCRIPT"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
fail "Couldn't extract $INSTALL_SCRIPT_NAME from $FILE"
|
||||
fi
|
||||
mkdir -p `dirname "$NEWSCRIPT"`
|
||||
cat "$TMPSCRIPT" "$SCRIPT_FILE" > "$NEWSCRIPT"
|
||||
|
||||
OVERWRITE_SCRIPT=1
|
||||
fi
|
||||
|
||||
if [ $CMD_REPLACE_SCRIPT ]
|
||||
then
|
||||
NEWSCRIPT="$TMPDIR/$INSTALL_SCRIPT_NAME"
|
||||
mkdir -p `dirname "$NEWSCRIPT"`
|
||||
cp "$SCRIPT_FILE" "$NEWSCRIPT"
|
||||
|
||||
OVERWRITE_SCRIPT=1
|
||||
fi
|
||||
|
||||
if [ $OVERWRITE_SCRIPT ]
|
||||
then
|
||||
cp "$FILE" "$TMPDIR/outfile.zip"
|
||||
(cd "$TMPDIR" && zip -qu outfile.zip "$INSTALL_SCRIPT_NAME")
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
fail "Couldn't add new $INSTALL_SCRIPT_NAME to output file"
|
||||
fi
|
||||
|
||||
rm -f "$OUTFILE"
|
||||
mkdir -p `dirname "$OUTFILE"`
|
||||
mv "$TMPDIR/outfile.zip" "$OUTFILE"
|
||||
fi
|
||||
|
||||
cleantmp
|
Loading…
Reference in a new issue