| Index: build/android/pylib/efficient_android_directory_copy.sh
|
| diff --git a/build/android/pylib/efficient_android_directory_copy.sh b/build/android/pylib/efficient_android_directory_copy.sh
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..79eb1b4e838dd02a63f1d20c99fcde4bccb55555
|
| --- /dev/null
|
| +++ b/build/android/pylib/efficient_android_directory_copy.sh
|
| @@ -0,0 +1,78 @@
|
| +#!/system/bin/sh
|
| +
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +# Android shell script to make the destination directory identical with the
|
| +# source directory, without doing unnecessary copies. This assumes that the
|
| +# the destination directory was originally a copy of the source directory, and
|
| +# has since been modified.
|
| +
|
| +source=$1
|
| +dest=$2
|
| +echo copying $source to $dest
|
| +
|
| +delete_extra() {
|
| + # Don't delete symbolic links, since doing so deletes the vital lib link.
|
| + if [ ! -L "$1" ]
|
| + then
|
| + if [ ! -e "$source/$1" ]
|
| + then
|
| + echo rm -rf "$dest/$1"
|
| + rm -rf "$dest/$1"
|
| + elif [ -d "$1" ]
|
| + then
|
| + for f in "$1"/*
|
| + do
|
| + delete_extra "$f"
|
| + done
|
| + fi
|
| + fi
|
| +}
|
| +
|
| +copy_if_older() {
|
| + if [ -d "$1" ] && [ -e "$dest/$1" ]
|
| + then
|
| + if [ ! -e "$dest/$1" ]
|
| + then
|
| + echo cp -a "$1" "$dest/$1"
|
| + cp -a "$1" "$dest/$1"
|
| + else
|
| + for f in "$1"/*
|
| + do
|
| + copy_if_older "$f"
|
| + done
|
| + fi
|
| + elif [ ! -e "$dest/$1" ] || [ "$1" -ot "$dest/$1" ] || [ "$1" -nt "$dest/$1" ]
|
| + then
|
| + # dates are different, so either the destination of the source has changed.
|
| + echo cp -a "$1" "$dest/$1"
|
| + cp -a "$1" "$dest/$1"
|
| + fi
|
| +}
|
| +
|
| +if [ -e "$dest" ]
|
| +then
|
| + echo cd "$dest"
|
| + cd "$dest"
|
| + for f in ./*
|
| + do
|
| + if [ -e "$f" ]
|
| + then
|
| + delete_extra "$f"
|
| + fi
|
| + done
|
| +else
|
| + echo mkdir "$dest"
|
| + mkdir "$dest"
|
| +fi
|
| +echo cd "$source"
|
| +cd "$source"
|
| +for f in ./*
|
| +do
|
| + if [ -e "$f" ]
|
| + then
|
| + copy_if_older "$f"
|
| + fi
|
| +done
|
|
|