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
This commit is contained in:
parent
4a049b563c
commit
524fe03bfb
4 changed files with 33 additions and 0 deletions
|
@ -1,4 +1,7 @@
|
|||
#!/sbin/sh
|
||||
#
|
||||
# ADDOND_VERSION=2
|
||||
#
|
||||
|
||||
. /tmp/backuptool.functions
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#!/sbin/sh
|
||||
#
|
||||
# ADDOND_VERSION=2
|
||||
#
|
||||
# /system/addon.d/50-lineage.sh
|
||||
# During a LineageOS 15.1 upgrade, this script backs up /system/etc/hosts,
|
||||
# /system is formatted and reinstalled, then the file is restored.
|
||||
|
|
|
@ -7,6 +7,8 @@ export C=/tmp/backupdir
|
|||
export S=/system
|
||||
export V=15.1
|
||||
|
||||
export ADDOND_VERSION=1
|
||||
|
||||
# Scripts in /system/addon.d expect to find backuptool.functions in /tmp
|
||||
cp -f /tmp/install/bin/backuptool.functions /tmp
|
||||
|
||||
|
@ -15,6 +17,18 @@ preserve_addon_d() {
|
|||
if [ -d /system/addon.d/ ]; then
|
||||
mkdir -p /tmp/addon.d/
|
||||
cp -a /system/addon.d/* /tmp/addon.d/
|
||||
|
||||
# Discard any scripts that aren't at least our version level
|
||||
for f in /postinstall/tmp/addon.d/*sh; do
|
||||
SCRIPT_VERSION=$(grep "^# ADDOND_VERSION=" $f | cut -d= -f2)
|
||||
if [ -z "$SCRIPT_VERSION" ]; then
|
||||
SCRIPT_VERSION=1
|
||||
fi
|
||||
if [ $SCRIPT_VERSION -lt $ADDOND_VERSION ]; then
|
||||
rm $f
|
||||
fi
|
||||
done
|
||||
|
||||
chmod 755 /tmp/addon.d/*.sh
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ export S=/system
|
|||
export C=/postinstall/tmp/backupdir
|
||||
export V=15.1
|
||||
|
||||
export ADDOND_VERSION=2
|
||||
|
||||
# Scripts in /system/addon.d expect to find backuptool.functions in /tmp
|
||||
mkdir -p /postinstall/tmp/
|
||||
cp -f /postinstall/system/bin/backuptool_ab.functions /postinstall/tmp/backuptool.functions
|
||||
|
@ -16,6 +18,18 @@ preserve_addon_d() {
|
|||
if [ -d /system/addon.d/ ]; then
|
||||
mkdir -p /postinstall/tmp/addon.d/
|
||||
cp -a /system/addon.d/* /postinstall/tmp/addon.d/
|
||||
|
||||
# Discard any scripts that aren't at least our version level
|
||||
for f in /postinstall/tmp/addon.d/*sh; do
|
||||
SCRIPT_VERSION=$(grep "^# ADDOND_VERSION=" $f | cut -d= -f2)
|
||||
if [ -z "$SCRIPT_VERSION" ]; then
|
||||
SCRIPT_VERSION=1
|
||||
fi
|
||||
if [ $SCRIPT_VERSION -lt $ADDOND_VERSION ]; then
|
||||
rm $f
|
||||
fi
|
||||
done
|
||||
|
||||
chmod 755 /postinstall/tmp/addon.d/*.sh
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue