releasetools: Move the AVB salt setup into common.LoadInfoDict().
We used to do this in add_img_to_target_files.AddImagesToTargetFiles(),
which didn't cover the path when calling from make_recovery_patch. As a
result, /system/bin/install-recovery.sh contains different SHA values
from the actual images.
Test: Set up aosp_bullhead to use AVB. `m dist`, then run the following
command to verify the generated install-recovery.sh.
$ ./build/make/tools/releasetools/validate_target_files.py \
out/dist/aosp_bullhead-target_files-eng.zip
Change-Id: Id7be8fb17072252fcd4d08db2057b8c4af053376
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index 240e5c9..a37de66 100755
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -46,7 +46,6 @@
from __future__ import print_function
import datetime
-import hashlib
import os
import shlex
import shutil
@@ -668,17 +667,6 @@
has_recovery = (OPTIONS.info_dict.get("no_recovery") != "true")
- if OPTIONS.info_dict.get("avb_enable") == "true":
- fp = None
- if "build.prop" in OPTIONS.info_dict:
- build_prop = OPTIONS.info_dict["build.prop"]
- if "ro.build.fingerprint" in build_prop:
- fp = build_prop["ro.build.fingerprint"]
- elif "ro.build.thumbprint" in build_prop:
- fp = build_prop["ro.build.thumbprint"]
- if fp:
- OPTIONS.info_dict["avb_salt"] = hashlib.sha256(fp).hexdigest()
-
# A map between partition names and their paths, which could be used when
# generating AVB vbmeta image.
partitions = dict()
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 632cc11..d0ee6ae 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -31,12 +31,10 @@
import threading
import time
import zipfile
+from hashlib import sha1, sha256
import blockimgdiff
-from hashlib import sha1 as sha1
-
-
class Options(object):
def __init__(self):
platform_search_path = {
@@ -259,6 +257,20 @@
d["build.prop"] = LoadBuildProp(read_helper, 'SYSTEM/build.prop')
d["vendor.build.prop"] = LoadBuildProp(read_helper, 'VENDOR/build.prop')
+
+ # Set up the salt (based on fingerprint or thumbprint) that will be used when
+ # adding AVB footer.
+ if d.get("avb_enable") == "true":
+ fp = None
+ if "build.prop" in d:
+ build_prop = d["build.prop"]
+ if "ro.build.fingerprint" in build_prop:
+ fp = build_prop["ro.build.fingerprint"]
+ elif "ro.build.thumbprint" in build_prop:
+ fp = build_prop["ro.build.thumbprint"]
+ if fp:
+ d["avb_salt"] = sha256(fp).hexdigest()
+
return d