omni: Update gapps backup for A11
taken from opengapps A11 test build (2021-10-01)
Added also sepolicy related changes too
Change-Id: Ie0bb9fbbf7e67f0344a2ce97122ef47a7ffbd76b
diff --git a/prebuilt/addon.d/69-gapps.sh b/prebuilt/addon.d/69-gapps.sh
index c62bbfb..542b1f8 100755
--- a/prebuilt/addon.d/69-gapps.sh
+++ b/prebuilt/addon.d/69-gapps.sh
@@ -6,9 +6,17 @@
#
. /postinstall/tmp/backuptool.functions
+if [ -z $backuptool_ab ]; then
+ SYS=$S
+ TMP=/tmp
+else
+ SYS=/postinstall/system
+ TMP=/postinstall/tmp
+fi
+
+
list_files() {
cat <<EOF
-app/FaceLock/FaceLock.apk
app/GoogleCalendarSyncAdapter/GoogleCalendarSyncAdapter.apk
app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk
app/GoogleExtShared/GoogleExtShared.apk
@@ -16,7 +24,7 @@
app/MarkupGoogle/MarkupGoogle.apk
app/SoundPickerPrebuilt/SoundPickerPrebuilt.apk
etc/default-permissions/default-permissions.xml
-etc/default-permissions/opengapps-permissions.xml
+etc/default-permissions/opengapps-permissions-q.xml
etc/g.prop
etc/permissions/com.google.android.dialer.support.xml
etc/permissions/com.google.android.maps.xml
@@ -32,21 +40,16 @@
framework/com.google.android.dialer.support.jar
framework/com.google.android.maps.jar
framework/com.google.android.media.effects.jar
-lib/libfilterpack_facedetect.so
-lib/libfrsdk.so
lib/libsketchology_native.so
-lib64/libfacenet.so
-lib64/libfilterpack_facedetect.so
-lib64/libfrsdk.so
lib64/libjni_latinimegoogle.so
lib64/libsketchology_native.so
priv-app/CarrierSetup/CarrierSetup.apk
priv-app/ConfigUpdater/ConfigUpdater.apk
-priv-app/GmsCoreSetupPrebuilt/GmsCoreSetupPrebuilt.apk
priv-app/GoogleBackupTransport/GoogleBackupTransport.apk
priv-app/GoogleExtServices/GoogleExtServices.apk
priv-app/GoogleFeedback/GoogleFeedback.apk
priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk
+priv-app/GooglePackageInstaller/GooglePackageInstaller.apk
priv-app/GooglePartnerSetup/GooglePartnerSetup.apk
priv-app/GoogleRestore/GoogleRestore.apk
priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
@@ -56,6 +59,7 @@
priv-app/Turbo/Turbo.apk
priv-app/Velvet/Velvet.apk
priv-app/WellbeingPrebuilt/WellbeingPrebuilt.apk
+product/overlay/WellbeingOverlay.apk
usr/srec/en-US/APP_NAME.fst
usr/srec/en-US/APP_NAME.syms
usr/srec/en-US/CLG.prewalk.fst
@@ -118,156 +122,237 @@
EOF
}
-list_google() {
-cat <<EOF
-app/GoogleExtShared/GoogleExtShared.apk
-priv-app/GoogleExtServices/GoogleExtServices.apk
-priv-app/GooglePackageInstaller/GooglePackageInstaller.apk
-EOF
+mount_generic() {
+ local device_abpartition=$(getprop ro.build.ab_update)
+ local partitions="$*"
+ if [ -z "$device_abpartition" ]; then
+ # We're on an A only device
+ local partition
+ for partition in $partitions; do
+ if [ "$(getprop ro.boot.dynamic_partitions)" = "true" ]; then
+ mount -o ro -t auto /dev/block/mapper/"$partition" /"$partition" 2> /dev/null
+ blockdev --setrw /dev/block/mapper/"$partition" 2> /dev/null
+ mount -o rw,remount -t auto /dev/block/mapper/"$partition" /"$partition" 2> /dev/null
+ else
+ mount -o ro -t auto /"$partition" 2> /dev/null
+ mount -o rw,remount -t auto /"$partition" 2> /dev/null
+ fi
+ done
+ fi
}
-list_aosp() {
-cat <<EOF
-/postinstall/system/priv-app/ExtServices
-/postinstall/system/app/ExtShared
-/postinstall/system/priv-app/PackageInstaller
-EOF
-}
+
+# Backup/Restore using /sdcard if the installed GApps size plus a buffer for other addon.d backups (204800=200MB) is larger than /tmp
+installed_gapps_size_kb=$(grep "^installed_gapps_size_kb" $TMP/gapps.prop | cut -d '=' -f 2)
+if [ ! "$installed_gapps_size_kb" ]; then
+ installed_gapps_size_kb="$(cd $SYS; size=0; for n in $(du -ak $(list_files) | cut -f 1); do size=$((size+n)); done; echo "$size")"
+ echo "installed_gapps_size_kb=$installed_gapps_size_kb" >> $TMP/gapps.prop
+fi
+
+free_tmp_size_kb=$(grep "^free_tmp_size_kb" $TMP/gapps.prop | cut -d '=' -f 2)
+if [ ! "$free_tmp_size_kb" ]; then
+ free_tmp_size_kb="$(echo $(df -k $TMP | tail -n 1) | cut -d ' ' -f 4)"
+ echo "free_tmp_size_kb=$free_tmp_size_kb" >> $TMP/gapps.prop
+fi
+
+buffer_size_kb=204800
+if [ $((installed_gapps_size_kb + buffer_size_kb)) -ge "$free_tmp_size_kb" ]; then
+ C=/sdcard/tmp-gapps
+fi
+
+# Get ROM SDK from installed GApps
+rom_build_sdk=$(grep "^rom_build_sdk" $TMP/gapps.prop | cut -d '=' -f 2)
+if [ ! "$rom_build_sdk" ]; then
+ rom_build_sdk="$(cd $SYS; grep "^ro.addon.sdk" etc/g.prop | cut -d '=' -f 2)"
+ echo "rom_build_sdk=$rom_build_sdk" >> $TMP/gapps.prop
+fi
case "$1" in
backup)
- if test -f priv-app/GooglePackageInstaller/GooglePackageInstaller.apk ;then
- GOOGLE=1
- list_google | while read FILE DUMMY; do
- backup_file $S/$FILE
- done
- fi
- list_files | while read FILE DUMMY; do
- backup_file $S/$FILE
+ list_files | while read -r FILE DUMMY; do
+ backup_file "$S"/"$FILE"
done
+
+ umount /product /vendor 2> /dev/null
;;
restore)
- list_files | while read FILE REPLACEMENT; do
+ list_files | while read -r FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
- [ -f "$C/$S/$FILE" ] && restore_file $S/$FILE $R
+ [ -f "$C/$S/$FILE" ] && restore_file "$S"/"$FILE" "$R"
done
- if [ "$GOOGLE" -eq "1" ]; then
- list_google | while read FILE REPLACEMENT; do
- R=""
- [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
- [ -f "$C/$S/$FILE" ] && restore_file $S/$FILE $R
- done
- fi
;;
pre-backup)
+ mount_generic product vendor
;;
post-backup)
# Stub
;;
pre-restore)
- if [ "$GOOGLE" -eq "1" ]; then
- list_aosp | while read FILE DUMMY; do
- rm -rf $FILE
- done
- fi
- # Remove/postinstall Stock/AOSP apps (from GApps Installer)
- rm -rf /postinstall/system/app/Provision
- rm -rf /postinstall/system/priv-app/Provision
+ mount_generic product vendor
- # Remove/postinstall 'other' apps (per installer.data)
- rm -rf /postinstall/system/app/BookmarkProvider
- rm -rf /postinstall/system/app/BooksStub
- rm -rf /postinstall/system/app/CalendarGoogle
- rm -rf /postinstall/system/app/CloudPrint
- rm -rf /postinstall/system/app/DeskClockGoogle
- rm -rf /postinstall/system/app/EditorsDocsStub
- rm -rf /postinstall/system/app/EditorsSheetsStub
- rm -rf /postinstall/system/app/EditorsSlidesStub
- rm -rf /postinstall/system/app/Gmail
- rm -rf /postinstall/system/app/Gmail2
- rm -rf /postinstall/system/app/GoogleCalendar
- rm -rf /postinstall/system/app/GoogleCloudPrint
- rm -rf /postinstall/system/app/GoogleHangouts
- rm -rf /postinstall/system/app/GoogleKeep
- rm -rf /postinstall/system/app/GoogleLatinIme
- rm -rf /postinstall/system/app/Keep
- rm -rf /postinstall/system/app/NewsstandStub
- rm -rf /postinstall/system/app/PartnerBookmarksProvider
- rm -rf /postinstall/system/app/PrebuiltBugleStub
- rm -rf /postinstall/system/app/PrebuiltKeepStub
- rm -rf /postinstall/system/app/QuickSearchBox
- rm -rf /postinstall/system/app/Vending
- rm -rf /postinstall/system/priv-app/GmsCore
- rm -rf /postinstall/system/priv-app/GmsCore_update
- rm -rf /postinstall/system/priv-app/GoogleHangouts
- rm -rf /postinstall/system/priv-app/GoogleNow
- rm -rf /postinstall/system/priv-app/GoogleSearch
- rm -rf /postinstall/system/priv-app/OneTimeInitializer
- rm -rf /postinstall/system/priv-app/QuickSearchBox
- rm -rf /postinstall/system/priv-app/Velvet_update
- rm -rf /postinstall/system/priv-app/Vending
+ # Remove Stock/AOSP apps (from GApps Installer)
+ rm -rf $SYS/priv-app/ExtServices
+ rm -rf $SYS/product/priv-app/ExtServices
+ rm -rf $SYS/app/ExtShared
+ rm -rf $SYS/product/app/ExtShared
+ rm -rf $SYS/app/PackageInstaller
+ rm -rf $SYS/priv-app/PackageInstaller
+ rm -rf $SYS/priv-app/packageinstaller
+ rm -rf $SYS/product/app/PackageInstaller
+ rm -rf $SYS/product/priv-app/PackageInstaller
+ rm -rf $SYS/product/priv-app/packageinstaller
+ rm -rf $SYS/app/Provision
+ rm -rf $SYS/priv-app/Provision
+ rm -rf $SYS/product/app/Provision
+ rm -rf $SYS/product/priv-app/Provision
- # Remove/postinstall 'priv-app' apps from 'app' (per installer.data)
- rm -rf /postinstall/system/app/CanvasPackageInstaller
- rm -rf /postinstall/system/app/ConfigUpdater
- rm -rf /postinstall/system/app/GoogleBackupTransport
- rm -rf /postinstall/system/app/GoogleFeedback
- rm -rf /postinstall/system/app/GoogleLoginService
- rm -rf /postinstall/system/app/GoogleOneTimeInitializer
- rm -rf /postinstall/system/app/GooglePartnerSetup
- rm -rf /postinstall/system/app/GoogleServicesFramework
- rm -rf /postinstall/system/app/OneTimeInitializer
- rm -rf /postinstall/system/app/Phonesky
- rm -rf /postinstall/system/app/PrebuiltGmsCore
- rm -rf /postinstall/system/app/SetupWizard
- rm -rf /postinstall/system/app/Velvet
+ # Remove 'other' apps (per installer.data)
+ rm -rf $SYS/app/BookmarkProvider
+ rm -rf $SYS/app/BooksStub
+ rm -rf $SYS/app/CalendarGoogle
+ rm -rf $SYS/app/CloudPrint
+ rm -rf $SYS/app/DeskClockGoogle
+ rm -rf $SYS/app/EditorsDocsStub
+ rm -rf $SYS/app/EditorsSheetsStub
+ rm -rf $SYS/app/EditorsSlidesStub
+ rm -rf $SYS/app/Gmail
+ rm -rf $SYS/app/Gmail2
+ rm -rf $SYS/app/GoogleCalendar
+ rm -rf $SYS/app/GoogleCloudPrint
+ rm -rf $SYS/app/GoogleHangouts
+ rm -rf $SYS/app/GoogleKeep
+ rm -rf $SYS/app/GoogleLatinIme
+ rm -rf $SYS/app/Keep
+ rm -rf $SYS/app/NewsstandStub
+ rm -rf $SYS/app/PartnerBookmarksProvider
+ rm -rf $SYS/app/PrebuiltBugleStub
+ rm -rf $SYS/app/PrebuiltKeepStub
+ rm -rf $SYS/app/QuickSearchBox
+ rm -rf $SYS/app/Vending
+ rm -rf $SYS/priv-app/GmsCore
+ rm -rf $SYS/priv-app/GmsCore_update
+ rm -rf $SYS/priv-app/GoogleHangouts
+ rm -rf $SYS/priv-app/GoogleNow
+ rm -rf $SYS/priv-app/GoogleSearch
+ rm -rf $SYS/priv-app/OneTimeInitializer
+ rm -rf $SYS/priv-app/QuickSearchBox
+ rm -rf $SYS/priv-app/Velvet_update
+ rm -rf $SYS/priv-app/Vending
+ rm -rf $SYS/product/app/BookmarkProvider
+ rm -rf $SYS/product/app/BooksStub
+ rm -rf $SYS/product/app/CalendarGoogle
+ rm -rf $SYS/product/app/CloudPrint
+ rm -rf $SYS/product/app/DeskClockGoogle
+ rm -rf $SYS/product/app/EditorsDocsStub
+ rm -rf $SYS/product/app/EditorsSheetsStub
+ rm -rf $SYS/product/app/EditorsSlidesStub
+ rm -rf $SYS/product/app/Gmail
+ rm -rf $SYS/product/app/Gmail2
+ rm -rf $SYS/product/app/GoogleCalendar
+ rm -rf $SYS/product/app/GoogleCloudPrint
+ rm -rf $SYS/product/app/GoogleHangouts
+ rm -rf $SYS/product/app/GoogleKeep
+ rm -rf $SYS/product/app/GoogleLatinIme
+ rm -rf $SYS/product/app/Keep
+ rm -rf $SYS/product/app/NewsstandStub
+ rm -rf $SYS/product/app/PartnerBookmarksProvider
+ rm -rf $SYS/product/app/PrebuiltBugleStub
+ rm -rf $SYS/product/app/PrebuiltKeepStub
+ rm -rf $SYS/product/app/QuickSearchBox
+ rm -rf $SYS/product/app/Vending
+ rm -rf $SYS/product/priv-app/GmsCore
+ rm -rf $SYS/product/priv-app/GmsCore_update
+ rm -rf $SYS/product/priv-app/GoogleHangouts
+ rm -rf $SYS/product/priv-app/GoogleNow
+ rm -rf $SYS/product/priv-app/GoogleSearch
+ rm -rf $SYS/product/priv-app/OneTimeInitializer
+ rm -rf $SYS/product/priv-app/QuickSearchBox
+ rm -rf $SYS/product/priv-app/Velvet_update
+ rm -rf $SYS/product/priv-app/Vending
- # Remove/postinstall 'required' apps (per installer.data)
- rm -rf /postinstall/system/app/LatinIME/lib//libjni_keyboarddecoder.so
- rm -rf /postinstall/system/app/LatinIME/lib//libjni_latinimegoogle.so
- rm -rf /postinstall/system/lib/libjni_keyboarddecoder.so
- rm -rf /postinstall/system/lib/libjni_latinimegoogle.so
- rm -rf /postinstall/system/lib64/libjni_keyboarddecoder.so
- rm -rf /postinstall/system/lib64/libjni_latinimegoogle.so
+ # Remove 'priv-app' apps from 'app' (per installer.data)
+ rm -rf $SYS/app/CanvasPackageInstaller
+ rm -rf $SYS/app/ConfigUpdater
+ rm -rf $SYS/app/GoogleBackupTransport
+ rm -rf $SYS/app/GoogleFeedback
+ rm -rf $SYS/app/GoogleLoginService
+ rm -rf $SYS/app/GoogleOneTimeInitializer
+ rm -rf $SYS/app/GooglePartnerSetup
+ rm -rf $SYS/app/GoogleServicesFramework
+ rm -rf $SYS/app/OneTimeInitializer
+ rm -rf $SYS/app/Phonesky
+ rm -rf $SYS/app/PrebuiltGmsCore
+ rm -rf $SYS/app/SetupWizard
+ rm -rf $SYS/app/Velvet
+ rm -rf $SYS/product/app/CanvasPackageInstaller
+ rm -rf $SYS/product/app/ConfigUpdater
+ rm -rf $SYS/product/app/GoogleBackupTransport
+ rm -rf $SYS/product/app/GoogleFeedback
+ rm -rf $SYS/product/app/GoogleLoginService
+ rm -rf $SYS/product/app/GoogleOneTimeInitializer
+ rm -rf $SYS/product/app/GooglePartnerSetup
+ rm -rf $SYS/product/app/GoogleServicesFramework
+ rm -rf $SYS/product/app/OneTimeInitializer
+ rm -rf $SYS/product/app/Phonesky
+ rm -rf $SYS/product/app/PrebuiltGmsCore
+ rm -rf $SYS/product/app/SetupWizard
+ rm -rf $SYS/product/app/Velvet
+
+ # Remove 'required' apps (per installer.data)
+ rm -rf $SYS/app/LatinIME/lib//libjni_keyboarddecoder.so
+ rm -rf $SYS/app/LatinIME/lib//libjni_latinimegoogle.so
+ rm -rf $SYS/lib/libjni_keyboarddecoder.so
+ rm -rf $SYS/lib/libjni_latinimegoogle.so
+ rm -rf $SYS/lib64/libjni_keyboarddecoder.so
+ rm -rf $SYS/lib64/libjni_latinimegoogle.so
+ rm -rf $SYS/product/app/LatinIME/lib//libjni_keyboarddecoder.so
+ rm -rf $SYS/product/app/LatinIME/lib//libjni_latinimegoogle.so
+ rm -rf $SYS/product/lib/libjni_keyboarddecoder.so
+ rm -rf $SYS/product/lib/libjni_latinimegoogle.so
+ rm -rf $SYS/product/lib64/libjni_keyboarddecoder.so
+ rm -rf $SYS/product/lib64/libjni_latinimegoogle.so
# Remove 'user requested' apps (from gapps-config)
- # Stub
+
;;
post-restore)
- if [ -d "/postinstall" ]; then
- P="/postinstall/system"
- else
- P="/system"
- fi
-
# Recreate required symlinks (from GApps Installer)
- install -d "$P/app/MarkupGoogle/lib/arm64"
- ln -sfn "$P/lib64/libsketchology_native.so" "$P/app/MarkupGoogle/lib/arm64/libsketchology_native.so"
- install -d "$P/app/FaceLock/lib/arm64"
- ln -sfn "$P/lib64/libfacenet.so" "$P/app/FaceLock/lib/arm64/libfacenet.so"
- install -d "$P/app/LatinIME/lib64/arm64"
- ln -sfn "$P/lib64/libjni_latinimegoogle.so" "$P/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
- ln -sfn "$P/lib64/libjni_keyboarddecoder.so" "$P/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
+ install -d "$SYS/app/MarkupGoogle/lib/arm64"
+ ln -sfn "$SYS/lib64/libsketchology_native.so" "$SYS/app/MarkupGoogle/lib/arm64/libsketchology_native.so"
+ install -d "$SYS/app/LatinIME/lib64/arm64"
+ ln -sfn "$SYS/product/lib64/libjni_latinimegoogle.so" "$SYS/product/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
+ ln -sfn "$SYS/product/lib64/libjni_keyboarddecoder.so" "$SYS/product/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
+ ln -sfn "$SYS/lib64/libjni_latinimegoogle.so" "$SYS/app/LatinIME/lib64/arm64/libjni_latinimegoogle.so"
+ ln -sfn "$SYS/lib64/libjni_keyboarddecoder.so" "$SYS/app/LatinIME/lib64/arm64/libjni_keyboarddecoder.so"
# Apply build.prop changes (from GApps Installer)
- sed -i "s/ro.error.receiver.system.apps=.*/ro.error.receiver.system.apps=com.google.android.gms/g" /system/system/build.prop
+ sed -i "s/ro.error.receiver.system.apps=.*/ro.error.receiver.system.apps=com.google.android.gms/g" $SYS/build.prop
# Re-pre-ODEX APKs (from GApps Installer)
# Remove any empty folders we may have created during the removal process
- for i in /system/app /system/priv-app /system/usr/srec; do
+ for i in $SYS/app $SYS/priv-app $SYS/vendor/pittpatt $SYS/usr/srec; do
if [ -d $i ]; then
- find $i -type d -exec rmdir -p '{}' \+ 2>/dev/null;
+ find $i -type d -exec rmdir -p '{}' \+ 2>/dev/null
fi
- done;
- for i in $(list_files); do
- chown root:root "$P/$i"
- chmod 644 "$P/$i"
- chmod 755 "$(dirname "$P/$i")"
- if [ "$API" -ge "26" ]; then # Android 8.0+ uses 0600 for its permission on build.prop
- chmod 600 /system/build.prop
- fi
done
+ # Fix ownership/permissions and clean up after backup and restore from /sdcard
+ find $SYS/vendor/pittpatt -type d -exec chown 0:2000 '{}' \; 2>/dev/null # Change pittpatt folders to root:shell per Google Factory Settings
+ for i in $(list_files); do
+ chown root:root "$SYS/$i"
+ chmod 644 "$SYS/$i"
+ chmod 755 "$(dirname "$SYS/$i")" "$(dirname "$SYS/$i")/../"
+ case $i in
+ */overlay/*) chcon -h u:object_r:vendor_overlay_file:s0 "$SYS/$i";;
+ esac
+ done
+
+ umount /product /vendor 2> /dev/null
+
+ if [ "$rom_build_sdk" -ge "26" ]; then # Android 8.0+ uses 0600 for its permission on build.prop
+ chmod 600 "$SYS/build.prop"
+ fi
+ rm -rf /sdcard/tmp-gapps
;;
esac
diff --git a/sepolicy/private/update_engine.te b/sepolicy/private/update_engine.te
index 81873ed..4e4f94b 100644
--- a/sepolicy/private/update_engine.te
+++ b/sepolicy/private/update_engine.te
@@ -15,7 +15,7 @@
allow update_engine system_data_file:file { create read write open unlink };
allow update_engine system_data_file:dir { create write add_name read remove_name unlink };
-allow update_engine system_file:file { create setattr write relabelto relabelfrom rx_file_perms unlink };
+allow update_engine system_file:file { create setattr write relabelto relabelfrom rename rx_file_perms unlink };
allow update_engine system_file:dir { create setattr write rmdir remove_name add_name setattr };
allow update_engine storage_file:lnk_file read;
@@ -24,10 +24,16 @@
allow update_engine sepolicy_file:file { append };
allow update_engine gsi_metadata_file:dir search;
-allow update_engine metadata_file:dir search;
-allow update_engine rootfs:file { create write };
+allow update_engine metadata_file:dir { getattr search };
+allow update_engine rootfs:file { append create write };
#####
allow update_engine proc_filesystems:file { getattr open read };
allow update_engine system_file:lnk_file { create rename };
allow update_engine system_lib_file:dir { add_name setattr write };
+allow update_engine system_lib_file:file { create relabelfrom setattr write };
+#allow update_engine vendor_overlay_file:dir { getattr search };
+allow update_engine vendor_overlay_file:file { getattr read };
+allow update_engine linkerconfig_file:dir { getattr };
+allow update_engine bt_firmware_file:dir { getattr search};
+allow update_engine update_engine:capability { kill };