diff --git a/github_archive_updater.py b/github_archive_updater.py index 3abe5be6bb349a13f7cbf7c5f87557722fe1da58..e42e7b092121234f112d0bd9b26f7379003ad3c7 100644 --- a/github_archive_updater.py +++ b/github_archive_updater.py @@ -118,5 +118,7 @@ class GithubArchiveUpdater(): self._write_metadata(latest_url, package_dir) updater_utils.replace_package(package_dir, self.proj_path) finally: - shutil.rmtree(temporary_dir, ignore_errors=True) + # Don't remove the temporary directory, or it'll be impossible + # to debug the failure... + # shutil.rmtree(temporary_dir, ignore_errors=True) urllib.request.urlcleanup() diff --git a/update_package.sh b/update_package.sh index 8b9629a6f6d5f97ee25471fc535c562d47d9d601..0a854a7674a0624669e25f0cfb7f7318d008880b 100644 --- a/update_package.sh +++ b/update_package.sh @@ -15,36 +15,50 @@ # limitations under the License. # This script is used by external_updater to replace a package. Don't -# invoke directly - -cd $1 - -# Copies all files we want to reserve. -cp -a -n $2/Android.bp $1/ 2> /dev/null -cp -a -n $2/Android.mk $1/ 2> /dev/null -cp -a -n $2/LICENSE $1/ 2> /dev/null -cp -a -n $2/NOTICE $1/ 2> /dev/null -cp -a -n $2/MODULE_LICENSE_* $1/ 2> /dev/null -cp -a -n $2/METADATA $1/ 2> /dev/null -cp -a -n $2/.git $1/ 2> /dev/null -cp -a -n $2/.gitignore $1/ 2> /dev/null -cp -a -n $2/patches $1/ 2> /dev/null -cp -a -n $2/post_update.sh $1/ 2> /dev/null - -# Applies all patches -for p in $1/patches/*.diff +# invoke directly. + +set -e + +tmp_dir=$1 +external_dir=$2 + +echo "Entering $tmp_dir..." +cd $tmp_dir + +function CopyIfPresent() { + if [ -e $external_dir/$1 ]; then + cp -a -n $external_dir/$1 . + fi +} + +echo "Copying preserved files..." +CopyIfPresent "Android.bp" +CopyIfPresent "Android.mk" +CopyIfPresent "LICENSE" +CopyIfPresent "NOTICE" +cp -a -f -n $external_dir/MODULE_LICENSE_* . +CopyIfPresent "METADATA" +CopyIfPresent ".git" +CopyIfPresent ".gitignore" +CopyIfPresent "patches" +CopyIfPresent "post_update.sh" + +echo "Applying patches..." +for p in $tmp_dir/patches/*.diff do [ -e "$p" ] || continue - echo Applying $p - patch -p1 -d $1 < $p; + echo "Applying $p..." + patch -p1 -d $tmp_dir < $p; done -if [ -f $1/post_update.sh ] +if [ -f $tmp_dir/post_update.sh ] then - echo Running post update script - $1/post_update.sh $1 $2 + echo "Running post update script" + $tmp_dir/post_update.sh $tmp_dir $external_dir fi -# Swap old and new. -rm -rf $2 -mv $1 $2 +echo "Swapping old and new..." +rm -rf $external_dir +mv $tmp_dir $external_dir + +exit 0 diff --git a/updater.sh b/updater.sh index 4f03c89710f3ceb112118da17f68ed57ea8ee68b..b8078c640f2adf05bdba8f3da51301744e0a51be 100755 --- a/updater.sh +++ b/updater.sh @@ -14,6 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -e + cd $(dirname "$0")/../.. source build/envsetup.sh lunch aosp_arm-eng