AU: When applying delta locally, get source checksums
When applying a delta on the host, we need to calculate the original
checksums for the rootfs/kernel for the delta performer. This CL does
that.
Also:
- Log old/new checksums in performer
- Add base64 encode function to OmahaHashCalculator
BUG=8062
TEST=unittests; applied delta on host
Review URL: http://codereview.chromium.org/4042004
Change-Id: I953d7dd34cb65269e9b44e22c87a13a7f52e66d4
diff --git a/generate_delta_main.cc b/generate_delta_main.cc
index efeeb3b..39a0e08 100644
--- a/generate_delta_main.cc
+++ b/generate_delta_main.cc
@@ -76,7 +76,22 @@
LOG(INFO) << "Setting up preferences under: " << FLAGS_prefs_dir;
LOG_IF(ERROR, !prefs.Init(FilePath(FLAGS_prefs_dir)))
<< "Failed to initialize preferences.";
+ // Get original checksums
+ LOG(INFO) << "Calculating original checksums";
+ PartitionInfo kern_info, root_info;
+ CHECK(DeltaDiffGenerator::InitializePartitionInfo(true, // is_kernel
+ FLAGS_old_kernel,
+ &kern_info));
+ CHECK(DeltaDiffGenerator::InitializePartitionInfo(false, // is_kernel
+ FLAGS_old_image,
+ &root_info));
+ vector<char> kern_hash(kern_info.hash().begin(),
+ kern_info.hash().end());
+ vector<char> root_hash(root_info.hash().begin(),
+ root_info.hash().end());
DeltaPerformer performer(&prefs);
+ performer.set_current_kernel_hash(&kern_hash);
+ performer.set_current_rootfs_hash(&root_hash);
CHECK_EQ(performer.Open(FLAGS_old_image.c_str(), 0, 0), 0);
CHECK(performer.OpenKernel(FLAGS_old_kernel.c_str()));
vector<char> buf(1024 * 1024);