From 1d1a30c10768025186961bc69a56cf6ea4cc1ede Mon Sep 17 00:00:00 2001 From: Alessandro Astone Date: Sat, 26 Dec 2020 21:33:20 +0100 Subject: [PATCH] Improve free space checks And don't count as needed space that will be freed from the replaced files. This will allow to flash the zip over an existing installation when space is tight. Also: awk --> tr | cut because recovery might not provide awk grep -v --> tail -1 in du because it might spit out 3 lines --- build/meta/com/google/android/update-binary | 45 +++++++++++++-------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/build/meta/com/google/android/update-binary b/build/meta/com/google/android/update-binary index a82b3e1..4674a08 100644 --- a/build/meta/com/google/android/update-binary +++ b/build/meta/com/google/android/update-binary @@ -30,6 +30,12 @@ cleanup() { umount -l "$SYSTEM_MNT" } +error_no_space() { + ui_print "Not enough space for GApps! Aborting" + cleanup + exit 1 +} + get_block_for_mount_point() { grep -v "^#" /etc/recovery.fstab | grep " $1 " | tail -n1 | tr -s ' ' | cut -d' ' -f1 } @@ -61,6 +67,20 @@ find_block() { fi } +compute_apps_size() { + NEEDED_STORAGE_SYSTEM=$(expr $(du -cs `find -maxdepth 1 -mindepth 1` | tail -n1 | cut -f1) + $STORAGE_BUFFER) + RECLAIMABLE_STORAGE_SYSTEM=$(find . -type f | sed "s|^./|$SYSTEM_OUT/|" | xargs ls -d 2>/dev/null | xargs du -cs PLACEHOLDER 2>/dev/null | tail -n1 | cut -f1) + NEEDED_STORAGE_SYSTEM=$(expr $NEEDED_STORAGE_SYSTEM - $RECLAIMABLE_STORAGE_SYSTEM) +} + +remove_big_optional_apps() { + ui_print "Low resource device detected, removing large extras" + rm -rf app/MarkupGoogle + rm -rf priv-app/AndroidMigratePrebuilt + rm -rf priv-app/SetupWizardPrebuilt + rm -rf priv-app/Velvet +} + ui_print "**********************" ui_print "MindTheGapps installer" ui_print "**********************" @@ -105,9 +125,8 @@ exit 1 fi SYSTEM_OUT="${SYSTEM_MNT}/system" -LOWMEM=1572864 -MEM=`grep MemTotal /proc/meminfo | awk '{ print $2 }'` -STORAGE=`df $SYSTEM_MNT | grep -v Filesystem | awk '{ print $4 }'` +# Compute storage requirements +SYSTEM_STORAGE=`df $SYSTEM_MNT | tail -1 | tr -s ' ' | cut -d ' ' -f4` STORAGE_BUFFER=10240 ui_print "Extracting files" @@ -115,21 +134,13 @@ cd /tmp unzip -o "$ZIP" rm -rf META-INF cd system +compute_apps_size -NEEDED_STORAGE=`expr $(du -s . | awk '{ print $1 }') + $STORAGE_BUFFER` - -if [ "$MEM" -lt "$LOWMEM" ] || [ "$STORAGE" -lt "$NEEDED_STORAGE" ]; then - ui_print "Low resource device detected, removing large extras" - rm -rf app/MarkupGoogle - rm -rf priv-app/AndroidMigratePrebuilt - rm -rf priv-app/SetupWizardPrebuilt - rm -rf priv-app/Velvet - NEEDED_STORAGE=`expr $(du -s . | awk '{ print $1 }') + $STORAGE_BUFFER` - if [ "$STORAGE" -lt "$NEEDED_STORAGE" ]; then - ui_print "Not enough space for GApps! Aborting" - cd .. - rm -rf system - exit 1 +if [ "$SYSTEM_STORAGE" -lt "$NEEDED_STORAGE_SYSTEM" ]; then + remove_big_optional_apps + compute_apps_size + if [ "$SYSTEM_STORAGE" -lt "$NEEDED_STORAGE_SYSTEM" ]; then + error_no_space fi fi