extract_utils: Fix pinning when not cleaning vendor dir

Skip the extraction of pinned files if the ones currently available
have the expected sha1. If we don't, we will overwrite pinned files
with potentially incorrect files when the current vendor files are
not moved to a temporary directory (i.e. when not cleaning vendor).

Change-Id: I640d6bf2ed98eb366a4df17f0ebeaec81cb5274b
This commit is contained in:
Gabriele M
2017-10-11 00:58:59 +02:00
committed by Bruno Martins
parent fd8b8290b6
commit e6df25b3d9

View File

@@ -966,7 +966,33 @@ function extract() {
fi
local DEST="$OUTPUT_DIR/$FROM"
if [ "$SRC" = "adb" ]; then
# Check pinned files
local HASH="${HASHLIST[$i-1]}"
local KEEP=""
if [ "$DISABLE_PINNING" != "1" ] && [ ! -z "$HASH" ] && [ "$HASH" != "x" ]; then
if [ -f "$DEST" ]; then
local PINNED="$DEST"
else
local PINNED="$TMP_DIR/$FROM"
fi
if [ -f "$PINNED" ]; then
if [ "$(uname)" == "Darwin" ]; then
local TMP_HASH=$(shasum "$PINNED" | awk '{print $1}' )
else
local TMP_HASH=$(sha1sum "$PINNED" | awk '{print $1}' )
fi
if [ "$TMP_HASH" = "$HASH" ]; then
KEEP="1"
if [ ! -f "$DEST" ]; then
cp -p "$PINNED" "$DEST"
fi
fi
fi
fi
if [ "$KEEP" = "1" ]; then
printf ' + (keeping pinned file with hash %s)\n' "$HASH"
elif [ "$SRC" = "adb" ]; then
# Try Lineage target first
adb pull "/$TARGET" "$DEST"
# if file does not exist try OEM target
@@ -999,38 +1025,6 @@ function extract() {
fi
fi
# Check pinned files
local HASH="${HASHLIST[$i-1]}"
if [ "$DISABLE_PINNING" != "1" ] && [ ! -z "$HASH" ] && [ "$HASH" != "x" ]; then
local KEEP=""
local TMP="$TMP_DIR/$FROM"
if [ -f "$TMP" ]; then
if [ ! -f "$DEST" ]; then
KEEP="1"
else
if [ "$(uname)" == "Darwin" ]; then
local DEST_HASH=$(shasum "$DEST" | awk '{print $1}' )
else
local DEST_HASH=$(sha1sum "$DEST" | awk '{print $1}' )
fi
if [ "$DEST_HASH" != "$HASH" ]; then
KEEP="1"
fi
fi
if [ "$KEEP" = "1" ]; then
if [ "$(uname)" == "Darwin" ]; then
local TMP_HASH=$(shasum "$TMP" | awk '{print $1}' )
else
local TMP_HASH=$(sha1sum "$TMP" | awk '{print $1}' )
fi
if [ "$TMP_HASH" = "$HASH" ]; then
printf ' + (keeping pinned file with hash %s)\n' "$HASH"
cp -p "$TMP" "$DEST"
fi
fi
fi
fi
if [ -f "$DEST" ]; then
local TYPE="${DIR##*/}"
if [ "$TYPE" = "bin" -o "$TYPE" = "sbin" ]; then