diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/unpack-prebuilt-apex.sh | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/unpack-prebuilt-apex.sh b/scripts/unpack-prebuilt-apex.sh new file mode 100755 index 000000000..1acdeb56a --- /dev/null +++ b/scripts/unpack-prebuilt-apex.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -eu + +# Copyright 2020 Google Inc. All rights reserved. +# +# 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. + +# Tool to unpack an apex file and verify that the required files were extracted. +if [ $# -lt 5 ]; then + echo "usage: $0 <deapaxer_path> <debugfs_path> <apex file> <output_dir> <required_files>+" >&2 + exit 1 +fi + +DEAPEXER_PATH=$1 +DEBUGFS_PATH=$2 +APEX_FILE=$3 +OUTPUT_DIR=$4 +shift 4 +REQUIRED_PATHS=$@ + +set -x 1 + +rm -fr $OUTPUT_DIR +mkdir -p $OUTPUT_DIR + +# Unpack the apex file contents. +$DEAPEXER_PATH --debugfs_path $DEBUGFS_PATH extract $APEX_FILE $OUTPUT_DIR + +# Verify that the files that the build expects to be in the .apex file actually +# exist, and make sure they have a fresh mtime to not confuse ninja. +typeset -i FAILED=0 +for r in $REQUIRED_PATHS; do + if [ ! -f $r ]; then + echo "Required file $r not present in apex $APEX_FILE" >&2 + FAILED=$FAILED+1 + else + # TODO(http:/b/177646343) - deapexer extracts the files with a timestamp of 1 Jan 1970. + # touch the file so that ninja knows it has changed. + touch $r + fi +done + +if [ $FAILED -gt 0 ]; then + echo "$FAILED required files were missing from $APEX_FILE" >&2 + echo "Available files are:" >&2 + find $OUTPUT_DIR -type f | sed "s|^| |" >&2 + exit 1 +fi |