Commit Graph

14 Commits

Author SHA1 Message Date
Alessandro Astone
f16993e63b backuptool: Correct supported partitions for addon.d v3
* The plan was to support odm & oem too, but it turned out
  unnecessarily complicated due to their symlink setup,
  while being most likely unused.
  The partitions were removed from the list of supported ones
  in a-only backuptool, but were forgotten in ab backuptool.

Change-Id: I58a01cdc3f5c4239048b204f3313f4bf697dd60a
2021-02-18 14:34:21 +01:00
Alessandro Astone
c63fa8441b backuptool: Support seamless backup and restore to extra partitions
For scripts declaring ADDOND_VERSION=3 automatically mount
vendor, product, system_ext and others (when they're dedicated partitions).

Also expose the get_output_path() function to get the path to where
a file is mounted in case it lives in a dedicated partition.

ab exapmles:
get_output_path "system/product/priv-app/MyApp.apk"  = "/postinstall/product/priv-app/MyApk.apk"
get_output_path "system/app/MySystemApp.apk"         = "/postinstall/system/app/MySystemApp.apk"

a-only examples:
get_output_path "/mnt/system/system/product/priv-app/MyApp.apk" = "/mnt/system/system/product/priv-app/MyApp.apk"

******************************************************************
Instead of cycling all scripts for each stage, run
pre-backup -> backup -> post-backup in quick succession
(and likewise for restore), to ensure backwards compatibility
with scripts that wrongly assumed their environment not to
change between steps.
This is needed because we want to undo any mounting done for V3
scripts when executing V2 scripts. If a V2 script did mounting in
pre-restore and expected things to still be mounted in restore,
we would break their (yes incorrect) assumption.

Change-Id: I73fbad6f45824fed99e4482128769435348588f5
2021-02-07 20:07:09 +01:00
Alessandro Astone
6245873019 backuptool_ab: Make tmp actually tmpfs
Change-Id: I668e0f24486197d762981bef4c9f2437c4fa9c14
2021-02-07 20:07:09 +01:00
Bruno Martins
e1df13eb4a Lineage 18.1 is here for Xmas
Change-Id: Ic7bd96c188eb97c53cf245f79c85cc0e0d14a094
2020-12-12 03:26:14 +01:00
Jan Altensen
dd29a4766a Lineage 18.0
Change-Id: Icda4887efd1a965530213f82fbbf8ae908843b05
2020-09-13 19:45:42 +02:00
z3DD3r
284ec83fee backuptool: Fix backup/restore functionality
Backup/restore functionality was broken in the
Ia1f4ae95c9e4dae4df844853e81c264bc838f177 change
because of incorrect check of the function's result.

check_prereq() function refactored to return 0 if
backuping/restoration is possible. Any work should be
performed only if check_prereq() succeeds.

Change-Id: Ic977dba675df58a228ef4b882b25beb66cc9d2c6
2020-03-04 20:32:58 +03:00
z3DD3r
fa8a442ba2 backuptool: Properly unmount system partition
For non AB devices system partition should be unmounted
if check_prereq function fails.

This patch also refactors backuptool a bit for AB devices
in order to look same as backuptool for non AB devices.

Change-Id: Ia1f4ae95c9e4dae4df844853e81c264bc838f177
2020-03-04 12:42:10 +03:00
Wang Han
e43d699cfe backuptool: Remove backup blacklist/whitelist
Change-Id: Ia89e6fa4c31377a429e0dfa912d0b61393696009
2020-03-03 16:12:08 +01:00
Michael Bestas
42020e23f5 Lineage 17.1
Change-Id: Iaf3b75e49677b616a19431da8087c338ee7eb8da
2020-01-03 02:03:00 +02:00
Rashed Abdel-Tawab
b6b3421188 Lineage 17.0
Change-Id: Ib166a6218d18cf192aa314477e4044892b068e97
2019-09-05 10:38:36 +02:00
Rashed Abdel-Tawab
6326caafb8 Lineage 16.0
Change-Id: Id892a06aac619efaef9c76aea8ced19af49672a6
2018-08-10 19:37:27 +01:00
Bruno Martins
920f209fff backuptool_ab: Pick LineageOS properties from build.prop
* The LineageOS versions properties were removed from the build.prop,
    which is resolved properly in commit:
    "lineage: Keep LineageOS versions properties in build.prop"
    Change-Id: I0060141c097b3d14c3710eee1e0caf7110634967

Change-Id: Ib11670474641d6fd14a00f8421e9fe8d1879bbc2
2018-08-10 20:35:01 +02:00
Dan Pasanen
524fe03bfb backuptool: introduce addon.d script versioning
* Since A/B addon.d scripts are going to need to do things in a
  specific way or things could go horribly wrong for a user, let's
  introduce versioning so that scripts can claim to be compatible.

* A script can denote it is compatible with addon.d version 2 by
  adding: "# ADDOND_VERSION=2" somewhere in its script.

* Only A/B will require version 2 scripts for now, and version 2
  scripts will still run on non-A/B. Additionally if a script does
  not explicitly denote its version, assume its version 1.

* Version 1: The same old scripts we've always used. We cannot assume
             these will all work with A/B backuptools.

* Version 2: Scripts that denote they are compatible with version 2
             must be aware of the fact that A/B devices will run this
             script for a rom, during a seamless update, mounted at
             /postinstall. The best way to ensure compatibility would
             be to use the pre-designated functions found in the
             backuptool[,_ab].functions scripts.

Change-Id: I5573018dabd21bb64c7c964e2081806072a75243
2018-06-22 16:24:09 +02:00
Dan Pasanen
4a049b563c vendor: add custom backuptools and postinstall script for A/B OTAs
* A/B OTA devices wont run backuptools in recovery (because they don't
  go in to recovery to do an OTA). In these cases let's use a modified
  version to backup/restore from within android upon postinstall.

* Add backuptool_postinstall.sh which will be run prior to the normal
  postinstall script in order to backup/restore via addon.d scripts.

* This needs to be done in such a manner because we need /postinstall
  mounted rw instead of the ro with context= options which are used for
  the normal postinstall (dexopt) script.

Change-Id: I51511870634dd1ec5388adafddb446f95cc5a950
2018-06-22 16:09:56 +02:00